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

如何使用Ansible部署存储为镜像的Helm Chart到Kubernetes环境?

从GitLab容器注册表拉取自定义Helm Chart通过Ansible部署到K8s的操作方案

前置依赖

  • Ansible控制节点已安装kubernetes.core集合,可执行ansible-galaxy collection install kubernetes.core完成安装
  • 控制节点已安装与K8s集群版本兼容的helm命令行工具
  • 已获取GitLab容器注册表的访问凭证(建议使用具有注册表读写权限的个人访问令牌,避免直接使用账号密码)
  • Ansible控制节点的kubeconfig配置正常,可正常访问目标K8s集群

操作步骤

1. 编写Ansible Playbook

以下为可直接使用的Playbook示例,替换变量为你的实际环境参数即可:

---
- name: 部署GitLab存储的自定义Helm Chart
  hosts: localhost
  vars:
    # 替换为你的GitLab容器注册表地址
    gitlab_registry: "registry.gitlab.com/你的组织/你的项目"
    gitlab_username: "你的GitLab账号"
    # 敏感凭证建议通过Ansible Vault加密存储,不要明文写在配置中
    gitlab_access_token: "你的GitLab访问令牌"
    es_chart_version: "7.17.0-custom.1"
    longhorn_chart_version: "1.5.1-custom.0"
  tasks:
    - name: 登录GitLab容器注册表(适配OCI格式Chart)
      ansible.builtin.command: helm registry login {{ gitlab_registry }} -u {{ gitlab_username }} -p {{ gitlab_access_token }}
      no_log: true # 禁止输出日志避免凭证泄露

    - name: 部署自定义Elasticsearch Chart
      kubernetes.core.helm:
        name: es-production
        chart_ref: "oci://{{ gitlab_registry }}/elasticsearch"
        chart_version: "{{ es_chart_version }}"
        release_namespace: middleware
        create_namespace: true
        state: present
        # 此处可传入自定义配置覆盖Chart默认values.yaml
        values:
          master:
            replicas: 3
          data:
            replicas: 2
            storage:
              size: 200Gi

    - name: 部署自定义Longhorn Chart
      kubernetes.core.helm:
        name: longhorn
        chart_ref: "oci://{{ gitlab_registry }}/longhorn"
        chart_version: "{{ longhorn_chart_version }}"
        release_namespace: longhorn-system
        create_namespace: true
        state: present

2. 执行Playbook

  • 先执行dry run验证配置合法性,不会实际修改集群资源:
    ansible-playbook deploy_chart.yaml --check
  • 验证无问题后执行正式部署:
    ansible-playbook deploy_chart.yaml

注意事项

  • 所有敏感凭证禁止明文存储在Playbook中,推荐使用ansible-vault encrypt命令加密存储敏感变量,执行时添加--ask-vault-pass参数解密即可
  • 若出现Chart拉取失败,可先在Ansible控制节点手动执行helm pull oci://<你的Chart完整地址> --version <版本号>排查权限、网络、地址拼写问题
  • 如果Chart内引用的工作负载镜像同样存储在GitLab容器注册表中,需要提前在对应命名空间创建镜像拉取Secret,并在Chart的values配置中指定该Secret,避免K8s拉取工作负载镜像时报权限错误
  • 如需批量传入自定义配置,可将配置写入独立的values.yaml文件,在helm模块中通过values_files: /path/to/your/values.yaml参数引入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 15:54:01