ARO で Workload ID による認証・認可を使用するためには、ARO Cluster を Managed ID で作成する必要があります。
Azure Red Hat OpenShift (ARO)
Microsoft Azure Red Hat OpenShift サービスを使用すると、フル マネージドの OpenShift クラスターをデプロイできます。 Azure Red Hat OpenShift は Kubernetes を拡張します。 Kubernetes を使用して運用環境でコンテナーを実行するには、他のツールとリソースが必要です。 これには、多くの場合、イメージ レジストリ、ストレージ管理、ネットワーク ソリューション、および一緒にバージョン管理とテストを行う必要があるログ記録および監視ツールを調整する必要があります。 コンテナーベースのアプリケーションを構築するには、さらにミドルウェア、フレームワーク、データベース、CI/CD ツールとの統合作業も必要です。 Azure Red Hat OpenShift は、これらすべての項目を 1 つのプラットフォームに結合し、IT チームに運用を容易にしながら、アプリケーション チームに実行する必要のあるものを提供します。
What are managed identities
マネージド ID は特殊な種類のサービス プリンシパルであり、Azure リソースへのアクセスを制御または有効にするために使用できます。 資格情報、証明書、キー、またはシークレットを手動で管理する必要がなくなるため、セキュリティ侵害のリスクを軽減できます。 アプリケーション (またはサービス) は 、Microsoft Entra ID 認証を利用して、他の Azure サービスにアクセスするために、一時的な制限付きアクセス許可資格情報を要求します。
Azure Red Hat OpenShift では、ワークロード ID という用語は、Azure サービスへのアクセスを必要とするクラスターで実行されているアプリケーションまたはワークロードを表すために使用されます。
Create an Azure Red Hat OpenShift cluster with managed identities
ここでは、以下の ARO Private Cluster 構成に基づき、Managed ID で ARO Cluster を作成してみます。
Prerequisites
下記を確認の上、必要な事前準備を行います。Permissionについては、ARO 専用の Resource Group を作成するため、相応の割り当てが必要です。
Prerequisites
https://learn.microsoft.com/en-us/azure/openshift/howto-create-openshift-cluster?pivots=aro-deploy-az-cli#prerequisites
Verify your permissions
https://learn.microsoft.com/en-us/azure/openshift/howto-create-openshift-cluster?pivots=aro-deploy-az-cli#verify-your-permissions
事前準備として以下の設定を行います。
- 前述の ARO Private Cluster 構成と同じ内容
Create the required user assigned managed identities
Create the required user assigned managed identities
https://learn.microsoft.com/en-us/azure/openshift/howto-create-openshift-cluster?pivots=aro-deploy-az-cli#create-the-required-user-assigned-managed-identities
az identity create
以下の要領で作成します。
$!/bin/bash
RG="my-resource-group"
az identity create --resource-group $RG --name aro-cluster
az identity create --resource-group $RG --name cloud-controller-manager
az identity create --resource-group $RG --name ingress
az identity create --resource-group $RG --name machine-api
az identity create --resource-group $RG --name disk-csi-driver
az identity create --resource-group $RG --name cloud-network-config
az identity create --resource-group $RG --name image-registry
az identity create --resource-group $RG --name file-csi-driver
az identity create --resource-group $RG --name aro-operator
az role assignment create
Document 記載の内容を参考に作成します。
Document 上は az role assignment create の --scope Option が固定値として記載されているため、必要に応じて修正します。
修正例:
az role assignment create \
--assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name cloud-controller-manager --query principalId -o tsv)" \
--assignee-principal-type ServicePrincipal \
--role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/a1f96423-95ce-4224-ab27-4e3dc72facd4" \
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/master"
上記 --scope 中の /master を、構成に合わせて /master-subnet に修正。
export MASTER_SUBNET="master-subnet"
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/$MASTER_SUBNET"
--role Option は、Document 記載の Azure Built-in Role を指定します。
Create the cluster
Private Cluster は az CLI (az aro create) で作成します。
前述の ARO Private Cluster 構成の内容に加えて、Managed ID 用 Option を追加します。
#!/bin/bash
SUB="xxxxx-yyyyy-zzzzz"
RG="my-resource-group"
PULLSECRET="my-pullsecret-txt"
ARGS=(
--subscription $SUB
--resource-group $RG # ARO Resource を作成する Resource Group
--name aro-private-cluster # ARO Resource
--cluster-resource-group aro-rg # ARO の実体が構成される ARO 専用の Resource Group
--location japaneast
--version 4.18.26 # az aro get-versions -l japaneast の確認結果から選択
--apiserver-visibility Private # Ingress Private
--ingress-visibility Private # Ingress Private
--outbound-type UserDefinedRouting # Egress Private
--domain my-test-aro-private.com # ARO Base Domain の変更
--master-subnet master-subnet # 事前作成した Subnet
--worker-subnet worker-subnet # 事前作成した Subnet
--vnet aro-vnet # 事前作成した Vnet
--vnet-resource-group $RG
--master-vm-size Standard_D8s_v5
--worker-count 3
--worker-vm-disk-size-gb 128
--worker-vm-size Standard_D4s_v5
--master-enc-host true # Master Node Disk 暗号化
--worker-enc-host true # Worker Node Disk 暗号化
--tags aro-private
--debug
--output json
--pull-secret $PULLSECRET
# Managed ID 用 Option
--enable-managed-identity
--assign-cluster-identity aro-cluster
--assign-platform-workload-identity file-csi-driver file-csi-driver
--assign-platform-workload-identity cloud-controller-manager cloud-controller-manager
--assign-platform-workload-identity ingress ingress
--assign-platform-workload-identity image-registry image-registry
--assign-platform-workload-identity machine-api machine-api
--assign-platform-workload-identity cloud-network-config cloud-network-config
--assign-platform-workload-identity aro-operator aro-operator
--assign-platform-workload-identity disk-csi-driver disk-csi-driver
)
az aro create "${ARGS[@]}"
Additional Configurations
Prepare a custom domain for your cluster (optional)
前述の ARO Private Cluster 構成と同じ内容を実施します。
Egress Lockdown
前述の ARO Private Cluster 構成と同じ内容を実施します。
Additional Role Assignment
Egress Lockdown 構成の Managed ID Cluster では、追加の Role Assignment が必要です。以下の Document を参考に az role assignment create を実行します。
Role assignment scope
https://learn.microsoft.com/en-us/azure/openshift/howto-understand-managed-identities#role-assignment-scope
Connect to the private cluster
ar aro create 完了後、以下の要領で Private Cluster にアクセスします。
前述の ARO Private Cluster 構成と同じ要領でアクセスします。