如何使用 ansible 模块修补具有附加容器的部署?

问题描述 投票:0回答:1

使用 Ansible 模块 k8s ,我们如何使用额外的容器修补部署。

我想了解如何使用 ansible 模块实现以下部署的补丁:

Initial dpeloyment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: patch-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: patch-demo-ctr
        image: nginx
      tolerations:
      - effect: NoSchedule
        key: dedicated
        value: test-team

补丁:

spec:
  template:
    spec:
      containers:
      - name: patch-demo-ctr-2
        image: redis

如何使用 ansible 模块执行此操作?

kubectl patch deployment patch-demo --patch "$(cat patch-file.yaml)"
kubernetes ansible openshift
1个回答
0
投票

这个答案来得有点晚了,人们可能已经看过文档了1,但这里是问题的答案。

您可以设置您的

state: patched
并将所需的更改传递给
definition

这是一个基于问题中定义的示例手册:

# playbook.yml
- name: Patch k8s objects with ansible
  hosts: localhost
  become: false
  tasks:
    - name: Initial deployment
      kubernetes.core.k8s:
        state: present
        definition:
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: patch-demo
            namespace: default
          spec:
            replicas: 2
            selector:
              matchLabels:
                app: nginx
            template:
              metadata:
                labels:
                  app: nginx
              spec:
                containers:
                  - name: patch-demo-ctr
                    image: nginx:alpine
                tolerations:
                  - effect: NoSchedule
                    key: dedicated
                    value: test-team
    - name: Patch the deployment
      kubernetes.core.k8s:
        state: patched
        name: patch-demo
        namespace: default
        kind: Deployment
        definition:
          spec:
            template:
              spec:
                containers:
                  - name: patch-demo-ctr-2
                    image: redis

生成的 pod 将有两个容器,一个用于

nginx
,另一个用于
redis

$ k get po -o custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[*].image 
NAME                         IMAGE
patch-demo-844db668c-jnrv8   redis,nginx:alpine
patch-demo-844db668c-4c2pt   redis,nginx:alpine
© www.soinside.com 2019 - 2024. All rights reserved.