在Helm3中,推送和拉取Chart的是通过使用OCI镜像仓库来实现的。OCI镜像仓库是一个存储和管理Chart的地方,可以是本地文件系统、网络服务器或云存储等。在Helm 3.7及以上版本,推送和拉取Chart的概念已经发生了变化,使用OCI制品的方式来推送和拉取Chart。OCI(Open Container Initiative)制品是一种用于存储和传输容器相关文件的标准格式。
步骤一:配置企业版实例
创建命名空间。
登录容器镜像服务控制台。
在左侧导航栏,选择实例列表。
在实例列表页面单击目标企业版实例。
在企业版实例管理页面选择 。
在命名空间页面单击创建命名空间。
在创建命名空间对话框输入命名空间名称,设置是否自动创建仓库和默认仓库类型,单击确定。
创建镜像仓库。
在企业版实例管理页面选择 。
在镜像仓库单击创建镜像仓库。
在仓库信息配置向导中设置命名空间、仓库名称、仓库类型、镜像版本、镜像加速、摘要、描述信息,单击下一步。
在代码源配置向导中设置代码源、构建设置、构建规则设置,单击创建镜像仓库。
参数
说明
代码源
选择代码源。
构建设置
代码变更时自动构建镜像:当分支有代码提交后会自动触发构建规则。
海外源智能加速:构建时会在海外机房构建,构建成功后推送到指定地域。如果您项目的Dockerfile文件需要从国外站点下载文件,但是跨境网络不稳定,您可以使用海外源智能加速。
不使用缓存:每次构建镜像时会强制重新拉取基础依赖镜像,可能会增加构建时间。关闭不使用缓存,可以加速镜像的构建时间。
在镜像仓库页面单击目标镜像仓库,您可以在镜像仓库管理页面左侧导航栏看到构建,说明镜像仓库和源代码仓库绑定成功。
配置访问凭证。
设置固定密码或者临时密码,作为后续镜像的访问凭证。以下以设置固定密码为例:
在企业版实例管理页面选择 。
在访问凭证页面单击设置固定密码。
在设置固定密码对话框输入密码和确认密码,单击确定。
配置访问控制台策略。
开启公网访问或者添加指定VPC打开专有网络访问,保证后续镜像的上传。本文以配置公网的访问控制为例。关于配置专有网络的访问控制的更多信息,请参见配置专有网络的访问控制。
在企业版实例管理页面选择 。
在访问控制页面单击公网页签。
在公网页签下,打开访问入口,单击添加公网白名单。
在添加公网白名单对话框中,输入允许访问的地址段和备注信息,然后单击确定。
打开公开匿名拉取开关。(可选)
打开公开匿名拉取开关后,您可以免登录匿名拉取公开镜像仓库。
登录容器镜像服务控制台。
在顶部菜单栏,选择所需地域。
在左侧导航栏,选择实例列表。
在实例列表页面单击目标企业版实例。
在概览页面右侧实例设置区域打开公开匿名拉取开关。
在提示对话框单击确定。
步骤二:推送和拉取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压缩包。
执行以下命令,从镜像仓库拉取Chart压缩包。
执行以下命令,在本地解压Chart压缩包。
执行以下命令,安装HelloWorld Chart。
helm install helloworld ./helloworld
说明拉取Chart的地址需要写到仓库级别。
helm3 pull oci://<企业版实例名称>-registry.cn-<企业版实例所在的地域>.cr.aliyuncs.com/<命名空间名称>/<镜像仓库名称> --version <镜像版本>
示例:
helm3 pull oci://***-registry.cn-hangzhou.cr.aliyuncs.com/test/trem --version helloworld
tar -xzvf helloworld-[镜像版本号].tgz
推送Chart的地址只需写到命名空间级别.
helm3 push test.tgz oci://<企业版实例名称>-registry.cn-<企业版实例所在的地域>.cr.aliyuncs.com/<namespace>
示例:
helm3 push test.tgz oci://***-registry.cn-hangzhou.cr.aliyuncs.com/test