Kubernetesでアプリの管理をしているとマニフェストを弄る機会が結構でてくると思います。同じことを色々なところに書かなければいけなかったり、作成するリソース毎に記述する内容が変わったりで、こここれでいいんだっけ?など、悩みは尽きません。そこで今回はマニフェストの雛形を用意して、ざっくりと作り上げていく方法を紹介します。
下準備
雛形を作るにはkubectl
コマンドが必要です。もしまだインストールされていなければこちらを参考にインストールしてください。macOSでHomebrewがセットアップ済みであれば、以下のコマンドでもインストール可能です。
brew install kubernetes-cli
雛形を作る上でコマンドラインオプションの補完ができた方が楽に進められます。以下の設定を行ってください。
# Bash echo 'source <(kubectl completion bash)' >> ~/.bash_profile # Zsh echo 'source <(kubectl completion zsh)' >> ~/.zprofile
これで補完の設定は完了です。exec $SHELL -l
でShellをリロードするか、端末を再起動して補完が有効になっているか確認してみてください。kubectl -
を入力後Tabキーを押してオプションが補完されれば成功です。
雛形を作っていく
雛形を作成するにはkubectl create —dry-run=client -o yaml
を使用します。—dry-run=client
を指定することでサーバーに命令を送信することなく作成されるリソースを確認することができます。-o yaml
を指定して出力フォーマットをyamlに変更しています。こうすることにより作成されるリソースをyamlフォーマットで出力できるので雛形を作成できます。
それでは実際に雛形を作成してみましょう。まずはNamespaceから作成していきます。
kubectl create namespace example-ns --dry-run=client -o yaml > namespace.yml
kubectl create
の結果をnamespace.ymlというファイルにリダイレクトしています。ファイルの中を見てみるとexample-ns
というネームスペース名でリソースを作成するマニフェストになっていると思います。kubectl apply -f namespace.yml
を実行すると実際にリソースが作成されます。
Deploymentを作成してみます。
kubectl create deployment example-app --image=IMAGE-URL --replicas=2 --namespace=example-ns --dry-run=client -o yaml > deployment.yml
今度はdeployment.ymlというファイルにリダイレクトしています。ファイルの中を見てみるとコマンドラインオプションで指定した通りのマニフェストが出来上がっていると思います。
kubectl create
コマンドで雛形を作成できるのはわかりました。次は各リソースで指定できるオプションの調べ方を見ていきたいと思います。以下のコマンドを実行してみてください。
kubectl create deployment -h
Aliases:
には短縮名、Examples:
には主な使い方、Options:
には指定できるオプション、Usage:
にはこのコマンドの使い方が書かれています。今回はdeploymentのヘルプを表示しましたが、別のリソースでも調べ方は同じです。入力しながら調べたい場合は以下のようにTabキーで補完しながら進めていくといいと思います。
kubectl create <Tab> kubectl create deployment my-app <Tab> kubectl create deployment my-app -<Tab> # -の後にTabキーを押すとオプションが補完される kubectl create deployment my-app --re<Tab> # --reから始まるオプションが補完される
まとめ
AnnotationsはResourcesなどオプションで指定できない部分もあるので完全にコマンドだけで作り切ることは不可能ですが雛形としては十分です。簡単なマニフェストならこれだけでも動かせるのでマニフェストを自作しなくてはいけなくなった場合は利用してみてはいかがでしょうか。作成できるリソース一覧は公式ドキュメントやkubectl create -h
で確認することができるので一度見てみてください。