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
相关产品推荐
相关产品推荐

