クラウドエンジニアブログ

Azure のハイブリッドクラウド / マルチクラウド管理サービス 「Azure Arc」 を検証してみた

北川 卓図

皆さんこんにちは。北川です。

早速ですが、皆さんは「Azure Arc」をご存知でしょうか。
Azure Arc とは、Microsoft Azure で提供されているハイブリッドクラウド環境やマルチクラウド環境、オンプレミス環境を統合的に管理できるサービスです。

Azure Portal では、通常 Azure のリソースしか管理できません。
しかし、しかし、この Azure Arc を使うと、Azure はもちろん、AWS や GCP といった他のクラウド環境、オンプレミス環境のリソースを一元管理できるようになります。

Microsoft Ignite 2019 で発表された Azure Arc ですが、一部の機能はまだプレビュー提供のため、実際に触ったことがある方はまだまだ少ないかと思います。 このブログでは Azure Arc の概要と設定方法を紹介し、Azure Arc の現在の全体像を紐解いていきます。




「Microsoft Azure 導入・運用支援サービス」はこちら


1. Azure Arc の概要

Azure Arc の概略図を以下に示します。
Azure Arc を利用することで、以下のように複数環境 (オンプレミス / エッジ / マルチクラウド) におけるリソースのモニタリングやポリシー制御などを、Azure Portal を通して一元的に行うことができます。

1. Azure Arc の概要-1


Azure Arc には、ワークロードに応じた 3 種類の機能が用意されており
それぞれ Azure Arc enabled servers / Azure Arc enabled Kubernetes / Azure Arc enbaled data services です。

左右にスクロールしてご覧ください。

No. Azure Arc 機能 概要
1. Azure Arc enabled servers クラウド (Azure 以外を含む) やオンプレミス、エッジでホストされている Windows と Linux のマシンを、Azure 仮想マシンと同じように管理することができる。
2. Azure Arc enabled Kubernetes Azure Kubernetes Service やその他のクラウドベンダーの Kubernetes サービスに接続して一元的に管理することができる。
3. Azure Arc enabled data services Azure Arc 対応の SQL Managed Instance、PostgreSQL Hyperscale といったデータ サービスを管理することができる。


現時点ではプレビュー段階のものもありますが、Kubernetes の監視やデータ コントローラーの監視など利用できる機能が日々増えているように見受けられます。

1. Azure Arc の概要-2


1. Azure Arc の概要-3


今回は、以下の項目について実機検証を行い、実際に Azure Arc 上でどのように見えてくるのか確認してみます。

  • Azure Arc enabled Kubernetes で Azure Kubernetes Service (AKS) を接続・監視
  • Azure Arc enabled servers で AWS EC2 / Azure VM を接続・監視


「Microsoft Azure 導入・運用支援サービス」はこちら


2. Azure Arc enabled Kubernetes の設定方法

2.1 前提条件

前提として、以下の作業が完了しているものとします。

2.1.1 コマンドライン ツールの準備

現時点では、Azure Portal で Azure Arc への接続を行うことができないため、Azure CLI コマンドで行う必要があります。
Azure CLI のセットアップは、ローカル マシンにインストールする方法でももちろん良いですが
本ブログでは、既に Azure CLI がインストールされている「Azure Cloud Shell」を使用します。

「Azure Cloud Shell」の 使用方法については、以下の URL を参照ください。

Azure Cloud Shell の概要


2.1.2 Azure Kubernetes Service (AKS) の構築

Azure Arc に接続する Kubernetes クラスターとして、AKS を構築しておきます。 AKS の構築手順については、以下の URL をご確認ください。




2.2 Azure Arc 対応 Kubernetes CLI 拡張機能のインストール

Kubernetes クラスターを Azure Arc に接続するために必要な
connectedk8s 拡張機能と k8sconfiguration 拡張機能をインストールします。
Azure Cloud Shell 内の Azure CLI で、以下のコマンドを実行してください。


$ az extension add --name connectedk8s
The installed extension 'connectedk8s' is in preview.
$ az extension add --name k8sconfiguration
The installed extension 'k8sconfiguration' is in preview.
$

上記のように「… is in preview」とプレビュー機能である旨が表示されますが、いずれの拡張機能も問題なくインストールできています。



2.3 kubeconfig ファイルの生成

kubeconfig ファイルは、kubernetes の構成情報を記した構成ファイルです。
az aks get-credentials コマンドを実行することで、接続対象の AKS の情報を基に kubeconfig ファイルを生成することができます。


$ az aks get-credentials --resource-group <リソース グループ名> --name <AKS 名>
Merged "<AKS 名>" as current context in /<home directory>.kube/config
$



2.4 Pods の起動確認

ここで念のため AKS 上の Pods の起動状態を確認しておきましょう。


$ kubectl get pods -n azure-arc
NAME                            READY   STATUS      RESTARTS   AGE
cluster-metadata-operator-***   2/2     Running     0          13h
clusteridentityoperator-***     3/3     Running     0          13h
config-agent-764bfb969c-***     3/3     Running     0          13h
controller-manager-***          3/3     Running     0          13h
flux-logs-agent-***             2/2     Running     0          13h
metrics-agent-***               2/2     Running     0          13h
resource-sync-agent-***         3/3     Running     0          13h
$

もし STATUS が Pending になっている Pods があれば、kubectl describe コマンドを使って原因を確認してみましょう。

$ kubectl get pods -n azure-arc
NAME                            READY   STATUS      RESTARTS   AGE
cluster-metadata-operator-***   0/2     Pending     0          13h
clusteridentityoperator-***     3/3     Running     0          13h
config-agent-764bfb969c-***     0/3     Pending     0          13h
controller-manager-***          3/3     Running     0          13h
flux-logs-agent-***             0/2     Pending     0          13h
metrics-agent-***               2/2     Running     0          13h
resource-sync-agent-***         3/3     Running     0          13h
$
$ kubectl describe pod/cluster-metadata-operator-*** -n azure-arc
・・・省略・・・
Events:
  Type     Reason            Age        From               Message
  ----     ------            ----       ----               -------
  Warning  FailedScheduling  <unknown>  default-scheduler  0/1 nodes are available: 1 Insufficient memory.
$

検証中、上記のケースになりました。
Message に“Insufficient memory.”とあるため、メモリ不足のようです。
AKS にノードを追加してメモリ量を増やすことで、その他の Pod も含め全て Running のステータスに遷移しました。



2.5 Azure Arc enabled Kubernetes の登録

ここまで来れば、いよいよ AKS を Azure Arc に登録です!
なお、Azure Arc は、現時点では米国東部リージョンと西ヨーロッパ リージョンでのみ作成できます。
米国東部リージョンで作成する場合は --location 'eastus' と指定します。


$ az connectedk8s connect --name '<任意の Azure Arc リソース名>' --resource-group '<リソース グループ名>' --location 'eastus'
Command group 'connectedk8s' is in preview. It may be changed/removed in a future release.
Ensure that you have the latest helm version installed before proceeding.
This operation might take a while...

{- Finished ..
  "aadProfile": {
    "clientAppId": "",
    "serverAppId": "",
    "tenantId": ""
  },
  "agentPublicKeyCertificate": "***",
  "agentVersion": null,
  "id": "/subscriptions/<サブスクリプション ID>/resourceGroups/<リソース グループ名>/providers/Microsoft.Kubernetes/connectedClusters/<Azure Arc リソース名>",
  "identity": {
    "principalId": "***",
    "tenantId": "***",
    "type": "SystemAssigned"
  },
  "kubernetesVersion": null,
  "location": "eastus",
  "name": "<Azure Arc リソース名>",
  "provisioningState": "Succeeded",
  "resourceGroup": "<リソース グループ名>",
  "tags": {},
  "totalNodeCount": null,
  "type": "Microsoft.Kubernetes/connectedClusters"
}


やりました!完了です!
Azure Portal でも [状態] が “Succeeded” と表示されており、AKS が正常に登録されていることを確認できます。



2.5 Azure Arc enabled Kubernetes の登録



「Microsoft Azure 導入・運用支援サービス」はこちら


3. Azure Arc enabled servers の設定方法

Kubernetes の次は、AWS EC2 や Azure VM といったパブリック クラウドの仮想マシンを Azure Arc に登録していきましょう。

3.1 AWS EC2 の構築

まずは、AWS EC2 の構築を行います。以下のページを参考に構築してください。

Amazon EC2 の開始方法

今回、AWS EC2 の OS として、RHEL7.7 を選択しました。Azure Arc enabled servers をサポートしているその他の OS については、以下をご参照ください。

サポートされるオペレーティング システム



2.5 Azure Arc enabled Kubernetes の登録




3.2 Azure Arc への AWS EC2 登録

Azure Arc 対応サーバー エージェントの概要/前提条件 にも記載されている通り、Azure Arc に仮想マシンを登録するためには、インターネット方向への HTTPS (TCP/443) 通信を通信を許可する必要があります。

予めファイアウォールやルーティングの設定を行っておきましょう。

その後、EC2 に Teraterm 等で接続し、以下のコマンドを実行します。
※ https://aka.ms/azcmagent から install_linux_azcmagent.sh をダウンロードし、Connected Machine エージェントをインストールしています。その後、azcmagent コマンドで Azure Arc に登録しています。


$ wget https://aka.ms/azcmagent -O ~/install_linux_azcmagent.sh
$ bash ~/install_linux_azcmagent.sh
$ azcmagent connect --resource-group "<リソース グループ名>" --tenant-id "<テナント ID>" --location "<リージョン>" --subscription-id "<サブスクリプション ID>"
 INFO[0000] Onboarding Machine. It usually takes a few minutes to complete. Sometimes it may take longer depending on network and server load status.
 INFO[0000] Check network connectivity to all endpoints...
 INFO[0001] All endpoints are available... continue onboarding
 To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code <コード> to authenticate.


上記のメッセージの通り、Web ブラウザで https://microsoft.com/devicelogin を開き、出力結果に出力されたコード (英数字 9 桁) を入力して [次へ] をクリックします。


3.2 Azure Arc への AWS EC2 登録-1


その後、認証が成功すれば以下のように表示され、Azure Arc に EC2 が登録されます。


 INFO[0000] Onboarding Machine. It usually takes a few minutes to complete. Sometimes it may take longer depending on network and server load status.
 INFO[0000] Check network connectivity to all endpoints...
 INFO[0001] All endpoints are available... continue onboarding
 INFO[0053] Successfully Onboarded Resource to Azure      VM Id=a0018485-a6ee-4ea3-b29b-7cff83359ff1


Azure Portal 上でも Azure Arc に EC2 が登録されたことを確認できました。


3.2 Azure Arc への AWS EC2 登録-2


AWS EC2 の場合、Azure Arc 上の名称は「ip-.ap-northeast-1.compute.internal」となりました。もしかしたら、任意の名前を付ける方法もあるかもしれません。

同様に、Azure VM も 1 台登録してみましょう。 Azure VM であっても、VM にログインして Connected Machine エージェントをセットアップする作業は EC2 と同様になります。
以下は Azure VM を登録した際の Azure Portal の画面ですが、Azure VM の場合は Azure VM 名がそのまま Azure Arc 上の名称となっていました。


3.2 Azure Arc への AWS EC2 登録-3


ちなみに、この画面では [状態] がオフラインになっていますが、数分程度待つとオンラインに変わります。
しばらく経っても表示がオンラインに変わらない場合は、正常に通信が行えていない可能性があるため、以下の URL を参考にトラブルシューティングを行ってください。
Connected Machine エージェントの接続の問題のトラブルシューティング

「Microsoft Azure 導入・運用支援サービス」はこちら


4. Azure Arc で確認してみた

前章の作業で Azure Arc への登録が完了したので、ここからは Azure Arc の動作を確認してみましょう。

まずは Azure Arc enabled Kubernetes の動作確認のために、Azure Policy を AKS に設定してみましょう。
ここでは、AKS マスター ノードに対して IP 制限が設定されているかをチェックするポリシーを適用してみます。
詳細な設定方法については、以下をご確認ください。

Kubernetes 用の Azure Policy について理解する (プレビュー)


4. Azure Arc で確認してみた-1


上記の Azure Policy 画面と同様、Azure Arc の画面からもポリシー適用状況が確認できました。


4. Azure Arc で確認してみた-2


次に、以下の URL を参考に、Azure Arc に接続した Kubernetes 上で稼働するコンテナを監視する機能 (インサイト) も検証してみました。

Azure Arc 対応 Kubernetes クラスターの監視を有効にする

しかし、現時点では、Azure Arc のインサイト画面からは AKS の監視情報は参照できない仕様のようで、以下のように個別に AKS の画面から確認する必要があります。


■ Azure Arc 側から見た監視情報

Azure Arc 側から見た監視情報


■ AKS 側から見た監視情報

AKS 側から見た監視情報


今度は、Azure Arc enabled servers の動作を確認してみましょう。
ここでは、仮想マシン上で動作しているプロセスやトラフィックを可視化できる分析機能を確認してみます。なお、分析機能は Azure Arc 画面の [分析情報] からワンクリックで有効化できます。
AWS EC2 と Azure VM の分析情報は、それぞれ以下のように出力されています。いずれにおいても、同様の情報が出力され、可視化できることが分かりました。


■ AWS EC2 の分析情報

AWS EC2 の分析情報


■ Azure VM の分析情報

Azure VM の分析情報



「Microsoft Azure 導入・運用支援サービス」はこちら


5. まとめ

ここまでご覧頂いた通り、Azure Arc を使用することで、Kubernetes クラスターに適用しているポリシーの適用状況や Kubernetes 上のコンテナ稼働状況、EC2、Azure VM の稼働状況を、それぞれのポータル画面に遷移しなくても一元的に確認できることが分かりました。

その他、類似のハイブリッドクラウド / マルチクラウド向けの管理製品としては、サードパーティの Flexara、Embotics、Morpheus Data、Scalr 等があり、こちらもリソースの利用状況や構成情報、Kubernetes 上のコンテナの稼働状況などを一元的に可視化・管理できるようです。

Azure Arc が上記のような類似製品と具体的にどう違うのか、Azure Arc でサポートされている他の機能 (例 : Kubernetes の GitOps) についても気になっているので、また別の機会に検証を行いたいと思います。

ここまでお読み頂き、ありがとうございました!

Have a good Azure life !!!

「Microsoft Azure 導入・運用支援サービス」はこちら

お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録