kubernetes.core.helm 模块 – 使用 Helm 包管理器管理 Kubernetes 包
注意
此模块是 kubernetes.core 集合 (版本 5.0.0) 的一部分。
如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install kubernetes.core。您需要其他要求才能使用此模块,有关详细信息,请参见 要求。
要在 playbook 中使用它,请指定:kubernetes.core.helm。
kubernetes.core 0.11.0 中的新增功能
概要
- 使用 Helm 包管理器安装、升级、删除包。 
注意
此模块具有相应的 action 插件。
要求
执行此模块的主机需要以下要求。
参数
| 参数 | 注释 | 
|---|---|
| 用于对 API 进行身份验证的令牌。也可以通过  | |
| 如果设置,则安装过程会在失败时删除安装。 选项 
 | |
| 要使用的 helm 二进制文件的路径。 | |
| 用于对 API 进行身份验证的 CA 证书的路径。必须提供完整的证书链,以避免证书验证错误。也可以通过  | |
| 图表存储库上的图表引用。 打包图表的路径。 解压图表目录的路径。 绝对URL。 当 *release_state* 设置为  | |
| 用于查找所需图表的图表存储库 URL。 | |
| 要安装的图表版本。如果未指定,则安装最新版本。 | |
| 指定要使用的 kubeconfig 上下文的 Helm 选项。 如果在任务中未指定该值,则将使用环境变量  | |
| 如果发行版命名空间不存在,则创建它。 选项 
 | |
| 在操作之前运行独立的  使用  因此,当启用 *replace* 选项并指定 *chart_repo_url* 时,我们应该考虑使用 *dependency_update* 选项。 *dependency_update* 选项需要在  更多信息请访问 https://helm.kubernetes.ac.cn/docs/helm/helm_dependency/ 选项 
 | |
| Helm 选项,用于禁用安装/升级/删除时的钩子。 选项 
 | |
| Helm 选项,用于强制重新安装,在新安装时忽略。 选项 
 | |
| 限制每个发行版保存的修订版最大数量。 与  | |
| 提供用于访问 API 的 URL。也可以通过  | |
| 指定要使用的 kubeconfig 路径的 Helm 选项。 如果在任务中未指定该值,则将使用环境变量  配置可以作为字典提供。2.4.0 版本中新增。 | |
| 要用于后期渲染的可执行文件的路径。 | |
| 从存储库中删除发行版,并使其名称可供以后使用。 选项 
 | |
| 要管理的发行版名称。 | |
| 应该安装图表的 Kubernetes 命名空间。 | |
| 发行版的所需状态。 选项 
 | |
| 要传递给图表的 value。 默认值:  | |
| 仅当该名称是已删除但保留在历史记录中的发行版时,才重用给定的名称。 这在生产环境中是不安全的。 与 选项 
 | |
| 升级包时,将值重置为图表中内置的值。 选项 
 | |
| 升级包时,指定是否重用上次发布的值并将参数release_values、values_files或set_values中的任何覆盖合并。 如果reset_values设置为 选项 
 | |
| 传递给图表配置的值 | |
| 传递给图表配置的值(例如 phase=prod)。 | |
| 使用 使用 使用 使用 选项 
 | |
| 安装或升级时跳过自定义资源定义。 选项 
 | |
| 一个 Go 持续时间 (此处描述 https://pkg.go.dev/time#ParseDuration) 值,用于等待 Kubernetes 命令完成。默认为 5m0s。 类似于 与 | |
| 在操作之前运行 选项 
 | |
| 是否验证 API 服务器的 SSL 证书。也可以通过 选项 
 | |
| 传递给图表的 value 文件。 路径将从目标主机的文件系统读取,而不是运行 Ansible 的主机。 如果同时使用 values_files 和 values 选项,则 values_files 选项优先于 values 选项。 路径按指定顺序进行评估。 默认值:  | |
| 当release_state设置为 当release_state设置为 选项 
 | |
| 启用 wait 选项时的超时(helm2 是秒数,helm3 是持续时间)。 使用wait_timeout等待 Kubernetes 命令完成已被弃用,并将在 2022-12-01 后移除。 | 
备注
注意
- 当 - release_state设置为- present且定义了- chart_repo_url时,默认的幂等性检查可能会未能报告更改。安装 helm diff >= 3.4.1 以获得更好的结果。
示例
- name: Deploy latest version of Prometheus chart inside monitoring namespace (and create it)
  kubernetes.core.helm:
    name: test
    chart_ref: stable/prometheus
    release_namespace: monitoring
    create_namespace: true
# From repository
- name: Add stable chart repo
  kubernetes.core.helm_repository:
    name: stable
    repo_url: "https://kubernetes.github.io/ingress-nginx"
- name: Deploy latest version of Grafana chart inside monitoring namespace with values
  kubernetes.core.helm:
    name: test
    chart_ref: stable/grafana
    release_namespace: monitoring
    values:
      replicas: 2
- name: Deploy Grafana chart on 5.0.12 with values loaded from template
  kubernetes.core.helm:
    name: test
    chart_ref: stable/grafana
    chart_version: 5.0.12
    values: "{{ lookup('template', 'somefile.yaml') | from_yaml }}"
- name: Deploy Grafana chart using values files on target
  kubernetes.core.helm:
    name: test
    chart_ref: stable/grafana
    release_namespace: monitoring
    values_files:
      - /path/to/values.yaml
- name: Remove test release and waiting suppression ending
  kubernetes.core.helm:
    name: test
    state: absent
    wait: true
- name: Separately update the repository cache
  kubernetes.core.helm:
    name: dummy
    namespace: kube-system
    state: absent
    update_repo_cache: true
- name: Deploy Grafana chart using set values on target
  kubernetes.core.helm:
    name: test
    chart_ref: stable/grafana
    release_namespace: monitoring
    set_values:
      - value: phase=prod
        value_type: string
# From git
- name: Git clone stable repo on HEAD
  ansible.builtin.git:
    repo: "http://github.com/helm/charts.git"
    dest: /tmp/helm_repo
- name: Deploy Grafana chart from local path
  kubernetes.core.helm:
    name: test
    chart_ref: /tmp/helm_repo/stable/grafana
    release_namespace: monitoring
# From url
- name: Deploy Grafana chart on 5.6.0 from url
  kubernetes.core.helm:
    name: test
    chart_ref: "https://github.com/grafana/helm-charts/releases/download/grafana-5.6.0/grafana-5.6.0.tgz"
    release_namespace: monitoring
# Using complex Values
- name: Deploy new-relic client chart
  kubernetes.core.helm:
    name: newrelic-bundle
    chart_ref: newrelic/nri-bundle
    release_namespace: default
    force: True
    wait: True
    replace: True
    update_repo_cache: True
    disable_hook: True
    values:
      global:
        licenseKey: "{{ nr_license_key }}"
        cluster: "{{ site_name }}"
      newrelic-infrastructure:
        privileged: True
      ksm:
        enabled: True
      prometheus:
        enabled: True
      kubeEvents:
        enabled: True
      logging:
        enabled: True
# Deploy latest version
- name: Deploy latest version of Grafana chart using reuse_values
  kubernetes.core.helm:
    name: test
    chart_ref: stable/grafana
    release_namespace: monitoring
    reuse_values: true
    values:
      replicas: 2
      version: 3e8ec0b2dffa40fb97d5342e4af887de95faa8c61a62480dd7f8aa03dffcf533
返回值
常见的返回值已在此处记录,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 此模块构建的完整 `helm` 命令,以防您想在模块外部重新运行命令或调试问题。 返回:始终 示例:  | |
| 状态输出的字典 返回:成功创建/升级/已部署 | |
| 已部署应用程序的版本 返回:始终 | |
| 图表名称和图表版本 返回:始终 | |
| 发布的名称 返回:始终 | |
| 部署发布的命名空间 返回:始终 | |
| 发布已更新的次数 返回:始终 | |
| 发布的状态(可以是 DEPLOYED、FAILED 等…) 返回:始终 | |
| 上次更新日期 返回:始终 | |
| 用于部署的值字典 返回:始终 | |
| 完整的 `helm` 命令 stderr,以防您想显示它或检查事件日志 返回:始终 示例:  | |
| 完整的 `helm` 命令 stdout,以防您想显示它或检查事件日志 返回:始终 示例:  | 
