apiVersion: apps/v1 kind: Deployment metadata: name: kt-template-online-api namespace: kt-prod labels: app: kt-template-online-api spec: replicas: 1 revisionHistoryLimit: 3 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 selector: matchLabels: app: kt-template-online-api template: metadata: labels: app: kt-template-online-api spec: containers: - name: api image: k3d-kt-registry.localhost:5000/kt-template-online-api:latest imagePullPolicy: IfNotPresent ports: - name: http containerPort: 48085 env: - name: NODE_ENV value: production - name: TZ value: Asia/Shanghai - name: QQBOT_NAPCAT_SSH_KEY_PATH value: /app/secrets/napcat-ssh/id_rsa # Jenkins 每次发布会从 Agent 私有 .env.production 重建这个 Secret。 envFrom: - secretRef: name: kt-template-online-api-env volumeMounts: - name: napcat-ssh-key mountPath: /app/secrets/napcat-ssh readOnly: true readinessProbe: tcpSocket: port: 48085 initialDelaySeconds: 8 periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 6 livenessProbe: tcpSocket: port: 48085 initialDelaySeconds: 30 periodSeconds: 20 timeoutSeconds: 3 failureThreshold: 3 resources: requests: cpu: 100m memory: 256Mi limits: cpu: 1000m memory: 768Mi volumes: - name: napcat-ssh-key secret: secretName: kt-qqbot-napcat-ssh-key optional: true defaultMode: 0400 --- apiVersion: v1 kind: Service metadata: name: kt-template-online-api namespace: kt-prod labels: app: kt-template-online-api spec: type: NodePort selector: app: kt-template-online-api ports: - name: http port: 48085 targetPort: 48085 nodePort: 30085