apiVersion: v1 kind: Namespace metadata: name: gitea-namespace --- apiVersion: apps/v1 kind: StatefulSet metadata: namespace: gitea-namespace name: gitea spec: replicas: 1 selector: matchLabels: app: gitea template: metadata: labels: app: gitea spec: containers: - name: c-gitea image: gitea/gitea:1.21.7 imagePullPolicy: IfNotPresent ports: - containerPort: 3000 resources: limits: memory: 200Mi cpu: 4 volumeMounts: - mountPath: /data name: gitea-data volumes: - name: gitea-data persistentVolumeClaim: claimName: gitea-pvc --- apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: gitea-namespace name: gitea-pvc spec: accessModes: ["ReadWriteOnce"] storageClassName: "gitea-storage" resources: requests: storage: 5Gi --- apiVersion: v1 kind: PersistentVolume metadata: namespace: gitea-namespace name: gitea-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: /data/gitea-app type: "" storageClassName: "gitea-storage" volumeMode: Filesystem --- apiVersion: v1 kind: Service metadata: namespace: gitea-namespace name: gitea-svc spec: selector: app: gitea type: ClusterIP ports: - name: gitea-http port: 80 targetPort: 3000 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ing-gitea namespace: gitea-namespace annotations: nginx.ingress.kubernetes.io/ssl-redirect: "false" nginx.ingress.kubernetes.io/use-regex: "true" spec: ingressClassName: nginx rules: - host: "gitea.dev.com" http: paths: - path: / pathType: Prefix backend: service: name: gitea-svc port: number: 80