Deploying Gogs on Kubernetes ARM

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

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

apiVersion: apps/v1beta2
kind: Deployment 
metadata:
  name: gogs-pg
  labels:
    app: gogs-pg
spec:
  replicas: 1 
  selector:
    matchLabels:
      app: gogs-pg
  strategy:
    type: "Recreate"
  template:
    metadata:
      labels:
        app: gogs-pg
    spec:
      containers:
      - name: postgresql
        image: arm32v5/postgres
        env:
        - name: POSTGRESS_PASSWORD
          value: gogs
        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/v1beta1
kind: Deployment
metadata:
  name: gogs-ui
  labels:
    app: gogs-ui
spec:
  replicas: 2
  selector:
    matchLabels:
      app: gogs-ui
  template:
    metadata:
      labels:
        app: gogs-ui
    spec:
      containers:
      - name: gogs
        image: gogs/gogs-rpi 
        ports:
        - containerPort: 3000 
          name: http 
        volumeMounts:
        - name: data 
          mountPath: /data
      volumes:
      - name: data
        emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: gogs-ui
  labels:
    app: gogs-ui
spec:
  ports:
  - port: 3000 
    name: http
  selector:
    app: gogs-ui
  sessionAffinity: "ClientIP"
---
apiVersion: v1
kind: Service
metadata:
  name: gogs-pg
  labels:
    app: gogs-pg
spec:
  ports:
  - port: 5432
    name: postgresql
  selector:
    app: gogs-pg
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gogs-ingress 
  namespace: default
spec:
  rules:
    - host: gogs.internal.local
      http:
        paths:
          - path: /
            backend:
              serviceName: gogs-ui
              servicePort: 3000
        

Posted December 28, 2017

Up