使用 Kubernetes 动态清单插件

Kubernetes 动态清单插件

与 Pod 交互的最佳方式是使用 Kubernetes 动态清单插件,该插件使用控制器节点上可用的 kubectl 命令行查询 Kubernetes API,并告诉 Ansible 可以管理哪些 Pod。

需求

要使用 Kubernetes 动态清单插件,您必须在控制节点(运行 Ansible 的主机)上安装 Kubernetes Python 客户端kubectl

$ pip install kubernetes

请参考 Kubernetes 官方文档,了解如何在给定的操作系统上 安装 kubectl

要使用此 Kubernetes 动态清单插件,您需要首先在 ansible.cfg 文件中指定以下内容来启用它。

[inventory]
enable_plugins = kubernetes.core.k8s

然后,在您的工作目录中创建一个以 .k8s.yml.k8s.yaml 结尾的文件。

kubernetes.core.k8s 清单插件采用与任何其他 Kubernetes 模块相同的身份验证信息。

这是一个有效的清单文件示例。

plugin: kubernetes.core.k8s

执行 ansible-inventory --list -i <filename>.k8s.yml 将创建一个准备使用 Ansible 配置的 Pod 列表。

您还可以提供命名空间来收集有关给定命名空间中特定 Pod 的信息。例如,要收集有关 test 命名空间下的 Pod 的信息,您将指定 namespaces 参数。

plugin: kubernetes.core.k8s
connections:
- namespaces:
    - test

使用加密配置文件

由于清单配置文件以纯文本形式包含与 Kubernetes 相关的敏感信息,存在安全风险,因此您可能需要加密整个清单配置文件。

您可以按如下方式加密有效的清单配置文件:

$ ansible-vault encrypt <filename>.k8s.yml
  New Vault password:
  Confirm New Vault password:
  Encryption successful

$ echo "MySuperSecretPassw0rd!" > /path/to/vault_password_file

您可以使用此加密的清单配置文件:

$ ansible-inventory -i <filename>.k8s.yml --list --vault-password-file=/path/to/vault_password_file

另请参阅

Kubernetes Python 客户端 - 问题追踪器

Kubernetes Python 客户端的问题追踪器

Kubectl 安装

安装 Kubectl 的安装指南

使用 playbook

playbook 入门介绍

使用加密变量和文件

在 playbook 中使用 Vault