このドキュメントでは、リモート リポジトリの概要について説明します。リモート リポジトリの作成方法については、リモート リポジトリを作成するをご覧ください。
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 時間 |
サポートされているファイル形式
プリセット リモート リポジトリとユーザー定義のリモート リポジトリで使用できる形式については、以降のセクションをご覧ください。
プリセット アップストリーム URL
便宜上、多くの一般的なアップストリーム リポジトリ URL は、次の形式でプリセットとして利用できます。
形式 | パッケージ タイプ | アップストリーム URL | プリセット アップストリーム名 |
---|---|---|---|
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 |
OS パッケージ (プレビュー版) | 公開 | OS パッケージのサポート対象のアップストリームをご覧ください。 | OS パッケージのサポート対象のアップストリームをご覧ください。 |
OS パッケージのプリセット アップストリーム
一般的なプリセット アップストリームのリポジトリ ベース URL のいずれかを選択して、特定のリポジトリへの URL の残りの部分をカスタマイズすることで、OS パッケージのリモート リポジトリを作成できます。次のリポジトリ ベースがサポートされています。
Apt
リポジトリ | URL プレフィックス | リポジトリ ベース名 |
---|---|---|
Debian | http://deb.debian.org |
DEBIAN |
Ubuntu LTS / Pro | http://archive.ubuntu.com
|
UBUNTU
|
Yum
リポジトリ | URL プレフィックス | リポジトリ ベース名 |
---|---|---|
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
カスタム URL
次の形式の場合、プリセット アップストリーム ソースのいずれかを使用せずに、リモート リポジトリの URL を直接入力できます。
- Docker
- npm
- Maven
- Python
次の表に、一般的なアップストリーム URI の一部を一覧表示します。
形式 | アップストリーム URI | レジストリ名 |
---|---|---|
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 Registry |
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 Package Index(PyPI) |
Python | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY |
Nexus |
ここで
- MY_NEXUS_IP は、Nexus アップストリーム インスタンスの IP アドレスとポートです。
- MY_UPSTREAM_REPOSITORY は、Nexus の例で使用されるアップストリーム リポジトリの名前です。
制限事項
リモート リポジトリには、Artifact Registry の割り当てと上限に加えて、次の制限があります。
- Maven リモート リポジトリでは、バージョン ポリシーをスナップショットまたはリリースに設定できません。
- アップストリーム ソースは、インターネットにアクセスできる必要があります。リモート リポジトリは、パブリック IP アドレスのないオンプレミスまたは Virtual Private Cloud(VPC)ネットワークのアップストリーム ソースをサポートしていません。
次のステップ
- リモート リポジトリを作成する。
- Artifact Registry リポジトリの詳細について、リポジトリの概要を確認する。