Octant で色々みてみよう

TUNA-JP の関本(@tarowork64)と申します。
本日は「[TUNA-JP Advent Calendar 2021](https://qiita.com/advent-calendar/2021/tuna-jp)」の4日目のエントリとして、Tanzu OSS の Octant をご紹介します！
入門記事になっていますので、TCE (Tanzu Community Edition)をとりあえず入れてみて色々動作などを確認してみたい、という方に最適です。本当に簡単なので読んだら早速触ってみていただけると幸いです！

## Octant ってなに？
![octant-logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392874/250c9688-6484-64ab-c18d-727e9f7d451b.png)

Octant は Kubernetes クラスタを可視化できるツールの一つです。Kubernetes クラスタにダッシュボード(Web UI)を提供します。gRPC を介してクライアント側で動作し、Kubernetes ダッシュボードのように何かしらのポートフォワードやトンネルなどを別途設定することなく簡単に起動できます。
また、プラグインを利用して機能を拡張していくことが可能であることも大きな特徴です。

## まず入れてみよう！

動作確認には、導入前になんらかの Kubernetes クラスタが必要です。Tanzu でなくてかまいません。本記事では、Tanzu Community Edition の Standalone Cluster を利用しています。こちらの導入方法については、今後の記事を楽しみにお待ちください!

早速ですが、Octant 導入してみます。
前述の通り、クライアント側のツールのため、クライアントの OS により導入方法が異なります。どの OS でもそれほど複雑ではありません。今回は Mac で試しています。
[リリース一覧](https://github.com/vmware-tanzu/octant/releases)より、本日時点での最新バージョン([v0.25.0](https://github.com/vmware-tanzu/octant/releases/v0.25.0))を導入してみます。
導入といっても、バイナリファイルをダウンロードして、以下のように解凍すれば実行可能な状態になります。

```
tar -xzvf ~/Downloads/ooctant_0.25.0_macOS-64bit.tar.gz
octant_0.25.0_macOS-64bit/README.md
octant_0.25.0_macOS-64bit/octant
```
また、以下のように Homebrew でのインストールも可能です。（今回は試していません）

```
brew install octant
```
Linux や Windows でも同様で、バイナリのダウンロード以外にそれぞれ rpm からのインストール、Chocolatey,Scoop でのインストールが可能です。

実行可能なパスに配置して早速実行します。

```
./octant
```
実行するとブラウザが立ち上がり、http://127.0.0.1:7777 へアクセスします。すると早速以下のような画面が表示されると思います。UI のデザインはおなじみ [Clarity](https://clarity.design/) ですね。(そういえば、いつか Clarity も記事にしてみたいと思っていたり)
![スクリーンショット 2021-12-03 22.35.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392874/67477b7e-1ca5-3de0-cd5a-2269f6be230e.png)

kubeconfig から自動的に接続情報を読み込んでいますので、他に必要な情報もありません。複数の Cluster を管理している場合、右上の Context 名の部分から Context を切り替えることができます。
その他の操作も直感的に行えると思います。
導入いただいたら、まず Cluster Overview をみていただくのをお勧めします。環境に導入されている CRD の情報など、その情報量の豊富さに驚くと思います。


## サンプルアプリケーションをデプロイしてみる

ここまでは、デプロイほやほやのクラスタに対して検証していましたが、適当なサンプルアプリケーションをデプロイしてみることにします。
今回はサンプルアプリケーションには、[Yelb](https://github.com/mreferre/yelb)を利用しました。
![スクリーンショット 2021-12-03 22.51.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392874/841b2dad-e719-ae8d-368f-eaa4f19594d3.png)

マニフェストファイルの適用は、Octant 上からも行うことができます。直接記載する or yaml ファイルのアップロードが可能です。今回は通常の kubectl で行います。
デプロイ中に早速 Octant をみてみると、リアルタイムで情報が更新されていることがわかります。
![スクリーンショット 2021-12-03 22.46.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392874/814ce057-c4b6-a385-13c5-7d39cb4cc1a5.png)
1つの Pod が Container Creating になっていますね。
![スクリーンショット 2021-12-03 23.59.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392874/5ff8ef1d-a5df-fcc6-43f9-97682a95adf4.png)
しばらく待つと Running になりました。
簡易的にステータスをみることにも役立ちそうです。

Resource Viewer で各リソースの関係性を視覚的にみることができます。
![スクリーンショット 2021-12-03 22.48.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392874/defe6895-a0ac-e845-2448-8c2259c57d0c.png)

その他、Pod のログの出力や、exec で shell に入ることができる機能が役立ちそうに見えました。
![スクリーンショット 2021-12-03 23.13.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392874/8e118430-14fb-3ea6-9b79-088305b2eed6.png)

## プラグインを追加してみる

最初の方に少し記載しましたが、Octant はプラグインを追加することで、デフォルトにないダッシュボードを追加することができます。Velero, Knative, cert-manager など様々な OSS のダッシュボードが追加可能です。
今回は [Octant の Github レポジトリにあるプラグイン一覧](https://github.com/topics/octant-plugin)より簡単にできそうな Helm を導入してみます。導入はとても簡単で解凍したファイルをディレクトリに配置するだけです。

```
mkdir -p ~/.config/octant/plugins/ && \
  curl -L https://github.com/bloodorangeio/octant-helm/releases/download/v0.2.0/octant-helm_0.2.0_darwin_amd64.tar.gz | \
  tar xz -C ~/.config/octant/plugins/ octant-helm
```
さて、Octant を再起動してみます。
するとこのように Helm のダッシュボードが追加され、`helm list` や`helm repo list` と同じような情報をみることができます。
![スクリーンショット 2021-12-03 23.25.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392874/fbf983bf-0772-852d-023a-b1637cd10e87.png)


## まとめ
いかがでしたでしょうか？インストールに必要な手順も少なく、操作も簡単ですよね。
Octant はとても簡単に導入でき、情報量が豊富です。
ぜひ、さくっと試してみてください！