Kubernetes Guestbook

A quick Kubernetes application on Replicated.

Kubernetes Guestbook on Replicated

A very simple application that runs with Replicated and Kubernetes.

---
# kind: replicated

replicated_api_version: 2.23.0
name: "Kubernetes Guestbook Example"

#
# https://help.replicated.com/docs/packaging-an-application/application-properties/
#
properties:
  app_url: http://{{repl ConfigOption "hostname" }}
  console_title: "Kubernetes Guestbook Example"

#
# https://help.replicated.com/docs/kb/supporting-your-customers/install-known-versions/
#
host_requirements:
  replicated_version: ">=2.30.0"

#
# Settings screen
# https://help.replicated.com/docs/packaging-an-application/config-screen/
#
config:
- name: hostname
  title: Hostname
  description: Ensure this domain name is routable on your network.
  items:
  - name: hostname
    title: Hostname
    value: '{{repl ConsoleSetting "tls.hostname" }}'
    type: text
    test_proc:
      display_name: Check DNS
      command: resolve_host

images:
# Image pushed to registry.replicated.com/k8shelpexample/redis.
# Only needs to be specified here for inclusion in airgap installs.
- name: redis
  source: replicated
  tag: e2e

# External image in private docker hub registry index.docker.io/replicated/examples.
# Configured in vendor.replicated.com as "dockerhub" with endpoint "index.docker.io".
# Needs to be specified here for both online and airgap installs.
- name: replicated/examples
  source: dockerhub
  tag: redisreplica-v1

# Public image, only needs to be specified here for inclusion in airgap installs.
- name: gcr.io/google-samples/gb-frontend
  source: public
  tag: v4

---
# kind: scheduler-kubernetes

apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    tier: backend
    role: master
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    tier: backend
    role: master
---
# kind: scheduler-kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: registry.replicated.com/k8shelpexample/redis:e2e
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379
      imagePullSecrets:
      - name: replicatedregistrykey
---
# kind: scheduler-kubernetes

apiVersion: v1
kind: Service
metadata:
  name: redis-replica
  labels:
    app: redis
    tier: backend
    role: replica
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    tier: backend
    role: replica
---
# kind: scheduler-kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-replica
spec:
  replicas: 2
  selector:
    matchLabels:
      app: redis
      role: replica
      tier: backend
  template:
    metadata:
      labels:
        app: redis
        role: replica
        tier: backend
    spec:
      containers:
      - name: replica
        image: index.docker.io/replicated/examples:redisreplica-v1
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 6379
      imagePullSecrets:
      - name: replicatedregistrykey
---
# kind: scheduler-kubernetes

apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend
---
# kind: scheduler-kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google-samples/gb-frontend:v4
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: replicatedregistrykey