AKS Engine の Kubernetes クラスターを Azure Arc に接続する
はじめに
オンプレミスの Azure Stack Hub 上に AKS Engine で構築した Kubernetes クラスターを、Azure Arc に接続します。
公式ドキュメントはこちら。
この通りにやるだけです。
環境
以下の環境で実施しました。
- Azure Stack Hub 2005
- AKS Engine 0.55.4
- Kubernetes 1.17.11
準備
Azure Arc の接続は Azure Cloud と Kubernetes クラスターの両方に接続可能な環境で行う必要があります。ですので、Kubernetes クラスターの構築に使った ASK Engine がインストールされたサーバーで行います。
また、azure-cli は Azure Stack Hub ではなく AzureCloud に向けておきます。
az cloud list --output table
IsActive Name Profile
---------- ----------------- ---------
True AzureCloud latest
False AzureChinaCloud latest
False AzureUSGovernment latest
False AzureGermanCloud latest
False AzureStackUser 2019-03-01-hybrid
このサーバーに Azure CLI 拡張機能をインストールします。
az extension add --name connectedk8s
手順
Azure Arc 対応 Kubernetes 用のプロバイダーを登録する
ドキュメントの通りにコマンドを実行します。
az provider register --namespace Microsoft.Kubernetes
az provider register --namespace Microsoft.KubernetesConfiguration
az provider register --namespace Microsoft.ExtendedLocation
リソース グループを作成する
$ az group create --name azure-arc --location EastUS --output table
Location Name
---------- ---------
eastus azure-arc
Kubernetes クラスターを接続する
$ az connectedk8s connect --name arc-azs-cluster --resource-group azure-arc
Ensure that you have the latest helm version installed before proceeding.
This operation might take a while...
'Custom-locations' feature couldn't be enabled on this cluster as the pre-requisite registration of 'Microsoft.ExtendedLocation' was not met. More details for enabling this feature later on this cluster can be found here - https://aka.ms/EnableCustomLocations
{
"agentPublicKeyCertificate": "****",
"agentVersion": null,
"connectivityStatus": "Connecting",
"distribution": "generic",
"id": "/subscriptions/<your_subscription_id>/resourceGroups/azure-arc/providers/Microsoft.Kubernetes/connectedClusters/arc-azs-cluster",
"identity": {
"principalId": "d5300d30-****-****-****-************",
"tenantId": "********-****-****-****-************",
"type": "SystemAssigned"
},
"infrastructure": "azure",
"kubernetesVersion": null,
"lastConnectivityTime": null,
"location": "eastus",
"managedIdentityCertificateExpirationTime": null,
"name": "arc-azs-cluster",
"offering": null,
"provisioningState": "Succeeded",
"resourceGroup": "azure-arc",
"systemData": {
"createdAt": "2021-08-31T12:31:30.405609+00:00",
"createdBy": "<your-account>",
"createdByType": "User",
"lastModifiedAt": "2021-08-31T12:31:42.450439+00:00",
"lastModifiedBy": "64b12d6e-****-****-****-************",
"lastModifiedByType": "Application"
},
"tags": {},
"totalCoreCount": null,
"totalNodeCount": null,
"type": "microsoft.kubernetes/connectedclusters"
}
リソースが作成されたことが確認できます。
また、Kubernetes で azure-arc 名前空間の pod が動作している事も確認できます。
$ kubectl -n azure-arc get pods
NAME READY STATUS RESTARTS AGE
cluster-metadata-operator-66784d6f84-rpm26 2/2 Running 0 22m
clusterconnect-agent-667b6778bc-67995 3/3 Running 0 22m
clusteridentityoperator-7889bd4b48-qkksc 2/2 Running 0 22m
config-agent-659b8c6958-mk69m 2/2 Running 0 22m
controller-manager-f9cf86686-vxmzt 2/2 Running 0 22m
extension-manager-f84895476-mpb2t 2/2 Running 0 22m
flux-logs-agent-8587fffffc-p9s7q 1/1 Running 0 22m
kube-aad-proxy-69c89db4c7-r2fkc 2/2 Running 0 22m
metrics-agent-5897c8ffb8-dcgqt 2/2 Running 0 22m
resource-sync-agent-778df6c9d9-2wqrz 2/2 Running 0 22m
Azure Monitor Container Insights を構成する
Azure Monitor で Kubernetes クラスターを監視します。
作成済みの Log Analytics ワークスペースを指定して拡張機能をインストールします。
az k8s-extension create --name azuremonitor-containers --cluster-name arc-azs-cluster --resource-group azure-arc --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings logAnalyticsWorkspaceResourceID=<log-analytics-workspace-id>
Log Analytics ワークスペースの ID は az resource list --resource-type Microsoft.OperationalInsights/workspaces --name <workspace-name>
で取得できます。
インストールに成功すると、分析情報から Kubernetes の情報が確認できるようになります。
おわりに
AKS Engine で作成した Azure Stack Hub 上の Kubernetes クラスターを Azure Arc に接続しました。
注意する点としては、Kubernetes クラスターにアクセスする為に .kube/config が存在するサーバーでオペレーションする事と、Azure CLI のエンドポイントを AzureCloud に向ける事くらいで、公式ドキュメント通りのオペレーションで問題なく接続できました。
Discussion