Artifact Registry は、Google Cloud Platform (GCP) が提供するフルマネージドのアーティファクトリポジトリサービスです。コンテナイメージ、言語パッケージ(npm、Maven、Python)、OS パッケージなどのソフトウェアアーティファクトを保存、管理、セキュア化するための統合リポジトリです。Artifact Registryは、CI/CDパイプラインとシームレスに統合され、ソフトウェア開発ライフサイクル全体をサポートします。
Artifact Registryは以下の主要コンポーネントで構成されています:
コンポーネント | 説明 |
---|---|
リポジトリ | アーティファクトを保存する論理的なコンテナ。特定のフォーマット(Docker、npm など)に対応 |
アーティファクト | リポジトリに保存されるソフトウェアパッケージ(コンテナイメージ、npm パッケージなど) |
バージョン | アーティファクトの特定のバージョン。タグやダイジェストで識別 |
ロケーション | リポジトリが配置される地理的な場所(リージョンまたはマルチリージョン) |
IAMポリシー | リポジトリへのアクセスを制御するポリシー |
Artifact RegistryはContainer Registryの後継サービスであり、以下のような違いがあります:
Artifact Registryは、Google Cloud Console、gcloud CLIツール、またはAPIを使用して利用できます。
Google Cloud Consoleまたはgcloud CLIを使用してリポジトリを作成できます:
gcloud artifacts repositories create my-docker-repo \
--repository-format=docker \
--location=asia-northeast1 \
--description="Docker repository for my applications"
gcloud artifacts repositories create my-npm-repo \
--repository-format=npm \
--location=asia-northeast1 \
--description="npm repository for JavaScript packages"
Artifact RegistryにDockerイメージをプッシュおよびプルする方法:
gcloud auth configure-docker asia-northeast1-docker.pkg.dev
docker tag my-image:latest asia-northeast1-docker.pkg.dev/my-project/my-docker-repo/my-image:latest
docker push asia-northeast1-docker.pkg.dev/my-project/my-docker-repo/my-image:latest
docker pull asia-northeast1-docker.pkg.dev/my-project/my-docker-repo/my-image:latest
Artifact Registryにnpmパッケージを公開および使用する方法:
npx google-artifactregistry-auth
# package.jsonの設定
{
"name": "my-package",
"version": "1.0.0",
"publishConfig": {
"registry": "https://asia-northeast1-npm.pkg.dev/my-project/my-npm-repo/"
}
}
# パッケージの公開
npm publish
# .npmrcの設定
@myorg:registry=https://asia-northeast1-npm.pkg.dev/my-project/my-npm-repo/
# パッケージのインストール
npm install @myorg/my-package
Artifact Registryは、Container Analysis APIを使用してコンテナイメージの脆弱性を自動的にスキャンします:
# 脆弱性スキャンの有効化
gcloud artifacts repositories update my-docker-repo \
--location=asia-northeast1 \
--enable-vulnerability-scanning
スキャン結果の確認:
gcloud artifacts docker images list-vulnerabilities \
asia-northeast1-docker.pkg.dev/my-project/my-docker-repo/my-image:latest \
--location=asia-northeast1
リポジトリにアップストリームを設定して、パッケージが見つからない場合に別のリポジトリから取得できます:
gcloud artifacts repositories update my-npm-repo \
--location=asia-northeast1 \
--add-upstream-policies=repository=projects/my-project/locations/asia-northeast1/repositories/upstream-repo,priority=1
# 読み取り専用アクセスの付与
gcloud artifacts repositories add-iam-policy-binding my-docker-repo \
--location=asia-northeast1 \
--member=serviceAccount:my-service-account@my-project.iam.gserviceaccount.com \
--role=roles/artifactregistry.reader
# 書き込みアクセスの付与
gcloud artifacts repositories add-iam-policy-binding my-docker-repo \
--location=asia-northeast1 \
--member=serviceAccount:ci-service-account@my-project.iam.gserviceaccount.com \
--role=roles/artifactregistry.writer
Artifact RegistryはGoogle Cloud Monitoringおよびロギングと統合されており、リポジトリの使用状況とアクティビティを監視できます:
Artifact Registryの監査ログを有効にするには:
gcloud logging sinks create artifact-registry-logs \
storage.googleapis.com/my-project-logs \
--log-filter='resource.type="artifactregistry.googleapis.com/Repository"'
Artifact Registryのコストを最適化するためのベストプラクティス:
gcloud artifacts repositories update my-docker-repo \
--location=asia-northeast1 \
--cleanup-policies="{
'name': 'delete-old-versions',
'action': 'DELETE',
'condition': {
'olderThan': '90d',
'tagState': 'TAGGED',
'tagPrefixes': ['dev-']
}
}"
Artifact Registryは以下のようなユースケースに適しています:
Artifact Registryは他のGoogle Cloudサービスと統合して、より強力なソフトウェア開発ワークフローを構築できます:
サービス | 統合の利点 |
---|---|
Cloud Build | ビルドプロセスで生成されたアーティファクトを自動的に保存 |
GKE | コンテナイメージをKubernetesクラスタにシームレスにデプロイ |
Cloud Run | コンテナイメージをサーバーレス環境に直接デプロイ |
Binary Authorization | 署名されたコンテナイメージのみをデプロイするポリシーを適用 |
Container Analysis | コンテナイメージの脆弱性スキャンと分析 |
Cloud Deploy | 複数環境へのアーティファクトの段階的なデプロイを管理 |
VPC Service Controls | セキュリティ境界内でのアーティファクトの管理 |
Artifact Registry は、Google Cloud Platform上でのソフトウェアアーティファクトの管理を簡素化するフルマネージドサービスです。コンテナイメージ、言語パッケージ、OSパッケージなど、さまざまな種類のアーティファクトを単一のサービスで管理できます。
Artifact Registryの主な利点は以下の通りです:
Artifact Registryを効果的に活用するには、適切なリポジトリ構造の設計、セキュリティ対策の実装、ライフサイクル管理の自動化が重要です。また、他のGCPサービスと組み合わせることで、エンドツーエンドのソフトウェア開発ライフサイクルを効率化することができます。