Alibaba CloudのKubernetesサービスをVisual Studio Codeから利用する

# はじめに

Alibaba Cloud の kubernetes サービス（Alibaba Cloud Container Service for Kubernetes (ACK)）をVS Codeで触ってみました。
Visual Studio Code に `Visual Studio Code Kubernetes Tools`を入れて利用します。

ちなみに`kubectl`コマンドと`docker`コマンドを使うのでそれぞれインストールが必要になります。 
すでに入っている場合が多いと思いますが😅

・ [Install kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
・ [Install Docker](https://docs.docker.com/install/)

# Visual Studio Code Kubernetes Tools のインストール

拡張機能は此方の[marketplace](https://marketplace.visualstudio.com/items?itemName=ms-kubernetes-tools.vscode-kubernetes-tools)からインストール

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/d2a20e82-883e-d684-d426-fd8937827a82.png)

又は`VS Code`の拡張機能から選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/fed7ee0a-bdcf-3d6e-e458-c407580b4358.png)

インストール完了するとkubernetesのアイコンがあるので選択するとclusterの設定やHelmのRepositoryが見える様になると思います。
※kubeconfig の設定が終わってる前提です。

設定が終わってない場合は`Kubernetes: Set Kubeconfig`で設定が必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/e3c31cb5-650f-5f00-f7eb-e49cc59720d1.png)

もしくは画面の下記の部分から設定しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/ccb146eb-80bd-5f06-6392-b3d07b25a117.png)

下記の画面で作成済みの`kubeconfig`ファイルを指定する事で設定を読み込みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/d87f13a2-d68c-9a23-b22c-a5bb4471f546.png)

なお`CLUSTERS`の部分は`kubectl config get-contexts`で見えるコンテキストが表示されてます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/89ab3c27-6ac2-5eca-d7c8-c8b56c7cfe18.png)

複数のクラスターを管理している場合は「▶︎」が付いているクラスターがCurrentです。
別のクラスターに切り替えたい場合は対象のクラスターを右クリックして表示されるメニューで`Set as Current Cluster`を選択してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/06b54b2b-3821-29b4-f4e4-0a7d187fdb5d.png)

「▶︎」が切り替わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/714a55c1-1dff-8d0c-66cf-c955634c3981.png)

クラスターの中を見ていくといろんな情報が取れます。
編集も可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/489199e9-c329-6cea-a7e1-21ee599808c4.png)

# Deployment

では適当にデプロイしてみたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/109282ba-77c0-04bf-1c2a-170f0e6c7142.png)

マニフェストを書いたらコマンドパレットから`Kubernetes: Create`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/a31c2411-8eb0-96f3-73d8-807cd4e25e62.png)

メッセージが出るので確認してください。
`Created`であれば成功しているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/3b865158-0ed4-32f7-f3ad-ff4123533ea7.png)

`Deployments`のなかに`testapp`が無事に作成されました❗️

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/850f3546-5d86-d7e9-2c4f-8eece42057b0.png)

ちなみにAlibaba Cloudのコンソールからだとこんな感じです。
ちゃんと反映されてますね😁
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/4a6f4826-d44e-85de-b5a4-89fcf7a8a4c6.png)

## Service

ここもyaml書いてもいいのですが、~~面倒なので~~今回はコマンドで作ります。
`kubectl expose deployment testapp --port=8080 --target-port=8080 --type=LoadBalancer`

`testapp`というServiceが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/d0a4d43e-43b3-f6cc-20cd-a4d257494c03.png)

対象のServiceを選択し`Get`をクリックすると。Serviceの情報が取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/d6b410c7-45ac-268f-800e-bf99f5096045.png)

Alibaba Cloudのコンソールを見に行くとSLB(Load balancerのサービス)のインスタンスが作られています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/7310ec6e-12be-159c-eefe-8d45b91c8291.png)

実際にIPにアクセスするとTomcatの画面がちゃんと表示されます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/713585b3-e022-231b-bb92-3a32fb4ddec2.png)

## Dashboard

`Open Dashboard`を選択してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/5b269143-89bc-38e5-267e-01044a018d10.png)

何かがlocalhostで起動する様です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/470cb3ab-303f-65e9-13e5-3d897f3bbf54.png)

Dashboardを入れていればこれでアクセス出来るはずですが、Alibaba Cloud Kubernetes サービスはコンソール上での独自ダッシュボードが提供されているので、デフォルトだと表示されませんね。
`http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/c92aaddb-de3c-2824-ee8f-747d09dffaae.png)

ちなみにAlibaba Cloudのコンソールからだとこんな感じの画面がでるよ。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/81b2cc03-5f64-2542-d337-40e977616d37.png)



## 設定系のコマンドパレット

`Kubernetes: Add Existing Cluster`
Install and configure the Kubernetes command line tool (kubectl) from a cloud cluster, such as an Azure Container Service (ACS) or Azure Kubernetes Service (AKS) cluster

`Kubernetes: Set as Current Cluster`
Select from a list of configured clusters to set the "current" cluster. Used for searching, displaying, and deploying Kubernetes resources.

`Kubernetes: Delete Context`
Remove a cluster's configuration from the kubeconfig file.

`Kubernetes: Set Kubeconfig`
Select from a list of known kubeconfig files (for users who keep different kubeconfig files for different environments).

`Kubernetes: Show Cluster Info`
For a cluster, show the status of Kubernetes Components (API Server, etcd, KubeDNS, etc.) in a terminal window.

`Kubernetes: Use Namespace`
Select from a list of namespaces to set the "current" namespace. Used for searching, displaying, and deploying Kubernetes resources.

# おわりに

ただ単にVisual Studio Code が好き・・・というか使いやすいのでVSCodeで完結したいなと思いやってみましたー

雑ですが参考になれば幸いです。