Azure Arc Jumpstartを触ってみた -Azure Arc 基盤準備編-

Azureの教材を探して見つけたものです。
Azureを学習しながらハイブリッド・クラウド環境にも触れられるので紹介します。

https://azurearcjumpstart.io/

簡単にAzure Arc環境を自分のアカウントで構築できます。
そもそもAzure Arcとは、Azureが提供しているオンプレやエッジコンピューティングを含め、クラウドでインフラを一元的に管理するためのサービスです。

他のクラウドベンダーでも似たようなソリューションを提供しております。
以下、ベンダーごとのハイブリッドクラウド管理ソリューションです。

- Google Cloud Platform - Anthos
    - <https://cloud.google.com/anthos?hl=ja>
- IBM Cloud - IBM Cloud Satellite
    - <https://www.ibm.com/jp-ja/cloud/satellite>
- Amazon Web Services - AWS Outposts
    - <https://aws.amazon.com/jp/outposts/>
- Azure - Azure Arc
    - <https://azure.microsoft.com/ja-jp/products/azure-arc>

---

## Azure Arc Jumpstartとは

概要から抜粋

「The Azure Arc Jumpstart is designed to provide a “zero to hero” experience so you can start working with Azure Arc right away!」

「ゼロからヒーローに」を体験できるソリューションを目指して提供されており、知識がゼロでもシステムが作れる為学習用途に丁度良いと判断しました。
要は、Azure Arc Jumpstartを使えば誰でも任意のアカウントにAzure Arc環境をデプロイできるようです。
基盤への構築はテンプレートやTerraformを利用することでほとんどが自動化されており、希望のシステムを指定することで構築されます。


## 検証可能なシナリオ

- Azure Arc-enabled servers
The deployment scenarios in this section will guide you through onboarding various Windows and Linux server distributions as Azure Arc-enabled servers.

Azure VMやAzure Stack HCI上のVMをデプロイしてAzure Arc対応のサーバーに利用します。他のクラウドで提供されているVM(UbuntuやWindows Server)であるGKE、Amazon EC2、VMware vSphere VM等を利用することもできます。

- Azure Arc-enabled VMware vSphere
The deployment scenarios in this section will guide you through how to manage VMware vSphere resources with Azure Arc.

VMware vCenterに接続し、VMware vSphere上のリソースをAzure Arcで管理する手順を紹介しています。


- Azure Arc-enabled SQL Server
The deployment scenarios in this section will guide you through onboarding Microsoft SQL Server as an Azure Arc-enabled SQL server.

SQL ServerがインストールされたVMをAzure Arc対応のSQL Serverにする手順を紹介しています。VMはAzure VM、AWS EC2、GKE、VMware vSphere VMです。

- Azure Arc-enabled Kubernetes
The deployment scenarios in this section will guide you through onboarding various Kubernetes distributions as an Azure Arc-enabled Kubernetes clusters.

AKSやハイブリッドAKS(オンプレミス)、Azure Stack HCI上のAKS、ARO、EKS、Rancher K3sやMicroK8s等のKubernetesをAzure Arc対応のKubernetesクラスターとする手順を紹介しています。

- Azure Arc-enabled data services
The deployment scenarios in this section will guide you through deploying and working with Azure Arc-enabled data services on multiple infrastructure platforms.

SQL Manage InstanceやLog Analytics、PostgreSQLを利用したデータ統合サービスを備えたKubernetesクラスターを準備する手順を紹介しています。KubernetesディストリビューションはAKS、ARO、EKS、GKE、MicroK8s等です。

- Azure Arc-enabled app services
The deployment scenarios in this section will guide you through deploying and working with Azure Arc-enabled app services on multiple infrastructure platforms.

Azure Arcに対応したAKSでアプリを準備する手順を紹介しています。CotainerのアプリServiceやAzure Functionを使ったサーバレスアプリを例にしています。

- Azure Arc-enabled machine learning
The deployment scenarios in this section will guide you through deploying and working with Azure Arc-enabled machine learning on Kubernetes.

AKSを使ったAzure Arcに対応した機械学習の手法を紹介しています。機械学習パイプラインとしてBlobストレージからMNISTデータセットの分類モデル訓練、推論のエンドポイントをデプロイします。

- Azure Arc and Azure Lighthouse
This section describes how to use Azure Arc and Azure Lighthouse for unified operations.

Azure ArcとAzure Lighthouseを使用してAzureのツールとサービスを組織の資産に拡張し、一貫した管理を実現する手法を紹介しています。

## Jumpstartで利用できるソリューション
- Jumpstart ArcBox
- Jumpstart HCIBox
- Jumpstart Lightning
- Jumpstart Youtube Channel


## Jumpstart ArcBox概要

Jumpstart ArcBoxは、Azure Arcの機能をデプロイするサンドボックスを提供するソリューションです。
Azureアカウントのひとつのサブスクリプションおよびリソース・グループで完結するように設計されており、デプロイ後はArcBoxがサポートしているAzure Arcの機能を実際に試すことができます。

### ユースケース

- Azure Arcのサンドボックス環境
- PoCやパイロット環境に使用するアクセラレータ
- Azure Arcを触れて学習する為のツール
- お客様に向けたプレゼンやDemo環境
- 統合テストプラットフォーム


### フレーバー

ArcBoxで選択可能なフレーバーは4種類あります。学習したい内容に沿ってデプロイを進めてください。本検証ではコスト面から「Jumpstart for IT Pros」を指定して進めます。

- Jumpstart for IT Pros
- Jumpstart ArcBox for DevOps
- Jumpstart ArcBox for DataOps
- Jumpstart ArcBox Full


## Jumpstart for IT Pros システム構成

Azure Arc for IT Prosを構成するサーバーやアプリケーションのシステム概要図です。Azure Arcの基礎っぽい構成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/82870057-27c2-b4d0-25ae-d775f4ddf4bb.png)
(引用：https://azurearcjumpstart.io/azure_jumpstart_arcbox/itpro/)

## Jumpstart for IT Pros 前提条件

1. Azure CLI のバージョンが 2.40.0 以上であること。

```txt
$ az --version
azure-cli                         2.46.0 *

core                              2.46.0 *
telemetry                          1.0.8

Extensions:
aks-preview                      0.5.141

Dependencies:
msal                              1.20.0
azure-mgmt-resource             21.1.0b1

Python location '/opt/az/bin/python3'
Extensions directory '/home/<user name>/.azure/cliextensions'

Python (Linux) 3.10.10 (main, Mar  6 2023, 09:39:14) [GCC 11.3.0]

Legal docs and information: aka.ms/AzureCliLegal
```

2\. az loginコマンドで az cliにログインした状態であること。
3\. ArcBox for IT Pros を VM シリーズ/サイズなどのデフォルト パラメータでデプロイする場合、16 個の DSv4 シリーズ vCPU が必要。必要なクォーターに満たない場合、上限を上げてください。組織に所属している場合、Azureの管理ポリシーに合わせてください。
4\. 必要なAzureリソース・プロバイダーを登録する。
```txt
az provider register --namespace Microsoft.HybridCompute --wait
az provider register --namespace Microsoft.GuestConfiguration --wait
az provider register --namespace Microsoft.AzureArcData --wait
az provider register --namespace Microsoft.OperationsManagement --wait
```
5\. Azure のサービスプリンシパルを準備する。ArcBoxのデプロイは所有者ロールである必要があります。上位のロールなので、組織に属している場合は取扱注意です。
```txt
az login
subscriptionId=$(az account show --query id --output tsv)
az ad sp create-for-rbac -n "JumpstartArcBoxSPN" --role "Owner" --scopes /subscriptions/$subscriptionId
```
`JumpstartArcBoxSPN` は任意のサービスプリンシパル名を指定してください。



6\. SSH Keyペアを準備する。Kubernetesクラスタが動いているLinux仮想マシンへアクセスする為に使用します。

```txt
ssh-keygen -t rsa -b 4096
```

7\. ArcBoxをデプロイするリージョンについての制約。
```txt
East US
East US 2
Central US
West US 2
North Europe
West Europe
France Central
UK South
Australia East
Japan East
Korea Central
Southeast Asia
```

## Azure Arc Boxのデプロイ

デプロイにはいくつか手順が用意されています。

- Azure Portal
- ARM template
- Bicep
- Terraform

本記事では簡単な検証をするので特にルールは設けていません。Azure Portalからデプロイします。

流れは以下の通りです。

1\.サービスプリンシパル作成
2\. SSH Key作成
3\. リソースグループ作成
4\. パラメタ準備
5\. デプロイ

1\.サービスプリンシパル作成

テンプレートを使用してデプロイする際に必要です。一度だけ表示されるので、必ずメモを取ってください。

```txt
az login
subscriptionId=$(az account show --query id --output tsv)
az ad sp create-for-rbac -n "JumpstartArcBoxSPN" --role "Owner" --scopes /subscriptions/$subscriptionId
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/3e7eb4e6-ff33-a1ec-c0f6-85efbb511943.png)

2\. SSH Key作成

```txt
ssh-keygen -t rsa -b 4096
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/c2a87704-7a6a-9e4a-441a-4f8a160c963d.png)

3\. リソースグループの作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/7d7497f6-7783-6b64-6743-83b69274147e.png)


4\. パラメタ準備

1で出力されたJSONの値は以下のパラメタに該当します。
`spnClientId`=`appId`、`spnClientSecret`=`password`、`spnTenantId`=`tenant`

| パラメタ|設定値|
|:----|:----|
|sshRSAPublicKey|ssh-rsa ********|
|spnClientId|0150bf0c-****-****-****-************|
|spnClientSecret|C5T8Q~~lHDd4bVTUNF**********************|
|spnTenantId|8623203c-****-****-****-************|
|windowsAdminUsername|arcboxitpro|
|windowsAdminPassword|arcPassword123|
|logAnalyticsWorkspaceName|arcboxworkspace|
|flavor|ITPro|


5\. デプロイ

事前に4で準備したパラメタを、テンプレートに入力します。URLはこちらです。
<https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fmicrosoft%2Fazure_arc%2Fmain%2Fazure_jumpstart_arcbox%2FARM%2Fazuredeploy.json>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/e98cb704-a843-84a8-057a-448558198454.png)


## デプロイに失敗する場合

こんなエラーが表示されたらクォーターの上限が足りていないので、増加申請をだします。IT ProsはDSv4シリーズのvCPUが16個必要です。

```txt
{
    "status": "Failed",
    "error": {
        "code": "OperationNotAllowed",
        "message": "承認された Total Regional Cores のクォータを超えるため、操作を完了できませんでした。追加情報 - デプロイ モデル: Resource Manager、場所: japaneast、現在の制限: 10、現在の使用量: 8、必要な追加量: 4、必要な新しい制限 (最小): 12。
（後略）
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/4010c0b9-7b08-9c6b-568b-662e00294c55.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/a586b2f1-7504-617f-c10b-f16f5335d294.png)

## デプロイ後の作業

- SSH、RDPポートの開放

VM>ArcBox-Client>ネットワークの「受信ポートの規則を追加する」からポート開放します。SSHなら22版、RDPなら3389番を開放してください。ソースは自分のパブリックIPアドレスです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/0366d627-f59b-41ed-b893-c4289717e2d9.png)

- RDPクライアントの取得

デプロイされたVMの「接続」メニューにRDPクライアントファイルを取得できるので、IPアドレスとポート番号を確認してダウンロードしてください。　

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/fbe8db82-0bb5-6e32-7140-73f55ef5ea03.png)

うまく接続できると以下の通りWindowsが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/2b87f175-af46-9f22-ad31-a8132e33cdb6.png)

## 料金について

ArcBoxのフレーバー毎の料金は以下の通りです。個人で使用する場合高めなので、使用しなくなったら放置はせず環境破棄をお勧めします。

|フレーバー|料金(USD)|
|:----|:----|
|ArcBox “Full”|3,173.59|
|ArcBox for IT Pros|1,592.67|
|ArcBox for DevOps|1527.1|
|ArcBox for DataOps|5,447.67|

3日ほど使った場合の料金でも2,000円近くいきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/7a1e3061-2bc2-5b33-07e5-9b1e9d364a8d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703712/98ae9aaf-4c7a-39ac-e736-b9c5d7e83bce.png)

## まとめ

- Azure Arc Jumpstartの特長
コードが既に用意されている為、敷居が低い。
Azure Arcのシナリオ、手順が画面ショット付きで分かり易い
Azure Arc環境が自動構築され直ぐに触れるようになる為、Azureプラットフォームの学習に最適。

- メリット
Azureの教材として扱える。
導入目的に合わせて、ArcBox、HCLBoxが選べる。
ARMテンプレートが既に用意されている為、容易に導入できる
ユースケースがある。
ArcBoxでは用途に合わせて好みのフレーバーを選択できる
学習用のデモ動画や発表できるセッションがある。

- デメリット
資料が公式のみ。
規模が大きい為、個人アカウントだとコストがネック。使わない時はVMを落として節約に徹底すると良いです。

以上がAzure Arc Jumpstartの紹介でした。ぜひAzure Arc Jumpstartをためしてみてくだい。
気が向いたら、Azure Arc 活用編を公開します。