Operator作成について 連載第5回目 OLMによるOperator管理について説明

はじめに

 前回は、Operatorの開発を行いました。本記事は作成したOperatorをKubernetesで動かせるようにパッケージ化を行う前に、KubernetesでOPeratorを管理するツールである Operator LifeCycle Manager(通称OLM)について、その動作や導入方法の基本を説明します。

OLMの動作

 OLMはKuberentes環境下では以下図1の通りに動作します。

図1 OLMの動作イメージ(インストール)

 Operatorのインストールを例にとって上記図1の例をそって説明します。OperatorのインストールはOLMのコントローラはインストール用のKubernetesリソース(YAMLファイル)を監視しており、新規にインストール用のリソースが追加されると、コントローラがカタログに問い合わせして、その問い合わせ結果から次の動作を開始します。

 もし、カタログコンテナとインストール用のリソースが一致するならば、カタログコンテナに記載してあったインストール用のインデックスコンテナを立ち上げます。このインデックスコンテナが立ち上がることで、RBACやOperatorコントローラDeploymentのKubernetesリソースが自動的に登録されることで、任意のOperatorのインストールが終わります。上記のような動作をOLMのコントローラが上記の動作を行っています。

OLMに関連するカスタムリソース

 実際にOLMをインストールした際の適用されるカスタムリソースの一覧を表1に示します。

表1 OLMに関連するカスタムリソース一覧

カスタムリソース名(短縮)カスタムリソース定義名内容一括読み出し
CatalogSource(catsrc)catalogsources.operators.coreos.comカタログのソース情報登録するとカタログが追加するolm
ClusterServiceVersion(csv,csvs)clusterserviceversions.operators.coreos.comOperatorのメタデータolm
InstallPlan(ip)installplans.operators.coreos.comインストールしたOperatorの情報olm
OperatorCondition(condition)operatorconditions.operators.coreos.comOperatorの管理情報olm
OperatorGroup(og)operatorgroups.operators.coreos.comマルチテナント構成のOperator場合に使用Operatorの名前空間情報olm
Subscription(sub,subs)subscriptions.operators.coreos.comOperatorの動作情報登録するとOperatorをインストールolm

 上記表のリソースがOLMインストール後適応して、Kubernetesで各リソース名として使用できるようになります。上記カスタムリソースの情報を取得する際に、以下表示コマンドを実行すると一括で情報取得できます。

kubectl get olm -A

カタログとは

 OLMでインストール可能なOperatorのリストのことをカタログと呼びます。もし、OLMにカタログを登録した場合、Kubernetes内の「PackageManifest」リソースにインストール可能なOperatorが登録されます。その登録情報は、以下のコマンドでリストを取得することが可能になります。

kubectl get packagemanifest -A

公開しているカタログは以下のサイトが一般的となっています。

 もし、カタログを追加する場合は以下のようなCatalogSourceリソースのYAMLファイルを作成して、Kubernetes環境に適用することで、OLMのコントローラがインストールをおこないます。

apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: operatorhubio-catalog
  namespace: olm
spec:
  sourceType: grpc
  image: quay.io/operatorhubio/catalog:latest
  displayName: Community Operators
  publisher: OperatorHub.io
  updateStrategy:
    registryPoll:
      interval: 60m

Operatorのインストールとは

 OLMを使用してOperatorをインストールする場合は、必要な情報を記入したSubscriptionリソースをKubernetesに適用することで、自動的にOperatorがインストールできます。

 もし、Operator.ioが公開しているカタログから、PrometheusのOperatorをインストールする場合は、以下のようなSubscriptionリソースのYAMLファイルを作成して、Kubernetesに適用することでOperatorをインストールすることができます。

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: my-prometheus
  namespace: operators
spec:
  channel: beta
  name: prometheus
  source: operatorhubio-catalog
  sourceNamespace: olm

まとめ

 以上で、Operatorをコンテナをするまでの流れがわかったと思います。次回は前回に作成したOperatorをコンテナ化して実際に、OLMを使用してインストールできるようにする方法を説明します。