apiVersion: apps/v1   # 指定api版本，此值必须在kubectl api-versions中
kind: Deployment      # 指定创建资源的角色/类型
metadata:             # 资源的元数据/属性
  name: yifu-insurances     # 资源的名字，在同一个namespace中必须唯一
  namespace: qas-mvp  # 部署在哪个namespace中
spec:                 # 资源规范字段
  selector:           # 选择器
    matchLabels:      # 匹配标签
      app: yifu-insurances
  replicas: 1         # 声明副本数目
  #revisionHistoryLimit: 3 # 保留历史版本
  #strategy: # 策略
  #  rollingUpdate: # 滚动更新
  #    maxSurge: 30% # 最大额外可以存在的副本数，可以为百分比，也可以为整数
  #    maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值，可以为百分比，也可以为整数
  #  type: RollingUpdate # 滚动更新策略
  template:           # 模版
    metadata:         # 模版
      labels:         # 设定资源的标签
        app: yifu-insurances
      annotations:
        dapr.io/enabled: "true"                #设定此参数为 true 注入Dapr sidecar到pod
        dapr.io/app-id: "yifu-insurances"            #应用程序唯一 ID。 用于服务发现、状态封装 和 发布/订阅 消费者ID
        dapr.io/app-port: "5005"               #这个参数告诉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: "100"	     #增加http和grpc服务器请求正文参数的最大大小，单位为MB，以处理大文件的上传。 默认值为 4 MB
        dapr.io/http-read-buffer-size: "16"   #Dapr has a default limit of 4KB for the http header read buffer size. When sending http headers that are bigger than the default 4KB, you can increase this value. Otherwise, you may encounter a Too big request header
        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-insurances  # 容器的名字
          image: hub.worfu.com/qas-mvp/yifu-insurances-biz:1.0.0 #临时地址
          # image: 192.168.1.110:5500/qas-mvp/yifu-insurances-biz:1.0.0  # 容器镜像地址
          imagePullPolicy: Always  # 每次Pod启动拉取镜像策略，三个选择 Always、Never、IfNotPresent
                                   # Always，每次都检查；Never，每次都不检查（不管本地是否有）；IfNotPresent，如果本地有就不检查，如果没有就拉取（手动测试时，
                                   # 已经打好镜像存在docker容器中时，使用存在不检查级别，
                                   # 默认为每次都检查，然后会进行拉取新镜像，因镜像仓库不存在，导致部署失败）
          ports:
            - containerPort: 5005  # 容器端口
          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