Azure Arc 対応 Kubernetes は、Azure CLI または Azure PowerShell を使用して既存の Kubernetes クラスターを Azure Arc に接続することで開始します。
Azure Arc にクラスターを接続するしくみを概念図で確認するには、「Azure Arc 対応 Kubernetes エージェントの概要」を参照してください。 サンプル/プラクティス エクスペリエンスで試すには、 Azure Arc Jumpstart にアクセスしてください。
前提条件
重要
以下の前提条件に加えて、Azure Arc 対応 Kubernetes のネットワーク要件をすべて満たしていることを確認してください。
アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
Kubernetes の中心概念に関する基本的な理解。
Azure CLI へのログインと Azure Arc へのクラスターの接続に使用できる ID (ユーザーまたはサービス プリンシパル)。
Azure CLI の最新バージョン。
次のコマンドを実行してインストールされた、connectedk8s Azure CLI 拡張機能の最新バージョン。
az extension add --name connectedk8s
稼働している Kubernetes クラスター。 お持ちでない場合は、次のいずれかのオプションを使用してクラスターを作成できます。
Cluster API を使用したセルフマネージド Kubernetes クラスター
注意
クラスターには、オペレーティング システムとアーキテクチャの種類が
linux/amd64
および/またはlinux/arm64
であるノードが少なくとも 1 つ含まれている必要があります。 ARM64 シナリオの詳細については、クラスターの要件に関するページを参照してください。
クラスターにデプロイされる Arc エージェント用に少なくとも 850 MB の空き容量、および 1 つの CPU の約 7% を使用するための容量。
kubeconfig ファイルと、クラスターを指すコンテキスト。 詳細については、「 複数のクラスターへのアクセスを構成する」を参照してください。
Azure Arc 対応 Kubernetes 用のプロバイダーを登録する
次のコマンドを入力します。
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.KubernetesConfiguration az provider register --namespace Microsoft.ExtendedLocation
登録プロセスを監視します。 登録には最大で 10 分かかる場合があります。
az provider show -n Microsoft.Kubernetes -o table az provider show -n Microsoft.KubernetesConfiguration -o table az provider show -n Microsoft.ExtendedLocation -o table
登録すると、これらの名前空間の
RegistrationState
状態がRegistered
に変わります。
リソース グループを作成する
次のコマンドを実行します。
az group create --name AzureArcTest --___location EastUS --output table
出力:
Location Name
---------- ------------
eastus AzureArcTest
既存の Kubernetes クラスターを接続する
次のコマンドを実行して、クラスターに接続します。 このコマンドを使用して、Azure Arc エージェントをクラスターにデプロイし、Helm v. 3.6.3 をデプロイ マシンの .azure
フォルダーにインストールします。 この Helm 3 のインストールは Azure Arc でのみ使用され、マシンにインストール済みの以前のバージョンの Helm が削除されたり変更されたりすることはありません。
この例では、クラスターの名前は AzureArcTest1 です。
az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest
出力:
Helm release deployment succeeded
{
"aadProfile": {
"clientAppId": "",
"serverAppId": "",
"tenantId": ""
},
"agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
"agentVersion": null,
"connectivityStatus": "Connecting",
"distribution": "gke",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
"identity": {
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
},
"infrastructure": "gcp",
"kubernetesVersion": null,
"lastConnectivityTime": null,
"___location": "eastus",
"managedIdentityCertificateExpirationTime": null,
"name": "AzureArcTest1",
"offering": null,
"provisioningState": "Succeeded",
"resourceGroup": "AzureArcTest",
"tags": {},
"totalCoreCount": null,
"totalNodeCount": null,
"type": "Microsoft.Kubernetes/connectedClusters"
}
ヒント
___location パラメーターを指定せずに上記のコマンドを実行すると、リソース グループと同じ場所に Azure Arc 対応 Kubernetes リソースが作成されます。 Azure Arc 対応 Kubernetes リソースを別の場所に作成するには、--___location <region>
コマンドの実行時に -l <region>
または az connectedk8s connect
のいずれかを指定します。
重要
タイムアウト エラーが原因でデプロイが失敗する場合は、トラブルシューティング ガイドを参照して、この問題の詳しい解決方法を確認してください。
送信プロキシ サーバーを使用して接続する
クラスターが送信プロキシ サーバーの背後にある場合、送信プロキシ サーバー経由で要求をルーティングする必要があります。
送信プロキシ サーバーを使用するには、デプロイ マシンで Azure CLI に必要な環境変数を設定します。
export HTTP_PROXY=<proxy-server-ip-address>:<port> export HTTPS_PROXY=<proxy-server-ip-address>:<port> export NO_PROXY=<cluster-apiserver-ip-address>:<port>
Kubernetes クラスターで、
proxy-https
パラメーターとproxy-http
パラメーターを指定して connect コマンドを実行します。 プロキシ サーバーが HTTP と HTTPS の両方で設定されている場合は、HTTP プロキシには--proxy-http
、HTTPS プロキシには--proxy-https
を必ず使用してください。 プロキシ サーバーで HTTP のみが使用される場合は、両方のパラメーターにその値を使用できます。az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>
注意
- 一部のネットワーク要求 (たとえばクラスター内のサービス間通信を含むもの) は、送信方向の通信でプロキシ サーバーを介してルーティングされるトラフィックから切り離す必要があります。
--proxy-skip-range
パラメーターを使用して、CIDR 範囲とエンドポイントをコンマで区切って指定することで、エージェントからこれらのエンドポイントへの通信が送信プロキシ経由で行われないようにすることができます。 少なくとも、クラスター内のサービスの CIDR 範囲は、このパラメーターの値として指定する必要があります。 たとえば、kubectl get svc -A
が返すサービスの一覧で、すべてのサービスの ClusterIP 値が10.0.0.0/16
の範囲であるとします。 その場合、--proxy-skip-range
に指定する値は10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc
です。 -
--proxy-http
、--proxy-https
、および--proxy-skip-range
は、ほとんどの送信プロキシ環境に必要です。--proxy-cert
は、プロキシが求める信頼された証明書を、エージェント ポッドの信頼された証明書ストアに挿入する必要がある場合に "のみ" 必要となります。 - 送信プロキシは、websocket 接続を許可するように構成する必要があります。
送信プロキシ サーバーの場合、信頼できる証明書のみを指定する場合は、--proxy-cert
パラメーターのみを指定してaz connectedk8s connect
を実行できます。
az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>
信頼できる証明書が複数ある場合は、証明書チェーン (リーフ証明書、中間証明書、ルート証明書) を、 --proxy-cert
パラメーターで渡される 1 つのファイルに結合する必要があります。
注意
-
--custom-ca-cert
は--proxy-cert
の別名です。 どちらのパラメーターも同じ意味で使用できます。 同じコマンドで両方のパラメーターを渡すと、最後に渡されたパラメーターが有効と認められます。
クラスターの接続を確認する
次のコマンドを実行します。
az connectedk8s list --resource-group AzureArcTest --output table
出力:
Name Location ResourceGroup
------------- ---------- ---------------
AzureArcTest1 eastus AzureArcTest
接続の問題のトラブルシューティングについては、「 Azure Arc 対応 Kubernetes クラスターの接続の問題を診断する」を参照してください。
注意
クラスターのオンボード後、クラスター メタデータ (クラスターのバージョンやノード数など) が Azure portal の Azure Arc 対応 Kubernetes リソースの概要ページに表示されるまでに最大 10 分かかります。
Kubernetes 用 Azure Arc エージェントを表示する
Azure Arc 対応の Kubernetes では、azure-arc
名前空間にいくつかのエージェントがデプロイされます。
これらのデプロイとポッドは、次を使用して表示します。
kubectl get deployments,pods -n azure-arc
すべてのポッドが
Running
状態であることを確認します。出力:
NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cluster-metadata-operator 1/1 1 1 13d deployment.apps/clusterconnect-agent 1/1 1 1 13d deployment.apps/clusteridentityoperator 1/1 1 1 13d deployment.apps/config-agent 1/1 1 1 13d deployment.apps/controller-manager 1/1 1 1 13d deployment.apps/extension-manager 1/1 1 1 13d deployment.apps/flux-logs-agent 1/1 1 1 13d deployment.apps/kube-aad-proxy 1/1 1 1 13d deployment.apps/metrics-agent 1/1 1 1 13d deployment.apps/resource-sync-agent 1/1 1 1 13d NAME READY STATUS RESTARTS AGE pod/cluster-metadata-operator-9568b899c-2stjn 2/2 Running 0 13d pod/clusterconnect-agent-576758886d-vggmv 3/3 Running 0 13d pod/clusteridentityoperator-6f59466c87-mm96j 2/2 Running 0 13d pod/config-agent-7cbd6cb89f-9fdnt 2/2 Running 0 13d pod/controller-manager-df6d56db5-kxmfj 2/2 Running 0 13d pod/extension-manager-58c94c5b89-c6q72 2/2 Running 0 13d pod/flux-logs-agent-6db9687fcb-rmxww 1/1 Running 0 13d pod/kube-aad-proxy-67b87b9f55-bthqv 2/2 Running 0 13d pod/metrics-agent-575c565fd9-k5j2t 2/2 Running 0 13d pod/resource-sync-agent-6bbd8bcd86-x5bk5 2/2 Running 0 13d
これらのエージェントの詳細については、「Azure Arc 対応 Kubernetes エージェントの概要」を参照してください。
リソースをクリーンアップする
次のコマンドを使用して、Azure Arc 対応 Kubernetes リソース、関連付けられている構成リソース、およびクラスターで実行されているエージェントを削除できます。
az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest
削除プロセスが失敗した場合は、次のコマンドを使用して強制的に削除します (確認プロンプトをバイパスする場合は -y
を追加します)。
az connectedk8s delete -n AzureArcTest1 -g AzureArcTest --force
このコマンドは、(以前に作成したリソースが完全には削除されていないため) 新しいクラスター デプロイの作成時に問題が発生した場合にも使用できます。
注意
Azure portal を使用して Azure Arc 対応 Kubernetes リソースを削除すると、関連付けられているすべての構成リソースは削除されますが、クラスターで実行されているエージェントは削除 "されません"。 このため、Azure portal でリソースを削除するのではなく、 az connectedk8s delete
を使用して Azure Arc 対応 Kubernetes リソースを削除することをお勧めします。
次のステップ
- GitOps (Flux v2) を使用して構成をデプロイする方法を確認します。
- Azure Arc 対応 Kubernetes の一般的な問題のトラブルシューティング。
- Azure Arc のジャンプスタートを使用して、Azure Arc 対応 Kubernetes の自動化されたシナリオを体験します。
- Azure Arc 対応 Kubernetes のセキュリティブックのガイダンスに従って、クラスターの保護に役立ちます。