本文档简要介绍了远程代码库。如需了解如何创建远程仓库,请参阅创建远程仓库。
Artifact Registry 配额和限制适用于远程代码库。
远程仓库的运作方式
远程仓库可以存储来自预设外部来源(例如 Docker Hub、Maven Central、Python 软件包索引 (PyPI)、Debian 或 CentOS)的工件,以及针对支持的格式用户定义的来源。远程仓库可充当外部来源的代理,以便您更好地控制外部依赖项。当您首次请求某个软件包版本时,Artifact Registry 会下载该软件包并将其缓存在远程代码库中。当您下次请求相同软件包版本时,Artifact Registry 会提供缓存副本。
如果您向上游来源请求工件,但该工件不存在或不包含您指定的版本,请求将会失败。
其他仓库模式包括:
- 标准:默认的仓库模式。您可以将工件(如专用软件包)直接上传或发布到标准代码库。虽然您可以直接从各个标准代码库下载,但通过虚拟代码库访问代码库组可以简化工具配置。
- 虚拟:充当多个上游代码库(包括远程代码库和标准代码库)的单个访问点的代码库。
上游身份验证
Artifact Registry 远程代码库支持基本身份验证,以便针对支持的格式预设和用户定义的上游来源。如需详细了解如何向远程代码库上游来源进行身份验证,请参阅配置对远程代码库上游的身份验证。
使用场景和优势
- 更快速、更可靠地访问工件
- 在其他 Google Cloud 服务检索映像时,将公共依赖项的缓存副本存储在 Artifact Registry 中可缩短延迟时间。如果外部公共代码库因服务中断或其他问题而离线,缓存的工件仍然可用。
- 更安全的依赖项解析
将远程代码库与虚拟代码库结合使用,以降低与公共依赖项相关的风险。在客户端中同时配置私有代码库和公共代码库时,某些工具不提供控制搜索顺序的方法。此类配置容易受到依赖项混淆攻击,即有人将包含不良代码的新版本软件包上传到公开代码库,以诱骗客户端选择错误版本。
您可以配置虚拟代码库,使您的私有代码库优先于远程代码库,而不是直接将客户端配置为搜索多个代码库。
如果 Artifact Registry 位于 VPC Service Controls 服务边界内,则 Artifact Registry 会默认拒绝该边界外的上游来源。如需允许特定位置的远程代码库访问其在边界外配置的外部来源,请参阅 VPC Service Controls 配置的说明。
如需了解其他依赖项管理最佳实践,请参阅依赖项管理。
对软件包索引和元数据的更新
当可变文件(例如软件包索引和元数据)的时间超过默认存在时间时,系统会通过上游来源更新这些文件。下表列出了特定文件类型的默认值:
形式 | 文件类型 | 默认更新期限 |
---|---|---|
Maven | maven-metadata.xml |
5 分钟 |
archetype-catalog.xml |
1 小时 | |
每分心跳数 | 清单文件 | 5 分钟 |
Python | 索引文件 | 1 小时 |
Docker | 列出/获取代码缓存 | 1 小时 |
Apt/Yum(预览) | 索引文件 | 2 分钟 |
软件包文件 | 72 小时 |
支持的格式
如需了解预设远程仓库和用户定义的远程仓库可用的格式,请参阅以下部分。
预设上游
您可以为以下代码库格式和相应的预设上游来源创建远程代码库:
形式 | 软件包类型 | 上游网址 | 上游预设名称 |
---|---|---|---|
Docker | 公开或私享 | https://registry-1.docker.io | DOCKER-HUB |
Maven | 公开或私享 | https://repo.maven.apache.org/maven2 | MAVEN-CENTRAL |
npm | 公开或私享 | https://registry.npmjs.org | NPMJS |
Python | 公有云 | https://pypi.io | PYPI |
操作系统软件包(预览版) | 公有云 | 请参阅支持的操作系统软件包的上游 | 请参阅支持的操作系统软件包的上游 |
操作系统软件包预设上游
您可以通过选择代码库库并自定义指向特定代码库的网址的其余部分来创建操作系统软件包远程代码库。支持以下代码库库:
公寓
代码库 | 网址前缀 | 代码库基名称 |
---|---|---|
Debian | http://deb.debian.org | 德比安 |
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 | |
多石 | http://dl.rockylinux.org | 岩石 |
适用于企业 Linux 的 Fedora Extra 软件包 (EPEL) | https://dl.fedoraproject.org/pub/epel | EPEL |
用户定义的上游
您可以按以下格式为用户定义的上游来源创建远程仓库:
- Docker
- npm
- Maven
- Python
下表列出了一些常见的上游 URI。
格式 | 上游 URI | 注册表名称 |
---|---|---|
Docker | https://public.ecr.aws | AWS ECR 公开资源库 |
Docker | https://registry.k8s.io | Kubernetes 容器注册表 |
Docker | https://MY_ARTIFACTORY_INSTANCE.jfrog.io | 青蛙神器里 |
Docker | https://MY_NEXUS_IP | Nexus |
npm | https://npm.pkg.github.com | GitHub Npm 注册表 |
npm | https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/npm/MY_UPSTREAM_REPOSITORY | 青蛙神器里 |
npm | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY | Nexus |
Maven | https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/MY_UPSTREAM_REPOSITORY | 青蛙神器里 |
Maven | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY | Nexus |
Python | https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/pypi/MY_UPSTREAM_REPOSITORY | 青蛙神器里 |
Python | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY | Nexus |
地点
- MY_ARTIFACTORY_INSTANCE 是 Jfrog Artifactory 上游实例的名称。
- MY_NEXUS_IP 是 Nexus 上游实例的 IP 地址和端口。
- MY_UPSTREAM_REPOSITORY 是上游代码库的名称,用于 Nexus 和 Artifactory 示例。
限制
除了 Artifact Registry 配额和限制之外,远程代码库还具有以下限制:
- Maven 远程仓库不允许将版本政策设置为快照或发布。