Kubernetes ansible验证k8s部署是否成功

Kubernetes ansible验证k8s部署是否成功,kubernetes,ansible,Kubernetes,Ansible,我正在使用ansible k8s模块进行pod部署,但不幸的是,我没有找到正确使用wait和wait\u条件的方法 因此,我尝试使用直到和重试来实现另一个等待 每次运行playbook后,使用k8s模块进行部署后,直到NewReplicaSetAvailable在2分钟内(60*2秒)显示在部署中,否则部署失败 如果您需要验证部署结果,我在这里写下 - name: Verify the deploy result shell: "kubectl -n kube-sy

我正在使用ansible k8s模块进行pod部署,但不幸的是,我没有找到正确使用
wait
wait\u条件的方法

因此,我尝试使用
直到
重试
来实现另一个等待

每次运行playbook后,使用k8s模块进行部署后,直到NewReplicaSetAvailable在2分钟内(60*2秒)显示在部署中,否则部署失败

如果您需要验证部署结果,我在这里写下

    - name: Verify the deploy result
      shell: "kubectl -n kube-system get deployment coredns --output=jsonpath='{.status.conditions[*].reason}'"
      register: deploy_res
      until: "'NewReplicaSetAvailable' in deploy_res.stdout"
      retries: 60
      delay: 2

模块
k8s
不提供展开状态。对于部署(或任何其他资源)的状态,应使用模块
k8s\u info
。然后你可以检查这个任务

例如:

---
- hosts: localhost
  tasks:
  - name: Create a Service object from an inline definition
    k8s:
      state: present
      definition:
        apiVersion: v1
        kind: Deployment
        metadata:
          name: example
          namespace: default
        spec:
          replicas: 3
          selector:
            matchLabels:
              app: example-nginx
          template:
            metadata:
              labels:
                app: example-nginx
            spec:
              containers:
              - image: nginx
                name: nginx
  - name: check if deployment is ready
    k8s_info:
      kind: Deployment
      label_selectors: 
        - app = example-nginx
    register: output_info
    until: output_info.resources | json_query('[*].status.conditions[?reason==`NewReplicaSetAvailable`][].status') | select ('match','True') | list | length == 1
    delay: 2
    retries: 5
对于
until
过滤器,肯定有更好的解决方案,但我已经用这种方法解决了类似的用例。
until
过滤器检查是否存在原因为
NewReplicaSetAvailable
的条件,并且该条件必须为
True
。如果发生这种情况,则长度等于
1