Alibaba Cloud Container Service for Kubernetes (ACK) を触ってみた

## 私について
 - CKAD, CKA 保有
 - 業務では AWS EKS（Elastic Kubernetes Service） を基盤とするシステムの SRE
 - AWS は 10年近く触っているが、Alibaba Cloud に触れるのは初めて

## 今回の概要
 - 基本的に GUI で作成 （※ Terraform や CLI での作成はまた別の機会に）

## 今回の流れ
 - クラスタ作成
 - モニタリング、ロギング、監査機能確認
 - Nginx コンテナデプロイ
 - ロードバランサーデプロイ

### クラスタ作成
ログイン後、左側のナビゲーションペイン展開 -> `Container Service for Kubernetes` をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/38c8e298-820b-d86e-5e41-29b002f096ce.png)

400エラーになってしまった
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/a27a4a48-cfbe-6a09-f188-af4fbe9fee40.png)

「Go to RAM console」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/9a3b39b3-ca5a-ad83-472a-f594b18bc512.png)

CS（Container Service ?） が必要とするアクセス権限を作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/35870614-6c6a-8035-e6d1-d2969a45917a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/0dfe2fa8-a2a9-ef8f-cffd-87fe6ef53e2c.png)

ACK / Clusters 画面が表示されるようになった
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/46cd49f3-461b-22f4-eed2-7e21db19ef2d.png)

ページの右上隅にある `Create Kubernetes Cluster` をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/914d4fd9-40ad-ffc1-85d8-617bb5a6b150.png)

以下のパラメータで Cluster を作成
 - Cluster Name : `{任意の名前}`
 - Cluster Specification : `Standard edition`
 - Region : `Japan (Tokyo)`
 - Billing Method : `Pay-As-You-Go`
 - Kubernetes Version : `1.24.6-aliyun.1`
 - Container Runtime : `containerd 1.5.13`
 - VPC : `{任意のVPC}`
 - Network Plug-in : `Terway`
 - vSwitch : `{VPC 内に作成した vSwitch を選択}`
 - Pod vSwitch : `{VPC 内に作成した vSwitch を選択}`
 - Service CIDR : `192.168.0.0/16`
 - Configure SNAT : ✅
 - Access to API Server : `slb.s2.small`
 - Security Group : `Create Advanced Security Group`
 - Deletion Protection : □
 - Resource Group : `default resource group`

[ Next:Node Pool Configurations ] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/38184c55-885a-ab7a-4a1a-3afcf0106635.png)


Node Pool Configurations 画面では、

インスタンスタイプを１つ（または複数）選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/a1de8f40-84c3-8eda-b2e9-7228d552a12e.png)

Key Pair を１つ選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/7f2e0d9c-c90d-781c-add0-92a9f07b753d.png)


[ Next:Component Configurations ] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/d4fb804e-ddf1-2994-01d4-e39270d6426c.png)

 - Ingress : `Nginx Ingress`
 - SLB Network Type : `Public Network`
 - SLB Specifications : `slb.s2.small`
 - Servcie Discovery : ✅
 - Volume Plug-in : `CSI`
 - Monitoring Agents : すべてチェック
 - Alerts :  □ （チェックを外す）
 - Log Service : すべてチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/c434e9f8-f539-34f2-9025-ba79e0d333d3.png)

 - Log Collection for Control Plane Components : □
 - Cluster Inspection : ✅


[ Next:Confirm Order ] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/2e99631b-90ef-0568-4c1b-525c92d1a3a2.png)


２つステータスチェックに失敗している
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/d631638f-384e-038a-99be-59c2c7552f62.png)

ACK activations check アクティベートする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/924e08cc-80b4-f8e9-15bd-890aba654a06.png)

Log Service Prometheus Monitoring Apsara File Storage NAS をアクティベートする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/1c046215-85d1-8ff2-b4f9-c7801fa92de9.png)

Log Service Prometheus Monitoring をアクティベートする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/ba27c0ed-bb5d-1d43-6be8-65889c2643bd.png)

Log Service をアクティベートする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/1006b0ae-5d3f-da8f-c2bb-498ee254579f.png)

これで全ての Dependaency Check が Pass した

Create Cluster をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/2d194c39-2fdb-9fe2-9002-8decf0ee9ae2.png)

10分ほど待ち、すべて Created され、`Cluster Status` も Running となった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/283c2a40-a2a0-dbf3-ec3e-b67771d575c9.png)



### ローカル PC からクラスターに接続

 - [kubectl](https://kubernetes.io/docs/tasks/tools/)
 - [kubectx](https://github.com/ahmetb/kubectx)
 - [k9s](https://github.com/derailed/k9s)

をインストールします

#### `API Server Public Endpoint` を生やします 

目的：ローカル PC から kubectl でアクセスする為

クラスター一覧画面 > クラスター選択 > [Basic information] タブ内 > [Bind EIP] をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/b19cc519-cf7d-00c2-95f8-5177948b1867.png)

Create EIP
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/87586e3c-c8c1-4d20-0cd9-06f90d742d8b.png)

Region を Japan にして、あとはデフォルトの値のまま、[Buy Now]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/268ef850-a0cd-9eda-b594-9f0e72f190b6.png)

[Activate now]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/73d98129-7275-96fc-f6a9-b9b23ba628f8.png)

サインを求められる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/989677e1-a34d-f077-c4be-60c45d62f4a4.png)

EIP が選べるようになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/d347bebb-6c5a-06e7-3ffa-a3537bc1c8a4.png)

[API Server Public Endpoint] が付与された
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/84cf1b12-e8d4-5874-69fd-8ea0dafd4555.png)


#### kubeconfig 情報を取得

クラスター一覧画面 > クラスター選択 > [Connection Infomaion] > [Public Access]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/fb7a1e2e-399b-b9d3-58dd-4323d150601b.png)




Mac の場合、`$HOME/.kube/config` に COPY した情報を記入

```
apiVersion: v1
clusters:
- cluster:
    server: https://XX.XX.XX.XX:XXXX
    certificate-authority-data: 
（以下略）
```

ターミナルにて `kubectx` と入力すると、ACK クラスターが選択できるようになっている

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/cdf64f9e-9121-4f8d-2577-0d9b926b87f2.png)

ターミナルにて kubectl コマンドと入力すると、ACK リソースが見れる

Pod 一覧

```
$ kubectl get po --all-namespaces
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/e1d196aa-19d3-5803-4cdb-75b7d4e5ebe3.png)


Deployment 一覧
```
$ kubectl get deployment --all-namespaces
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/ac71b5cc-6e83-3c9c-428a-d1ab82a8e2c1.png)


k9s でもアクセスしてみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/e630cb25-d70c-c689-1ed5-e183d7503e70.png)




#### GUI

Pod や Deployment が確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/b4fc850b-d31f-a29e-fe1f-fdc2b3b6f5f6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/43f94c9a-0f1d-206b-ebc1-770764aada1d.png)

その他にも `Nodes` `Network` `Configurations` `Volumes` `Applications` `Operations` `Security` 等のメニューがある

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/c5f08f85-28f7-f0e1-b41f-e42a632695d8.png)


### モニタリング

[Operations] > [Prometheus Monitoring] にて、
Prometheus による Monitoring が見れる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/bc297422-c7e6-9a42-713e-d159f01d885f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/5bdf29fd-4da1-ad8c-afcb-86bb06613517.png)


構築時に [Monitoring Agents : すべてチェック] としていた為と思われる


### ロギング

[Operations] > [Log center] にて、
クラスター、ネットワーク、アプリケーションのロギングが見れる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/c09f1e8d-daf4-9aa8-3828-fa66d3eace7a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/8e453e9b-3df9-278b-389e-c4db018cb8bf.png)

構築時に [Log Service : すべてチェック] としていた為と思われる


### イベント履歴

[Operations] > [Event Center] にて、これまでのイベントが確認できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/5128ab17-e21f-ae7e-d031-ddeb884a6837.png)


### 監査

[Security] > [Cluster Auditing] にて、監査系の情報が確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/ffa1a7a9-e356-9b4a-4653-db90252c0f8d.png)

クラスター操作履歴や CVE 脆弱性情報も確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/30a31f63-723b-f3d2-5119-2af0de52109d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/6acb6903-9aed-ea09-0e14-67a6d4c67eca.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/0c75c8a8-0653-ab2b-6d2b-9ef14add7f19.png)


### ACK コンソールを使用してアプリケーションをデプロイ

#### NGINX をデプロイ

[Workloads] > [Deployment] > [Create from YAML] 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/34a17e9d-958d-902e-cd57-1fa78ff15a39.png)

サンプル テンプレートとして [Resource - basic Deployment] を選択、Create
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/67424b8a-4aa3-cef8-432b-6a835e19718e.png)

Deployment 画面や、Pod 画面で Nginx がデプロイされていることが確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/5e0478d4-2b04-fe5b-7b1f-79582e1095ff.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/0e69921c-6ce0-5bca-1ef9-efa9c91cb3e8.png)


#### ロードバランサー(Ingress)デプロイし、NGINX を公開する

[Network] > [Services] > [Create] をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/3be23d5a-d506-97b6-a7a2-4f7fab943811.png)


Cluster IP Type の Service をデプロイ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/70394d30-1af4-e4be-adcb-59f5aa80bc8c.png)
名前を入力し、Typeで Cluster IPを選択し、 Backend で nginx-deployment-basic を選択し、サービスポートとコンテナーポートを 80 に設定


[Network] > [Ingress] > [Create] をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/4dba949c-89b3-bcd0-a44c-5b3e39bbeb04.png)

名前にingress-demo、パスに/を入力し、サービスにnginx-svcを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/0c49741a-6239-85f3-6681-7dc28522e6d8.png)


生えた IP アドレスにアクセスします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/9707c53d-555a-19bb-83ce-f95a7695df4d.png)

Nginx のデフォルト画面が表示されました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/0e2a8d42-06fc-ec28-f145-aa6ad8f365e5.png)


#### 後片付け

##### 1. EIP の開放

[VPC] >[Elastic IP Addresses] 画面にて Release

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/8ffd1669-8b81-629a-1eb1-4bd7e6f92f9e.png)


##### 2. Server Load Balancer (SLB) の削除

[Resource Management] > [My Resource]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/042c5e00-b020-065e-40ff-29cb42bff897.png)

Read Only mode や 削除保護を解除する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/a7e7dbdb-6558-d794-397b-7d702136d6f8.png)

解除し、Release
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18351/4cb58131-72f5-62bf-ec70-d7530470d9d6.png)





#### 現在の料金の確認

### 感想

クラスターが立ち上がるまでの構築ウィザードにて、入力したり、選択しなくてはいけないパラメータは多くて面食らうかもしれないが、
構築後は GUI 上で確認できる情報（メトリクス、ログ等々）は他パブリッククラウドと比べても一番と言っても良いほど、豊富で親切だと思う。

ウィザードもなかなか親切で、どうしたらいいのか困って詰まってしまうということもなかった。

各種コンポーネントがセットアップされる時間も、サクサクデプロイされたのも好印象。


## 参考資料
[Container Service for Kubernetes (英語)](https://www.alibabacloud.com/help/en/container-service-for-kubernetes)

[Container Service for Kubernetes (日本語)](https://www.alibabacloud.com/help/ja/container-service-for-kubernetes)

[Container Service for Kubernetes で Pod を作ってアクセスしてみよう | SBクラウド チャンネル - YouTube](https://www.youtube.com/watch?v=x6ZK9Nv0Vd4)

[Kubernetes on Alibaba Cloud](https://www.slideshare.net/YoshidaShingo/kubernetes-on-alibaba-cloud)

[マルチクラウド時代のAlibaba Cloud活用事例と最新技術 - TECH PLAY Magazine](https://techplay.jp/column/1391)

[Alibaba CloudではじめるKubernetes - Speaker Deck](https://speakerdeck.com/mosuke5/alibaba-clouddehazimerukubernetes)

[[ACK] Terwayについて - Qiita](https://qiita.com/taichitk/items/4c48c7532bdb8a3d77ce)

[Alibaba Cloud サーバレス Kubernetes クラスタ
のユーザーガイド](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/download%2Fpdf%2F127525%2F%25E3%2582%25B5%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25AC%25E3%2582%25B9_Kubernetes_%25E3%2582%25AF%25E3%2583%25A9%25E3%2582%25B9%25E3%2582%25BF%25E3%2581%25AE%25E3%2583%25A6%25E3%2583%25BC%25E3%2582%25B6%25E3%2583%25BC%25E3%2582%25AC%25E3%2582%25A4%25E3%2583%2589_jp_ja-JP.pdf)