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