Azure Kubernetes Services 環境を構築する

今日から連続して AKS の環境構築、デプロイ、アプリケーション実行、スケーリング、更新、について記事を書いていきたいと思います。AKS の使用方法を網羅的に見ていきたいと思います。

#Azure CLI で Azure Container Registry をデプロイする
Azure Portal から デプロイする方法もありますが、Azure CLI でより簡単にできるのでこのシリーズでは主に Azure CLI を使用します。初めに、実行するコマンドを羅列すると以下の様になります。

```terminal
$ az acr check-name -n komiyasavalacr
$ ACR_NAME=komiyasavalacr
$ ACR_RES_GROUP=$ACR_NAME
$ az group create --resource-group $ACR_RES_GROUP --location japaneast
$ az acr create --resource-group $ACR_RES_GROUP --name $ACR_NAME --sku Standard --location japaneast
```
まず `komiyasavalacr` という名前の Container Registry が既に存在しているか確認し、なれけば `$ACR_NAME` にその値を代入します。そのあとで、`az group create` ならびに、`az acr create` で Azure container Registry を作成します。

次に以下の code を実行していきます。今回は ToruMakabe さんの Sample Git の image をお借りました。
(今回の記事シリーズは、ToruMakabe さんが執筆している本は以下でそれを参考にさせて頂きました。非常に分かりやすい本だったので、とてもおすすめです！)
[しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識](https://www.amazon.co.jp/%E3%81%97%E3%81%8F%E3%81%BF%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8BKubernetes-Azure%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%97%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88%E3%81%A8%E5%AE%9F%E8%B7%B5%E7%9F%A5%E8%AD%98-%E9%98%BF%E4%BD%90-%E5%BF%97%E4%BF%9D-ebook/dp/B07L94XGPY)

```terminal
$ git clone https://github.com/ToruMakabe/Understanding-K8s.git
$ cd Understanding-K8s/chap02
$ az acr build --registry $ACR_NAME --image photo-view:v1.0 v1.0/
$ az acr build --registry $ACR_NAME --image photo-view:v2.0 v2.0/
```

デプロイに少し時間がかかります。しばらくして Azure Portal を確認すると、photo-view という Repositories に v1.0 v2.0 という二つの Version がデプロイされていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/6d0fdb28-c8b3-9771-3a9c-e7350cfc0270.png)


#ACR と AKS を連携させる
次に作成した Azure container Registry (ACR) と Azure Kubernetes Services を連携させるための作業を行います。
以下 Code を Azure CLI で実行することで AKS をデプロイするためのACR のサービスプリンシパルと接続された APP_ID ならびに SP_PASSWD が発行可能です。

```terminal
$ACR_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
$SP_NAME=sample-acr-service-principal
$SP_PASSWD=$(az ad sp create-for-rbac --name $SP_NAME --role Reader --scopes $ACR_ID --query password --output tsv)
$APP_ID=$(az ad sp show --id http://$SP_NAME --query appId --output tsv)
$echo $APP_ID
$echo $SP_PASSWD
```

#クラスターの作成
次にいよいよ AKS クラスターを作成します。クラスターの作成を Azure CLI で実行するには、以下コマンドを実行します。

```terminal
$AKS_CLUSTER_NAME=AKSCuster
$AKS_RES_GROUP=$AKS_CLUSTER_NAME
$az group create --resource-group $AKS_RES_GROUP --location japaneast
$az aks create --name $AKS_CLUSTER_NAME --resource-group $AKS_RES_GROUP --node-count 3 --kubernetes-version 1.13.12 --node-vm-size Standard_DS1_v2 --generate-ssh-key --service-principal $APP_ID --client-secret $SP_PASSWD
```
書籍では Kubernetes の Version　が少々古いものになっていましたので、今回は `1.13.12` を使用します。
デプロイ中は Status が以下の様に `Running` となりますが、成功すると `Succeeded` に変わります。(デプロイ完了まで割と時間がかかります。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/db006f91-de16-8607-9dd9-7fb790a3f8e9.png)
ここまでで、環境構築の完了です！
念のため、クラスター接続のための認証情報を以下コマンドを実行して確認しておきましょう。

```terminal
$ az aks get-credentials --admin --resource-group $AKS_RES_GROUP --name $AKS_CLUSTER_NAME
```

次回の記事では Azure Kubernetes Services を Azure CLI から操作するための基本的なコマンドを見ていきます。

#参考
[Azure Kubernetes Service (AKS)](https://azure.microsoft.com/ja-jp/services/kubernetes-service/)

[しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識](https://www.amazon.co.jp/%E3%81%97%E3%81%8F%E3%81%BF%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8BKubernetes-Azure%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%97%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88%E3%81%A8%E5%AE%9F%E8%B7%B5%E7%9F%A5%E8%AD%98-%E9%98%BF%E4%BD%90-%E5%BF%97%E4%BF%9D-ebook/dp/B07L94XGPY)