kubernetes.core.k8s 查询 – 查询 K8s API

注意

此查找插件是 kubernetes.core 集合 (版本 5.0.0) 的一部分。

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

要安装它,请使用:ansible-galaxy collection install kubernetes.core。您需要其他要求才能使用此查找插件,有关详细信息,请参阅 要求

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

概要

  • 使用 Kubernetes Python 客户端通过名称获取特定对象,获取命名空间内所有匹配的对象,或获取所有命名空间中所有匹配的对象,以及有关集群的信息。

  • 提供对全部 K8s API 的访问。

  • 支持通过配置文件、证书、密码或令牌进行身份验证。

要求

以下要求是在执行此查找的本地控制器节点上需要的。

  • python >= 3.9

  • kubernetes >= 24.2.0

  • PyYAML >= 3.11

关键字参数

此部分描述查找的关键字参数。这些是在以下示例中的值 key1=value1key2=value2 等:lookup('kubernetes.core.k8s', key1=value1, key2=value2, ...)query('kubernetes.core.k8s', key1=value1, key2=value2, ...)

参数

注释

api_key

字符串

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

api_version

字符串

用于指定 API 版本。如果提供 *资源定义*,则来自 *资源定义* 的 *apiVersion* 将覆盖此选项。

默认值: "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 环境变量指定。

cluster_info

字符串

用于指定您尝试检索的集群信息类型。将优先于所有其他选项。

context

字符串

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

field_selector

字符串

要查询的特定字段。提供 *资源名称* 时将被忽略。

host

字符串

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

kind

字符串 / 必需

用于指定对象模型。如果提供 *资源定义*,则来自 *资源定义* 的 *kind* 将覆盖此选项。

kubeconfig

字符串

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

label_selector

字符串

要包含在查询中的其他标签。提供 *资源名称* 时将被忽略。

namespace

字符串

将返回的对象限制在特定命名空间。如果提供 *资源定义*,则来自 *资源定义* 的 *metadata.namespace* 值将覆盖此选项。

password

字符串

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

resource_definition

字符串

提供对象的 YAML 配置。注意:*kind*、*api_version*、*resource_name* 和 *namespace* 将被从提供的 *resource_definition* 中找到的相应值覆盖。

resource_name

字符串

按名称获取特定对象。如果提供 *资源定义*,则来自 *资源定义* 的 *metadata.name* 值将覆盖此选项。

src

字符串

提供包含对象的有效 YAML 定义的文件的路径。与 *resource_definition* 互斥。注意:*kind*、*api_version*、*resource_name* 和 *namespace* 将被从 *src* 文件中读取的配置中找到的相应值覆盖。

从本地文件系统读取。要从 Ansible 控制器的文件系统读取,请使用文件查找插件或模板查找插件,结合 from_yaml 过滤器,并将结果传递给 *resource_definition*。请参见下面的示例。

username

字符串

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

validate_certs

别名:verify_ssl

布尔值

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

选项

  • false

  • true

备注

注意

示例

- name: Fetch a list of namespaces
  set_fact:
    projects: "{{ query('kubernetes.core.k8s', api_version='v1', kind='Namespace') }}"

- name: Fetch all deployments
  set_fact:
    deployments: "{{ query('kubernetes.core.k8s', kind='Deployment') }}"

- name: Fetch all deployments in a namespace
  set_fact:
    deployments: "{{ query('kubernetes.core.k8s', kind='Deployment', namespace='testing') }}"

- name: Fetch a specific deployment by name
  set_fact:
    deployments: "{{ query('kubernetes.core.k8s', kind='Deployment', namespace='testing', resource_name='elastic') }}"

- name: Fetch with label selector
  set_fact:
    service: "{{ query('kubernetes.core.k8s', kind='Service', label_selector='app=galaxy') }}"

# Use parameters from a YAML config

- name: Load config from the Ansible controller filesystem
  set_fact:
    config: "{{ lookup('file', 'service.yml') | from_yaml }}"

- name: Using the config (loaded from a file in prior task), fetch the latest version of the object
  set_fact:
    service: "{{ query('kubernetes.core.k8s', resource_definition=config) }}"

- name: Use a config from the local filesystem
  set_fact:
    service: "{{ query('kubernetes.core.k8s', src='service.yml') }}"

返回值

描述

返回值

列表 / 元素=字典

从 API 返回的一个或多个对象定义。

返回:成功

示例: [{"apiVersion": "v1", "data": {"key1": "val1"}, "kind": "ConfigMap", "metadata": {"creationTimestamp": "2022-03-04T13:59:49Z", "name": "my-config-map", "namespace": "default", "resourceVersion": "418", "uid": "5714b011-d090-4eac-8272-a0ea82ec0abd"}}]

作者

  • Chris Houseknecht (@chouseknecht)

  • Fabian von Feilitzsch (@fabianvf)

提示

每个条目类型的配置项具有从低到高的优先级顺序。例如,列表中较低的变量将覆盖较高的变量。