创建远程仓库

本页面介绍如何创建 Artifact Registry 远程代码库。

远程仓库可存储来自预设外部来源(例如 Docker Hub、Maven Central、Python 软件包索引 (PyPI)、Debian 或 CentOS)的工件,以及针对支持的格式用户定义的来源。远程仓库可充当外部来源的代理,以便您更好地控制外部依赖项。当您首次请求某个软件包版本时,Artifact Registry 会下载该软件包并将其缓存在远程代码库中。当您下次请求相同软件包版本时,Artifact Registry 会提供缓存副本。

其他仓库模式包括:

  • 标准:默认的仓库模式。您可以将工件(如专用软件包)直接上传或发布到标准代码库。虽然您可以直接从各个标准代码库下载,但通过虚拟代码库访问代码库组可以简化工具配置。
  • 虚拟:充当多个上游代码库(包括远程代码库和标准代码库)的单个访问点的代码库。

如需详细了解远程代码库的工作原理,请参阅远程代码库概览

准备工作

  1. 启用 Artifact Registry,包括启用 Artifact Registry API 和安装 Google Cloud CLI。
  2. 可选:为 gcloud CLI 命令配置默认值
  3. 如果您要求使用客户管理的加密密钥 (CMEK) 来加密代码库内容,请在 Cloud KMS 中为代码库创建并启用密钥。
  4. 如果要向上游代码库进行身份验证,请启用 Secret Manager API。

    gcloud services enable secretmanager.googleapis.com \
        --project=PROJECT_ID
    
  5. 如果 Artifact Registry 位于 VPC Service Controls 服务边界内,请启用 Access Context Manager API(如果尚未启用)。

    gcloud services enable accesscontextmanager.googleapis.com \
        --project=PROJECT_ID
    

所需的角色

如需获取管理代码库所需的权限,请让管理员授予您以下 IAM 角色:

  • 创建远程代码库并授予对各个代码库的访问权限:对项目的 Artifact Registry Admin (roles/artifactregistry.admin)
  • 将上游代码库凭据保存在 Secret 版本中:项目的 Secret Manager Admin (roles/secretmanager.admin)
  • 向 VPC Service Controls 服务边界外的上游来源授予访问权限: 对应用了访问权限政策的项目、文件夹或组织的 Access Context Manager Editor (roles/accesscontextmanager.policyEditor) 的访问权限

如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

创建远程代码库

创建远程代码库时,您必须配置以下设置,代码库创建后便无法更改:

  • 工件格式
  • 代码库 mode 设置为“remote”。
  • 远程仓库预设或用户定义的上游来源。
  • 代码库位置
  • 使用 Google 管理的密钥或客户管理的加密密钥进行加密。Artifact Registry 默认使用 Google 管理的加密密钥。

Artifact Registry 强制执行组织政策限制条件,要求 CMEK 对资源进行加密或限制可用于 CMEK 保护的 Cloud KMS 密钥。

使用 Google Cloud 控制台创建远程代码库

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

    打开“代码库”页面

  2. 点击创建代码库

  3. 指定代码库名称。对于项目中的每个代码库位置,代码库名称必须是唯一的。

  4. 格式部分中,选择代码库格式。

  5. 代码库模式部分中,选择远程

  6. 远程仓库来源部分中,如果您要为上游使用用户定义的网址,请选择预设上游自定义

  7. 可选。如果您使用的是自定义上游代码库,请在自定义代码库字段中输入自定义代码库网址。代码库创建后,该网址便无法更改。

  8. 远程仓库身份验证模式中,选择以下选项之一:

    • Authenticated:输入用于向上游代码库进行身份验证的用户名和密钥。
    • 未通过身份验证:将身份验证跳过至上游代码库。
  9. 可选。如果您选择 Authenticated,请输入以下内容:

    • 用户名字段中,输入上游代码库的用户名。
    • Secret 字段中,输入您保存上游代码库密码的密钥版本。

    您可以在创建代码库后修改这些值。如需详细了解如何向远程代码库上游进行身份验证,请参阅配置对远程代码库上游的身份验证

  10. 位置类型部分中,选择代码库的位置:

    1. 选择位置类型:“单区域”或“多区域”。位置列表会发生变化,以反映您的选择。

    2. 区域多区域列表中,选择一个位置。

    如需了解位置类型和支持的位置,请参阅代码库位置

  11. 为代码库添加说明。说明有助于确定代码库的用途及其包含的工件类型。

    请勿包含敏感数据,因为代码库说明未加密。

  12. 如果您要使用标签来整理代码库,请点击添加标签,然后输入标签的键值对。创建代码库后,您可以添加、修改或移除标签。

  13. 加密部分中,选择代码库的加密机制。

    • Google 管理的密钥 - 使用 Google 管理的加密密钥来加密代码库内容。
    • 客户管理的密钥 - 使用您通过 Cloud Key Management Service 控制的密钥来加密代码库内容。如需查看密钥设置说明,请参阅为代码库设置 CMEK
  14. 点击创建

Artifact Registry 会创建代码库并将其添加到代码库列表中。

创建代码库后,请执行以下操作:

使用 gcloud CLI 创建远程代码库

如需创建代码库,请针对适当的代码库格式运行命令:

Docker

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=docker \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-docker-repo=UPSTREAM

替换以下内容:

  • REMOTE-REPOSITORY-NAME 替换为代码库的名称。对于项目中的每个代码库位置,代码库名称必须是唯一的。
  • PROJECT_ID 替换为项目 ID。如果省略此标志,则系统会使用当前项目或默认项目。
  • LOCATION 替换为代码库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行命令 gcloud artifacts locations list

  • DESCRIPTION 替换为代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。

  • REMOTE-REPOSITORY-DESCRIPTION 替换为此远程代码库的外部代码库配置的说明。

  • USERNAME(可选,如果您使用的是身份验证),使用您的用户名向上游代码库进行身份验证。

  • SECRET_VERSION(可选),如果您使用的是身份验证,则使用包含上游代码库密码的 Secret 版本。

  • UPSTREAM 替换为上游仓库的预设名称或用户定义的网址。如需了解可用的预设上游和支持的用户定义的上游,请参阅支持的格式

例如,以下命令在 Google Cloud 项目 my-projectus-east1 区域创建一个名为 my-repo 的远程代码库,并且可以使用用户名 my-username 和密钥版本 projects/my-project/secrets/my-secret/versions/1 向上游代码库进行身份验证。

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=docker \
    --location=us-east1 \
    --description="Remote Docker repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Docker Hub" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-docker-repo=DOCKER-HUB

如需详细了解如何向 Docker Hub 上游代码库进行身份验证,请参阅向 Docker Hub 配置远程代码库身份验证

Maven

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=maven \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-mvn-repo=UPSTREAM

替换以下内容:

  • REMOTE-REPOSITORY-NAME 替换为代码库的名称。对于项目中的每个代码库位置,代码库名称必须是唯一的。
  • PROJECT_ID 替换为项目 ID。如果省略此标志,则系统会使用当前项目或默认项目。
  • LOCATION 替换为代码库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行命令 gcloud artifacts locations list

  • DESCRIPTION 替换为代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。

  • REMOTE-REPOSITORY-DESCRIPTION 替换为此远程代码库的外部代码库配置的说明。

  • USERNAME(可选,如果您使用的是身份验证),使用您的用户名向上游代码库进行身份验证。

  • SECRET_VERSION(可选),如果您使用的是身份验证,则使用包含上游代码库密码的 Secret 版本。

  • UPSTREAM 替换为上游仓库的预设名称或用户定义的网址。如需了解可用的预设上游和支持的用户定义的上游,请参阅支持的格式

例如,以下命令在 Google Cloud 项目 my-projectus-east1 区域创建一个名为 my-repo 的远程代码库,并且可以使用用户名 my-username 和密钥版本 projects/my-project/secrets/my-secret/versions/1 向上游代码库进行身份验证。

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=maven \
    --location=us-east1 \
    --description="Remote Maven repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Maven Central" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-mvn-repo=MAVEN-CENTRAL

npm

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=npm \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-npm-repo=UPSTREAM

替换以下内容:

  • REMOTE-REPOSITORY-NAME 替换为代码库的名称。对于项目中的每个代码库位置,代码库名称必须是唯一的。
  • PROJECT_ID 替换为项目 ID。如果省略此标志,则系统会使用当前项目或默认项目。
  • LOCATION 替换为代码库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行命令 gcloud artifacts locations list

  • DESCRIPTION 替换为代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。

  • REMOTE-REPOSITORY-DESCRIPTION 替换为此远程代码库的外部代码库配置的说明。

  • USERNAME(可选,如果您使用的是身份验证),使用您的用户名向上游代码库进行身份验证。

  • SECRET_VERSION(可选),如果您使用的是身份验证,则使用包含上游代码库密码的 Secret 版本。

  • UPSTREAM 替换为上游仓库的预设名称或用户定义的网址。如需了解可用的预设上游和支持的用户定义的上游,请参阅支持的格式

例如,以下命令在 Google Cloud 项目 my-projectus-east1 区域创建一个名为 my-repo 的远程代码库,并且可以使用用户名 my-username 和密钥版本 projects/my-project/secrets/my-secret/versions/1 向上游代码库进行身份验证。

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=npm \
    --location=us-east1 \
    --description="Remote npm repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Public npm registry" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-npm-repo=NPMJS

Python

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=python \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-python-repo=UPSTREAM

替换以下内容:

  • REMOTE-REPOSITORY-NAME 替换为代码库的名称。对于项目中的每个代码库位置,代码库名称必须是唯一的。
  • PROJECT_ID 替换为项目 ID。如果省略此标志,则系统会使用当前项目或默认项目。
  • LOCATION 替换为代码库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行命令 gcloud artifacts locations list

  • DESCRIPTION 替换为代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。

  • REMOTE-REPOSITORY-DESCRIPTION 替换为此远程代码库的外部代码库配置的说明。

  • USERNAME(可选,如果您使用的是身份验证),使用您的用户名向上游代码库进行身份验证。

  • SECRET_VERSION(可选),如果您使用的是身份验证,则使用包含上游代码库密码的 Secret 版本。

  • UPSTREAM 替换为上游仓库的预设名称或用户定义的网址。如需了解可用的预设上游和支持的用户定义的上游,请参阅支持的格式

例如,以下命令在 Google Cloud 项目 my-projectus-east1 区域创建一个名为 my-repo 的远程代码库,并且可以使用用户名 my-username 和密钥版本 projects/my-project/secrets/my-secret/versions/1 向上游代码库进行身份验证。

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=python \
    --location=us-east1 \
    --description="Remote Python repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="PyPI" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-python-repo=PYPI

Apt(预览)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=apt \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-apt-repo=APT_REPOSITORY_BASE \
    --remote-apt-repo-path="APT_REPOSITORY_PATH"

替换以下内容:

  • REMOTE_REPOSITORY_NAME 替换为代码库的名称。对于项目中的每个代码库位置,代码库名称必须是唯一的。
  • PROJECT_ID 替换为项目 ID。如果省略此标志,则系统会使用当前项目或默认项目。
  • LOCATION 替换为代码库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行命令 gcloud artifacts locations list
  • DESCRIPTION 替换为代码库的可选说明。请勿包含敏感数据,因为代码库说明不会加密。
  • REMOTE_REPOSITORY_DESCRIPTION,其中包含此远程代码库的外部代码库配置的可选说明。
  • APT_REPOSITORY_BASE 替换为 Apt 远程代码库的操作系统软件包支持的上游中列出的某个受支持的代码库基础名称。
  • APT_REPOSITORY_PATH 替换为您要在远程仓库中缓存的上游仓库网址的其余部分(位于代码库库之后)。

例如,以下命令会创建一个名为 my-repo 的远程代码库,以在 Google Cloud 项目 my-projectus-east1 区域缓存 Debian buster 代码库。上游代码库的完整网址为 http://deb.debian.org/debian/dists/buster

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=apt \
    --location=us-east1 \
    --description="Apt remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Debian buster distribution" \
    --remote-apt-repo=DEBIAN \
    --remote-apt-repo-path="debian/dists/buster"

Yum(预览版)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=yum \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-yum-repo=YUM_REPOSITORY_BASE \
    --remote-yum-repo-path="YUM_REPOSITORY_PATH"

替换以下内容:

  • REMOTE_REPOSITORY_NAME 替换为代码库的名称。对于项目中的每个代码库位置,代码库名称必须是唯一的。
  • PROJECT_ID 替换为项目 ID。如果省略此标志,则系统会使用当前项目或默认项目。
  • LOCATION 替换为代码库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行命令 gcloud artifacts locations list
  • DESCRIPTION 替换为代码库的可选说明。请勿包含敏感数据,因为代码库说明不会加密。
  • REMOTE_REPOSITORY_DESCRIPTION,其中包含此远程代码库的外部代码库配置的可选说明。
  • YUM_REPOSITORY_BASE 替换为 Yum 远程代码库的操作系统软件包支持的上游中列出的某个受支持的代码库库名称。
  • YUM_REPOSITORY_PATH 替换为您要在远程仓库中缓存的上游仓库网址的其余部分(位于代码库库之后)。

例如,以下命令为上游仓库 centos/8-stream/BaseOs/x86_64/os 的 Google Cloud 项目 my-project 中的区域 us-east1 为名为 my-repo 的 Yum 软件包创建远程仓库。

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=yum \
    --location=us-east1 \
    --description="Yum remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="CentOS 8 x86" \
    --remote-yum-repo=CENTOS \
    --remote-yum-repo-path="centos/8-stream/BaseOs/x86_64/os"

Artifact Registry 会创建您的代码库。运行以下命令以查看代码库的说明:

gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
    --location=LOCATION

创建代码库后,请执行以下操作:

使用 Terraform 创建远程代码库

使用 google_artifact_registry_repository 资源创建代码库。 需要 terraform-provider-google 版本 5.0.0 或更高版本。

如果您刚开始将 Terraform 用于 Google Cloud,请参阅 HashiCorp 网站上的使用入门 - Google Cloud 页面。

以下示例定义了提供程序以及 Terraform 资源名称为 my-repo 的远程代码库。

Docker

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "docker"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    docker_repository {
      public_repository = "DOCKER_HUB"
    }
  }
}

地点

  • PROJECT-ID 是 Google Cloud 项目 ID。
  • LOCATION 是代码库位置。
  • REPOSITORY_ID 是代码库 ID。
  • DESCRIPTION 是代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。
  • 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则 KEY 是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。
  • CONFIG_DESCRIPTION 是远程来源的可选说明。

Maven

如果您未指定版本政策,Artifact Registry 会创建一个 Maven 制品库,该仓库默认同时存储软件包的快照版本和发布版本

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "maven"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    maven_repository {
      public_repository = "MAVEN_CENTRAL"
    }
  }
}

地点

  • PROJECT-ID 是 Google Cloud 项目 ID。
  • LOCATION 是代码库位置。
  • REPOSITORY_ID 是代码库 ID。
  • DESCRIPTION 是代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。
  • 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则 KEY 是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。
  • CONFIG_DESCRIPTION 是远程来源的可选说明。

如需在不同的代码库中存储快照和发布版本,请使用 maven_config 块为代码库指定版本政策。此块支持以下设置:

  • version_policy 会将版本政策设置为以下某个值:
    • VERSION_POLICY_UNSPECIFIED:存储快照和发布软件包。这是默认设置。
    • 发布:仅存储发布包。
    • 快照:仅存储快照软件包。
  • allow_snapshot_overwrites 用于配置采用 SNAPSHOT 版本政策的代码库,以接受覆盖代码库中现有版本的非唯一快照。

以下示例定义了具有发布版本政策的 Maven 制品库。

provider "google" {
project = "my-project"
}

resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta

location = "LOCATION"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
mode = "REMOTE_REPOSITORY"
maven_config {
  version_policy = "RELEASE"
}
}

npm

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "npm"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    npm_repository {
      public_repository = "NPMJS"
    }
  }
}

地点

  • PROJECT-ID 是 Google Cloud 项目 ID。
  • LOCATION 是代码库位置。
  • REPOSITORY_ID 是代码库 ID。
  • DESCRIPTION 是代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。
  • 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则 KEY 是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。
  • CONFIG_DESCRIPTION 是远程来源的可选说明。

Python

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "python"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    python_repository {
      public_repository = "PYPI"
    }
  }
}

地点

  • PROJECT-ID 是 Google Cloud 项目 ID。
  • LOCATION 是代码库位置。
  • REPOSITORY_ID 是代码库 ID。
  • DESCRIPTION 是代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。
  • 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则 KEY 是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。
  • CONFIG_DESCRIPTION 是远程来源的可选说明。

Apt(预览版)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "APT"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    apt_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

地点

  • PROJECT-ID 是 Google Cloud 项目 ID。
  • LOCATION 是代码库位置。
  • REPOSITORY_ID 是代码库 ID。
  • DESCRIPTION 是代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。
  • CONFIG_DESCRIPTION 是远程来源的可选说明。
  • REPOSITORY_BASE 是 Apt 的预设公共代码库库。可能的值包括 DEBIANUBUNTU
  • REPOSITORY_PATH 是基础代码库中的特定代码库。例如 debian/dists/buster

Yum(预览版)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "YUM"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    yum_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

地点

  • PROJECT-ID 是 Google Cloud 项目 ID。
  • LOCATION 是代码库位置。
  • REPOSITORY_ID 是代码库 ID。
  • DESCRIPTION 是代码库的可选说明。请勿包含敏感数据,因为代码库说明未加密。
  • CONFIG_DESCRIPTION 是远程来源的可选说明。
  • REPOSITORY_BASE 是 Yum 的预设公共代码库库。可能的值包括 CENTOSCENTOS_DEBUGCENTOS_VAULTCENTOS_STREAMROCKYEPEL
  • REPOSITORY_PATH 是基础代码库中的特定代码库。例如 "centos/8-stream/BaseOS/x86_64/os

Artifact Registry 会创建您的代码库。运行以下命令以查看代码库的说明:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

创建代码库后,请执行以下操作:

修改代码库说明

您可以通过 Google Cloud 控制台或 gcloud CLI 更改代码库说明。

控制台

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

    打开“代码库”页面

  2. 在代码库列表中,选择代码库,然后点击修改代码库

  3. 修改代码库说明,然后点击保存

gcloud

如需更新代码库说明,请运行以下命令:

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT] \
    --location=LOCATION \
    --description="DESCRIPTION"

替换以下值:

  • REPOSITORY 是代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • PROJECT 是 Google Cloud 项目 ID。如果省略此标志,则系统会使用当前项目或默认项目。
  • LOCATION 是单区域或多区域位置。使用此标志可查看特定位置的代码库。如果您配置了默认位置,可以省略此标志来使用默认位置。
  • DESCRIPTION 是代码库的说明。

访问服务边界中的上游来源

VPC Service Controls 服务边界中的服务对边界外的资源的访问受到限制。

您可以允许或拒绝对指定 Google Cloud 项目和位置的上游来源进行访问。

默认情况下,如果您未明确授予访问权限,Artifact Registry 会拒绝上游来源的访问权限。

对于 Artifact Registry,所需的角色是 Artifact Registry Administrator (roles/artifactregistry.admin)。

查看上游来源的设置

如需查看特定项目和位置组合的配置,请运行以下命令:

gcloud artifacts vpcsc-config describe \
    --project=PROJECT_ID \
    --location=LOCATION

例如,使用以下命令查看项目 my-projectus-east1 的远程代码库设置:

gcloud artifacts vpcsc-config describe \
    --project=my-project \
    --location=us-east1

允许访问上游来源

如需允许访问指定位置的上游来源,请运行以下命令:

gcloud artifacts vpcsc-config allow \
    --project=PROJECT_ID \
    --location=LOCATION

例如,使用以下命令允许项目 my-projectus-east1 中的所有远程仓库访问其边界外的上游来源:

gcloud artifacts vpcsc-config allow \
    --project=my-project \
    --location=us-east1

拒绝对上游来源的访问

当您拒绝对上游来源的访问时,远程仓库中现有的缓存工件仍然可用。

如需拒绝对指定位置的上游来源的访问,请运行以下命令:

gcloud artifacts vpcsc-config deny \
    --project=PROJECT_ID \
    --location=LOCATION

例如,使用以下命令阻止项目 my-projectus-west1 中所有远程代码库访问边界外的上游来源:

gcloud artifacts vpcsc-config deny \
    --project=my-project \
    --location=us-west1

后续步骤