Deploying Redmine on Kubernetes ARM

The YAML file below is a template you can use to deploy Redmine on a Kubernetes cluster running on ARM.

Note you will have to define your own hostname (the template uses redmine.internal.local), and you will have to define your own backend storage settings (the template uses emptyDir for all occurrences).

apiVersion: apps/v1beta2
kind: Deployment 
metadata:
  name: redmine-pg
  labels:
    app: redmine-pg
spec:
  replicas: 1 
  selector:
    matchLabels:
      app: redmine-pg
  strategy:
    type: "Recreate"
  template:
    metadata:
      labels:
        app: redmine-pg
    spec:
      containers:
      - name: postgresql
        image: arm32v5/postgres
        env:
        - name: POSTGRESS_PASSWORD
          value: redmine
        ports:
        - containerPort: 5432 
          name: postgresql
        resources:
          limits:
            memory: "128Mi"
          requests:
            memory: "64Mi"
        securityContext:
          runAsUser: 1
        volumeMounts:
        - name: data
          mountPath: /var/lib/postgresql/data 
      volumes:
      - name: data
        emptyDir: {}
---
apiVersion: apps/v1beta2
kind: Deployment 
metadata:
  name: redmine-ui
  labels:
    app: redmine-ui
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redmine-ui
  template:
    metadata:
      labels:
        app: redmine-ui
    spec:
      containers:
      - name: redmine
        image: arm32v5/redmine
        env:
        - name: REDMINE_DB_POSTGRES
          value: redmine-pg
        - name: REDMINE_DB_USERNAME
          value: redmine
        - name: REDMINE_DB_PASSWORD
          value: redmine
        - name: REDMINE_DB_DATABASE
          value: redmine
        ports:
        - containerPort: 3000 
          name: http 
        resources:
          limits:
            memory: "256Mi"
          requests:
            memory: "128Mi"
        volumeMounts:
        - name: files
          mountPath: /usr/src/redmine/files
        - name: themes
          mountPath: /usr/src/redmine/public/themes
      volumes:
      - name: files
        emptyDir: {}
      - name: themes
        emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: redmine-ui
  labels:
    app: redmine-ui
spec:
  ports:
  - port: 3000 
    name: http
  selector:
    app: redmine-ui
  sessionAffinity: "ClientIP"
---
apiVersion: v1
kind: Service
metadata:
  name: redmine-pg
  labels:
    app: redmine-pg
spec:
  ports:
  - port: 5432
    name: postgresql
  selector:
    app: redmine-pg
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: redmine-ingress
  namespace: default
spec:
  rules:
    - host: redmine.internal.local
      http:
        paths:
          - path: /
            backend:
              serviceName: redmine-ui
              servicePort: 3000
        

Posted January 4th, 2018

Up