💭

AKS Engine の Kubernetes クラスターを Azure Arc に接続する

2021/12/04に公開

はじめに

オンプレミスの Azure Stack Hub 上に AKS Engine で構築した Kubernetes クラスターを、Azure Arc に接続します。

https://zenn.dev/_ta/articles/dc1306ce1a7d4c

公式ドキュメントはこちら。

https://docs.microsoft.com/ja-jp/azure/azure-arc/kubernetes/quickstart-connect-cluster?tabs=azure-cli

この通りにやるだけです。

環境

以下の環境で実施しました。

  • 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 クラスターを監視します。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/containers/container-insights-enable-arc-enabled-clusters?toc=/azure/azure-arc/kubernetes/toc.json

作成済みの 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