1 min read

K8s deploy 常用範本

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend
  namespace: prod
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 50%  # 允許 50% 的 Pod 同時不可用, 注意:若設定100%會讓服務停止
      maxSurge: 100%        # 允許額外創建 ? % 的 Pod

  #  selector 和 template/metadata 是綁定關係
  #  用於確保所設定的 min / max 是否符合配置
  selector: 
    matchLabels:
      app: backend
  template:
    metadata:
      labels:
        app: backend
        
    spec:
      # 添加 imagePullSecrets 用于私有仓库认证
      imagePullSecrets:
      - name: xxx-registry-secret
      
      containers:
      - name: backend
        image: xxx/california/php:0.142.1-prod
        imagePullPolicy: Always
        workingDir: /app
        
        # 設置pod能使用的效能
        resources:
          limits:
            cpu: "2000m"
            memory: "4096Mi"
          requests:
            cpu: "500m"
            memory: "200Mi"
    
        envFrom:
        - configMapRef:
            name: php.env
        volumeMounts:
        - name: filenas-volume
          mountPath: /app/http/static
      volumes:
      - name: filenas-volume
        nfs:
          server: xxx.com
          path: /xxx-xxx
          readOnly: false