Kubernetes CRD
APIを拡張する機能
v1.6からGAになった
CRD (CRの定義) + CR(Custom Resourceの実体) + Custom Controller (CRをもとに動作するもの) という3つのリソースからなる
CRD + Custom Controller をあわせて Operator とも呼ばれる
Admission Webhook
Mutating Webhook
APIリクエストにデフォルト値を設定したり値を変更したりすることができる
Validating Webhook
label,specなどのフィールドのチェックを行う
API Aggregation
API server の処理途中でhookできるのでCRDよりも自由度が高い
実装が難しく仕組みも煩雑なのでCRDでやるのが主流
CRDの応用機能
Validation
specのフィールドをバリデーション
Additional Printer Columns
kubectl get したときのカラムを追加
SubResource
/logs, /portforward, /status, /scale 等を利用するもの
など
Controller の実装方法
Kubernetes way
deployment, service など既存のcontrollerと同じ方法で作る
他の2つと比べて低レベルの知識が必要
Operator実装のフレームワーク
Operator実装のフレームワーク