「Open PaaS Advent Calendar 2015」2日目の記事です。
Kuberenetesでリソース(Pod
やReplicationController
)デプロイする時に、JSON/YAML形式のマニフェストファイルが必要になるのですが、どんなパラメータが設定できるのか一覧を見たくなることがあります。Kubernetesは、Swaggerというフレームワークを使っているので、 http://KUBE_HOST:8080/swaggerapi/api/v1
や http://KUBE_HOST:8080/swagger-ui/
から確認することもできるのですが、$ref
でいろんなResourceが階層構造になっていて、少し見づらいです。
という理由で、kubernetes-manifest-scannerを書きました。(言い訳: Advent Calendarに間に合わせようと、少しやっつけで書いています。manifestファイルを参照用だけのツールなので大目に見てください。)
使い方は、
0. ビルドして
git clone https://github.com/nak3/kubernetes-manifest-scanner.git
cd kubernetes-manifest-scanner && ./build.sh
1. リソースのリストを確認して
./bin/kubectl-manifest-scanner itemlist
v1.EventList
v1.Event
v1.PersistentVolumeClaim
v1.ReplicationControllerList
...
v1.Service
...
2. パラメータ一覧を見て
./bin/kubectl-manifest-scanner sample -i v1.Service -d 20
{
"apiVersion": "string",
"kind": "string",
"metadata": {
"annotations": {
"any": "e.g. label"
},
"creationTimestamp": "string",
"deletionGracePeriodSeconds": "integer",
"deletionTimestamp": "string",
...(略)...
3. 意味を調べたいパラメータの詳細を参照する
./bin/kubectl-manifest-scanner snippet -i deletionGracePeriodSeconds
{
"v1.ObjectMeta": {
"properties": {
"deletionGracePeriodSeconds": {
"description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
"format": "int64",
"type": "integer"
}
}
}
}
以上です。
パラメーターは、必須ですべて書かないといけないということはないです。あくまでも、一覧の参照と意味の参照用に。また、デフォルトでアップストリームのSwaggerを参照していますが、バージョンによって設定できるパラメータも違うので、-f
オプションで自分が利用しているKubernetesのhttp://KUBE_HOST:8080/swaggerapi/api/v1
を指定してください。
OpenShift v3でもこのツールは使えるのですが、Open Shift v3の場合、JSONファイルはほとんど書かなくて良いので、パラメーターをちょっと見たい時に使うくらいでしょう。