CONTAINER-REGISTRY¶
マネージド OCI イメージレジストリを作成するパッケージ。
設定値 |
|
---|---|
Chart |
container-registry |
対応サービス¶
Azure: Azure Container Registry (ACR)
Google Cloud: Artifact Registry
AWS: Amazon Elastic Container Registry (ECR)
パッケージの機能¶
本パッケージでは、各クラウドのマネージドコンテナレジストリに関する以下の機能を提供します。
クラスタから利用可能なコンテナレジストリを作成
- コンテナレジストリへのアクセス許可設定
各クライアントに対する readOnly と readWrite の権限設定が可能
- ネットワークに関する設定 (Azureのみ対応、今後 AWS/Google Cloud でも対応予定)
アクセス元IPによるアクセス許可・拒否の設定
レプリケーション設定
ライフサイクルポリシーの設定(AWSのみ対応)
コンテナレジストリの作成¶
Azure¶
コンテナーレジストリ(ACR)を作成します。
Google¶
Artifact Registry の標準リポジトリを作成します。 仮想リポジトリ、リモートリポジトリには対応していません。
なおアーティファクトの形式は .Values.format
に指定してください。
AWS¶
プライベートレジストリに、プライベートリポジトリ(認証あり)を作成します。 パブリックリポジトリ(認証なし)には対応していません。
コンテナレジストリへのアクセス許可設定¶
作成したコンテナレジストリに対するアクセス許可設定を行います。 CNAP クラスタからコンテナレジストリへのアクセスは初期状態で許可されているため、アクセス許可設定は不要です。
acl
の設定を行うことで、作成したリポジトリにアクセス許可を設定することができます。
readOnly
には読み込みのみの権限を付与したいクライアント、
readWrite
には読み込みおよび書き込みの権限を付与したいクライアントを列挙します。
acl:
readOnly:
- name: cnap-customer
type: role
readWrite:
- name: data-writer
type: role
type
には指定するクライアントの種類を指定し name
対象の識別子を type ごとの書式で指定します。
type |
AWS |
Azure |
Description |
|
---|---|---|---|---|
federatedId |
○ |
外部 ID プロバイダのアカウント IDを指定します。 |
||
service |
○ |
サービスに権限を付与します。[service-name].amazonaws.com という形式で指定します。 |
||
role |
○ |
ロールに権限を付与します。 |
||
sts |
○ |
AssumeRoleにて引き受けたセッションロールに対して権限を付与します。"[role-name]/[session-name]" という形式でダブルクォーテーションで囲んで指定します。 |
||
mid |
○ |
CNAP サービスで作成したユーザ割り当てマネージドIDの name を指定して権限を付与します。 |
||
objectId |
○ |
ユーザー、グループ、サブスクリプション などのIDを指定して権限を付与します。 |
||
user |
○ |
○ |
ユーザーアカウントに権限を付与します。 |
|
domain |
○ |
Google Workspace もしくは Cloud Identity のドメインに所属するユーザーに権限を付与します。
[USER_NAME]@[DOMAIN].com の |
||
gsa |
○ |
google サービスアカウントに権限を付与します。 [SERVICEACCOUNT]@[PROJECT_ID].iam.gserviceaccount.com の形式で指定します。 |
||
group |
○ |
グループアカウントに権限を付与します。 |
ネットワークに関する設定 (Azureのみ対応)¶
インターネットまたはオンプレミスのネットワークからのアクセスを許可するための IP 範囲を追加します。 ipRules.value には、IPアドレスまたはIP範囲(CIDR)を指定します。IPv4のみ指定可能です。 defaultAction には、ipRulesにマッチしない場合のデフォルトアクションを指定します。 networkRuleBypassOptions に AzureServices を指定すると、信頼された Microsoft サービスによるこのコンテナー レジストリへのアクセスを許可します。 設定する場合には、azure.sku で Premium を選択してください。
networkRuleSet:
defaultAction: Deny
ipRules:
- value: 123.123.123.123
action: Allow
networkRuleBypassOptions: AzureServices
レプリケーション設定¶
複数のロケーションへのイメージのレプリケーションを設定します。
Azure¶
同一リージョン内のアベイラビリティゾーンへのレプリケーションを設定することができます。 Geoレプリケーションには対応していません。
location:
name: japaneast
replication:
type: Zone
Google¶
asia
, europe
, us
のマルチリージョンを選択することが可能です。
location:
name: asia
AWS¶
レプリケーション設定では、プライベートレジストリのレプリケーション設定を登録しますが、
レプリケーション設定のリポジトリフィルタに、リポジトリ名( name
)を設定します。
リポジトリフィルタでサポートされているフィルタは、リポジトリ名のプレフィックスのみであるため、リポジトリ名と前方一致するリポジトリがある場合、
ライフサイクルポリシーの設定 (AWSのみ対応)¶
リポジトリに push されたイメージのライフサイクルを設定します。
AWS¶
lifecycle.policy
には json 形式のライフサイクルポリシーを設定します。
例:
lifecycle:
enabled: true
policy: |
{
"rules": [
{
"rulePriority": 1,
"description": "Expire images older than 14 days",
"selection": {
"tagStatus": "untagged",
"countType": "sinceImagePushed",
"countUnit": "days",
"countNumber": 14
},
"action": {
"type": "expire"
}
}
]
}
コンテナレジストリの使用方法¶
Azure 使用方法¶
ACR に登録したイメージを使用して、 basic-deployment, cronjob パッケージでアプリケーションを構築するには下記のように設定します。
image:
repository: {レジストリ名}.azurecr.io/{リポジトリ名}
tag: "{イメージのタグ名}"
pullPolicy: IfNotPresent
Google 使用方法¶
Artifact Registry に登録したDockerイメージを使用して、 basic-deployment, cronjob パッケージでアプリケーションを構築するには下記のように設定します。
image:
repository: {設定したリージョン名}-docker.pkg.dev/{GoogleプロジェクトID}/{レジストリ名}/{リポジトリ名}
tag: "{イメージのタグ名}"
pullPolicy: IfNotPresent
AWS 使用方法¶
ECR に登録したイメージを使用して、 basic-deployment, cronjob パッケージでアプリケーションを構築するには下記のように設定します。
image:
repository: {AWSアカウントID}.dkr.ecr.{リージョン}.amazonaws.com/{リポジトリ名}
tag: "{イメージのタグ名}"
pullPolicy: IfNotPresent
Values¶
Default values¶
# Default values for MASTER-CONTAINER-HELM-CONTAINER-REGISTRY.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
# レジストリ名
name: ""
# レジストリ
location:
# ロケーション名
# Google Cloudでマルチリージョンでの冗長化を行う場合、ロケーション名として asia, europe, us のいずれかを指定します。 シングルリージョンに構築する場合、 asia-northeast1 などリージョン名を指定します。
name: ""
# 冗長設定 (以下、location.replication は AWS/Azure の設定。Google Cloudは location.name で冗長化の設定を行います。)
replication:
# 冗長化タイプ: None/MultiRegion(AWS)/Zone(Azure)
# Azure で Zone(Availability Zones)を指定する場合、azure.sku で Premium を選択してください。
type: None
# 冗長先のロケーション(AWSで MultiRegion の場合に指定)
destinations: []
# レジストリへのアクセスに関する ACL の設定です。
# - readOnly と readWrite の権限設定。
# - name に制御対象の名前。 types に制御対象の種別を指定します。
# - readOnly の設定で type が anonymous の場合は public access となる。 readWrite の設定では anonymous 設定は無視されます。
# - type でクライアントの種類を指定します (README 参照)。
# - ksa へのロール追加はサポートしないため ksa に紐づけて使うかどうかは pod を実行する側で設定する必要があります。
# - acl を指定しない場合、デフォルトでは同じクラウドアカウント内のクラスタからの readOnly アクセスのみ許可されます。
acl:
readOnly: []
# - name: hoge
# type: mid
# - name: hoge@hoge.com
# type: user
readWrite: []
# - name: fuga@hoge.com
# type: user
# - name: arn:aws:iam::1234567890:role/Infrastructure_Admin
# type: role
# 特定の条件に従って image を削除するといったライフサイクルの設定です。(AWSのみ対応)
lifecycle:
enabled: false
# AWS は json 形式でポリシーを設定
policy: "{}"
azure:
# k8s Namespace と同名のリソースグループ以外にコンテナレジストリを作成する場合にリソースグループ名を指定します。
# 指定しない場合(デフォルト)では、k8s Namespace と同名のリソースグループにコンテナレジストリを作成します。
# resourceGroupを指定する場合、事前にUserConfigを使用して、リソースグループを作成する必要があります。(既存のリソースグループに作成したい場合も同様の定義を追加する必要があります。)
# resourceGroup: your-resource-group
# コンテナーレジストリのSKU。
# Basic, Standard, Premium が選択可能。Premiumでなければ利用できない機能があるので注意してください。
sku: Basic
# ファイアウォール設定
# インターネットまたはオンプレミスのネットワークからのアクセスを許可するための IP 範囲を追加します。
# ipRules.value には、IPアドレスまたはIP範囲(CIDR)を指定します。IPv4のみ指定可能です。
# defaultAction には、ipRulesにマッチしない場合のデフォルトアクションを指定します。
# networkRuleBypassOptions に AzureServices を指定すると、信頼された Microsoft サービスによるこのコンテナー レジストリへのアクセスを許可します。
# 設定する場合には、azure.sku で Premium を選択してください。
# networkRuleSet:
# defaultAction: Deny
# ipRules:
# - value: 123.123.123.123
# action: Allow
# networkRuleBypassOptions: AzureServices
# レジストリに登録するアーティファクトのフォーマット。Google Cloudのみ(https://cloud.google.com/artifact-registry/docs/supported-formats)
format: DOCKER
# kubernetes 上からこの Helm を削除した際にクラウド上のストレージリソースを残すかどうかの設定です。
# true に設定すると Helm を削除してもクラウド上にレジストリリソースが残ります。
keepOnDelete: true
Schema reference¶
Values¶
type |
object |
|||||
properties |
||||||
|
コンテナレジストリ名。 |
|||||
type |
string |
|||||
|
コンテナレジストリのロケーション |
|||||
type |
object |
|||||
properties |
||||||
|
コンテナレジストリのロケーション。 |
|||||
type |
string |
|||||
|
冗長化設定 |
|||||
type |
object |
|||||
properties |
||||||
|
冗長化タイプ: None/MultiRegion(AWS)/Zone(Azure)。Azure でZoneを選択する場合、azure.skuをPremiumにする必要があります。 |
|||||
type |
string |
|||||
enum |
None, MultiRegion, Zone |
|||||
default |
None |
|||||
|
冗長先のロケーション |
|||||
type |
array |
|||||
items |
type |
string |
||||
|
true の場合パッケージアンインストール時にインスタンスを保持する。 |
|||||
type |
boolean |
|||||
default |
True |
|||||
|
レジストリへのアクセスに関する ACL の設定 |
|||||
type |
object |
|||||
properties |
||||||
|
readonly権限の追加 |
|||||
type |
array |
|||||
items |
type |
object |
||||
properties |
||||||
|
acl制御対象の名前(ユーザ名やグループ名など) |
|||||
type |
string |
|||||
|
制御対象の種類. ユーザー、グループ、サービス、ロール(AWS), GSA, Mid all |
|||||
type |
string |
|||||
enum |
user, role, group, gsa, mid, domain, objectId, sts, federatedId, service |
|||||
|
readwrite権限の追加 |
|||||
type |
array |
|||||
items |
type |
object |
||||
properties |
||||||
|
acl制御対象の名前(ユーザ名やグループ名など). |
|||||
type |
string |
|||||
|
制御対象の種類. ユーザー、グループ、サービス、ロール(AWS), GSA, Mid all |
|||||
type |
string |
|||||
enum |
user, role, group, gsa, mid, domain, objectId, sts, federatedId, service |
|||||
|
ライフサイクルの設定 |
|||||
type |
object |
|||||
properties |
||||||
|
ライフサイクル設定の有効化 |
|||||
type |
boolean |
|||||
default |
False |
|||||
|
ライフサイクルポリシー(JSON形式) |
|||||
type |
string |
|||||
default |
{} |
|||||
|
type |
object |
||||
properties |
||||||
|
指定なし(デフォルト)の場合、k8s Namespace と同名のリソースグループにコンテナレジストリを作成します。Namespaceと異なるリソースグループに作成したい場合のみリソースグループ名を指定してください。 |
|||||
type |
string |
|||||
|
コンテナーレジストリのSKU。 |
|||||
type |
string |
|||||
enum |
Basic, Standard, Premium |
|||||
default |
Basic |
|||||
|
ネットワークルール(ファイアウォール)設定。Premium SKUの場合のみ設定可 |
|||||
type |
object |
|||||
properties |
||||||
|
ルールに合致しない場合のデフォルトアクション |
|||||
type |
string |
|||||
enum |
Deny, Allow |
|||||
|
IP ACLルール |
|||||
type |
array |
|||||
items |
type |
object |
||||
properties |
||||||
|
IPアドレスまたは、IPアドレス範囲(CIDR)。IPv4のみ許可 |
|||||
type |
string |
|||||
|
IP ACLアクション |
|||||
type |
string |
|||||
enum |
Allow |
|||||
|
ファイアウォール例外設定。AzureServices: 信頼された Microsoft サービスによるこのコンテナー レジストリへのアクセスを許可 |
|||||
type |
string |
|||||
enum |
AzureServices, None |
|||||
|
レジストリに登録するパッケージのフォーマット(https://cloud.google.com/artifact-registry/docs/supported-formats) |
|||||
type |
string |
|||||
enum |
DOCKER, MAVEN, NPM, PYTHON, APT, YUM |
|||||
default |
DOCKER |
Example¶
Example1. Azure¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: my-container-registry
namespace: staging
spec:
chart:
name: container-registry
version: <latest>
settings:
name: registry-name
location:
name: japaneast
replication:
type: Zone
azure:
sku: Premium
networkRuleSet:
defaultAction: Deny
ipRules:
- value: 123.123.123.123
action: Allow
networkRuleBypassOptions: AzureServices
acl:
readWrite:
- name: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX
type: objectId
Example2. Google¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: my-container-registry
namespace: staging
spec:
chart:
name: container-registry
version: <latest>
settings:
name: registry-name
location:
name: asia-northeast1
acl:
readWrite:
- name: user@example.com
type: user
Example3. AWS¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: my-ecr
namespace: staging
spec:
chart:
name: container-registry
version: <latest>
settings:
name: registry-name
location:
name: ap-northeast-1
replication:
type: MultiRegion
destinations:
- us-east-1
- us-west-1
acl:
readOnly:
- name: cnap_customer
type: role
readWrite:
- name: cnap_user
type: user
keepOnDelete: true
Change Log¶
0.2.3¶
Released on 2025-08-07
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。
0.2.2¶
Released on 2025-05-15
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。
0.2.1¶
Released on 2025-02-12
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。