ふくしま

ソフトウェアエンジニア

KubernetesのOperatorとCRDが何かを掴みつつあるという話

背景

様々な Kubernetest Operator がある。 それが何か理解しつつあるのでまとめておく。

Kubernetest Operatorに対する僕の理解

僕の理解では、「CRD(Custom Resource Difinition)とControllerリソースを用いてあれこれするモジュール」である。 まず、CRDというのは、独自のk8sリソースである。PodとかServiceとかSecretとか公式のリソースのように独自に定義できる。 Controllerというのは、PodというかインスタンスというかCRDを操作する実態である。主に kubernetes API を使ってクラスタ内のリソースを操作したり、外部のAPIを実行したりする。

だから、Kubernetest Operatorの主な仕事は、CRDを定義してContollerを作成すること、だと思う。

例えばPrometheus Operatorでは

CRDとして PrometheusAlertmanager , PrometheusRule などを定義する。 Contorollerとして Deployment を定義している。

だから、Prometheus Operatorをクラスタにリリースすると、それらのCRDの定義そのもの(リソースではない)やPodが作成される。 このリリースにより、PrometheusAlertmanagerといったCRDを使えるようになる(リソースとしてデプロイできる)

Contoroller は、デプロイされたCRDのリソースを使用して、メトリクスを保存したりアラートを送ったりできる。 このContorollerをServiceやらIngressやらを用いて外部に公開していると、PrometheusのUIをWebアプリとして見れたりAPIとしてクエリを実行したりできる。

そういう世界観。