nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

OpenShiftのmaster-config.yamlやnode-config.yamlの書式

OpenShift 全部俺 Advent Calendar 2017

たとえばmaster-config.yamlをカスタマイズしたい場合にどうやって記述すればいいのかなどを調べたい場合があります。

以下に項目がさらっと書かれたドキュメントがあり、さらっと把握するのには役立ちますが、やはりyaml形式の場合にどのように書いたら良いというようなガイドはありません。

https://docs.openshift.org/latest/install_config/master_node_configuration.html

どこを見れば良いかというとソースコードです。OpenShiftはGo言語で記述されており、yaml形式の設定ファイルはこの定義とダイレクトにマップしています。

https://github.com/openshift/origin/blob/master/pkg/cmd/server/api/v1/types.go

たとえばkubernetesMasterConfig.controllerArgumentsは以下のように定義されています。

ControllerArguments ExtendedArguments `json:"controllerArguments"`

ExtendedArgumentsはkeyがstring、valueが[]stringのmapです。

type ExtendedArguments map[string][]string

つまり記述はこんな感じになります。

kubernetesMasterConfig:
  controllerArguments:
    foo:
    - bar
    - baz
    hoge:
    - "10"

string型であるので、数値などはクオートしないといけません。

Go言語の型とyaml形式のちょっとした知識は必要となりますが、難しいものではないので、このapi/v1/types.goを参照すればよい、ということさえわかっていればすぐ調べられます。

ちなみに各コンポーネントのデフォルト値を調べたい場合はソースツリーからoptions.goというファイルをリストするとたぶんわかります。