このドキュメントでは、リモート リポジトリの概要について説明します。リモート リポジトリの作成方法については、リモート リポジトリを作成するをご覧ください。
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 の構成の手順をご覧ください。
依存関係の管理に関するその他のベスト プラクティスについては、依存関係の管理をご覧ください。
パッケージ インデックスとメタデータを更新する
パッケージ インデックスやメタデータなどの変更可能なファイルは、デフォルトの経過時間を超えると、アップストリーム ソースから更新されます。次の表に、特定のファイル形式のデフォルトを示します。
形式 | File type | デフォルトの更新期間 |
---|---|---|
Maven | maven-metadata.xml |
5 分 |
archetype-catalog.xml |
1 時間 | |
Npm | マニフェスト ファイル | 5 分 |
Python | インデックス ファイル | 1 時間 |
Docker | タグキャッシュの一覧表示 / 取得 | 1 時間 |
Apt/Yum(プレビュー) | インデックス ファイル | 2 分 |
パッケージ ファイル | 72 時間 |
サポートされているファイル形式
プリセットとユーザー定義のリモート リポジトリで使用可能な形式については、次のセクションをご覧ください。
プリセット アップストリーム
次のリポジトリ形式と対応するプリセット アップストリーム ソースのリモート リポジトリを作成できます。
形式 | パッケージ タイプ | アップストリーム 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 の残りの部分をカスタマイズすることで、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 |
ユーザー定義のアップストリーム
ユーザー定義のアップストリーム ソースのリモート リポジトリは、次の形式で作成できます。
- Docker
- npm
- Maven
- Python
次の表に、一般的なアップストリーム URI の一部を一覧表示します。
形式 | アップストリーム URI | レジストリ名 |
---|---|---|
Docker | https://public.ecr.aws | AWS ECR 公開ギャラリー |
Docker | https://registry.k8s.io | Kubernetes Container Registry |
Docker | https://MY_ARTIFACTORY_INSTANCE.jfrog.io | JFrog Artifactory |
Docker | https://MY_NEXUS_IP | Nexus |
npm | https://npm.pkg.github.com | GitHub Npm Registry |
npm | https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/npm/MY_UPSTREAM_REPOSITORY | JFrog Artifactory |
npm | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY | Nexus |
Maven | https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/MY_UPSTREAM_REPOSITORY | JFrog Artifactory |
Maven | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY | Nexus |
Python | https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/pypi/MY_UPSTREAM_REPOSITORY | JFrog Artifactory |
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 リモート リポジトリでは、バージョン ポリシーをスナップショットまたはリリースに設定できません。
次のステップ
- リモート リポジトリを作成する
- リポジトリの概要で Artifact Registry リポジトリの詳細を確認する。