kakakakakku blog

Weekly Tech Blog: Keep on Learning!

便利な Kubernetes マニフェスト用エディタ「Monokle」

最近「Monokle」を使っている.Monokle(モノクレ)は「Kubernetes マニフェスト用エディタ」とも言えるアプリで,2週間ほど使って操作にも慣れてきたので紹介する!macOS でも Windows でもアプリをダウンロードすればすぐに使えるぞ!

github.com

機能 ☸️

Monokle の機能(できること)はドキュメントに載っている.機能は本当に多くて,継続的にリリースもされている.今回は代表的な機能を4点紹介する!Monokle v1.6.0 を前提にする.UI は日々変わるかも!

  1. マニフェスト操作
  2. Kustomize 対応
  3. Helm 対応
  4. Kubernetes クラスタ統合

kubeshop.github.io

検証環境 ☸️

今回はブログ記事用にサンプルマニフェストを管理するディレクトリを作った(非公開).すぐに試すなら普段仕事などで使っている GitHub リポジトリのディレクトリなどを読み込んでしまって OK!個人的に Monokle を使い始めたときは複雑な UI に慣れなかったけど,使い続ければ慣れてくる!

$ tree -L 1 .
.
├── helm
├── kustomize
└── manifests

1. マニフェスト操作 ☸️

まず,Monokle 画面は大きく「3種類」のウィジェットで構成されている.まず,左側にある「File Explorer」でディレクトリのマニフェストなどを一覧できる.適当にマニフェストを選択すると,右側にある「Editor」で YAML を直接編集できる(ちゃんと補完も効くぞー👏).そして,真ん中にある「Navigator」では Kubernetes リソースごとにオブジェクトを一覧できる.さらにオブジェクトの関係性を確認できる Outgoing Links 機能も便利!

f:id:kakku22:20220401175849p:plain

「Editor」で特に便利なのは Form 機能で,マニフェストの各フィールドを GUI で設定できる.マニフェストを書くときにフィールド名を調べることも多いけど,Form 機能を使えば簡単に YAML に反映できる.以下のキャプチャには Deployment の spec.selector.matchLabelsstrategy:type などを載せている.下にスクロールをするとまだまだ多くのフィールドが出てくる!

f:id:kakku22:20220401175934p:plain

新しくマニフェストを作るときは File ExplorerAdd Resource を選択すると GUI で作れる.

f:id:kakku22:20220401175943p:plain

またマニフェストの記法エラーにも気付ける.意図的に以下のエラーを混入させてみた.Editor でエラーに気付けるのは便利ー!

  • spec.replicas に文字列を指定する🔥
  • spec.template.spec.volumes に存在しない ConfigMap を指定する🔥

f:id:kakku22:20220401175954p:plain

2. Kustomize 対応 ☸️

Monokle は Kustomize に対応している.左側のメニューで Kustomize アイコンを選択する.今回は検証用にサンプルプロジェクトを作った.

$ tree kustomize
kustomize
├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   └── namespace.yaml
└── overlays
    ├── dev
    │   └── kustomization.yaml
    └── prd
        └── kustomization.yaml

kustomize/overlays/prd/kustomization.yaml を以下のように設定して,Monokle で Preview を押すと自動的に kustomize build overlays/prd が実行されて Editor に表示される.試行錯誤をしながら kustomization.yaml を実装するときに便利!また Kustomize の Editor にも Form 機能があり configMapGeneratorpatchesStrategicMerge なども GUI で設定できる!イイ!

bases:
  - ../../base

namespace: my-kustomize-prd

replicas:
  - name: my-kustomize-prd-nginx
    count: 10

namePrefix: my-kustomize-prd-

f:id:kakku22:20220401180005p:plain

3. Helm 対応 ☸️

Monokle は Helm にも対応している.左側のメニューで Helm アイコンを選択する.今回は検証用にサンプルプロジェクトを作った.

$ tree helm
helm
├── Chart.yaml
├── charts
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── deployment.yaml
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── service.yaml
│   ├── serviceaccount.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

Monokle で Preview を押すと templates/*.yaml のテンプレートに values.yaml を展開したマニフェストを確認できる.アプリケーションを Helm Chart にまとめている場合に便利そう!

f:id:kakku22:20220401180016p:plain

4. Kubernetes クラスタ統合 ☸️

ここまでは「Kubernetes マニフェスト用エディタ」として,マニフェスト関連の操作を紹介してきたけど,Monokle を使うと Kubernetes クラスタに接続もできる(kubeconfig の設定は前提となる).クラスタにデプロイされた Kubernetes オブジェクトを一覧したり,マニフェストを編集して反映もできる.以下のキャプチャは検証用の Amazon EKS クラスタに接続している(なんと 662 オブジェクトもあった!).

f:id:kakku22:20220401180026p:plain

まとめ ☸️

最近使っている「Monokle」を紹介した.今後も使っていくぞー!

github.com

2022年のリリース ☸️

kubeshop.io

kubeshop.io