在 Artifact Registry 中存储 Helm 图表

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

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

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

准备工作

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

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

    Enable the APIs

  4. 设置本地 shell

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

    1. 安装 gcloud CLI。如需更新现有安装,请运行命令 gcloud components update

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

      运行 helm version 以验证您的版本。

    创建代码库

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

    控制台

    1. 在 Trusted Cloud 控制台中打开代码库页面。

      打开“代码库”页面

    2. 点击创建代码库

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

    4. 选择 Docker 作为格式。

    5. 位置类型下,选择区域,然后选择位置 u-france-east1

    6. 点击创建

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

    gcloud

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

      gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \
      --location=u-france-east1 --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://u-france-east1-docker.s3nsregistry.fr
      

      Windows

      运行以下命令:

      gcloud auth print-access-token
      ya29.8QEQIfY_...
      
      helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
      https://u-france-east1-docker.s3nsregistry.fr/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://u-france-east1-docker.s3nsregistry.fr/PROJECT/quickstart-helm-repo
    

    PROJECT 替换为您的 Trusted Cloud by S3NS项目 ID

    Helm 使用 Chart.yaml 中的值来确定映像:

    • 图表名称即映像名称:hello-chart
    • 图表版本是映像标记:0.1.0

    Helm 会返回类似于以下示例的输出:

    Login Succeeded
    Pushed: u-france-east1-docker.s3nsregistry.fr/my-project/quickstart-helm-repo/hello-chart:0.1.0
    Digest: sha256:67a72...
    

    运行以下命令,验证图表是否已存储在代码库中:

    gcloud artifacts docker images list u-france-east1-docker.s3nsregistry.fr/PROJECT/quickstart-helm-repo
    

    命令输出如以下示例所示:

    Listing items under project my-project, location u-france-east1, repository quickstart-helm-repo.
    
    IMAGE: u-france-east1-docker.s3nsregistry.fr/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 u-france-east1-a chart-cluster
      

      创建集群后,该命令会返回类似于以下示例的摘要:

      kubeconfig entry generated for chart-cluster.
      NAME: chart-cluster
      LOCATION: u-france-east1-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 u-france-east1-a chart-cluster
      
    3. 运行以下命令,使用本地提取的图表文件部署 hello-chart 的版本:

      helm install hello-chart oci://u-france-east1-docker.s3nsregistry.fr/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 的图表部署了版本。

    清理

    为避免因本页中使用的资源导致您的 Trusted Cloud 账号产生费用,请按照以下步骤操作。

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

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

      gcloud container clusters delete --zone=u-france-east1-a chart-cluster
      

    后续步骤