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 包管理器安装、升级、删除软件包。

注意

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

要求

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

参数

参数

注释

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

路径

chart 仓库上的 chart 引用。

打包的 chart 的路径。

解压的 chart 目录的路径。

绝对 URL。

release_state 设置为 present 时是必需的。

chart_repo_url

字符串

要查找请求的 chart 的 chart 仓库 URL。

chart_version

字符串

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

context

别名:kube_context

字符串

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

如果任务中未指定该值,则将使用环境变量 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-updatehelm upgrade 命令尚不支持此功能。

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

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

有关详细信息,请访问 https://helm.kubernetes.ac.cn/docs/helm/helm_dependency/

选项

  • false ← (默认)

  • true

disable_hook

布尔值

Helm 选项,用于在安装/升级/删除时禁用 hook。

选项

  • 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

任何

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

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

配置可以作为字典提供。在 2.4.0 版本中添加。

post_renderer

字符串

在 kubernetes.core 2.4.0 中添加

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

purge

布尔值

从商店中删除该版本,并使其名称可以用于以后使用。

选项

  • false

  • true ← (默认)

release_name

别名:name

字符串 / 必需

要管理的版本名称。

release_namespace

别名:namespace

字符串 / 必需

应安装 chart 的 Kubernetes 命名空间。

release_state

别名:state

字符串

版本的期望状态。

选项

  • "present" ← (默认)

  • "absent"

release_values

别名:values

字典

要传递给 chart 的值。

默认值: {}

replace

布尔值

在 kubernetes.core 1.11.0 中添加

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

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

history_max 互斥。

选项

  • false ← (默认)

  • true

reset_values

布尔值

在 kubernetes.core 2.5.0 中添加

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

选项

  • 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 中添加

等待 Kubernetes 命令完成的 Go 时长(此处描述:https://pkg.go.dev/time#ParseDuration)值。默认为 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 中添加

要传递给图表的值文件。

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

如果同时使用 values_files 和 values 选项,则先评估 values_files 选项。

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

默认值: []

wait

布尔值

release_state 设置为 present 时,等待所有 Pod、PVC、Service 和 Deployment 的最少数量的 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)