通过容器镜像服务企业版的Helm Chart功能,您可以高效便捷地托管和分发Kubernetes集群内的各种资源。在安装并配置Helm客户端和配置企业版实例之后,您才可以推送和拉取Chart。本文介绍如何使用v2和v3版本的Helm客户端推送和拉取Chart。
背景信息
在这个基于YAML文件的软件交付体系不断完善过程中,云原生社区衍生了一个更高维度的概念及其实现工具,即Chart和Helm。
- Chart是一系列Kubernetes集群内资源描述文件的组合,一个Chart可以是一个WordPress和MySQL的组合,也可以是一个etcd集群的组合。
- Helm是一个命令行程序,用于管理这些Chart,以及其运行态Release。
- 如果您使用的是v3版本的Helm客户端,可以直接基于企业版镜像仓库托管Helm Chart。
- 如果您现在使用的是v2版本的Helm客户端,您需要在企业版实例概览页面开启Charts组件,待组件状态变为运行中,即可开始托管Chart类型仓库。
使用Helm 3推送和拉取Chart
helm3
命令。
使用Helm 3.7及以上客户端版本推送和拉取Chart
步骤一:配置企业版实例
- 创建命名空间。
- 登录容器镜像服务控制台。
- 在左侧导航栏,选择实例列表。
- 在实例列表页面单击目标企业版实例。
- 在企业版实例管理页面选择仓库管理 > 命名空间。
- 在命名空间页面单击创建命名空间。
- 在创建命名空间对话框输入命名空间名称,设置是否自动创建仓库和默认仓库类型,单击确定。
- 创建镜像仓库。
- 在企业版实例管理页面选择仓库管理 > 镜像仓库。
- 在镜像仓库页面单击创建镜像仓库。
- 在仓库信息配置向导中设置命名空间、仓库名称、仓库类型、镜像版本、镜像加速、摘要、描述信息,单击下一步。
- 在代码源配置向导中设置代码源、构建设置、构建规则设置,单击创建镜像仓库。
参数 说明 代码源 选择代码源。 构建设置 - 代码变更自动构建镜像:当分支有代码提交后会自动触发构建规则。
- 海外源智能加速:构建时会在海外机房构建,构建成功后推送到指定地域。
- 不使用缓存:每次构建时会强制重新拉取基础依赖镜像,可能会增加构建时间。
构建规则设置 请在仓库创建完成后,前往构建页面设置。具体操作,请参见构建仓库与镜像。
- 配置访问凭证。设置固定密码或者临时密码,用于登录企业版实例仓库。以下以设置固定密码为例:
- 在企业版实例管理页面选择实例管理 > 访问凭证。
- 在访问凭证页面单击设置固定密码。
- 在设置固定密码对话框输入密码和确认密码,单击确定。
- 配置访问控制台策略。开启公网访问或者添加指定VPC打开专有网络访问,保证后续Helm Chart的上传。本文以配置公网的访问控制为例。关于配置专有网络的访问控制的更多信息,请参见配置专有网络的访问控制。
- 在企业版实例管理页面选择仓库管理 > 访问控制。
- 在访问控制页面单击公网页签。
- 在公网页签下,打开访问入口,单击添加公网白名单。
- 在添加公网白名单对话框中,输入允许访问的地址段和备注信息,然后单击确定。
步骤二:推送和拉取Chart
- 执行以下命令,开启Helm3.7及以上版本客户端实验特性。
export HELM_EXPERIMENTAL_OCI=1
- 执行以下命令,登录企业版实例。其中用于登录的用户名为阿里云账号名。说明 如果您推送拉取的是公开Chart仓库,您可以在容器镜像控制台概览页面打开公开匿名拉取开关,然后您可以免登录匿名拉取公开Chart仓库。
helm3 registry login -u <镜像仓库登录名> <企业版实例名称>-registry.cn-<企业版实例所在的地域>.cr.aliyuncs.com
示例:helm3 registry login -u acr_test_***@test.aliyunid.com ***-registry.cn-hangzhou.cr.aliyuncs.com
在返回结果中输入登录密码。登录密码为上文设置的固定密码。
- 执行以下命令,创建HelloWorld Chart。
helm3 create helloworld
- 执行以下命令,在本地将Chart目录制作成压缩包。
tar -zcvf test.tgz helloworld
- 推送和拉取Chart。
- 推送Chart压缩包至镜像仓库。
说明 推送Chart的地址只需写到命名空间级别.
helm3 push test.tgz oci://<企业版实例名称>-registry.cn-<企业版实例所在的地域>.cr.aliyuncs.com/<namespace>
示例:helm3 push test.tgz oci://***-registry.cn-hangzhou.cr.aliyuncs.com/test
- 从镜像仓库拉取Chart压缩包。
- 执行以下命令,从镜像仓库拉取Chart压缩包。
说明 拉取Chart的地址需要写到仓库级别。
helm3 pull oci://<企业版实例名称>-registry.cn-<企业版实例所在的地域>.cr.aliyuncs.com/<命名空间名称>/<镜像仓库名称> --version <镜像版本>
示例:helm3 pull oci://***-registry.cn-hangzhou.cr.aliyuncs.com/test/trem --version helloworld
- 执行以下命令,在本地解压Chart压缩包。
tar -xzvf helloworld-[镜像版本号].tgz
- 执行以下命令,从镜像仓库拉取Chart压缩包。
- 推送Chart压缩包至镜像仓库。
使用Helm 3.7以下客户端版本推送和拉取Chart
步骤一:配置企业版实例
- 创建命名空间。
- 登录容器镜像服务控制台。
- 在左侧导航栏,选择实例列表。
- 在实例列表页面单击目标企业版实例。
- 在企业版实例管理页面选择仓库管理 > 命名空间。
- 在命名空间页面单击创建命名空间。
- 在创建命名空间对话框输入命名空间名称,设置是否自动创建仓库和默认仓库类型,单击确定。
- 创建镜像仓库。
- 在企业版实例管理页面选择仓库管理 > 镜像仓库。
- 在镜像仓库页面单击创建镜像仓库。
- 在仓库信息配置向导中设置命名空间、仓库名称、仓库类型、镜像版本、镜像加速、摘要、描述信息,单击下一步。
- 在代码源配置向导中设置代码源、构建设置、构建规则设置,单击创建镜像仓库。
参数 说明 代码源 选择代码源。 构建设置 - 代码变更自动构建镜像:当分支有代码提交后会自动触发构建规则。
- 海外源智能加速:构建时会在海外机房构建,构建成功后推送到指定地域。
- 不使用缓存:每次构建时会强制重新拉取基础依赖镜像,可能会增加构建时间。
构建规则设置 请在仓库创建完成后,前往构建页面设置。具体操作,请参见构建仓库与镜像。
- 配置访问凭证。设置固定密码或者临时密码,用于登录企业版实例仓库。以下以设置固定密码为例:
- 在企业版实例管理页面选择实例管理 > 访问凭证。
- 在访问凭证页面单击设置固定密码。
- 在设置固定密码对话框输入密码和确认密码,单击确定。
- 配置访问控制台策略。开启公网访问或者添加指定VPC打开专有网络访问,保证后续Helm Chart的上传。本文以配置公网的访问控制为例。关于配置专有网络的访问控制的更多信息,请参见配置专有网络的访问控制。
- 在企业版实例管理页面选择仓库管理 > 访问控制。
- 在访问控制页面单击公网页签。
- 在公网页签下,打开访问入口,单击添加公网白名单。
- 在添加公网白名单对话框中,输入允许访问的地址段和备注信息,然后单击确定。
步骤二:推送和拉取Chart
- 从官方下载需要的Helm Chart版本。 说明 请确保客户端为v3版本,可以通过执行
helm version -c
命令查看客户端版本。以下为v3.0.2版本的使用示例。 - 执行以下命令,开启Helm 3客户端实验特性。
export HELM_EXPERIMENTAL_OCI=1
- 执行以下命令,登录企业版实例。其中用于登录的用户名为阿里云账号名。说明 如果您推送拉取的是公开Chart仓库,您可以在容器镜像控制台概览页面打开公开匿名拉取开关,然后您可以免登录匿名拉取公开Chart仓库。
helm3 registry login --username=<镜像仓库登录名> <企业版实例名称>.<企业版实例所在的地域>.cr.aliyuncs.com
示例:helm3 registry login --username=123@188077086902**** m**-registry.cn-hangzhou.cr.aliyuncs.com
在返回结果中输入登录密码。登录密码为上文设置的固定密码。
- 执行以下命令,创建HelloWorld Chart。
helm3 create helloworld
- 推送和拉取Chart。
- 推送Chart至镜像仓库。
- 执行以下命令,将Chart目录保存为企业版实例仓库tag版本。
helm3 chart save helloworld <企业版实例名称>.<企业版实例所在的地域>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>:<镜像版本号>
示例:helm3 chart save helloworld m**-registry.cn-hangzhou.cr.aliyuncs.com/m**/test:latest
- 执行以下命令,将tag版本推送到企业版实例仓库。
helm3 chart push <企业版实例名称>.<企业版实例所在的地域>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>:<镜像版本号>
示例:helm3 chart push m**-registry.cn-hangzhou.cr.aliyuncs.com/m**/test:latest
- 执行以下命令,将Chart目录保存为企业版实例仓库tag版本。
- 从镜像仓库拉取Chart。
- 执行以下命令,从企业版实例仓库中拉取指定tag版本。
helm3 chart save helloworld <企业版实例名称>.<企业版实例所在的地域>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>:<镜像版本号>
示例:helm3 chart save helloworld m**-registry.cn-hangzhou.cr.aliyuncs.com/m**/test:latest
- 执行以下命令,导出tag版本到本地目录,即可在本地查看到Chart目录。
helm3 chart export <企业版实例名称>.<企业版实例所在的地域>.cr.aliyuncs.com/<命名空间的名称>/<镜像仓库的名称>:<镜像版本号> -d .
示例:helm3 chart export m**-registry.cn-hangzhou.cr.aliyuncs.com/m**/test:latest -d .
- 执行以下命令,从企业版实例仓库中拉取指定tag版本。
- 推送Chart至镜像仓库。
使用Helm 2推送和拉取Chart
步骤一:安装并配置客户端
- 从官方下载需要的Helm Chart版本。 说明 请确保客户端为v2版本,可以通过执行
helm version -c
命令查看客户端版本。以下为v2.14.2版本的使用示例。 - 执行以下命令,将Helm安装包解压缩并放置至指定位置。
# 解压缩。 tar -zxvf helm-v2.14.2-linux-amd64.tgz # 移动至指定位置。 mv linux-amd64/helm /usr/local/bin/helm
- 安装Helm插件。说明 在安装Helm插件前,需要预先安装Git。
- 如果您位于海外或访问Github比较流畅,执行以下命令安装Helm插件。
helm plugin install https://github.com/AliyunContainerService/helm-acr
- 如果您位于中国内地且为Linux操作系统,执行以下命令安装Helm插件。
git clone https://github.com/AliyunContainerService/helm-acr.git sed -i 's/github.com/helm-acr-releases.oss-cn-hangzhou.aliyuncs.com/g' helm-acr/scripts/install_plugin.sh helm plugin install helm-acr
- 如果您位于中国内地且为Mac操作系统,执行以下命令安装Helm插件。
git clone https://github.com/AliyunContainerService/helm-acr.git sed -i '' 's/github.com/helm-acr-releases.oss-cn-hangzhou.aliyuncs.com/g' helm-acr/scripts/install_plugin.sh helm plugin install helm-acr
- 如果您位于海外或访问Github比较流畅,执行以下命令安装Helm插件。
- 初始化Helm环境。
- 如果你当前在容器服务集群节点上,默认已经有初始化完成的Tiller,只需要初始化Client。并且希望避免访问Google Chart源,执行以下命令,初始化Helm环境。
helm init --client-only --skip-refresh
- 如果你当前在自建的Kubernetes集群节点上,并且希望避免访问Google Chart源,执行以下命令,初始化Helm环境。
helm init --skip-refresh
- 如果你当前在容器服务集群节点上,默认已经有初始化完成的Tiller,只需要初始化Client。并且希望避免访问Google Chart源,执行以下命令,初始化Helm环境。
步骤二:配置企业版实例
- 创建命名空间。
- 登录容器镜像服务控制台。
- 在左侧导航栏,选择实例列表。
- 在实例列表页面单击目标企业版实例。
- 在企业版实例管理页面选择Chart仓库 > 命名空间。
- 在命名空间页面单击创建命名空间。
- 在创建命名空间对话框输入命名空间名称,设置是否自动创建仓库和默认仓库类型,单击确定。
- 创建Chart仓库。说明
当命名空间开启了自动创建仓库功能后,无需提前在界面创建Chart仓库,可直接在终端Helm Push Chart仓库。
企业版中Chart仓库的格式为
<实例名称>-chart.<Region ID>.cr.aliyuncs.com/<命名空间>/<Chart 仓库名>
,Chart仓库的版本为<Chart 名称>-<版本号>
。如果您希望使用VPC内网访问,则Chart仓库的格式为<实例名称>-chart-vpc.<Region ID>.cr.aliyuncs.com/<命名空间>/<Chart 仓库名>
。- 在企业版实例管理页面选择Helm Chart > Chart 仓库。
- 在Chart仓库页面单击创建Chart仓库。
- 在创建Helm Chart对话框选择命名空间,设置Chart仓库名称和类型,然后单击确定。
- 配置访问凭证。设置固定密码或者临时密码,作为后续Helm Chart的访问凭证。以下以设置固定密码为例:
- 在企业版实例管理页面选择实例管理 > 访问凭证。
- 在访问凭证页面单击设置固定密码。
- 在设置固定密码对话框输入密码和确认密码,单击确定。
- 配置访问控制台策略。开启公网访问或者添加指定VPC打开专有网络访问,保证后续Helm Chart的上传。本文以配置公网的访问控制为例。关于配置专有网络的访问控制的更多信息,请参见配置专有网络的访问控制。
- 在企业版实例管理页面选择Helm Chart > 访问控制。
- 在访问控制页面单击公网页签。
- 在公网页签下,打开访问入口,单击添加公网白名单。
- 在添加公网白名单对话框中,输入允许访问的地址段和备注信息,然后单击确定。
- 执行以下命令,配置本地仓库映射。
需要指定一个本地仓库名称,映射到线上的某一个命名空间下的某一个Chart仓库。
export HELM_REPO_USERNAME='<企业版实例访问凭证中账号>'; export HELM_REPO_PASSWORD='<企业版实例访问凭证中密码>'; helm repo add <本地仓库名称> acr://<实例名称>-chart.<Region ID>.cr.aliyuncs.com/<命名空间>/<Chart 仓库> --username ${HELM_REPO_USERNAME} --password ${HELM_REPO_PASSWORD}
步骤三:推送和拉取Chart
- 打开公开匿名拉取开关。打开公开匿名拉取开关后,您可以免登录匿名拉取公开Chart仓库。
- 登录容器镜像服务控制台。
- 在顶部菜单栏,选择所需地域。
- 在左侧导航栏,选择实例列表。
- 在实例列表页面单击目标企业版实例。
- 在概览页面右侧实例设置区域打开公开匿名拉取开关。
- 在提示对话框单击确定。
- 推送Chart。
- 执行以下命令,推送Chart。
# 本地创建一个Chart。 helm create <Chart名称> # 推送Chart目录。 helm cm-push <Chart名称> <本地仓库名称> # 或者推送Chart压缩包。 helm cm-push <Chart名称>-<Chart版本>.tgz <本地仓库名称>
在Chart仓库页面单击Chart仓库名称,单击版本列表。在版本列表页面可以看到新增一个Chart。 - 执行以下命令,推送Chart。
- 执行以下命令,拉取Chart。
# 从线上Chart仓库更新本地Chart索引。 helm repo update # 拉取Chart。 helm fetch <本地仓库名称>/<Chart名称> --version <Chart版本> # 或者直接安装Chart。 helm install -f values.yaml <本地仓库名称>/<Chart名称> --version <Chart版本>