apiVersion: v1 kind: Namespace metadata: name: gitea --- apiVersion: apps/v1 kind: Deployment metadata: name: gitea namespace: gitea labels: app: gitea spec: replicas: 1 template: metadata: name: gitea labels: app: gitea spec: containers: - name: gitea image: gitea/gitea:latest imagePullPolicy: Always volumeMounts: - mountPath: "/var/lib/gitea" name: "root" - mountPath: "/data" name: "data" ports: - containerPort: 22 name: ssh protocol: TCP - containerPort: 3000 name: http protocol: TCP restartPolicy: Always volumes: # Set up a data directory for gitea # For production usage, you should consider using PV/PVC instead(or simply using storage like NAS) # For more details, please see https://kubernetes.io/docs/concepts/storage/volumes/ - name: "root" hostPath: # directory location on host path: "/var/lib/gitea" # this field is optional type: Directory - name: "data" hostPath: path: "/data/gitea" type: Directory selector: matchLabels: app: gitea --- # Using cluster mode apiVersion: v1 kind: Service metadata: name: gitea-web namespace: gitea labels: app: gitea-web spec: ports: - port: 80 targetPort: 3000 name: http selector: app: gitea --- # Using node-port mode # This mainly open a specific TCP port for SSH usage on each host, # so you can use a proxy layer to handle it(e.g. slb, nginx) apiVersion: v1 kind: Service metadata: name: gitea-ssh namespace: gitea labels: app: gitea-ssh spec: ports: - port: 22 targetPort: 22 nodePort: 30022 name: ssh selector: app: gitea type: NodePort --- # Ingress is always suitable for HTTP usage, # we suggest using an proxy layer such as slb to send traffic to different ports. # Usually 80/443 for web and 22 directly for SSH. apiVersion: extensions/v1beta1 kind: Ingress metadata: name: gitea namespace: gitea spec: rules: - host: your-gitea-host.com http: paths: - backend: serviceName: gitea-web servicePort: 80