Azure Kubernetes Service クイック スタートでk8sでのデプロイの概要を掴む

## はじめに

[クイック スタート: Azure Kubernetes Service (AKS) クラスターのデプロイ](https://docs.microsoft.com/ja-jp/azure/aks/kubernetes-walkthrough-portal)に沿って、
AKSでk8s[^1]のクラスタをデプロイしました。
ポータルを操作してk8sクラスタのリソースを作成し、
クラウドシェルでコマンド入力してデプロイしています。

## 前提
私のレベル感ですが、k8sを勉強し始めた段階です。

- Dockerを独学し、docker-composeでVPSに複数コンテナをデプロイできるようになった
- docker-composeは本番環境には適さないことを知り、k8sを勉強し始める

後述するハンズオンでGCPでk8sを触った経験から、今回Azureでもk8sを試してみました。

## k8sクラスタリソース作成(ポータル操作)
クイックスタートに沿って進めます。
![0-create_k8s_service.png](https://qiita-image-store.s3.amazonaws.com/0/82132/2f740243-0463-92aa-15b9-d7e1d94a4359.png)
「ノードサイズ」ですが、クイックスタートのDS1v2インスタンス（1vcpu、3.5GBメモリ）と同程度のサイズで費用を抑えられるVMインスタンスを選択しました。
![1-cluster_basic.png](https://qiita-image-store.s3.amazonaws.com/0/82132/fb28049f-a6fe-211b-a486-d22158beda9f.png)
![2-cluster_authentication.png](https://qiita-image-store.s3.amazonaws.com/0/82132/c391411d-84a8-80eb-a921-e85e948348da.png)
![3-cluster_networking.png](https://qiita-image-store.s3.amazonaws.com/0/82132/6f415974-ef82-6f35-a7f9-569287ebdb9b.png)
![4-cluster_monitor.png](https://qiita-image-store.s3.amazonaws.com/0/82132/015c7293-a987-cdbe-816a-b5a25555a5aa.png)
監視まで設定したら「確認および作成」をクリック。
![5-pass_verification.png](https://qiita-image-store.s3.amazonaws.com/0/82132/d8bfdab5-4690-62e6-84fa-ef7f719ec438.png)
作成を押してからmyAKSClusterリソースが作られるまで15〜20分ほどかかりました。（VMのスペックが低いのが原因でしょうか？）
![6-cluster_created.png](https://qiita-image-store.s3.amazonaws.com/0/82132/aafe3fa3-1e0c-6433-c011-00337bbaff55.png)

## クラウドシェルからデプロイ
クイックスタートに沿って、viエディタでyamlファイルを作成し、`kubectl`コマンドでデプロイしました。

```shell
$ az aks get-credentials --resource-group aks-quickstart-201808 --name myAKSCluster
$ kubectl get nodes
$ vi azure-vote.yaml
$ kubectl create -f azure-vote.yaml
$ kubectl get service azure-vote-front --watch
```

yamlファイルにはbackとfrontそれぞれにDeploymentとServiceを定義しています。
azure-vote-frontサービスに振られた外部IPアドレスにアクセス。
![7-aks_quickstart_vote_app.png](https://qiita-image-store.s3.amazonaws.com/0/82132/0a77eee1-d433-820f-8db5-e7a91e51f367.png)
ブラウザをリロードすると、直前に押したボタンのカウントが1増えるという動きをしました。
このあたりはソースを確認してみようと思います。（宿題事項）

## yamlファイルのソースコードを取得する
先日たくさんのアプリをGKEにk8sでデプロイするというハンズオン[^2]に参加しました。
ソースのyamlファイルが取得できれば、Azureでもk8sでデプロイできるだろうという感触があったので試してみました。

```shell
$ wget --no-check-certificate https://github.com/HaraShun/kubernetes.rb/archive/master.tar.gz
$ tar xpvf master.tar.gz
$ cd kubernetes.rb-master/03_sinatra/k8s/
$ kubectl apply -f deployment.yaml
$ kubectl apply -f service.yaml
$ kubectl get svc -w
```

sinatraのアプリがデプロイできたので、ほかもAzureでデプロイできそうという感触です。
![8-gcp_k8s_handson_sinatra.png](https://qiita-image-store.s3.amazonaws.com/0/82132/882f7531-2c1b-e810-a838-eba5b8589725.png)

## まとめ
vi系エディタでも、ソースコード取得でもyamlファイルが配置できれば、`kubectl`コマンドからデプロイできることがわかりました。  
今後はk8sのyamlファイルが自在に書けるように学習を進めます。

## おまけ: 監視について
クイックスタートに沿って確認してみました。
myAKSClusterリソース選択後、「正常性」（赤枠）から遷移します。
![9-monitor_cluster.png](https://qiita-image-store.s3.amazonaws.com/0/82132/a4a5c53d-9483-afa4-9d26-b90fc0246b9c.png)
![10-metric_cluster.png](https://qiita-image-store.s3.amazonaws.com/0/82132/27f68406-ea09-7733-56d8-520eb35e178c.png)
![11-metric_nodes.png](https://qiita-image-store.s3.amazonaws.com/0/82132/25bad2dd-b822-92be-0a8f-df1346fe7f0c.png)
![12-metric_controllers.png](https://qiita-image-store.s3.amazonaws.com/0/82132/5468563b-970b-25db-0c92-c2270b8c8550.png)
![13-metric_containers.png](https://qiita-image-store.s3.amazonaws.com/0/82132/bb27b403-7286-15c6-4cf0-536b3ecd73ae.png)
クイックスタートにはContainersに「ログの表示」リンクがあると記載されているのですが、見当たりませんでした。
![14-no_link_to_container_log.png](https://qiita-image-store.s3.amazonaws.com/0/82132/a398ae12-1450-f19c-452e-3114de13f39b.png)

[^1]: Kubernetesの略称。字数が少なくなるので私はこの表記を多用します。同様の短縮の仕方にi18nがありますね。
[^2]: 講義スライド: https://docs.google.com/presentation/d/1_mQJQ0Yz1zJHqUPefNYNPfx5mjHEbfRwTzUOaWi8vZ8/edit#slide=id.p 勉強会ページ: [【サポーターズCoLab勉強会】Kubernetes（GKE）ハンズオン勉強会](https://supporterzcolab.com/event/494/)