远程代码库概览

本文档简要介绍了远程代码库。如需了解如何创建远程代码库,请参阅创建远程代码库

Artifact Registry 配额和限制适用于远程代码库。

远程代码库的工作原理

远程代码库存储来自以下上游来源的制品:

  • 标准 Artifact Registry 制品库。
  • 外部来源,例如 Docker Hub、Maven Central、Python Package Index (PyPI)、Debian 或 CentOS。

远程代码库充当上游来源的代理,以便您更好地控制依赖项。首次请求软件包的某个版本时,Artifact Registry 会下载该软件包并将其缓存到远程代码库中。下次您请求同一软件包版本时,Artifact Registry 会提供缓存的副本。

如果您从不存在或不包含您指定版本的上游来源请求制品,则请求将失败。

其他代码库模式包括:

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

上游身份验证

Artifact Registry 远程代码库支持对受支持格式的上游来源进行基本身份验证。如需详细了解如何对远程代码库上游来源进行身份验证,请参阅配置对远程代码库上游的身份验证

使用场景和优势

更快、更可靠地访问制品
在 Artifact Registry 中存储公开依赖项的缓存副本可减少其他 Google Cloud 服务检索映像时的延迟时间。如果外部公共代码库因中断或其他问题而处于离线状态,缓存的制品仍可使用。
更安全的依赖项解析

将远程代码库与虚拟代码库搭配使用,以降低与公共依赖项相关的风险。当客户端中同时配置了私有和公共代码库时,某些工具无法提供控制搜索顺序的方法。此类配置容易受到依赖项混淆攻击,即有人将包含恶意代码的软件包的新版本上传到公共代码库,以诱骗客户端选择恶意版本。

您可以配置虚拟代码库,以便优先搜索私有代码库,而不是直接配置客户端来搜索多个代码库。

降低数据传输费用

使用远程代码库在与运行时相同的区域或多区域中缓存制品,以降低数据传输费用

如果 Artifact Registry 位于 VPC Service Controls 服务边界内,则 Artifact Registry 默认会拒绝访问该边界外的上游来源。如需允许特定位置的远程代码库访问其配置的边界外部的外部来源,请参阅 VPC Service Controls 配置的相关说明。

如需了解其他依赖项管理最佳实践,请参阅依赖项管理

更新了软件包索引和元数据

当可变文件(例如软件包索引和元数据)的年龄超过默认年龄时,系统会从上游来源更新这些文件。下表列出了特定文件类型的默认值:

格式 文件类型 默认更新期限
Maven maven-metadata.xml 5 分钟
archetype-catalog.xml 1 小时
Npm 清单文件 5 分钟
Python 索引文件 1 小时
Docker 列出/获取标记缓存 1 小时
Apt/Yum(预览版) 索引文件 2 分钟
软件包文件 72 小时

支持的格式

如需了解预设远程代码库和用户定义的远程代码库可用的格式,请参阅以下部分。

预设的上游网址

许多常见的上游代码库网址以预设选择项的形式提供,方便您使用以下格式。

格式 软件包类型 上游网址 上游预设名称
Docker 公开或私享 https://registry-1.docker.io DOCKER-HUB
Go 公开 https://proxy.golang.org https://proxy.golang.org
Maven 公开或私享 https://repo.maven.apache.org/maven2 MAVEN-CENTRAL
npm 公开或私享 https://registry.npmjs.org NPMJS
Python 公开 https://pypi.io PYPI
操作系统软件包(预览版 公开 请参阅支持的上游操作系统软件包 请参阅支持的上游操作系统软件包

操作系统软件包预设上游

您可以从常见的预设上游代码库基本网址中进行选择,并自定义网址的其余部分以指向特定代码库,从而创建操作系统软件包远程代码库。支持以下代码库基础:

Apt

代码库 网址前缀 代码库基本名称
已归档的 Debian https://snapshot.debian.org DEBIAN_SNAPSHOT
Debian http://deb.debian.org DEBIAN
Ubuntu LTS 或 Pro http://archive.ubuntu.com UBUNTU

Yum

代码库 网址前缀 代码库基本名称
CentOS http://mirror.centos.org CENTOS
http://debuginfo.centos.org CENTOS_DEBUG
https://vault.centos.org CENTOS_VAULT
https://mirror.stream.centos.org CENTOS_STREAM
Rocky http://dl.rockylinux.org ROCKY
Fedora Extra Packages for Enterprise Linux (EPEL) https://dl.fedoraproject.org/pub/epel EPEL

Artifact Registry 制品库上游

您可以创建远程代码库,并将 Artifact Registry 标准格式的代码库作为以下格式的上游:

  • Docker
  • npm
  • Maven
  • Python

自定义网址

您可以直接输入远程代码库的网址,而无需使用以下格式的预设上游来源。

  • Docker
  • npm
  • Maven
  • Python

下表列出了一些常见的上游 URI,但并非详尽无遗。

格式 上游 URI 注册机构名称
Docker https://ghcr.io GitHub Container Registry
Docker https://registry-1.docker.io Docker Hub
Docker https://public.ecr.aws AWS ECR Public Gallery
Docker https://registry.k8s.io Kubernetes Container Registry
Docker https://MY_NEXUS_IP Nexus
npm https://registry.npmjs.org npm
npm https://npm.pkg.github.com GitHub Npm 注册表
npm https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Maven https://repo.maven.apache.org/maven2 Maven Central
Maven https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Python https://pypi.io Python 软件包索引 (PyPI)
Python https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus

地点

  • MY_NEXUS_IP 是 Nexus 上游实例的 IP 地址和端口。
  • MY_UPSTREAM_REPOSITORY 是上游代码库的名称;在 Nexus 示例中使用。

限制

除了 Artifact Registry 配额和限制之外,远程代码库还存在以下限制:

  • Maven 远程仓库不允许将版本政策设置为 snapshot 或 release。
  • 上游来源必须可通过互联网访问。远程代码库不支持没有公共 IP 地址的本地或 Virtual Private Cloud (VPC) 网络上游来源。

后续步骤