クイック スタート: 接続レジストリ Arc 拡張機能を展開する (プレビュー)
このクイック スタートでは、CLI UX と既定のセキュリティで保護された設定を使用して接続レジストリ Arc 拡張機能を展開し、堅牢なセキュリティと運用の整合性を確保する方法について説明します。
接続レジストリは、エッジの顧客にとって重要なツールであり、オンプレミスでもリモート サイトでも、コンテナー化されたワークロードへの効率的な管理とアクセスを可能にします。 Azure Arc との統合により、このサービスでは Kubernetes ベースのコンテナー化されたワークロードの、シームレスで統合されたライフサイクル管理エクスペリエンスが確保されます。 接続レジストリ Arc 拡張機能を Arc 対応 Kubernetes クラスター上に展開すると、これらのワークロードの管理とアクセスが簡素化されます。
前提条件
Azure と Kubernetes に接続するように Azure CLI を設定します。
クイック スタートを参考にして、Azure Container Registry (ACR) を作成するか、既存のものを使用します。
専用データ エンドポイントを有効にすることで、ACR と接続レジストリ間のファイアウォール アクセスと通信を設定します。
チュートリアルを参考にして、Azure KubernetesService (AKS) クラスターを作成するか、既存のものを使用します。
クイックスタートに従って、Kubernetescluster と Azure Arc 間の接続を設定します。
Kubernetesextensions を管理するには、「k8s-extension」コマンドを使用します。
az extension add --name k8s-extension
必要な Azure リソース プロバイダーをサブスクリプション内に登録し、Azure Arc 対応 Kubernetes を使用します。
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.KubernetesConfiguration az provider register --namespace Microsoft.ExtendedLocation
Azure リソース プロバイダーは、特定の Azure サービスの機能を有効化する REST 操作のセットです。
接続レジストリと同期する ACR レジストリ内のリポジトリ。
az acr import --name myacrregistry --source mcr.microsoft.com/mcr/hello-world:latest --image hello-world:latest
hello-world
リポジトリは ACR レジストリmyacrregistry
内に作成され、接続レジストリと同期します。
既定のセキュリティで保護された設定を使用して、接続レジストリ Arc 拡張機能を展開する
前提条件、必要な条件、コンポーネントが整ったら、次の設定を使用して、合理化されたアプローチに従い、接続レジストリ拡張機能を Arc 対応 Kubernetes クラスター上に安全に展開します。 これらの設定では、HTTPS、読み取り専用、Trust Distribution、Cert Manager サービスを使用して、次の構成を定義します。 展開を成功させるには、次の手順に従います。
接続レジストリを作成して ACR と同期する
接続レジストリを作成して ACR と同期することは、接続レジストリ Arc 拡張機能を展開するための基本的な手順です。
ACR レジストリと同期する接続レジストリを作成します。
ACR レジストリ
myacrregistry
と同期する接続レジストリmyconnectedregistry
を、リソース グループmyresourcegroup
およびリポジトリhello-world
内に作成するには、「az acr connected-registry create」コマンドを実行します。az acr connected-registry create --registry myacrregistry \ --name myconnectedregistry \ --resource-group myresourcegroup \ --repository "hello-world"
- az acr connected-registry create コマンドは、指定したリポジトリを使用して接続レジストリを作成します。
- az acr connected-registry create コマンドは、
myscopemap
という名前の同期スコープ マップが存在する場合はアクションを上書きし、mysynctoken
という名前の同期トークンが存在する場合はプロパティを上書きします。 - az acr connected-registry create コマンドは、接続レジストリの作成時に専用データ エンドポイントを検証し、ACR レジストリに対してその専用データ エンドポイントを有効にするコマンドを提供します。
接続レジストリ Arc 拡張機能を Arc 対応 Kubernetes クラスター上に展開する
接続レジストリ Arc 拡張機能を展開することで、コンテナー イメージとその他の Open Container Initiative (OCI) 成果物を ACR レジストリと同期できます。 この展開は、レジストリ成果物へのアクセスを高速化するのに役立ち、高度なシナリオの構築を可能にします。 この拡張機能の展開により、接続レジストリとクラスター内のすべてのクライアント ノード間の Trust Distribution が確実にセキュリティで保護され、トランスポート層セキュリティ (TLS) 暗号化用の Cert Manager サービスがインストールされます。
接続文字列と保護設定 JSON ファイルを生成する
接続レジストリ拡張機能を安全に展開するには、新しいパスワードとトランスポート プロトコルを含む接続文字列を生成して、「 az acr connected-registry get-settings 」コマンドによる拡張機能の展開に必要な
protected-settings-extension.json
ファイルを作成します。
cat << EOF > protected-settings-extension.json
{
"connectionString": "$(az acr connected-registry get-settings \
--name myconnectedregistry \
--registry myacrregistry \
--parent-protocol https \
--generate-password 1 \
--query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
}
EOF
cat << EOF > protected-settings-extension.json
{
"connectionString": "$(az acr connected-registry get-settings \
--name myconnectedregistry \
--registry myacrregistry \
--parent-protocol https \
--generate-password 1 \
--query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
}
EOF
echo "{\"connectionString\":\"$(az acr connected-registry get-settings \
--name myconnectedregistry \
--registry myacrregistry \
--parent-protocol https \
--generate-password 1 \
--query ACR_REGISTRY_CONNECTION_STRING \
--output tsv \
--yes | tr -d '\r')\" }" > settings.json
Note
cat および echo コマンドは、接続文字列の詳細を含む protected-settings-extension.json
ファイルを作成し、接続文字列の内容を protected-settings-extension.json
ファイルの中に挿入します。これは、拡張機能の展開に必要な手順です。 az acr connected-registry get-settings コマンドは、新しいパスワードの作成やトランスポート プロトコルの仕様を含む接続文字列を生成します。
接続レジストリ拡張機能を展開する
「az k8s-extension create」コマンドを使用して、指定した構成の詳細を含む接続レジストリ拡張機能を展開します。
az k8s-extension create --cluster-name myarck8scluster \
--cluster-type connectedClusters \
--extension-type Microsoft.ContainerRegistry.ConnectedRegistry \
--name myconnectedregistry \
--resource-group myresourcegroup \
--config service.clusterIP=192.100.100.1 \
--config-protected-file protected-settings-extension.json
- az k8s-extension create コマンドは、指定された構成パラメーターと保護設定ファイルを使用して、接続レジストリ拡張機能を Kubernetescluster 上に展開します。
- これにより、接続レジストリとクラスター内のすべてのクライアント ノード間の Trust Distribution が確実にセキュリティで保護され、トランスポート層セキュリティ (TLS) 暗号化用の Cert Manager サービスがインストールされます。
- clusterIP は、AKS クラスター サブネット IP の範囲にある必要があります。
service.clusterIP
パラメーターでは、クラスター内の接続レジストリ サービスの IP アドレスを指定します。 Kubernetescluster の有効なサービス IP の範囲内でservice.clusterIP
を設定することが不可欠です。service.clusterIP
に指定された IP アドレスが、そのクラスターの初期構成中に定義された、指定されたサービス IP の範囲内 (通常はそのクラスターのネットワーク設定内に含まれる) にあることを確認してください。service.clusterIP
がこの範囲内にない場合はそれを更新し、有効な範囲内で、かつ現在別のサービスで使用されていない IP アドレスにする必要があります。
接続レジストリ拡張機能の展開を検証する
Arc 対応 Kubernetescluster 上での接続レジストリ拡張機能の展開を検証するには、次の手順に従います。
展開の状態を検証する
「az k8s-extension show」コマンドを実行して、接続レジストリ拡張機能の展開状態を確認します。
az k8s-extension show --name myconnectedregistry \
--cluster-name myarck8scluster \
--resource-group myresourcegroup \
--cluster-type connectedClusters
出力例
{
"aksAssignedIdentity": null,
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": {
"connectionString": ""
},
"configurationSettings": {
"pvc.storageClassName": "standard",
"pvc.storageRequest": "250Gi",
"service.clusterIP": "[your service cluster ip]"
},
"currentVersion": "0.11.0",
"customLocationSettings": null,
"errorInfo": null,
"extensionType": "microsoft.containerregistry.connectedregistry",
"id": "/subscriptions/[your subscription id]/resourceGroups/[your resource group name]/providers/Microsoft.Kubernetes/connectedClusters/[your arc cluster name]/providers/Microsoft.KubernetesConfiguration/extensions/[your extension name]",
"identity": {
"principalId": "[identity principal id]",
"tenantId": null,
"type": "SystemAssigned"
},
"isSystemExtension": false,
"name": "[your extension name]",
"packageUri": null,
"plan": null,
"provisioningState": "Succeeded",
"releaseTrain": "preview",
"resourceGroup": "[your resource group]",
"scope": {
"cluster": {
"releaseNamespace": "connected-registry"
},
"namespace": null
},
"statuses": [],
"systemData": {
"createdAt": "2024-07-12T18:17:51.364427+00:00",
"createdBy": null,
"createdByType": null,
"lastModifiedAt": "2024-07-12T18:22:42.156799+00:00",
"lastModifiedBy": null,
"lastModifiedByType": null
},
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": null
}
接続レジストリの状況と状態を検証する
接続レジストリごとに、「az acr connected-registry list」コマンドを使用して、その接続レジストリの状況と状態を表示できます。
az acr connected-registry list --registry myacrregistry \ --output table
出力例
| NAME | MODE | CONNECTION STATE | PARENT | LOGIN SERVER | LAST SYNC(UTC) |
|------|------|------------------|--------|--------------|----------------|
| myconnectedregistry | ReadWrite | online | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
| myreadonlyacr | ReadOnly | offline | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
特定の接続レジストリの詳細を検証する
特定の接続レジストリの詳細については、「az acr connected-registry show」コマンドを使用します。
az acr connected-registry show --registry myacrregistry \
--name myreadonlyacr \
--output table
出力例
| NAME | MODE | CONNECTION STATE | PARENT | LOGIN SERVER | LAST SYNC(UTC) | SYNC SCHEDULE | SYNC WINDOW |
| ------------------- | --------- | ---------------- | ------------- | ------------------------ | ------------------- | ------------- | ----------------- |
| myconnectedregistry | ReadWrite | online | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 | 0 0 * * * | 00:00:00-23:59:59 |
- az k8s-extension show コマンドは、拡張機能の展開の状態を検証します。
- このコマンドでは、接続レジストリの接続状態、最終同期、同期期間、同期スケジュールなどの詳細も表示されます。
接続レジストリのイメージを使用するポッドを展開する
クラスター内の接続レジストリのイメージを使用するポッドを展開するには、クラスター ノード自体の中から操作を実行する必要があります。 次のステップを実行します。
- クラスター内にシークレットを作成して、接続レジストリで認証します。
「kubectl create secret docker-registry」コマンドを実行して、接続レジストリで認証するシークレットをクラスター内に作成します。
kubectl create secret docker-registry regcred --docker-server=192.100.100.1 --docker-username=mytoken --docker-password=mypassword
接続レジストリの service.clusterIP アドレス
192.100.100.1
の値と、latest
タグが付いたイメージ名hello-world
を使用して、接続レジストリから目的のイメージを使用するポッドを展開します。kubectl apply -f - <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: hello-world-deployment labels: app: hello-world spec: selector: matchLabels: app: hello-world replicas: 1 template: metadata: labels: app: hello-world spec: imagePullSecrets: - name: regcred containers: - name: hello-world image: 192.100.100.1/hello-world:latest EOF
リソースをクリーンアップする
展開された接続レジストリ拡張機能を削除すると、対応する接続レジストリのポッドと構成設定も削除されます。
接続レジストリ拡張機能を削除する
「az k8s-extension delete」コマンドを実行して、接続レジストリ拡張機能を削除します。
az k8s-extension delete --name myconnectedregistry --cluster-name myarcakscluster \ --resource-group myresourcegroup \ --cluster-type connectedClusters
展開された接続レジストリを削除すると、接続レジストリ クラウド インスタンスとその構成の詳細が削除されます。
接続レジストリを削除する
「az acr connected-registry delete」コマンドを実行して接続レジストリを削除します。
az acr connected-registry delete --registry myacrregistry \ --name myconnectedregistry \ --resource-group myresourcegroup