kubernetes.core.k8s_json_patch 模块 – 将 JSON 补丁操作应用于现有对象

注意

此模块是 kubernetes.core 集合 (版本 5.0.0) 的一部分。

如果您正在使用 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install kubernetes.core。您需要进一步的要求才能使用此模块,请参阅 要求 了解详细信息。

要在 playbook 中使用它,请指定:kubernetes.core.k8s_json_patch

kubernetes.core 2.0.0 中的新增功能

概要

  • 此模块仅用于应用 RFC 6902 JSON 补丁操作。

  • 对于策略合并或 JSON 合并操作,请使用 kubernetes.core.k8s 模块。

  • 检查模式需要 jsonpatch 库。

注意

此模块有一个对应的 操作插件

要求

以下要求需要在执行此模块的主机上满足。

  • python >= 3.9

  • kubernetes >= 24.2.0

  • PyYAML >= 3.11

  • jsonpatch

参数

参数

注释

api_key

字符串

用于向 API 进行身份验证的令牌。也可以通过 K8S_AUTH_API_KEY 环境变量指定。

api_version

别名: api, version

字符串

用于指定 API 版本。

kindnamenamespace 结合使用以标识特定对象。

默认值: "v1"

ca_cert

别名: ssl_ca_cert

路径

用于向 API 进行身份验证的 CA 证书的路径。必须提供完整的证书链以避免证书验证错误。也可以通过 K8S_AUTH_SSL_CA_CERT 环境变量指定。

client_cert

别名: cert_file

路径

用于向 API 进行身份验证的证书的路径。也可以通过 K8S_AUTH_CERT_FILE 环境变量指定。

client_key

别名: key_file

路径

用于向 API 进行身份验证的密钥文件的路径。也可以通过 K8S_AUTH_KEY_FILE 环境变量指定。

context

字符串

在配置文件中找到的上下文的名称。也可以通过 K8S_AUTH_CONTEXT 环境变量指定。

host

字符串

提供用于访问 API 的 URL。也可以通过 K8S_AUTH_HOST 环境变量指定。

impersonate_groups

列表 / 元素=字符串

在 kubernetes.core 2.3.0 中添加

要为操作模拟的组。

也可以通过 K8S_AUTH_IMPERSONATE_GROUPS 环境变量指定。示例:Group1,Group2

impersonate_user

字符串

在 kubernetes.core 2.3.0 中添加

要为操作模拟的用户名。

也可以通过 K8S_AUTH_IMPERSONATE_USER 环境变量指定。

kind

字符串 / 必需

用于指定对象模型。

api_versionnamenamespace 结合使用以标识特定对象。

kubeconfig

任何

现有 Kubernetes 配置文件的路径。如果未提供,且未提供其他连接选项,则 Kubernetes 客户端将尝试从 ~/.kube/config 加载默认配置文件。也可以通过 K8S_AUTH_KUBECONFIG 环境变量指定。

可以使用分隔符“;” (用于 Windows 平台) 或“:” (用于其他平台) 提供多个 Kubernetes 配置文件。

可以将 Kubernetes 配置作为字典提供。此功能需要 python Kubernetes 客户端版本 >= 17.17.0。在版本 2.2.0 中添加。

name

字符串 / 必需

用于指定对象名称。

api_versionkindnamespace 结合使用以标识特定对象。

namespace

字符串

用于指定对象命名空间。

api_versionkindname 结合使用以标识特定对象。

no_proxy

字符串

在 kubernetes.core 2.3.0 中添加

不应通过代理的以逗号分隔的主机/域名/IP/CIDR 列表。也可以通过 K8S_AUTH_NO_PROXY 环境变量指定。

请注意,此模块不会从环境中获取典型的代理设置 (例如 NO_PROXY)。

此功能需要 kubernetes >= 19.15.0。当 kubernetes 库小于 19.15.0 时,即使 no_proxy 设置正确也会失败。

示例值为“localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16”

password

字符串

提供用于向 API 进行身份验证的密码。也可以通过 K8S_AUTH_PASSWORD 环境变量指定。

请阅读 username 选项的描述,了解何时适用此选项的讨论。

patch

列表 / 元素=字典 / 必需

JSON 补丁操作的列表。

persist_config

布尔值

是否保存 kube 配置刷新令牌。也可以通过 K8S_AUTH_PERSIST_CONFIG 环境变量指定。

当 k8s 上下文使用带有刷新令牌的用户凭据(如 oidc 或 gke/gcloud 身份验证)时,令牌会由 k8s Python 客户端库刷新,但默认情况下不会保存。因此,旧的刷新令牌可能会过期,导致下次身份验证失败。将此标志设置为 true 会告诉 k8s Python 客户端将新的刷新令牌保存到 kube config 文件中。

默认为 false。

请注意,当前版本的 k8s Python 客户端库尚不支持将此标志设置为 True。

此 k8s Python 库的修复程序在此处:https://github.com/kubernetes-client/python-base/pull/169

选项

  • false

  • true

proxy

字符串

用于连接的 HTTP 代理的 URL。也可以通过 K8S_AUTH_PROXY 环境变量指定。

请注意,此模块不会从环境中获取典型的代理设置(例如 HTTP_PROXY)。

proxy_headers

字典

在 kubernetes.core 2.0.0 中添加

basic_auth

字符串

用于基本身份验证标头的以冒号分隔的用户名:密码。

也可以通过 K8S_AUTH_PROXY_HEADERS_BASIC_AUTH 环境变量指定。

proxy_basic_auth

字符串

用于代理基本身份验证标头的以冒号分隔的用户名:密码。

也可以通过 K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH 环境变量指定。

user_agent

字符串

表示您想要的 user-agent 的字符串,例如 foo/1.0。

也可以通过 K8S_AUTH_PROXY_HEADERS_USER_AGENT 环境变量指定。

username

字符串

提供用于 API 身份验证的用户名。也可以通过 K8S_AUTH_USERNAME 环境变量指定。

请注意,这仅适用于配置为使用 HTTP 基本身份验证的集群。如果您的集群具有不同的身份验证形式(例如 OpenShift 中的 OAuth2),则此选项将无法按预期工作,您应该查看 community.okd.k8s_auth 模块,因为它可能可以满足您的需求。

validate_certs

别名: verify_ssl

布尔值

是否验证 API 服务器的 SSL 证书。也可以通过 K8S_AUTH_VERIFY_SSL 环境变量指定。

选项

  • false

  • true

wait

布尔值

是否等待某些资源类型最终达到期望的状态。

默认情况下,一旦 Kubernetes 收到请求,模块就会退出。

针对 state=presentDeploymentDaemonSetPod 以及针对所有资源类型的 state=absent 进行了实现。

对于没有实现的资源类型,除非设置了 wait_condition,否则 wait 会立即返回。

选项

  • false ← (默认)

  • true

wait_condition

字典

指定要等待的状态中的自定义条件。

如果未设置 wait 或将其设置为 False,则忽略此项。

reason

字符串

您期望的条件中 reason 字段的值。

例如,如果 Deployment 被暂停,则 Progressing type 将具有 DeploymentPaused 原因。

条件中可能的原因特定于 Kubernetes 中的每种资源类型。

请参阅给定资源的状态字段的 API 文档,以查看可能的选项。

status

字符串

您期望的条件中 status 字段的值。

例如,如果 Deployment 被暂停,则 Progressing type 将具有 Unknown 状态。

选项

  • "True" ← (默认)

  • "False"

  • "Unknown"

type

字符串

要等待的条件类型。

例如,Pod 资源将设置 Ready 条件(以及其他条件)。

如果您指定了 wait_condition,则为必需。

如果留空,则 wait_condition 字段将被忽略。

条件的可能类型特定于 Kubernetes 中的每种资源类型。

请参阅给定资源的状态字段的 API 文档,以查看可能的选项。

wait_sleep

整数

两次检查之间休眠的秒数。

默认值: 5

wait_timeout

整数

等待资源最终达到期望状态的秒数。

如果未设置 wait,则忽略此项。

默认值: 120

注意

注意

  • 为了避免当 validate_certsTrue 时出现 SSL 证书验证错误,必须通过 ca_cert 或在 kubeconfig 文件中提供 API 服务器的完整证书链。

示例

- name: Apply multiple patch operations to an existing Pod
  kubernetes.core.k8s_json_patch:
    kind: Pod
    namespace: testing
    name: mypod
    patch:
      - op: add
        path: /metadata/labels/app
        value: myapp
      - op: replace
        path: /spec/containers/0/image
        value: nginx

返回值

通用返回值记录在 此处,以下是此模块独有的字段

描述

duration

整数

任务经过的时间(以秒为单位)。

返回:wait 为 true 时

示例: 48

error

字典

修补对象时发生的错误。

返回: 错误

示例: {"exception": "Traceback (most recent call last): ...", "msg": "Failed to import the required Python library (jsonpatch) ..."}

result

字典

修改后的对象。

返回: 成功

api_version

字符串

对象的此表示形式的版本化架构。

返回: 成功

kind

字符串

此对象表示的 REST 资源。

返回: 成功

metadata

字典

标准对象元数据。包括名称、命名空间、注释、标签等。

返回: 成功

spec

字典

对象的特定属性。将根据 api_versionkind 而变化。

返回: 成功

status

字典

对象当前的详细状态。

返回: 成功

作者

  • Mike Graves (@gravesm)