クラスター接続を使用して Azure Arc 対応 Kubernetes クラスターに安全に接続する
クラスター接続を使用すると、ファイアウォールでどの受信ポートも有効にすることなく、Azure Arc 対応 Kubernetes クラスターにどこからでも安全に接続できます。
Azure Arc 対応 Kubernetes クラスターの apiserver
にアクセスすると、次のシナリオが可能になります。
- 対話型デバッグとトラブルシューティング
- カスタムの場所やその上に作成されたその他のリソースの Azure サービスへのクラスター アクセス
開始する前に、クラスター接続機能の概念的概要を確認してください。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
Azure Arc 対応 Kubernetes に接続された既存のクラスター。
- クラスターをまだ接続していない場合は、クイックスタートを使用してください。
- 最新バージョンにエージェントをアップグレードします。
送信アクセス用に次のエンドポイントを有効にします。
エンドポイント Port *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Note
*.servicebus.windows.net
ワイルドカードを特定のエンドポイントに変換するには、コマンド\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
を使用します。 このコマンド内で、<location>
プレースホルダーにリージョンを指定する必要があります。
リージョン エンドポイントのリージョン セグメントを取得するには、Azure リージョン名からすべてのスペースを削除します。 たとえば、米国東部 2 リージョンのリージョン名は eastus2
となります。
たとえば、*.<region>.arcdataservices.com
は、米国東部 2 リージョンでは *.eastus2.arcdataservices.com
となります。
すべてのリージョンの一覧を表示するには、このコマンドを実行します。
az account list-locations -o table
Get-AzLocation | Format-Table
最新バージョンの
connectedk8s
Azure CLI 拡張機能をインストールします。az extension add --name connectedk8s
connectedk8s
拡張機能が既にインストールされている場合は、その拡張機能を最新バージョンに更新します。az extension update --name connectedk8s
プレースホルダーを置き換えて下記のコマンドを実行し、このドキュメントで使用する環境変数を設定します。
CLUSTER_NAME=<cluster-name> RESOURCE_GROUP=<resource-group-name> ARM_ID_CLUSTER=$(az connectedk8s show -n $CLUSTER_NAME -g $RESOURCE_GROUP --query id -o tsv)
認証の設定
既存の Arc 対応クラスターで、Microsoft Entra 認証またはサービス アカウント トークンを使用して ClusterRoleBinding を作成します。
Microsoft Entra 認証オプション
お使いの Microsoft Entra エンティティに関連付けられている
objectId
を取得します。 1 つのユーザー アカウントを使用している場合は、Microsoft Entra エンティティに関連付けられているユーザー プリンシパル名 (UPN) を取得します。- Microsoft Entra グループ アカウントの場合:
AAD_ENTITY_ID=$(az ad signed-in-user show --query id -o tsv)
Microsoft Entra シングル ユーザー アカウントの場合:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
Microsoft Entra アプリケーションの場合:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
適切なアクセス許可を持っているエンティティを承認します。
クラスターでの認可チェックのために Kubernetes ネイティブの ClusterRoleBinding または RoleBinding を使用している場合は、直接アクセスのためにクラスターの
apiserver
を指し示すkubeconfig
ファイルを使用して、このクラスターにアクセスする必要がある Microsoft Entra エンティティ (サービス プリンシパルまたはユーザー) にマップされるバインドを作成できます。 次に例を示します。kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
クラスターでの認可チェックのための Azure RBAC を使用している場合は、Microsoft Entra エンティティにマップされる適用可能な Azure ロールの割り当てを作成できます。 次に例を示します。
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER az role assignment create --role "Azure Arc Enabled Kubernetes Cluster User Role" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER
サービス アカウント トークン認証オプション
Kubernetes クラスターの
apiserver
を指し示すkubeconfig
ファイルを使用して、このコマンドを実行してサービス アカウントを作成します。 この例では、既定の名前空間にサービス アカウントを作成しますが、default
の他の名前空間に置き換えることができます。kubectl create serviceaccount demo-user -n default
ClusterRoleBinding を作成して、このサービス アカウントにクラスターに対する適切なアクセス許可を付与します。 最初のコマンドで別の名前空間を使用した場合は、ここで
default
に置き換えます。kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
次のようにサービス アカウント トークンを作成します。
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: demo-user-secret annotations: kubernetes.io/service-account.name: demo-user type: kubernetes.io/service-account-token EOF
TOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
コンソールに出力するトークンを取得する
echo $TOKEN
クライアント デバイスからクラスターにアクセスする
これで、別のクライアントからクラスターにアクセスできます。 もう一方のクライアント デバイスで次のステップを実行します。
Microsoft Entra 認証またはサービス アカウント トークン認証を使用してサインインします。
使用する認証オプションに基づき、任意の場所から (クラスターを囲むファイアウォールの外側からでも) クラスターと通信するために必要なクラスター接続の
kubeconfig
を取得します。Microsoft Entra 認証を使用している場合:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
サービス アカウント トークン認証を使用している場合:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Note
このコマンドを実行すると、プロキシが開き、現在のシェルがブロックされます。
別のシェル セッションで、
kubectl
を使用してクラスターに要求を送信します。kubectl get pods -A
これで、default
名前空間の下にあるすべてのポッドの一覧が含まれている、クラスターからの応答が表示されます。
既知の制限事項
az connectedk8s show
を使用して、Arc 対応 Kubernetes エージェントのバージョンを確認します。
Kubernetes クラスターへの要求を行うときに、使用する Microsoft Entra エンティティが 200 を超えるグループに属している場合、次のエラーが発生する場合があります。
You must be logged in to the server (Error:Error while retrieving group info. Error:Overage claim (users with more than 200 group membership) is currently not supported.
これは、既知の制限です。 このエラーを回避するには:
- サービス プリンシパルを作成します。これは、200 を超えるグループのメンバーになる可能性が高くありません。
az connectedk8s proxy
コマンドを実行する前に、サービス プリンシパルを使用して Azure CLI にサインインします。
次のステップ
- クラスター上で Microsoft Entra RBAC を設定します。
- クラスター拡張機能をデプロイして管理する。