164 lines
5.0 KiB
YAML
164 lines
5.0 KiB
YAML
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: gitea
|
|
namespace: gitea
|
|
labels:
|
|
app: gitea
|
|
spec:
|
|
replicas: 1
|
|
# Recreate — only one pod can hold the RWO PVC at a time.
|
|
# Scale to multiple replicas only after adding shared storage (e.g. Filestore).
|
|
strategy:
|
|
type: Recreate
|
|
selector:
|
|
matchLabels:
|
|
app: gitea
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: gitea
|
|
spec:
|
|
serviceAccountName: gitea
|
|
|
|
containers:
|
|
- name: gitea
|
|
image: gitea/gitea:1.25.5
|
|
ports:
|
|
- name: http
|
|
containerPort: 3000
|
|
- name: ssh
|
|
containerPort: 22
|
|
env:
|
|
# Database — connect through the Cloud SQL Auth Proxy unix socket
|
|
- name: GITEA__database__DB_TYPE
|
|
value: postgres
|
|
# Unix socket path used by the Cloud SQL Auth Proxy sidecar
|
|
- name: GITEA__database__HOST
|
|
value: /cloudsql/neuron-785695:us-central1:neuron-prod-pg15
|
|
- name: GITEA__database__NAME
|
|
value: gitea
|
|
- name: GITEA__database__USER
|
|
value: gitea
|
|
- name: GITEA__database__PASSWD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: gitea-db
|
|
key: password
|
|
# Server
|
|
- name: GITEA__server__DOMAIN
|
|
value: git.neuralplatform.ai
|
|
- name: GITEA__server__ROOT_URL
|
|
value: https://git.neuralplatform.ai
|
|
- name: GITEA__server__SSH_DOMAIN
|
|
value: git.neuralplatform.ai
|
|
- name: GITEA__server__SSH_PORT
|
|
value: "22"
|
|
- name: GITEA__server__START_SSH_SERVER
|
|
value: "false"
|
|
# Service
|
|
- name: GITEA__service__DISABLE_REGISTRATION
|
|
value: "true"
|
|
- name: GITEA__service__REQUIRE_SIGNIN_VIEW
|
|
value: "false"
|
|
# Security
|
|
- name: GITEA__security__INSTALL_LOCK
|
|
value: "true"
|
|
# Packages
|
|
- name: GITEA__packages__ENABLED
|
|
value: "true"
|
|
# Webhooks — allow calls back into the cluster and GKE VPC
|
|
- name: GITEA__webhook__ALLOWED_HOST_LIST
|
|
value: 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
|
|
# Actions
|
|
- name: GITEA__actions__ENABLED
|
|
value: "true"
|
|
- name: GITEA__actions__DEFAULT_ACTIONS_URL
|
|
value: https://code.forgejo.org
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /data
|
|
- name: cloudsql-socket
|
|
mountPath: /cloudsql
|
|
- name: custom-css
|
|
mountPath: /data/gitea/custom/public/assets/css/custom.css
|
|
subPath: custom.css
|
|
- name: custom-css
|
|
mountPath: /data/gitea/custom/templates/custom/header.tmpl
|
|
subPath: header.tmpl
|
|
resources:
|
|
requests:
|
|
memory: 256Mi
|
|
cpu: 100m
|
|
limits:
|
|
memory: 512Mi
|
|
cpu: 500m
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /
|
|
port: 3000
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 10
|
|
failureThreshold: 3
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /
|
|
port: 3000
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 15
|
|
failureThreshold: 3
|
|
|
|
# Cloud SQL Auth Proxy sidecar — provides unix socket at /cloudsql/
|
|
# Authenticates to Cloud SQL using Workload Identity (no key file).
|
|
- name: cloud-sql-proxy
|
|
image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2
|
|
args:
|
|
- "--structured-logs"
|
|
- "--unix-socket=/cloudsql"
|
|
- "neuron-785695:us-central1:neuron-prod-pg15"
|
|
securityContext:
|
|
runAsNonRoot: true
|
|
volumeMounts:
|
|
- name: cloudsql-socket
|
|
mountPath: /cloudsql
|
|
resources:
|
|
requests:
|
|
memory: 32Mi
|
|
cpu: 10m
|
|
limits:
|
|
memory: 128Mi
|
|
cpu: 100m
|
|
|
|
volumes:
|
|
- name: data
|
|
persistentVolumeClaim:
|
|
claimName: gitea-data
|
|
- name: cloudsql-socket
|
|
emptyDir: {}
|
|
- name: custom-css
|
|
configMap:
|
|
name: gitea-custom-css
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: gitea
|
|
namespace: gitea
|
|
annotations:
|
|
# External GCP Network LB — Cloudflare proxies in front, provides TLS.
|
|
# After provisioning, get the external IP:
|
|
# kubectl --context=gke_neuron-785695_us-central1_neuron-platform -n gitea get svc gitea
|
|
# Update Cloudflare DNS A record for git.neuralplatform.ai to this IP.
|
|
cloud.google.com/load-balancer-type: "External"
|
|
spec:
|
|
selector:
|
|
app: gitea
|
|
ports:
|
|
- name: http
|
|
port: 80
|
|
targetPort: 3000
|
|
- name: ssh
|
|
port: 22
|
|
targetPort: 22
|
|
type: LoadBalancer
|