Difficulty: medium
Estimated Time: 10 minutes

This is a Kubernetes Kubernetes playground. From here you can play with a Kubernetes host and explore it's API.

Kubernetes is an open source project that automates the deployment of applications using containers, providing an additional layer of abstraction and automation on top of Linux.

What are playgrounds?

Playgrounds give you a configured environment to start playing and exploring using an unstructured learning approach.

Playgrounds are great for experimenting and trying samples. To learn more about the technology then start with one of the Katacoda community labs

This playground

This playground provides a personalised sandboxed environment for you to learn and explore Kubernetes, with following components:

Deploy a stateful Redmine app

Kubernetes task - Redmine

Objectives

Deploy a high available Redmine to Kubernetes.

Broken manifests are inside the task folder - those must be fixed.

TASKS

  • Read the following Hints
  • Deploy Redmine as Deployment
  • Use a NodePort service to access the frontend
  • Deploy a MySQL with a PersistentVolumeClaim
  • Use a Service for the MySQL
  • Replace the MySQL Deployment with a stateful set and with volumeClaimTemplates.

Hints

Expose a Service to the public

(on Katacoda)

Create a kubernetes service with the type NodePort. This should be something like this output: kubectl get svc

kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
redmine      NodePort    10.107.72.150   <none>        80:32421/TCP   4s

Now open trough the + at the Katacoda UI the menu Select port to view on Host1 and enter the assigned NodePort - in this example 32421. Note that NodePort ports are on on all nodes.

Deployments

Information on Deployments: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

StatefulSets

Information on StatefulSets: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

MYSQL

  • The mysql container is listing on the port 3306.
  • MYSQL also needs a password set over the environment variable MYSQL_ROOT_PASSWORD

Redmine

The container listens on port 3000.

Redmine has some important environment variables which should be used to configure it:

REDMINE_DB_MYSQL Address of the MySQL instance.

REDMINE_DB_PASSWORD Database password of the MySQL instance

REDMINE_USERNAME Default admin username in Redmine

REDMINE_PASSWORD Password of the admin username in Redmine

REDMINE_EMAIL Email address of the admin user in Redmine

REDMINE_LANG Default language of Redmine. Possible value: en