はじめに
前回は、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.com | Operatorのメタデータ | olm |
InstallPlan(ip) | installplans.operators.coreos.com | インストールしたOperatorの情報 | olm |
OperatorCondition(condition) | operatorconditions.operators.coreos.com | Operatorの管理情報 | olm |
OperatorGroup(og) | operatorgroups.operators.coreos.com | マルチテナント構成のOperator場合に使用Operatorの名前空間情報 | olm |
Subscription(sub,subs) | subscriptions.operators.coreos.com | Operatorの動作情報登録すると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を使用してインストールできるようにする方法を説明します。