FedoraでPodman Kube Playを使いKubernetes YAMLを「超高速」にデプロイする

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

YAMLファイル1つをテストするためにクラスタを構築?今こそ変える時です!

わずか20行のマニフェストファイルをチェックするためだけにMinikubeやKindを起動するのは、非常に「億劫」に感じられがちです。これらのツールは起動しただけで少なくとも2GBのRAMを消費します。オフィス用のノートPCでは、冷却ファンがドライヤーのように唸りを上げるのも避けられません。

Fedoraにおいて、より軽量な代替手段を見つけました。それが podman kube play です。複雑なエコシステム全体を構築する代わりに、この機能を使えばKubernetes標準のYAMLファイルをPodmanエンジン上で直接実行できます。起動にかかる時間はわずか数秒です。

Podman Kube Playはどのように動作するのか?

簡単に言えば、PodmanはKubernetesの最小単位である「Pod」の構造を理解しています。YAMLファイルを読み込むと、Podmanはコンテナ、ボリューム、環境変数の定義を自動的に解析します。そして、それらをLinuxカーネル上で直接動作するローカルのPodへとマッピングします。

ここにはAPI Server、Etcd、Kubeletの姿はありません。すべてが極限まで簡素化されています。必要なのは podman パッケージのインストールだけです。

なぜこの方法が開発者に最適なのか?

  • 即時起動: コンテナがすぐに立ち上がり、クラスタが「Ready」になるのを2〜3分待つ必要がありません。
  • 超軽量: オーバーヘッドはほぼゼロ。アプリケーション自体が必要なRAMを消費するだけです。
  • 高い互換性: このYAMLファイルは、コア構造を変更することなく、そのまま本番環境(GKE、EKSなど)に持ち込むことが可能です。

実践ガイド:3ステップでアプリケーションを実行する

まず、FedoraにPodmanがインストールされているか確認してください。未インストールの場合は、ターミナルを開いて次のように入力します: sudo dnf install -y podman

1. サンプルYAMLファイルの作成

シンプルなNginxアプリケーションで試してみましょう。以下の内容で web-app.yaml ファイルを作成します:

apiVersion: v1
kind: Pod
metadata:
  name: fedora-web-demo
spec:
  containers:
  - name: nginx-server
    image: docker.io/library/nginx:latest
    ports:
    - containerPort: 80
      hostPort: 8080
    volumeMounts:
    - name: data-vol
      mountPath: /usr/share/nginx/html
  volumes:
  - name: data-vol
    hostPath:
      path: /tmp/html-data
      type: DirectoryOrCreate

ここでは、コンテナの80番ポートをホストマシンの8080番ポートにマップし、ボリュームを /tmp/html-data にマウントしています。

2. Kube Playコマンドの実行

ここからが本領発揮です。 kubectl apply の代わりに、次を実行します:

podman kube play web-app.yaml

Podmanが自動的にイメージをプルし、ネットワークを設定し、ボリュームをマウントします。わずか数瞬で、PodのIDと対応するコンテナの情報が返されます。

3. ステータスの確認

Podが正常に動作しているか確認するには、次のコマンドを使用します:

podman pod ps

ブラウザを開いて localhost:8080 にアクセスしてみてください。本物のクラスタ上と同じように、すべてがスムーズに動作しているはずです。

プロ向けのヒント

実行中のコンテナをYAMLに変換する

長い podman run コマンドでコンテナを起動してしまい、それをYAMLファイルとして保存したくなったことはありませんか?手書きする必要はありません。Podmanに任せましょう:

podman kube generate <コンテナ名> > deployment.yaml

一瞬でリソースをクリーンアップする

YAMLファイルから作成されたものをすべて削除するには、 down コマンドを使うだけです:

podman kube down web-app.yaml

不要なコンテナが即座に一掃され、システムがクリーンになります。

Fedoraにおけるパーミッションエラー(SELinux)の対処

FedoraはSELinuxによって厳重に保護されています。ボリュームのマウント時に403 Forbiddenエラーが発生した場合は、次のコマンドでホストディレクトリに権限を付与してください:

chcon -Rt svirt_sandbox_file_t /tmp/html-data

まとめ

podman kube play は、Fedora開発者がクラスタの待機時間を大幅に節約するための「秘密兵器」です。これは、純粋なDockerと複雑なKubernetesの間の溝を埋めてくれます。プロジェクトをK8sへ移行する過程にあるなら、ローカルのワークフローを最適化するためにぜひこの方法を試してみてください。

Share: