Kubernetes Ansible 操作员:修补现有部署失败

问题描述

我最近开始学习 kubernetes 和 ansible。

我有以下 kubernetes 命令来执行回滚

kubectl 补丁部署 -n my-namespace mydeployment --type='json' -p='[ {"op": "replace","path": "/spec/template/spec/containers/0/image","value":"127.0.0.1:5050/mydeployment:image_version"} ]

有没有办法在 kubernetes ansible 命令中引入一个 json 数组并修补我的部署?

我在我的剧本中尝试了以下内容

- name: Demo
  k8s:
    api_version: apps/v1
    kind: Deployment
    state: present
    namespace: '{{ meta.namespace }}'
    name: my-operator
    definition: |
      spec:
       template:
         spec:
          containers:
            my-operator:
              image: {{ installed_software_image }}    
  register: output

由于容器是一个数组,patch 命令失败。 我收到以下错误

NewReplicaSetAvailable\\\\\\",\\\\\\"message\\\\\\":\\\\\\"ReplicaSet \\\\\\\\\\\\"my-operator-66ff64c9f4\\\\\\\\\\\\" 已成功进行。\\\\\\"}]}}\\": v1.Deployment.Spec: v1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: 解码 切片:期望 [ 或 n,但发现 {,在 #10 字节中发现错误 ...|tainers\\":{\\"new-opera|...,更大的上下文 ...|t\\":\\"2021-03-24T22:26:02Z\\"}},\\"spec\\":{\\"containers\\":{\\"my- operator\\":\\"image:\\\\\\"27.0.0.1:5050/my-ope|...","field":"patch"}]},"code":422}\ n'","reason": "不可处理的实体","status": 422}

有没有办法调试或打印实际发送到 kubernetes 服务器的命令?

解决方法

错误表明“containers:”是一个数组。

尝试在“my-operaror:”前添加“-”以表明它是数组中的第一项

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...