apiVersion: apps/v1   # 指定api版本,此值必须在kubectl api-versions中
kind: Deployment      # 指定创建资源的角色/类型
metadata:             # 资源的元数据/属性
  name: yifu-codegen     # 资源的名字,在同一个namespace中必须唯一
  namespace: qas-mvp  # 部署在哪个namespace中
spec:                 # 资源规范字段
  selector:           # 选择器
    matchLabels:      # 匹配标签
      app: yifu-codegen
  replicas: 1         # 声明副本数目
  #revisionHistoryLimit: 3 # 保留历史版本
  #strategy: # 策略
  #  rollingUpdate: # 滚动更新
  #    maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
  #    maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
  #  type: RollingUpdate # 滚动更新策略
  template:           # 模版
    metadata:         # 模版
      labels:         # 设定资源的标签
        app: yifu-codegen
      annotations:
        dapr.io/enabled: "true"                #设定此参数为 true 注入Dapr sidecar到pod
        dapr.io/app-id: "yifu-codegen"            #应用程序唯一 ID。 用于服务发现、状态封装 和 发布/订阅 消费者ID
        dapr.io/app-port: "8000"               #这个参数告诉Dapr你的应用程序正在监听哪个端口。
        #dapr.io/log-level: "debug"             #为 Dapr sidecar设置日志级别。 允许的值是debug,info,warn,error。 默认是 info
        #dapr.io/log-as-json: "false"           #将此参数设置为true以JSON格式输出日志。 默认值为 false.
        #dapr.io/config: file   	           #告诉 Dapr 要使用哪个配置 CRD
        dapr.io/app-protocol: "http"    	   #告诉 Dapr 你的应用程序正在使用哪种协议。 有效选项是 http and grpc。 Default is http
        #dapr.io/app-max-concurrency: "20"	   #限制应用程序的并发量。 有效的数值是大于 0
        #dapr.io/app-ssl: "false"	           #告诉Dapr通过不安全的SSL连接调用应用程序。 同时适用于HTTP和gRPC。 Traffic between your app and the Dapr sidecar is encrypted with a certificate issued by a non-trusted certificate authority, which is considered insecure. 默认值为 false.
        dapr.io/metrics-port: "9090"	       #设置 sidecar 度量服务器的端口。 默认值为 9090
        #dapr.io/sidecar-cpu-limit: 2	     #Dapr sidecar可以使用的最大CPU数量。  默认情况下未设置
        #dapr.io/sidecar-memory-limit: "800Mi"	     #Dapr sidecar可以使用的最大内存量。默认情况下未设置 请参阅 https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/ 的有效值。
        #dapr.io/sidecar-cpu-request: 1	     #Dapr sidecar要求的 CPU 数量
        #dapr.io/sidecar-memory-request	     #Dapr sidecar 请求的内存数量
        #dapr.io/http-max-request-size: "8MB"	     #增加http和grpc服务器请求正文参数的最大大小,单位为MB,以处理大文件的上传。 默认值为 4 MB
        dapr.io/sidecar-listen-addresses: "0.0.0.0"
        # 更多dapr配置请参考 https://www.bookstack.cn/read/dapr-1.5-zh/cc77b74e2cc2f4d4.md

    spec:             # 资源规范字段
      nodeSelector:   # node 选择器
        node-type: worker  # node标签
        kubernetes.io/hostname: yfmaster1
      containers:     # 容器
        - name: yifu-codegen  # 容器的名字
          image: 192.168.1.110:5500/qas-mvp/yifu-codegen:1.0.0  # 容器镜像地址
          imagePullPolicy: Always  # 每次Pod启动拉取镜像策略,三个选择 Always、Never、IfNotPresent
                                   # Always,每次都检查;Never,每次都不检查(不管本地是否有);IfNotPresent,如果本地有就不检查,如果没有就拉取(手动测试时,
                                   # 已经打好镜像存在docker容器中时,使用存在不检查级别,
                                   # 默认为每次都检查,然后会进行拉取新镜像,因镜像仓库不存在,导致部署失败)
          ports:
            - containerPort: 8000  # 容器端口
          env:                     # 启动环境配置信息  active and timeZone set
            - name: SPRING_PROFILES_ACTIVE
              value: test
            - name: TZ
              value: Asia/Shanghai
          resources:               #资源配置限制
            limits:                # 最大使用
              memory: "2048Mi"
              #cpu: 300m # CPU,1核心 = 1000m
            requests:             # 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
              #cpu: 100m
              memory: "500Mi"
          #livenessProbe: # pod 内部健康检查的设置
          #  httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常
          #    path: /healthCheck # URI地址
          #    port: 8080 # 端口
          #    scheme: HTTP # 协议
          #    # host: 127.0.0.1 # 主机地址
          #  initialDelaySeconds: 30 # 表明第一次检测在容器启动后多长时间后开始
          #  timeoutSeconds: 5 # 检测的超时时间
          #  periodSeconds: 30 # 检查间隔时间
          #  successThreshold: 1 # 成功门槛
          #  failureThreshold: 5 # 失败门槛,连接失败5次,pod杀掉,重启一个新的pod
          #  readinessProbe: # Pod 准备服务健康检查设置
           #   httpGet:
           #     path: /healthCheck
           #     port: 8080
           #     scheme: HTTP
           #   initialDelaySeconds: 30
           #   timeoutSeconds: 5
           #   periodSeconds: 10
           #   successThreshold: 1
           #   failureThreshold: 5
            #也可以用这种方法
            #exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常
            #  command:
            #    - cat
            #    - /tmp/health
            #也可以用这种方法
            #tcpSocket: # 通过tcpSocket检查健康
            #  port: number
            #ports:
            #  - name: http # 名称
            #    containerPort: 8080 # 容器开发对外的端口
            #    protocol: TCP # 协议
      imagePullSecrets:        # 镜像仓库拉取密钥
        - name: login
      #affinity: # 亲和性调试
      #  nodeAffinity: # 节点亲和力
      #    requiredDuringSchedulingIgnoredDuringExecution: # pod 必须部署到满足条件的节点上
      #      nodeSelectorTerms: # 节点满足任何一个条件就可以
      #        - matchExpressions: # 有多个选项,则只有同时满足这些逻辑选项的节点才能运行 pod
      #            - key: beta.kubernetes.io/arch
      #              operator: In
      #              values:
      #                - amd64