この記事は kubernetes Advent Calendar 2025 20日目の記事です。

先日 kubectl-mft というソフトウェアを公開しました。

kubectl-mft は Kubernetes マニフェストを簡単に管理するための kubectl プラグインです。 この記事ではこのプラグインの開発の経緯や使い方について紹介します。

開発の経緯

Kubernetes のマニフェスト管理には Helm や Kustomize などのツールがよく使われています。 自分自身もマニフェスト管理にはこれらのツールに日々お世話になっています。

ただ、これらのツールは便利な一方、設定ファイルやテンプレートファイルを用意する必要があり、シンプルなマニフェストを管理するには少しヘビーに感じることがありました。
そのため、これまでは一時的なデバッグ用のPodや、機能検証のためのリソースファイルを管理するときは、ローカルに YAML ファイルを置いて kubectl apply -f でマニフェストを適用していました。 しかし、この方法はファイルの場所を見失ったり、他のホストにマニフェストを共有したいときなどに不便でした。
テンプレーティングやオーバーレイのような複雑な機能は不要で、ただシンプルにマニフェストを簡単に管理できるツールが欲しいと思い、kubectl-mft を開発しました。

mft プラグインとは

kubectl-mft は先ほど述べた通り Kubernetes マニフェストを簡単に管理するための kubectl プラグインです。
使用する際は設定ファイルも、テンプレートファイルも不要です。 ただ管理したいマニフェストファイルをコマンドの引数に指定するだけで、簡単にマニフェストを管理できます。
また、内部ではマニフェストファイルを OCI アーティファクトとして管理しているため、OCI レジストリを使ってマニフェストを簡単に共有できます。

次の章で実際の使い方を見てみましょう。

使用例

まずは mft プラグインをインストールします。
krew プラグインマネージャーを使ってインストールできます。

1
2
3
4
$ kubectl krew index add mft https://github.com/chez-shanpu/kubectl-mft.git
$ kubectl krew install mft/mft
$ kubectl mft --version
kubectl-mft version 0.3.0 (commit: 1d34983)

次に、管理したいマニフェストファイルを管理対象に加えましょう。
kubectl mft pack コマンドを使います。 ここでは manifest.yaml というマニフェストファイルを管理対象に加えます。

1
$ kubectl mft pack -f manifest.yaml demo

管理しているマニフェストは kubectl mft list コマンドで確認できます。

1
2
3
$ kubectl mft list
REPOSITORY                     TAG      SIZE   CREATED
demo                           latest   642B   2025-12-20 17:25:55

マニフェストを適用したいときは kubectl mft dump コマンドを使います。 ここでは標準出力に出して、そのまま kubectl apply に渡します。

1
$ kubectl mft dump demo | kubectl apply -f -

管理しているマニフェストを共有したいときは、 OCI レジストリにプッシュしましょう。
kubectl mft cp でタグを使ってレジストリを指定してプッシュします。

1
2
3
4
5
6
$ kubectl mft cp demo ghcr.io/chez-shanpu/demo
$ kubectl mft list
REPOSITORY                     TAG      SIZE   CREATED
demo                           latest   642B   2025-12-20 17:25:55
ghcr.io/chez-shanpu/demo       latest   642B   2025-12-20 17:28:03
$ kubectl mft push ghcr.io/chez-shanpu/demo

もちろんpullもできます。

1
$ kubectl mft pull ghcr.io/chez-shanpu/demo

マニフェストファイルだけではなく、デバッグコンテナのカスタムプロファイルを管理するのにも便利です。
例えばネットワーク系のデバッグツールが入ったコンテナを使うために NET_ADMINNET_RAW 権限を付与したい場合を考えます。 kubectl-mft には path コマンドがあるため、これでローカルホスト上のパスを表示させて --custom オプションに渡します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# あらかじめカスタムプロファイルを pack しておいてください
$ kubectl mft dump debug-profile
securityContext:
  capabilities:
    add:
      - NET_ADMIN
      - NET_RAW

$ kubectl debug -it mypod --image nicolaka/netshoot --custom $(kubectl mft path debug-profile) -- bash
mypod:~# termshark -i eth0 icmp
...

さらに詳しい使い方は GitHub リポジトリの README を参照してください。

おわりに

今回は mft という kubectl プラグインを紹介しました。
まだ追加したい機能はありますが、今の段階でもシンプルなマニフェスト管理には十分使えると思います。
興味がある方はぜひ試してみてください。

issue や PR も歓迎しているので、何か面白いアイデアや改善点があればぜひ教えてください。