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_key

字符串

kubernetes.core 1.2.0 中新增

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

atomic

布尔值

如果设置,则安装过程会在失败时删除安装。

选项

  • false ← (默认)

  • true

binary_path

路径

要使用的 helm 二进制文件的路径。

ca_cert

别名:ssl_ca_cert

路径

kubernetes.core 1.2.0 中新增

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

chart_ref

路径

图表存储库上的图表引用。

打包图表的路径。

解压图表目录的路径。

绝对URL。

当 *release_state* 设置为 present 时,这是必需的。

chart_repo_url

字符串

用于查找所需图表的图表存储库 URL。

chart_version

字符串

要安装的图表版本。如果未指定,则安装最新版本。

context

别名:kube_context

字符串

指定要使用的 kubeconfig 上下文的 Helm 选项。

如果在任务中未指定该值,则将使用环境变量 K8S_AUTH_CONTEXT 的值。

create_namespace

布尔值

kubernetes.core 0.11.1 中新增

如果发行版命名空间不存在,则创建它。

选项

  • false ← (默认)

  • true

dependency_update

别名:dep_up

布尔值

kubernetes.core 2.4.0 中新增

在操作之前运行独立的 helm dependency update CHART

使用 helm install 命令内联运行 --dependency-update。此功能尚不支持 helm upgrade 命令。

因此,当启用 *replace* 选项并指定 *chart_repo_url* 时,我们应该考虑使用 *dependency_update* 选项。

*dependency_update* 选项需要在 Chart.yaml/requirements.yaml 文件中添加 dependencies 块。

更多信息请访问 https://helm.kubernetes.ac.cn/docs/helm/helm_dependency/

选项

  • false ← (默认)

  • true

disable_hook

布尔值

Helm 选项,用于禁用安装/升级/删除时的钩子。

选项

  • false ← (默认)

  • true

force

布尔值

Helm 选项,用于强制重新安装,在新安装时忽略。

选项

  • false ← (默认)

  • true

history_max

整数

kubernetes.core 2.2.0 中新增

限制每个发行版保存的修订版最大数量。

replace 互斥。

host

字符串

kubernetes.core 1.2.0 中新增

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

kubeconfig

别名:kubeconfig_path

任意

指定要使用的 kubeconfig 路径的 Helm 选项。

如果在任务中未指定该值,则将使用环境变量 K8S_AUTH_KUBECONFIG 的值。

配置可以作为字典提供。2.4.0 版本中新增。

post_renderer

字符串

kubernetes.core 2.4.0 中新增

要用于后期渲染的可执行文件的路径。

purge

布尔值

从存储库中删除发行版,并使其名称可供以后使用。

选项

  • false

  • true ← (默认)

release_name

别名:name

字符串 / 必需

要管理的发行版名称。

release_namespace

别名:namespace

字符串 / 必需

应该安装图表的 Kubernetes 命名空间。

release_state

别名:state

字符串

发行版的所需状态。

选项

  • "present" ← (默认)

  • "absent"

release_values

别名:values

字典

要传递给图表的 value。

默认值: {}

replace

布尔值

kubernetes.core 1.11.0 中新增

仅当该名称是已删除但保留在历史记录中的发行版时,才重用给定的名称。

这在生产环境中是不安全的。

history_max互斥。

选项

  • false ← (默认)

  • true

reset_values

布尔值

kubernetes.core 2.5.0版本中添加

升级包时,将值重置为图表中内置的值。

选项

  • false

  • true ← (默认)

reuse_values

布尔值

kubernetes.core 2.5.0版本中添加

升级包时,指定是否重用上次发布的值并将参数release_valuesvalues_filesset_values中的任何覆盖合并。

如果reset_values设置为True,则忽略此设置。

选项

  • false

  • true

set_values

列表 / 元素=字典

kubernetes.core 2.4.0 中新增

传递给图表配置的值

value

字符串 / 必需

传递给图表配置的值(例如 phase=prod)。

value_type

字符串

使用raw设置单个值。

使用string强制将单个值设置为字符串。

使用file从文件中设置单个值,当值本身过长而无法用于命令行或动态生成时。

使用json设置 JSON 值(标量/对象/数组)。此功能需要 helm>=3.10.0。

选项

  • "raw" ← (默认)

  • "string"

  • "json"

  • "file"

skip_crds

布尔值

kubernetes.core 1.2.0 中新增

安装或升级时跳过自定义资源定义。

选项

  • false ← (默认)

  • true

timeout

字符串

kubernetes.core 2.3.0版本中添加

一个 Go 持续时间 (此处描述 https://pkg.go.dev/time#ParseDuration) 值,用于等待 Kubernetes 命令完成。默认为 5m0s。

类似于wait_timeout,但不依赖wait被激活。

wait_timeout互斥。

update_repo_cache

布尔值

在操作之前运行helm repo update。可以作为包安装的一部分运行,也可以作为单独步骤运行(参见示例)。

选项

  • false ← (默认)

  • true

validate_certs

别名:verify_ssl

布尔值

kubernetes.core 1.2.0 中新增

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

选项

  • false

  • true ← (默认)

values_files

列表 / 元素=字符串

kubernetes.core 1.1.0版本中添加

传递给图表的 value 文件。

路径将从目标主机的文件系统读取,而不是运行 Ansible 的主机。

如果同时使用 values_files 和 values 选项,则 values_files 选项优先于 values 选项。

路径按指定顺序进行评估。

默认值: []

wait

布尔值

release_state设置为present时,等待所有 Pod、PVC、服务和部署的最小 Pod 数达到就绪状态,然后才能将发布标记为成功。

release_state设置为absent时,将等待所有资源删除完毕后再返回。它将等待与wait_timeout一样长的时间。此功能需要 helm>=3.7.0。2.3.0 版本中添加。

选项

  • false ← (默认)

  • true

wait_timeout

字符串

启用 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

返回值

常见的返回值已在此处记录,以下是此模块特有的字段

描述

command

字符串

此模块构建的完整 `helm` 命令,以防您想在模块外部重新运行命令或调试问题。

返回:始终

示例: "helm upgrade ..."

status

复杂

状态输出的字典

返回:成功创建/升级/已部署

appversion

字符串

已部署应用程序的版本

返回:始终

chart

字符串

图表名称和图表版本

返回:始终

name

字符串

发布的名称

返回:始终

namespace

字符串

部署发布的命名空间

返回:始终

revision

字符串

发布已更新的次数

返回:始终

status

字符串

发布的状态(可以是 DEPLOYED、FAILED 等…)

返回:始终

updated

字符串

上次更新日期

返回:始终

values

字符串

用于部署的值字典

返回:始终

stderr

字符串

完整的 `helm` 命令 stderr,以防您想显示它或检查事件日志

返回:始终

示例: ""

stdout

字符串

完整的 `helm` 命令 stdout,以防您想显示它或检查事件日志

返回:始终

示例: ""

作者

  • Lucas Boisserie (@LucasBoisserie)

  • Matthieu Diehr (@d-matt)