Skip to content
yaml
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: ${APP_NAME}-${MODULE_NAME} # 部署名称,由应用名和模块名组成
  namespace: ${REGISTRY_NAMESPACE} # 命名空间
  labels:
    app: ${APP_NAME}-${MODULE_NAME} # 标签,用于标识应用
spec:
  replicas: 1 # 副本数量
  selector:
    matchLabels:
      app: ${APP_NAME}-${MODULE_NAME} # 匹配的标签
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: ${APP_NAME}-${MODULE_NAME} # 模板标签
    spec:
      volumes:
        - name: host-time # 挂载主机时间
          hostPath:
            path: /etc/localtime # 主机时间路径
            type: ''
        - name: localdata # 临时数据存储卷
          emptyDir: {}
      initContainers:
        - name: code-init # 初始化容器名称
          image: ${REGISTRY}/${REGISTRY_NAMESPACE}/${APP_NAME}-${MODULE_NAME}:${VERSION_NUMBER} # 初始化容器镜像
          command:
            - sh
          args:
            - '-c'
            - cp /code/${JAR_NAME} /localdata # 将代码复制到临时目录
          ports:
            - name: http-80 # 暴露的端口名称
              containerPort: 80 # 容器端口
              protocol: TCP # 协议
          resources: {} # 资源限制
          volumeMounts:
            - name: host-time # 挂载主机时间卷
              readOnly: true
              mountPath: /etc/localtime # 挂载路径
            - name: localdata # 挂载临时数据卷
              mountPath: /localdata # 挂载路径
          imagePullPolicy: IfNotPresent # 镜像拉取策略
      containers:
        - name: java # 主容器名称
          image: 'openjdk:8u275-jre' # 主容器镜像
          command:
            - sh
          args:
            - '-c'
            - >-
              java -jar -Xms256m -Xmx256m
              -Dspring.profiles.active=${PROFILES_ACTIVE} -Dserver.port=80
              /code/${JAR_NAME} # 启动 Java 应用的命令
          ports:
            - name: http-80 # 暴露的端口名称
              containerPort: 80 # 容器端口
              protocol: TCP # 协议
          env:
            - name: TZ # 设置时区环境变量
              value: Asia/Shanghai # 时区值
          resources: {} # 资源限制
          volumeMounts:
            - name: host-time # 挂载主机时间卷
              readOnly: true
              mountPath: /etc/localtime # 挂载路径
            - name: localdata # 挂载临时数据卷
              mountPath: /code # 挂载路径
          imagePullPolicy: IfNotPresent # 镜像拉取策略
      restartPolicy: Always # 重启策略
      terminationGracePeriodSeconds: 30 # 优雅终止时间
      dnsPolicy: ClusterFirst # DNS 策略
      imagePullSecrets:
        - name: harbor-registry-secret # 镜像拉取密钥
  strategy:
    type: RollingUpdate # 滚动更新策略
    rollingUpdate:
      maxUnavailable: 25% # 最大不可用副本数
      maxSurge: 25% # 最大新增副本数
  revisionHistoryLimit: 10 # 修订历史限制
  progressDeadlineSeconds: 600 # 更新进度超时时间