apiVersion: apps/v1 kind: Deployment metadata: name: backend namespace: blog spec: replicas: 1 selector: matchLabels: app: backend template: metadata: labels: app: backend spec: initContainers: - name: wait-for-postgres image: busybox:1.36 command: - sh - -c - | until nc -z postgres 5432; do echo "waiting for postgres..." sleep 2 done containers: - name: backend image: blog-backend:latest imagePullPolicy: IfNotPresent ports: - containerPort: 3000 env: - name: DATABASE_URL valueFrom: secretKeyRef: name: backend-secret key: database-url - name: JWT_SECRET valueFrom: secretKeyRef: name: backend-secret key: jwt-secret - name: GITHUB_CLIENT_ID valueFrom: secretKeyRef: name: backend-secret key: github-client-id - name: GITHUB_CLIENT_SECRET valueFrom: secretKeyRef: name: backend-secret key: github-client-secret - name: GITHUB_ADMIN_ID valueFrom: secretKeyRef: name: backend-secret key: github-admin-id - name: APP_URL value: "https://blog.zhaoxi.net.cn" - name: FRONTEND_URL value: "https://blog.zhaoxi.net.cn" # MOCK_OAUTH 生产环境绝不开启,缺省即关闭 - name: S3_ENDPOINT valueFrom: secretKeyRef: name: backend-secret key: s3-endpoint - name: S3_REGION valueFrom: secretKeyRef: name: backend-secret key: s3-region - name: S3_BUCKET valueFrom: secretKeyRef: name: backend-secret key: s3-bucket - name: S3_ACCESS_KEY valueFrom: secretKeyRef: name: backend-secret key: s3-access-key - name: S3_SECRET_KEY valueFrom: secretKeyRef: name: backend-secret key: s3-secret-key - name: S3_PUBLIC_URL valueFrom: secretKeyRef: name: backend-secret key: s3-public-url readinessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 15 periodSeconds: 20