在 Artifact Registry 中存储 Helm 图表
Helm 是 Kubernetes 的软件包管理器。它使用图表来定义要部署的一组 Kubernetes 资源。
本快速入门向您展示了如何执行以下操作:
- 在 Artifact Registry 中创建私有代码库
- 创建示例图表
- 向代码库进行身份验证
- 将图表推送到代码库
- 部署图表
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Google Kubernetes Engine APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Google Kubernetes Engine APIs.
选择 shell
如需完成本快速入门,请使用 Cloud Shell 或本地 shell。
- Cloud Shell
- Cloud Shell 是一种 shell 环境,用于管理托管在 Google Cloud 上的资源。它预安装有 Docker、Helm 和 Google Cloud CLI,这是 Google Cloud 的主要命令行界面。
- 本地 shell
- 如果您更喜欢使用本地 shell,则必须安装 Docker gcloud CLI。
启动 Cloud Shell
要启动 Cloud Shell,请执行以下步骤:
转到 Google Cloud 控制台。
点击激活 Cloud Shell 按钮:。
控制台下方的框架内会打开一个 Cloud Shell 会话。您可以使用此 shell 运行
gcloud
命令。安装 Helm 3.8.0 或更高版本。在更早的 Helm 版本中,OCI 格式的图表只作为一项实验性功能提供。
运行
helm version
验证您的版本。
设置本地 shell
如需安装 gcloud CLI 和 Helm,请执行以下步骤:
安装 gcloud CLI。要更新现有 安装后,运行
gcloud components update
命令。安装 Helm 3.8.0 或更高版本。在更早的 Helm 版本中,OCI 格式的图表只作为一项实验性功能提供。
运行
helm version
验证您的版本。
创建代码库
创建 Docker 代码库以存储本快速入门的示例图表。
控制台
打开 Google Cloud 控制台中的制品库页面。
点击创建代码库。
指定
quickstart-helm-repo
作为该代码库的名称。选择 Docker 作为格式。
在位置类型下,选择区域,然后选择位置
us-west1
。点击创建。
该代码库会被添加到代码库列表中。
gcloud
运行以下命令,在位置
us-west1
中创建一个名为quickstart-helm-repo
且带有说明“docker 代码库”的新 Docker 代码库。gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \ --location=us-west1 --description="Helm repository"
运行以下命令确认已创建代码库。
gcloud artifacts repositories list
如需详细了解 Artifact Registry 命令,请运行 gcloud artifacts
命令。
创建图表
在本快速入门中,您将创建一个名为
hello-chart
。
- 切换到要在其中创建图表的目录。
运行以下命令以创建图表:
helm create hello-chart
Helm 创建一个名为
hello-chart
的目录,其中包含一组默认图表 文件。其中一个文件是 Chart.yaml,其中包含有关图表的信息。将图表打包为归档。
helm package hello-chart/
Helm 使用
Chart.yaml
中的图表名称和版本号创建一个名为hello-chart-0.1.0.tgz
的归档文件。
向代码库进行身份验证
Helm 必须先进行身份验证,然后才能推送或安装映像 Artifact Registry
Helm 可以使用现有的注册表设置以及 Docker 配置文件。 如果您尚未将 Docker 配置为与 Artifact Registry 搭配使用,则可以使用访问令牌在本快速入门中进行身份验证。
如需详细了解身份验证,请参阅为 Helm 设置身份验证。
使用 Docker 配置进行身份验证
默认情况下,Helm 支持 Docker 配置文件 config.json 中的注册表设置。Helm 在以下位置找到注册表设置: 默认位置或由 DOCKER_CONFIG 环境变量。
如果您使用凭据帮助程序配置了 Docker 以便与 Artifact Registry 进行身份验证,Helm 会将您现有的配置用于 Artifact Registry Docker 代码库。
使用访问令牌进行身份验证
如需使用访问令牌进行身份验证,请执行以下操作:
在使用 Helm 进行 Artifact Registry 身份验证时,获取访问令牌作为凭据。
Linux/macOS
运行以下命令:
gcloud auth print-access-token | helm registry login -u oauth2accesstoken \ --password-stdin https://us-west1-docker.pkg.dev
Windows
运行以下命令:
gcloud auth print-access-token ya29.8QEQIfY_... helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \ https://us-west1-docker.pkg.dev/PROJECT-ID/REPOSITORY
其中
oauth2accesstoken
是在使用访问令牌进行身份验证时要使用的用户名。gcloud auth print-access-token
是用于获取访问令牌的 gcloud 命令。您的访问令牌是进行身份验证的密码。
Helm 现已通过 Artifact Registry 身份验证。您可以将图表推送到代码库了。
将图表推送到 Artifact Registry
创建图表归档文件并对 Artifact Registry 代码库进行身份验证后,您可以将图表推送到该代码库。
如需推送图表,请运行以下命令:
helm push hello-chart-0.1.0.tgz oci://us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo
将 PROJECT 替换为您的 Google Cloud 项目 ID。
Helm 会使用 Chart.yaml
中的值来设置映像:
- 图表名称是图片名称:
hello-chart
- 图表版本为图片标记:
0.1.0
Helm 会返回类似于以下示例的输出:
Login Succeeded
Pushed: us-west1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart:0.1.0
Digest: sha256:67a72...
运行以下命令,验证图表现在是否存储在代码库中:
gcloud artifacts docker images list us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo
命令输出如以下示例所示:
Listing items under project my-project, location us-west1, repository quickstart-helm-repo.
IMAGE: us-west1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart
DIGEST: sha256:67a72...
CREATE_TIME: 2021-11-08T22:59:57
UPDATE_TIME: 2021-11-08T22:59:57
您现在可以使用存储在 Artifact Registry 中的图表部署版本。
部署图表
在 Helm 中,应用的已部署实例称为版本。将代码库添加到 Helm 配置后,您就可以部署图表的版本了。
使用以下命令为您的部署创建一个名为
chart-cluster
的集群:gcloud container clusters create --zone us-west1-a chart-cluster
创建集群后,该命令将返回类似于 示例:
kubeconfig entry generated for chart-cluster. NAME: chart-cluster LOCATION: us-west1-a MASTER_VERSION: 1.20.10-gke.1600 MASTER_IP: 34.66.36.211 MACHINE_TYPE: e2-medium NODE_VERSION: 1.20.10-gke.1600 NUM_NODES: 3 STATUS: RUNNING
获取集群凭据,以便
kubectl
可以访问集群:gcloud container clusters get-credentials --zone us-west1-a chart-cluster
运行以下命令,使用本地提取的图表文件部署
hello-chart
版本:helm install hello-chart oci://us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo/hello-chart --version 0.1.0
该命令会返回部署的摘要:
NAME: hello-chart LAST DEPLOYED: Mon Nov 8 23:15:13 2021 NAMESPACE: default STATUS: deployed REVISION: 1
您已成功使用您先前创建的图表 推送到 Artifact Registry
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
使用以下命令删除您创建的代码库:
gcloud artifacts repositories delete quickstart-helm-repo --location=us-west1
删除您创建的集群:
gcloud container clusters delete --zone=us-west1-a chart-cluster
后续步骤
- 详细了解如何使用图表。
- 详细了解 Helm。
- 阅读我们关于 DevOps 的资源,并了解我们的研究项目。