株式会社クラフトマンソフトウェアでは、Kubernetesに力を入れており、11名ほどのKubernetesエンジニアが働いています。社内のKubernetesエンジニアに「これは知らないともったいないツールを教えて!」と聞いて回ったので、そのまとめをこの記事にしました。ちなみにこの記事は、私個人による執筆ではなく、チームのメンバーで協力して執筆したものです。
Lens
Kubernetesクラスタの管理と監視を簡単に行うためのオープンソースのデスクトップアプリケーションです。
k9s
Kubernetesクラスタを操作するためのターミナルベースのUIです。このプロジェクトの目的は、デプロイされたアプリケーションのナビゲート、観察、管理をより簡単にすることです。K9sはKubernetesの変更を継続的に監視し、観察されたリソースと対話するためのコマンドを提供します。
Kubernetes Operational View
kube-ops-viewは、Kubernetesクラスターの運用状況をリアルタイムで可視化するためのオープンソースのウェブベースツールです。クラスター内のノードやポッドのステータスを表示し、ユーザーが環境を効果的に監視・理解するのに役立ちます。メンバーは「これがないと、もうやっていけない」と言っていました。
starship
Starshipは、シェルプロンプトを高速でカスタマイズ可能にするシェルプロンプトです。Kubernetesのコンテキストやネームスペースをプロンプトに出せるので、現在操作しているクラスターを一目で確認できるようになります。チームのエンジニアが言うには「ないと絶対に事故る、マストアイテム」だそうです。
kubectl debug
kubectl debugは、Kubernetes環境でコンテナのトラブルシューティングとデバッグを効率的に行うためのツールです。root権限で動いていなかったり、そもそもシェルが入っていないコンテナが増えてきている。そういったコンテナをデバッグしたいときに便利。実際の動いているコンテナのサイドカーで動かして検証します。
pkl
Kubernetesを扱っていると複雑なYAMLを大量にコーディングすることがあります。その際にpklを用いると、より安全かつ整理整頓されたYAMLコードを管理できます。pklには構造や内容を静的にチェックする機能があり、YAMLコード作成時のエラーを防ぐことができます。
prometheus
Kubernetesクラスターの監視に便利なツールです。
kind
KubernetesクラスタがDockerコンテナ上で動作するため、クラスタの作成と破棄が非常に迅速です。短期間で何度もクラスターを再作成できるため、異なる設定や構成のテストを効率的に行うことができます。これにより、バグの発見や修正が迅速になります。
minikube
kindと同じく、ローカルでKubernetesクラスターを実行するためのツールです。kindと比較すると、Ingressコントローラー、ダッシュボード、メトリクスサーバーの構築などを、組み込みアドオンを使って簡単に構築できます。
k3d
k3dは、k3s(Rancher Labの最小Kubernetesディストリビューション)をdockerで実行するための軽量なラッパーです。k3dを使うと、Kubernetes上でのローカル開発など、シングルノードやマルチノードのk3sクラスタをDocker上で非常に簡単に作成することができます。カスタマイズ性がkindより高いところが気に入っている。
Tilt
ローカルでKubernetesを手軽にプログラマブルに動かせる開発支援ツールです。docker-composeのKubernetes版と考えるとイメージしやすいです。
stern
必須のツール。ログを見るのに便利で、ログを横断的に見ることができます。
kubectl
Kubernetesクラスタを操るためのコマンドラインツール。困ったときは「-h」を使いましょう。
kubie
kubectxとkubensの機能がまとまっています。コンテキスト管理の簡素化、ネームスペースの切り替え、セッションの分離などができます。
kubectx, kubens
kubectxはコンテキストの切り替えを簡単に行えるツールです。kubensはネームスペースの切り替えに便利なツールで、kubectxと一緒にインストールされます。
kubeadm
Kubeadmは、Kubernetesクラスタを作成するためのベストプラクティスの「近道」としてkubeadm initとkubeadm joinを提供するために構築されたツールです。クラスタを簡単に作成できます。
jq と yq
Kubernetesのリソースを触っていると、リソースのJSONやYAMLから特定の項目を抽出したり、加工したいことがあります。そういったときに便利なのがjqやyqといったツールです。たとえば、特定のラベル(例:app=nginx)を持つPodのIPアドレスを抽出するには、次のようにすると一覧できます。
kubectl get pods -l app=nginx -o json | jq '.items[] | {name: .metadata.name, ip: .status.podIP}'
jnv
jnvは、jqを使用した対話型JSONフィルターツールです。JSONのナビゲーションとフィルタリングをインタラクティブに行うための機能を提供します。Kubernetesを使っていると、リソースを部分的に取り出して何かしたいということがあり、jqを用いることがあります。jqはパワフルなクエリー言語を持っていますが、クエリーを書くのに試行錯誤が伴います。jnvを使うと、クエリーの結果を即座に確認できるので、クエリーを書くのがはかどります!
ちなみに、jnvの作者の@ynqaさんはうちの会社クラフトマンソフトウェアのチームメイトです。
fzf
汎用的なファジーファインダー。CLIでインクリメンタルに曖昧検索ができます。
kube.rs
kube-rsは、RustでKubernetesリソースを操作するためのクライアントライブラリです。Kubernetesのオペレーターを作ることもできて、Kubernetesの既存の機能では足りない運用の自動化などが行えて便利です。
番外編: おすすめの学習リソース
メンバーにおすすめツールを聞いて回ったところ、Kubernetes学習リソースについてもおすすめいただいたので、ここでは番外編として紹介しておきます。
PR
クラフトマンソフトウェアでは、最新のクラウドネイティブ技術を駆使してプラットフォーム・エンジニアリングを推進するKubernetesエンジニアを募集しております。ご興味のある方は下記よりご連絡ください!(カジュアル面談も随時実施中♪)