--- apiVersion: apps/v1 kind: Deployment metadata: labels: app: forgejo name: forgejo spec: replicas: 1 selector: matchLabels: app: forgejo strategy: type: Recreate template: metadata: labels: app: forgejo spec: containers: - image: codeberg.org/forgejo/forgejo:10 name: forgejo env: - name: GITEA__database__DB_TYPE value: "mysql" - name: GITEA__database__HOST value: "192.168.1.146:31306" - name: GITEA__database__NAME value: "gitea" - name: USER_UID value: "1000" - name: USER_GID value: "1000" - name: GITEA__database__USER valueFrom: configMapKeyRef: key: MYSQL_USER name: mariadb-secrets-env - name: GITEA__database__PASSWD valueFrom: configMapKeyRef: key: MYSQL_PASSWORD name: mariadb-secrets-env ports: - containerPort: 3000 protocol: TCP - containerPort: 22 protocol: TCP volumeMounts: - mountPath: /data name: forgejo-config-volume # - mountPath: /data/gitea/repo-archive # name: forgejo-data-volume - mountPath: /etc/timezone name: forgejo-timezone-volume readOnly: true subPath: timezone - mountPath: /etc/localtime name: forgejo-localtime-volume readOnly: true subPath: localtime restartPolicy: Always volumes: - name: forgejo-config-volume persistentVolumeClaim: claimName: forgejo-config-pvc # - name: forgejo-data-volume # persistentVolumeClaim: # claimName: forgejo-data-pvc - configMap: items: - key: timezone path: timezone name: forgejo-timezone-configmap name: forgejo-timezone-volume - configMap: items: - key: localtime path: localtime name: forgejo-localtime-configmap name: forgejo-localtime-volume --- apiVersion: v1 kind: Service metadata: labels: app: forgejo name: forgejo-svc spec: ports: - name: "3000" port: 3000 targetPort: 3000 - name: "2552" port: 2552 targetPort: 22 selector: app: forgejo --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: forgejo-http annotations: traefik.ingress.kubernetes.io/router.entrypoints: web spec: rules: - host: git.reticulum.lan http: paths: - path: / pathType: Prefix backend: service: name: forgejo-svc port: number: 3000 - host: git.argentumcation.com http: paths: - path: / pathType: Prefix backend: service: name: forgejo-svc port: number: 3000 --- apiVersion: v1 kind: PersistentVolume metadata: name: forgejo-config-pv spec: capacity: storage: 100Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: "" nfs: path: /mnt/raid/00_meta/02_services/forgejo/ server: 192.168.1.146 # --- # apiVersion: v1 # kind: PersistentVolume # metadata: # name: forgejo-data-pv # spec: # capacity: # storage: 100Gi # accessModes: # - ReadWriteOnce # persistentVolumeReclaimPolicy: Retain # storageClassName: "" # nfs: # path: /mnt/raid/00_meta/05_service_config/forgejo/ # server: 192.168.1.146 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: forgejo-config-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 100Gi volumeName: forgejo-config-pv storageClassName: "" # --- # apiVersion: v1 # kind: PersistentVolumeClaim # metadata: # name: forgejo-data-pvc # spec: # accessModes: # - ReadWriteOnce # resources: # requests: # storage: 100Gi # volumeName: forgejo-data-pv # storageClassName: "" --- apiVersion: v1 data: timezone: | America/New_York kind: ConfigMap metadata: annotations: use-subpath: "true" labels: app: forgejo name: forgejo-timezone-configmap --- apiVersion: v1 binaryData: localtime: VkZwcFpqSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdBQUFBQmdBQUFBQUFBQURzQUFBQUJnQUFBQlNBQUFBQW5xWWVjSis2NjJDZ2hnQndvWnJOWUtKbDRuQ2pnK25ncEdxdWNLVTFwMkNtVThyd3B4V0pZS2d6clBDby9xWGdxaE9POEtyZWgrQ3I4M0R3ckw1cDRLM1RVdkN1bmt2Z3I3TTA4TEIrTGVDeG5GRndzbWRLWUxOOE0zQzBSeXhndFZ3VmNMWW5EbUMzTy9kd3VBYndZTGtiMlhDNTV0Smd1d1QxOEx2R3RHQzg1TmZ3dmEvUTRMN0V1ZkMvajdMZ3dLU2I4TUZ2bE9EQ2hIM3d3MDkyNE1Sa1gvREZMMWpneGsxOGNNY1BPdURJTFY1d3lQaFhZTW9OUUhESzJEbGd5NGp3Y05JajlIRFNZUHZnMDNYazhOUkEzZURWVmNidzFpQy80TmMxcVBEWUFLSGcyUldLOE5uZ2crRGEvcWR3MjhCbDROemVpWERkcVlKZzNyNXJjTitKWkdEZ25rMXc0V2xHWU9KK0wzRGpTU2hnNUY0UmNPVlhMdURtUnkzdzV6Y1E0T2duRC9EcEZ2TGc2Z2J4OE9yMjFPRHI1dFB3N05hMjRPM0d0ZkR1djlOZzc2L1NjUENmdFdEeGo3Unc4bitYWVBOdmxuRDBYM2xnOVU5NGNQWS9XMkQzTDFwdytDaDM0UGtQUEhENkNGbmcrdmhZOFB2b08rRDgyRHJ3L2NnZDRQNjRIUEQvcC8vZ0FKZis4QUdINGVBQ2QrRHdBM0QrWUFSZy9YQUZVT0JnQmtEZmNBY3d3bUFIalJsd0NSQ2tZQW10bFBBSzhJWmdDK0NGY0F6Wm91QU53R2R3RHJtRTRBK3BnL0FRbVdiZ0VZbGw4Qko1U09BVGFVZndGRmtxNEJWSktmQVdPUXpnRnlrTDhCZ2lLV0FaQ08zd0dnSUxZQnJ5Q25BYjRlMWdITkhzY0IzQnoyQWVzYzV3SDZHeFlDQjJBUEFoZ1pOZ0lsWGk4Q05xcitBa05jVHdKVXFSNENZVnB2QW5LblBnSi83RGNDa0tWZUFwM3FWd0t1bzM0Q3UraDNBczAxUmdMWjVwY0M2ek5tQXZma3R3TUpNWVlERm5aL0F5Y3ZwZ00wZEo4RFJTM0dBMUp5dndOaksrWURjSERmQTRHOXJnT09idjhEbjd2T0E2eHRId085dWU0RHl2N25BOXU0RGdQby9RY0QrYll1QkFiN0p3UVlSL1lFSlBsSEJEWkdGZ1JDOTJjRVZFUTJCRjg2andSeTFmNEVmVGl2QkpEVUhnU2JOczhFcnRJK0JMbklsd1ROWkFZRTE4YTNCT3RpSmdUMXhOY0ZDV0JHQlJQQzl3VW5YbVlGTWNFWEJVVmNoZ1ZQdnpjRlkxcW1CVzVRL3dXQjdHNEZqRThmQlovcWpnV3FUVDhGdmVpdUJjaExYd1hiNXM0RjVrbC9CZm5rN2dZRTIwY0dHSGEyQmlMWlp3WTJkTllHUU5lSEJsUnk5Z1plMWFjR2NuRVdCbnpUeHdhUWJ6WUdtdEhuQnE1dFZnYTVZNjhHelA4ZUJ0ZGh6d2JxL1Q0RzlWL3ZCd2o3WGdjVFhnOEhKdmwrQnpGY0x3ZEU5NTRIVCszM0IyT0paZ2R0N0JjSGdZZUdCNHZxTndlZmhhWUhxZWhYQjcyRHhnZkg1bmNIMjRIbUIrWGtsd2Y1Z0FZQU1CQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJRUJRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDLy8rNm5nQUEvLy9Id0FFRS8vKzVzQUFJLy8rNXNBQUkvLy9Id0FFTS8vL0h3QUVRVEUxVUFFVkVWQUJGVTFRQVJWZFVBRVZRVkFBQUFBQUJBQUVBQUFBQkFBRlVXbWxtTWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUdBQUFBQUFBQUFPd0FBQUFHQUFBQUZQLy8vLzllQS9DUS8vLy8vNTZtSG5ELy8vLy9uN3JyWVAvLy8vK2doZ0J3Ly8vLy82R2F6V0QvLy8vL29tWGljUC8vLy8ramcrbmcvLy8vLzZScXJuRC8vLy8vcFRXbllQLy8vLyttVThydy8vLy8vNmNWaVdELy8vLy9xRE9zOFAvLy8vK28vcVhnLy8vLy82b1RqdkQvLy8vL3F0Nkg0UC8vLy8rcjgzRHcvLy8vLzZ5K2FlRC8vLy8vcmROUzhQLy8vLyt1bmt2Zy8vLy8vNit6TlBELy8vLy9zSDR0NFAvLy8vK3huRkZ3Ly8vLy83Sm5TbUQvLy8vL3Mzd3pjUC8vLy8rMFJ5eGcvLy8vLzdWY0ZYRC8vLy8vdGljT1lQLy8vLyszTy9kdy8vLy8vN2dHOEdELy8vLy91UnZaY1AvLy8vKzU1dEpnLy8vLy83c0U5ZkQvLy8vL3U4YTBZUC8vLy8rODVOZncvLy8vLzcydjBPRC8vLy8vdnNTNThQLy8vLysvajdMZy8vLy8vOENrbS9ELy8vLy93VytVNFAvLy8vL0NoSDN3Ly8vLy84TlBkdUQvLy8vL3hHUmY4UC8vLy8vRkwxamcvLy8vLzhaTmZIRC8vLy8veHc4NjRQLy8vLy9JTFY1dy8vLy8vOGo0VjJELy8vLy95ZzFBY1AvLy8vL0syRGxnLy8vLy84dUk4SEQvLy8vLzBpUDBjUC8vLy8vU1lQdmcvLy8vLzlOMTVQRC8vLy8vMUVEZDRQLy8vLy9WVmNidy8vLy8vOVlnditELy8vLy8xeldvOFAvLy8vL1lBS0hnLy8vLy85a1ZpdkQvLy8vLzJlQ0Q0UC8vLy8vYS9xZHcvLy8vLzl2QVplRC8vLy8vM042SmNQLy8vLy9kcVlKZy8vLy8vOTYrYTNELy8vLy8zNGxrWVAvLy8vL2duazF3Ly8vLy8rRnBSbUQvLy8vLzRuNHZjUC8vLy8valNTaGcvLy8vLytSZUVYRC8vLy8vNVZjdTRQLy8vLy9tUnkzdy8vLy8vK2MzRU9ELy8vLy82Q2NQOFAvLy8vL3BGdkxnLy8vLy8rb0c4ZkQvLy8vLzZ2YlU0UC8vLy8vcjV0UHcvLy8vLyt6V3R1RC8vLy8vN2NhMThQLy8vLy91djlOZy8vLy8vKyt2MG5ELy8vLy84SisxWVAvLy8vL3hqN1J3Ly8vLy8vSi9sMkQvLy8vLzgyK1djUC8vLy8vMFgzbGcvLy8vLy9WUGVIRC8vLy8vOWo5YllQLy8vLy8zTDFwdy8vLy8vL2dvZCtELy8vLy8rUTg4Y1AvLy8vLzZDRm5nLy8vLy8vcjRXUEQvLy8vLysrZzc0UC8vLy8vODJEcncvLy8vLy8zSUhlRC8vLy8vL3JnYzhQLy8vLy8vcC8vZ0FBQUFBQUNYL3ZBQUFBQUFBWWZoNEFBQUFBQUNkK0R3QUFBQUFBTncvbUFBQUFBQUJHRDljQUFBQUFBRlVPQmdBQUFBQUFaQTMzQUFBQUFBQnpEQ1lBQUFBQUFIalJsd0FBQUFBQWtRcEdBQUFBQUFDYTJVOEFBQUFBQUs4SVpnQUFBQUFBdmdoWEFBQUFBQURObWk0QUFBQUFBTndHZHdBQUFBQUE2NWhPQUFBQUFBRDZtRDhBQUFBQUFRbVdiZ0FBQUFBQkdKWmZBQUFBQUFFbmxJNEFBQUFBQVRhVWZ3QUFBQUFCUlpLdUFBQUFBQUZVa3A4QUFBQUFBV09RemdBQUFBQUJjcEMvQUFBQUFBR0NJcFlBQUFBQUFaQ08zd0FBQUFBQm9DQzJBQUFBQUFHdklLY0FBQUFBQWI0ZTFnQUFBQUFCelI3SEFBQUFBQUhjSFBZQUFBQUFBZXNjNXdBQUFBQUIraHNXQUFBQUFBSUhZQThBQUFBQUFoZ1pOZ0FBQUFBQ0pWNHZBQUFBQUFJMnF2NEFBQUFBQWtOY1R3QUFBQUFDVktrZUFBQUFBQUpoV204QUFBQUFBbktuUGdBQUFBQUNmK3czQUFBQUFBS1FwVjRBQUFBQUFwM3FWd0FBQUFBQ3JxTitBQUFBQUFLNzZIY0FBQUFBQXMwMVJnQUFBQUFDMmVhWEFBQUFBQUxyTTJZQUFBQUFBdmZrdHdBQUFBQURDVEdHQUFBQUFBTVdkbjhBQUFBQUF5Y3ZwZ0FBQUFBRE5IU2ZBQUFBQUFORkxjWUFBQUFBQTFKeXZ3QUFBQUFEWXl2bUFBQUFBQU53Y044QUFBQUFBNEc5cmdBQUFBQURqbTcvQUFBQUFBT2Z1ODRBQUFBQUE2eHRId0FBQUFBRHZibnVBQUFBQUFQSy91Y0FBQUFBQTl1NERnQUFBQUFENlAwSEFBQUFBQVA1dGk0QUFBQUFCQWI3SndBQUFBQUVHRWYyQUFBQUFBUWsrVWNBQUFBQUJEWkdGZ0FBQUFBRVF2ZG5BQUFBQUFSVVJEWUFBQUFBQkY4Nmp3QUFBQUFFY3RYK0FBQUFBQVI5T0s4QUFBQUFCSkRVSGdBQUFBQUVtemJQQUFBQUFBU3UwajRBQUFBQUJMbklsd0FBQUFBRXpXUUdBQUFBQUFUWHhyY0FBQUFBQk90aUpnQUFBQUFFOWNUWEFBQUFBQVVKWUVZQUFBQUFCUlBDOXdBQUFBQUZKMTVtQUFBQUFBVXh3UmNBQUFBQUJVVmNoZ0FBQUFBRlQ3ODNBQUFBQUFWaldxWUFBQUFBQlc1US93QUFBQUFGZ2V4dUFBQUFBQVdNVHg4QUFBQUFCWi9xamdBQUFBQUZxazAvQUFBQUFBVzk2SzRBQUFBQUJjaExYd0FBQUFBRjIrYk9BQUFBQUFYbVNYOEFBQUFBQmZuazdnQUFBQUFHQk50SEFBQUFBQVlZZHJZQUFBQUFCaUxaWndBQUFBQUdOblRXQUFBQUFBWkExNGNBQUFBQUJsUnk5Z0FBQUFBR1h0V25BQUFBQUFaeWNSWUFBQUFBQm56VHh3QUFBQUFHa0c4MkFBQUFBQWFhMGVjQUFBQUFCcTV0VmdBQUFBQUd1V092QUFBQUFBYk0veDRBQUFBQUJ0ZGh6d0FBQUFBRzZ2MCtBQUFBQUFiMVgrOEFBQUFBQndqN1hnQUFBQUFIRTE0UEFBQUFBQWNtK1g0QUFBQUFCekZjTHdBQUFBQUhSUGVlQUFBQUFBZFA3ZmNBQUFBQUIyT0paZ0FBQUFBSGJld1hBQUFBQUFlQmg0WUFBQUFBQjR2cU53QUFBQUFIbjRXbUFBQUFBQWVwNkZjQUFBQUFCNzJEeGdBQUFBQUh4K1ozQUFBQUFBZmJnZVlBQUFBQUIrWGtsd0FBQUFBSCtZQUdBREFRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNCQVVDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkFnRUNBUUlCQWdFQ0FRSUJBZ0VDQVFJQkF2Ly91cDRBQVAvL3g4QUJCUC8vdWJBQUNQLy91YkFBQ1AvL3g4QUJEUC8veDhBQkVFeE5WQUJGUkZRQVJWTlVBRVZYVkFCRlVGUUFBQUFBQVFBQkFBQUFBUUFCQ2tWVFZEVkZSRlFzVFRNdU1pNHdMRTB4TVM0eExqQUs= kind: ConfigMap metadata: annotations: use-subpath: "true" labels: app: forgejo name: forgejo-localtime-configmap