これを知らないともったいない！Kubernetes関連の便利ツール20選

株式会社クラフトマンソフトウェアでは、Kubernetesに力を入れており、11名ほどのKubernetesエンジニアが働いています。社内のKubernetesエンジニアに「これは知らないともったいないツールを教えて！」と聞いて回ったので、そのまとめをこの記事にしました。ちなみにこの記事は、私個人による執筆ではなく、チームのメンバーで協力して執筆したものです。

## Lens

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/3b086ae6-6710-ae3c-3c8e-ee39284ed698.png)


Kubernetesクラスタの管理と監視を簡単に行うためのオープンソースのデスクトップアプリケーションです。

https://k8slens.dev/

## k9s

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/cb53f43d-6edf-31d4-5f0d-74b6537241eb.png)


Kubernetesクラスタを操作するためのターミナルベースのUIです。このプロジェクトの目的は、デプロイされたアプリケーションのナビゲート、観察、管理をより簡単にすることです。K9sはKubernetesの変更を継続的に監視し、観察されたリソースと対話するためのコマンドを提供します。

https://k9scli.io/

## Kubernetes Operational View

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/3d012a26-08a1-75b4-4b59-7e7a60199473.png)


kube-ops-viewは、Kubernetesクラスターの運用状況をリアルタイムで可視化するためのオープンソースのウェブベースツールです。クラスター内のノードやポッドのステータスを表示し、ユーザーが環境を効果的に監視・理解するのに役立ちます。メンバーは「これがないと、もうやっていけない」と言っていました。

https://codeberg.org/hjacobs/kube-ops-view

## starship

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/8a4f23ec-e93c-da25-ab2f-2c0f047ec8f3.png)


Starshipは、シェルプロンプトを高速でカスタマイズ可能にするシェルプロンプトです。Kubernetesのコンテキストやネームスペースをプロンプトに出せるので、現在操作しているクラスターを一目で確認できるようになります。チームのエンジニアが言うには「ないと絶対に事故る、マストアイテム」だそうです。

https://starship.rs/ja-JP/

## kubectl debug

kubectl debugは、Kubernetes環境でコンテナのトラブルシューティングとデバッグを効率的に行うためのツールです。root権限で動いていなかったり、そもそもシェルが入っていないコンテナが増えてきている。そういったコンテナをデバッグしたいときに便利。実際の動いているコンテナのサイドカーで動かして検証します。

https://kubernetes.io/ja/docs/tasks/debug/debug-cluster/kubectl-node-debug/

## pkl

Kubernetesを扱っていると複雑なYAMLを大量にコーディングすることがあります。その際にpklを用いると、より安全かつ整理整頓されたYAMLコードを管理できます。pklには構造や内容を静的にチェックする機能があり、YAMLコード作成時のエラーを防ぐことができます。

https://github.com/apple/pkl

## prometheus

Kubernetesクラスターの監視に便利なツールです。

https://prometheus.io/

## kind

KubernetesクラスタがDockerコンテナ上で動作するため、クラスタの作成と破棄が非常に迅速です。短期間で何度もクラスターを再作成できるため、異なる設定や構成のテストを効率的に行うことができます。これにより、バグの発見や修正が迅速になります。

https://kind.sigs.k8s.io/

## minikube

kindと同じく、ローカルでKubernetesクラスターを実行するためのツールです。kindと比較すると、Ingressコントローラー、ダッシュボード、メトリクスサーバーの構築などを、組み込みアドオンを使って簡単に構築できます。

https://minikube.sigs.k8s.io/docs/

## k3d

k3dは、k3s（Rancher Labの最小Kubernetesディストリビューション）をdockerで実行するための軽量なラッパーです。k3dを使うと、Kubernetes上でのローカル開発など、シングルノードやマルチノードのk3sクラスタをDocker上で非常に簡単に作成することができます。カスタマイズ性がkindより高いところが気に入っている。

https://k3d.io/v5.4.6/

## Tilt

ローカルでKubernetesを手軽にプログラマブルに動かせる開発支援ツールです。docker-composeのKubernetes版と考えるとイメージしやすいです。

https://tilt.dev/

## stern

必須のツール。ログを見るのに便利で、ログを横断的に見ることができます。

https://github.com/stern/stern

## kubectl

Kubernetesクラスタを操るためのコマンドラインツール。困ったときは「-h」を使いましょう。

https://kubernetes.io/docs/reference/kubectl/

## kubie

kubectxとkubensの機能がまとまっています。コンテキスト管理の簡素化、ネームスペースの切り替え、セッションの分離などができます。

https://github.com/sbstp/kubie

## kubectx, kubens

kubectxはコンテキストの切り替えを簡単に行えるツールです。kubensはネームスペースの切り替えに便利なツールで、kubectxと一緒にインストールされます。

https://github.com/ahmetb/kubectx

## kubeadm

Kubeadmは、Kubernetesクラスタを作成するためのベストプラクティスの「近道」としてkubeadm initとkubeadm joinを提供するために構築されたツールです。クラスタを簡単に作成できます。

https://kubernetes.io/docs/reference/setup-tools/kubeadm/

## jq と yq

Kubernetesのリソースを触っていると、リソースのJSONやYAMLから特定の項目を抽出したり、加工したいことがあります。そういったときに便利なのがjqやyqといったツールです。たとえば、特定のラベル（例：app=nginx）を持つPodのIPアドレスを抽出するには、次のようにすると一覧できます。

```shell
kubectl get pods -l app=nginx -o json | jq '.items[] | {name: .metadata.name, ip: .status.podIP}'
```

https://jqlang.github.io/jq/

https://github.com/mikefarah/yq

## jnv

jnvは、jqを使用した対話型JSONフィルターツールです。JSONのナビゲーションとフィルタリングをインタラクティブに行うための機能を提供します。Kubernetesを使っていると、リソースを部分的に取り出して何かしたいということがあり、jqを用いることがあります。jqはパワフルなクエリー言語を持っていますが、クエリーを書くのに試行錯誤が伴います。jnvを使うと、クエリーの結果を即座に確認できるので、クエリーを書くのがはかどります！

ちなみに、jnvの作者の@ynqaさんはうちの会社クラフトマンソフトウェアのチームメイトです。

https://github.com/ynqa/jnv

## fzf

汎用的なファジーファインダー。CLIでインクリメンタルに曖昧検索ができます。

https://github.com/junegunn/fzf

## kube.rs

kube-rsは、RustでKubernetesリソースを操作するためのクライアントライブラリです。Kubernetesのオペレーターを作ることもできて、Kubernetesの既存の機能では足りない運用の自動化などが行えて便利です。

https://kube.rs/

## 番外編: おすすめの学習リソース

メンバーにおすすめツールを聞いて回ったところ、Kubernetes学習リソースについてもおすすめいただいたので、ここでは番外編として紹介しておきます。

## PR

クラフトマンソフトウェアでは、最新のクラウドネイティブ技術を駆使してプラットフォーム・エンジニアリングを推進するKubernetesエンジニアを募集しております。ご興味のある方は下記よりご連絡ください！（カジュアル面談も随時実施中♪）

https://herp.careers/v1/c16e/JOjyOQVTw5Rk