将 Helm 图表存储在 Artifact Registry 中

Helm 是 Cloud Shell 中 Kubernetes使用图表 它们定义了一组要部署的 Kubernetes 资源。

本快速入门向您展示了如何执行以下操作:

  • 在 Artifact Registry 中创建私有代码库
  • 创建示例图表
  • 向代码库进行身份验证
  • 将图表推送到代码库
  • 部署图表

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Artifact Registry, Google Kubernetes Engine API。

    启用 API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. 确保您的 Google Cloud 项目已启用结算功能

  7. 启用 Artifact Registry, Google Kubernetes Engine API。

    启用 API

选择 shell

如需完成本快速入门,请使用 Cloud Shell 或本地 shell。

Cloud Shell
Cloud Shell 是一种 shell 环境,用于管理托管在 Google Cloud 上的资源。它预装了 Docker、Helm 和 Google Cloud CLI 命令行界面。
本地 shell
如果您更喜欢使用本地 shell,则必须安装 Docker gcloud CLI。

启动 Cloud Shell

要启动 Cloud Shell,请执行以下步骤:

  1. 转到 Google Cloud 控制台。

    Google Cloud 控制台

  2. 点击激活 Cloud Shell 按钮:

    控制台下方的框架内会打开一个 Cloud Shell 会话。您可以使用此 shell 运行 gcloud 命令。

  3. 安装 Helm 3.8.0 或更高版本。在更早的 Helm 版本中,OCI 格式的图表只作为一项实验性功能提供。

    运行 helm version 验证您的版本。

设置本地 shell

如需安装 gcloud CLI 和 Helm,请执行以下步骤:

  1. 安装 gcloud CLI。要更新现有 安装后,运行 gcloud components update 命令。

  2. 安装 Helm 3.8.0 或更高版本。在更早的 Helm 版本中,OCI 格式的图表只作为一项实验性功能提供。

    运行 helm version 验证您的版本。

创建代码库

创建 Docker 代码库以存储本快速入门的示例图表。

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 点击创建代码库

  3. 指定 quickstart-helm-repo 作为该代码库的名称。

  4. 选择 Docker 作为格式。

  5. 位置类型下,选择区域,然后选择位置 us-west1

  6. 点击创建

该代码库会被添加到代码库列表中。

gcloud

  1. 运行以下命令,在位置 us-west1 中创建一个名为 quickstart-helm-repo 且带有说明“docker 代码库”的新 Docker 代码库。

    gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \
    --location=us-west1 --description="Helm repository"
    
  2. 运行以下命令确认已创建代码库。

    gcloud artifacts repositories list
    

如需详细了解 Artifact Registry 命令,请运行 gcloud artifacts 命令。

创建图表

在本快速入门中,您将创建一个名为 hello-chart.

  1. 切换到要在其中创建图表的目录。
  2. 运行以下命令以创建图表:

    helm create hello-chart
    

    Helm 创建一个名为 hello-chart 的目录,其中包含一组默认图表 文件。其中一个文件是 Chart.yaml,它 包含图表的相关信息

  3. 将图表打包为归档。

    helm package hello-chart/
    

    Helm 使用图表名称创建名为 hello-chart-0.1.0.tgz 的归档文件 和版本号 (Chart.yaml)。

向代码库进行身份验证

Helm 必须先进行身份验证,然后才能推送或安装映像 Artifact Registry

Helm 可以使用现有的注册表设置以及 Docker 配置文件。 如果您尚未配置 Docker 以便与 Artifact Registry 搭配使用, 您可以使用访问令牌进行身份验证,这适用于本快速入门。

如需了解详情,请参阅为 Helm 设置身份验证 有关身份验证的信息。

使用 Docker 配置进行身份验证

默认情况下,Helm 支持 Docker 配置文件中的注册表设置 config.json.Helm 在以下位置找到注册表设置: 默认位置或由 DOCKER_CONFIG 环境变量。

如果您配置了 Docker 使用凭据帮助程序向 Artifact Registry、Helm 进行身份验证 使用 Artifact Registry Docker 代码库的现有配置。

使用访问令牌进行身份验证

如需使用访问令牌进行身份验证,请执行以下操作:

  1. 在进行身份验证时获取访问令牌作为凭据 使用 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 配置中,就可以部署 。

  1. 使用以下命令为您的部署创建一个名为 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
    
  2. 获取集群凭据,以便 kubectl 可以访问集群:

    gcloud container clusters get-credentials --zone us-west1-a chart-cluster
    
  3. 运行以下命令以使用 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 账号产生费用,请按照以下步骤操作。

  1. 使用以下命令删除您创建的代码库:

    gcloud artifacts repositories delete quickstart-helm-repo --location=us-west1
    
  2. 删除您创建的集群:

    gcloud container clusters delete --zone=us-west1-a chart-cluster
    

后续步骤