You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible安装kube-prometheus-stack 50.3.1版本失败求助

问题描述

尝试安装版本50.3.1的kube-prometheus-stack,手动执行Helm命令可成功,但使用Ansible的kubernetes.core.helm模块执行失败,报错:

Error: chart "kube-prometheus-stack" matching 50.3.1 not found in prometheus-community index. (try 'helm repo update'): no chart version found for kube-prometheus-stack-50.3.1

已手动执行helm repo update,但Ansible任务仍失败。

环境信息

  • Ansible Core版本:2.15.0
  • kubernetes.core模块版本:2.4.0
  • 运行环境:Docker中的Debian 11
  • 成功的手动Helm命令:
helm upgrade -i --reset-values --atomic --create-namespace prometheus prometheus-community/kube-prometheus-stack --namespace monitoring --version 50.3.1 -f roles/shlomo/monitoring/files/values-prometheus-stack.yaml

复现用Ansible Playbook

- name: Add kube prometheus stack chart repo
  kubernetes.core.helm_repository:
    repo_name: prometheus-community
    repo_url: https://prometheus-community.github.io/helm-charts

- name: Install kube prometheus stack chart
  kubernetes.core.helm:
    atomic: true
    name: prometheus
    chart_ref: prometheus-community/kube-prometheus-stack
    chart_version: 50.3.1
    create_namespace: true
    release_namespace: monitoring
    # values: "{{ lookup('file', 'files/values-prometheus-stack.yaml') | from_yaml }}" # 可忽略该配置

完整错误输出

fatal: [sx_master]: FAILED! => {
    "changed": false,
    "command": "/usr/sbin/helm --version=50.3.1 show chart prometheus-community/kube-prometheus-stack",
    "invocation": {
        "module_args": {
            "api_key": null,
            "atomic": true,
            "binary_path": null,
            "ca_cert": null,
            "chart_ref": "prometheus-community/kube-prometheus-stack",
            "chart_repo_url": null,
            "chart_version": "50.3.1",
            "context": null,
            "create_namespace": true,
            "dependency_update": false,
            "disable_hook": false,
            "force": false,
            "history_max": null,
            "host": null,
            "kubeconfig": null,
            "name": "prometheus",
            "post_renderer": null,
            "purge": true,
            "release_name": "prometheus",
            "release_namespace": "monitoring",
            "release_state": "present",
            "release_values": {},
            "replace": false,
            "set_values": null,
            "skip_crds": false,
            "timeout": null,
            "update_repo_cache": false,
            "validate_certs": true,
            "values_files": [],
            "wait": false,
            "wait_timeout": null
        }
    },
    "msg": "Failure when executing Helm command. Exited 1.
stdout: 
stderr: Error: chart \"kube-prometheus-stack\" matching 50.3.1 not found in prometheus-community index. (try 'helm repo update'): no chart version found for kube-prometheus-stack-50.3.1
",
    "stderr": "Error: chart \"kube-prometheus-stack\" matching 50.3.1 not found in prometheus-community index. (try 'helm repo update'): no chart version found for kube-prometheus-stack-50.3.1
",
    "stderr_lines": [
        "Error: chart \"kube-prometheus-stack\" matching 50.3.1 not found in prometheus-community index. (try 'helm repo update'): no chart version found for kube-prometheus-stack-50.3.1"
    ],
    "stdout": "",
    "stdout_lines": []
}
解决方案

1. 启用Helm仓库缓存自动更新

从错误日志可见,Ansible的helm模块参数update_repo_cache被设为false,模块不会自动更新仓库索引。即便手动执行过helm repo update,Ansible可能运行在不同上下文(如不同用户、缓存路径)中,导致索引未同步。

修改helm任务,添加update_repo_cache: true:

- name: Install kube prometheus stack chart
  kubernetes.core.helm:
    atomic: true
    name: prometheus
    chart_ref: prometheus-community/kube-prometheus-stack
    chart_version: 50.3.1
    create_namespace: true
    release_namespace: monitoring
    update_repo_cache: true
    # values: "{{ lookup('file', 'files/values-prometheus-stack.yaml') | from_yaml }}"

2. 统一Helm二进制路径

手动执行用的是系统默认helm,但Ansible调用的是/usr/sbin/helm,可能两者版本或缓存路径不一致。在helm模块中指定手动使用的Helm路径:

- name: Install kube prometheus stack chart
  kubernetes.core.helm:
    atomic: true
    name: prometheus
    chart_ref: prometheus-community/kube-prometheus-stack
    chart_version: 50.3.1
    create_namespace: true
    release_namespace: monitoring
    update_repo_cache: true
    binary_path: /usr/bin/helm # 替换为你手动执行的helm路径
    # values: "{{ lookup('file', 'files/values-prometheus-stack.yaml') | from_yaml }}"

3. 强制同步仓库索引

在添加仓库后,通过Ansible任务手动执行helm repo update,确保索引更新:

- name: Add kube prometheus stack chart repo
  kubernetes.core.helm_repository:
    repo_name: prometheus-community
    repo_url: https://prometheus-community.github.io/helm-charts

- name: Update Helm repo cache
  command: helm repo update

- name: Install kube prometheus stack chart
  kubernetes.core.helm:
    atomic: true
    name: prometheus
    chart_ref: prometheus-community/kube-prometheus-stack
    chart_version: 50.3.1
    create_namespace: true
    release_namespace: monitoring
    # values: "{{ lookup('file', 'files/values-prometheus-stack.yaml') | from_yaml }}"

4. 升级kubernetes.core模块

当前kubernetes.core版本2.4.0与Ansible Core 2.15.0可能存在兼容性问题,升级模块到最新版本:

ansible-galaxy collection install kubernetes.core --upgrade

内容的提问来源于stack exchange,提问作者Hanoch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:07:27