Kubernetes IDE Lens

2020年8月にMirantis社が買収したLensというKubernetes統合運用管理ツール「Lens」を試してみようと思います。

# 1.Lensの概要とインストール

Kubernetes IDEと称していますが、アプリケーション開発的なことではなく、kubectlコマンドを実行できたり、マニフェストのエディット機能やPrometheusを利用したメトリクス表示機能などKubernetesの運用における統合環境の意味合いが強いようです。

LensはOSSなのでソースも[GitHub](https://github.com/lensapp/lens)で公開されています。Windows,Mac,LinuxでLens本体をインストールすることで利用できます。

特徴は以下となります。

- The Kubernetes IDE
- Multi Cluster Management
- Multiple Workspaces
- Built-In Prometheus Stats
- Context Aware Terminal
- Helm Charts Management

今回は、Windows版を試してみました。[公式サイト](https://k8slens.dev/)からインストールファイルをダウンロードしてインストールするとデスクトップにショートカットが作成されます。それをダブルクリックするだけで利用できます。

ショートカットアイコン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/2e8661a3-2e60-59a2-bfd1-6fb7ef1c12c6.png)

起動後の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/05a8ebf7-32ee-b484-3d79-7252f8e13792.png)

## 2.Kubernetesクラスタの登録

Kuberentesクラスタの登録は、左上の「+」ボタンをクリックします。クリック後、画面が遷移します。「Select kubeconfig file」でkubeconfigのパスを指定するとkubeconfigの内容が自動で読み込まれます。また、「Paste as text」タブを選択すると、kubeconfigの設定をペーストして読み込ませることができます。「Add cluster(s)」をクリックするとLensにKubernetesクラスタが登録されます。

Select kubeconfig file
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/5fb6adee-db7f-6427-a6a8-90a3a5168fbe.png)

Paste as text
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/76224eed-f522-632e-cac1-4b6d7493ed32.png)

登録すると、左上にアイコンが追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/d729a32a-a004-705e-785e-7e66565f4ce5.png)

## 3.Kubernetesクラスタの状況確認

左メニューは、NodeやKubernetesのオブジェクトの状況を確認できます。Preometheusを利用すると、グラフで可視化できます。追加されたアイコン上で右クリック、「Settings」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/50e19635-8066-78d2-00a2-1f5bbb12f6e4.png)

「Feature」の「Metrics」にある「Install」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/7161afe6-e31d-28de-aee0-a04185c4575e.png)

左メニュー「Workload」を選択するとグラフでオブジェクトの状況を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/0620059c-6539-1963-d88c-013afb2bb2d8.png)

左メニュー「Nodes」を選択すると、各Nodeのリソース状況を確認できます。右上の「CPU」「Memory」「Disk」「Pods」を切り替えることで状況を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/ec213a0e-959c-0ada-649d-d6b64c56b974.png)

左メニュー「Cluster」を選択すると、クラスタ全体のリソース状況を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/3cb79e5d-fce7-0b11-65b6-f14b9fee2c49.png)

## 4.Helmの管理

左メニュー「Apps」を選択すると、Helm stableリポジトリを検索できます。

左下の「Terminal」横にある「+」ボタンをクリックして、「Terminal session」を選択するとkubectlコマンドを実行できるTerminalが起動します。新たにHelm Chartリポジトリを追加して、LensでRelease状況を確認しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/4bf20c1c-dd3c-4b0f-861b-124c0792c6e6.png)

コンソール画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/5e1c7b7d-9cc1-14d4-8cf2-61edbee92ba8.png)


```command:helm
> helm repo list
Error: no repositories to show
> helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
> helm repo list
NAME    URL
bitnami https://charts.bitnami.com/bitnami
> helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈
> helm install wordpress bitnami/wordpress --set wordpressUsername=admin --set wordpressPassword=@dminp@ss
NAME: wordpress
LAST DEPLOYED: Mon Nov 30 16:59:52 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
** Please be patient while the chart is being deployed **

Your WordPress site can be accessed through the following DNS name from within your cluster:

    wordpress.default.svc.cluster.local (port 80)

To access your WordPress site from outside the cluster follow the steps below:

1. Get the WordPress URL by running these commands:

  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace default -w wordpress'

   export SERVICE_IP=$(kubectl get svc --namespace default wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
   echo "WordPress URL: http://$SERVICE_IP/"
   echo "WordPress Admin URL: http://$SERVICE_IP/admin"

2. Open a browser and access WordPress using the obtained URL.

3. Login with the following credentials below to see your blog:

  echo Username: admin
  echo Password: $(kubectl get secret --namespace default wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)
```

左メニュー「Apps」-「Release」を選択して、Releaseのwordpressをクリックすると詳細を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/8e6290b8-75c3-42ca-52f4-3739cf5ecb24.png)

## 5.Kubernetesクラスタの登録解除

LensからKubernetesクラスタを登録解除する場合は、クラスタアイコン上で右クリックして「Remove」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/83ccceb9-9bc7-42e0-468e-67dc9f0fb9e5.png)

「Remove」をクリックすると解除できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/7116d363-6469-fa8f-1e6a-26c94f017d9f.png)

Lensから登録解除されるだけで、実際のクラスタ自体は削除されません。

## 6.まとめ

LensにKubernetesクラスタ登録、オブジェクト管理、メトリクス表示、Helm管理を試してみました。簡単にインストールして、kubeconfigを登録するだけでKubernetesダッシュボードのような感じでクラスタの状況を確認できる便利なツールです。複数のKubernetesクラスタを登録すればマルチクラスタ管理をこのGUIで行えます。OSSで無料で利用できるので、試してみてください。

## 7.参考リンク

- [Lens公式サイト](https://k8slens.dev/)
- [Lens GitHub](https://github.com/lensapp/lens)
- [オープンソースのKubernetes統合運用管理ツール「Lens」、Mirantisが買収し主要スポンサーになったと発表](https://www.publickey1.jp/blog/20/kuberneteslensmirantis.html)