在 Artifact Registry 中存储 Helm 图表

Helm 是 Kubernetes 的软件包管理器。它使用图表来定义要部署的一组 Kubernetes 资源。

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

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

准备工作

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry, Google Kubernetes Engine APIs.

    Enable the APIs

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

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Artifact Registry, Google Kubernetes Engine APIs.

    Enable the 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,请执行以下步骤:

  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 使用 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 代码库。

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

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

  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
    

后续步骤