From ceccb8bafcb881cd34943b8c7d4479cdb6f1d813bcb1fb6880a12828333f1369 Mon Sep 17 00:00:00 2001 From: Vladislav Date: Tue, 30 Jun 2026 19:13:50 -0400 Subject: [PATCH] =?UTF-8?q?Bot=20commit:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=84=D0=B0=D0=B9=D0=BB=20k8s/gitea.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- k8s/gitea.yaml | 169 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 k8s/gitea.yaml diff --git a/k8s/gitea.yaml b/k8s/gitea.yaml new file mode 100644 index 0000000..a1cbf04 --- /dev/null +++ b/k8s/gitea.yaml @@ -0,0 +1,169 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: gitea +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: gitea-data + namespace: gitea +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: gitea + namespace: gitea +spec: + replicas: 1 + selector: + matchLabels: + app: gitea + template: + metadata: + labels: + app: gitea + spec: + containers: + - name: gitea + image: gitea/gitea:1.22 + ports: + - containerPort: 3000 # HTTP + - containerPort: 22 # SSH + env: + - name: USER_UID + value: "1000" + - name: USER_GID + value: "1000" + - name: GITEA__database__DB_TYPE + value: "sqlite3" + volumeMounts: + - name: gitea-data + mountPath: /data + volumes: + - name: gitea-data + persistentVolumeClaim: + claimName: gitea-data +--- +apiVersion: v1 +kind: Service +metadata: + name: gitea-ssh + namespace: gitea +spec: + selector: + app: gitea + ports: + - name: http + port: 80 + targetPort: 3000 + nodePort: 30300 + - name: ssh + protocol: TCP + port: 30022 + targetPort: 22 + nodePort: 30022 + type: LoadBalancer +--- +kind: Ingress +apiVersion: networking.k8s.io/v1 +metadata: + name: gitea + namespace: gitea + annotations: + cert-manager.io/cluster-issuer: letsencrypt + nginx.ingress.kubernetes.io/proxy-body-size: "0" + nginx.ingress.kubernetes.io/ssl-redirect: "true" + nginx.ingress.kubernetes.io/server-snippet: | + if ($http_user_agent ~* "ClaudeBot") { + return 403; + } +spec: + ingressClassName: public + tls: + - hosts: + - git.spiritofweb.ru + secretName: git-tls-cert + rules: + - host: git.spiritofweb.ru + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: gitea-ssh + port: + number: 80 + - path: /robots.txt + pathType: Exact + backend: + service: + name: robots-static-svc + port: + number: 80 +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: gitearobotscm + namespace: gitea +data: + robots.txt: | + User-agent: * + Disallow: / +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: robots-static + namespace: gitea +spec: + replicas: 1 + selector: + matchLabels: + app: robots-static + template: + metadata: + labels: + app: robots-static + spec: + containers: + - name: nginx + image: nginx:alpine + ports: + - containerPort: 80 + volumeMounts: + - name: robots + mountPath: /usr/share/nginx/html + volumes: + - name: robots + configMap: + name: gitearobotscm +--- +apiVersion: v1 +kind: Service +metadata: + name: robots-static-svc + namespace: gitea +spec: + selector: + app: robots-static + ports: + - port: 80 + targetPort: 80 +--- +apiVersion: v1 +kind: Secret +metadata: + name: ssh-creds +type: Opaque +stringData: + username: "root" + password: "$ROOT_PASS"