9 Kubernetesでのオペレータの使用
重要:
このドキュメントで説明されているソフトウェアは、Extended SupportまたはSustaining Supportにあります。 詳細は、「Oracleオープン・ソース・サポート・ポリシー」を参照してください。
このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお勧めします。
この章では、Oracle Cloud Native EnvironmentのOperator Lifecycle Managerモジュールをインストールして使用し、Kubernetesクラスタでオペレータをインストールおよび管理する方法について説明します。
Kubernetesオペレータは、タスクを自動化してKubernetesを拡張するコードを記述できる設計パターンです。 これは、Kubernetesのサービスの定義に使用できる概念のセットで、Kubernetesの管理サービスの自動化に役立ちます。
Operator Lifecycle Managerモジュールは、インスタンスOperator Lifecycle ManagerをKubernetesクラスタにインストールします。これを使用して、Kubernetesクラスタ内のオペレータのインストールおよびライフサイクル管理を管理できます。 Operator Lifecycle Managerは基本的に、オペレータ・レジストリと対話するパッケージ・マネージャです。 Operator Lifecycle Managerの詳細は、次の場所にあるアップストリームのドキュメントを参照してください:
https://olm.operatorframework.io/
OperatorHubは、クラスタ内でオペレータをデプロイするために使用できるアップストリームKubernetesオペレータを含むオペレータ・レジストリです。 OperatorHubは次の場所にあります:
Operator Lifecycle Managerは、多くの方法でHelmと同じタスクを実行します。 Operator Lifecycle Managerが提供する主な追加機能は、Kubernetesソフトウェア内のカスタム・リソース定義(CRD)を検証するための組込みサポートがあることです。 CRDのあるオペレータは、これらのオペレータを使用して、依存関係が満たされ、インタフェースが重複しないようにできます。 それ以外の場合、Operator Lifecycle ManagerはHelmと同様の方法でデプロイメントを管理します。
Operator Lifecycle Managerモジュールのインストール
Operator Lifecycle Managerは、Oracle Cloud Native EnvironmentモジュールとしてKubernetesクラスタにインストールされます。
Operator Lifecycle Managerモジュールをインストールするには:
-
クラスタにHelmモジュールがまだインストールされていない場合は、インストールする必要があります。 オペレータ・ノードで、
olcnectl module create
コマンドを使用してHelmモジュールを作成します。 Kubernetesモジュールの名前を--helm-kubernetes-module
オプションで指定します。olcnectl module create \ --environment-name myenvironment \ --module helm \ --name myhelm \ --helm-kubernetes-module mycluster
olcnectl module install
コマンドを使用して、Helmモジュールをインストールします:olcnectl module install \ --environment-name myenvironment \ --name myhelm
-
olcnectl module create
コマンドを使用して、Operator Lifecycle Managerモジュールを作成します。--olm-helm-module
オプションを使用してHelmモジュールの名前を指定します。olcnectl module create \ --environment-name myenvironment \ --module operator-lifecycle-manager \ --name myolm \ --olm-helm-module myhelm
-
olcnectl module install
コマンドを使用して、Operator Lifecycle Managerモジュールをインストールします:olcnectl module install \ --environment-name myenvironment \ --name myolm
Operator Lifecycle Managerモジュールがデプロイされ、必要なコンテナが
operator-lifecycle-manager
ネームスペースで実行されています。
Operator Lifecycle Managerモジュールのデプロイメントの確認
Operator Lifecycle Managerモジュールがデプロイされ、必要なデプロイメントがoperator-lifecycle-manager
ネームスペースで実行されていることを確認します。 コンテナがデプロイされていることを確認するには、コントロール・プレーン・ノードでkubectl
コマンドを使用します。
必要なコンテナが実行中であることを確認するには、operator-lifecycle-manager
ネームスペースで実行されているデプロイメントをリストします。 次に示すような結果が表示されます。
kubectl get deploy -n operator-lifecycle-manager NAME READY UP-TO-DATE AVAILABLE AGE catalog-operator 1/1 1 1 2m36s olm-operator 1/1 1 1 2m36s packageserver 2/2 2 2 2m30s
Operator Lifecycle Managerモジュールとそのプロパティに関する情報を確認することもできます。
olcnectl module report
コマンドを使用して、モジュールに関する情報を確認します。
たとえば、次のコマンドを使用して、myenvironment
のmyolm
という名前のOperator Lifecycle Managerモジュールを確認します:
olcnectl module report \ --environment-name myenvironment \ --name myolm \ --children
olcnectl module report
コマンドの構文の詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。
オペレータ登録の一覧表示
コントロール・プレーン・ノードでkubectl
コマンドを使用して、使用可能なオペレータ・レジストリを表示できます:
kubectl get catalogsource -n operator-lifecycle-manager NAME DISPLAY TYPE PUBLISHER AGE operatorhubio-catalog Community Operators grpc OperatorHub.io 3m35s
OperatorHubレジストリが出力に表示されます。 これはデフォルトのオペレータ・レジストリです。
OperatorHubには、オペレータ・マニフェスト・ファイルに使用するテキストの例を示します。 OperatorHubの各オペレータ・ページには、オペレータ・マニフェスト・ファイルを作成するYAMLファイルの例があります。
オペレータのインストール
インストール可能なすべてのオペレータを表示するには、コントロール・プレーン・ノードでkubectl
コマンドを使用します:
kubectl get packagemanifest NAME CATALOG AGE vault Community Operators 3m22s submariner Community Operators 3m22s credstash-operator Community Operators 3m22s eunomia Community Operators 3m22s ibm-block-csi-operator-community Community Operators 3m22s ...
OperatorHubで使用可能なアップストリーム・オペレータのリストが表示されます。 これらはすべて、Operator Lifecycle Managerによってインストールできます。
オペレータ名とカタログを決定したら、オペレータのインストール方法をOperator Lifecycle Managerに指示するKubernetesリソースを作成する必要があります。 2つのリソースを作成する必要があります: OperatorGroup
およびSubscription
。 新しいネームスペースが作成されている場合は、同じオペレータ・マニフェスト・ファイルにNamespace
を作成できます。
オペレータのスタータ・オペレータ・マニフェスト・ファイルは、OperatorHubからダウンロードできます。
この例では、OperatorHubからプルされるetcd
オペレータの作成方法を示します。
オペレータを作成するには:
-
webブラウザで、OperatorHubに移動し、インストールするオペレータの名前を検索します。 OperatorHubは次の場所にあります:
この例では、次の場所にある
etcd
オペレータを使用します:https://operatorhub.io/operator/etcd
「Install」をクリックします。
オペレータをデプロイする
kubectl create
コマンドを示すダイアログが表示されます。 たとえば:kubectl create -f https://operatorhub.io/install/etcd.yaml
オペレータ・マニフェストYAMLファイルを含むこのコマンドのURLをコピーします。
-
コントロール・プレーン・ノードで、OperatorHubから
etcd
オペレータ・マニフェストYAMLファイルをダウンロードします:curl --remote-name https://operatorhub.io/install/etcd.yaml
-
このマニフェストYAMLファイルは、必要に応じて編集できます。 書込み時に、このファイルには、
etcd
オペレータのNamespace
、OperatorGroup
およびSubscription
の作成に必要な情報が含まれています:apiVersion: v1 kind: Namespace metadata: name: my-etcd --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: operatorgroup namespace: my-etcd spec: targetNamespaces: - my-etcd --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: my-etcd namespace: my-etcd spec: channel: singlenamespace-alpha name: etcd source: operatorhubio-catalog sourceNamespace: olm
このファイルを編集して、Operator Lifecycle Managerで適切に機能するように、
Subscription
セクションのsourceNamespace
をolm
からoperator-lifecycle-manager
に変更します。 Operator Lifecycle Managerは、アップストリーム・ネームスペースとは異なるoperator-lifecycle-manager
ネームスペースで実行されます。--- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: my-etcd namespace: my-etcd spec: channel: singlenamespace-alpha name: etcd source: operatorhubio-catalog sourceNamespace: operator-lifecycle-manager
-
kubectl apply
コマンドを使用して、etcd
オペレータをデプロイします。kubectl apply -f etcd.yaml namespace/my-etcd created operatorgroup.operators.coreos.com/operatorgroup created subscription.operators.coreos.com/my-etcd created
オペレータは、オペレータ・マニフェスト・ファイルに設定されたネームスペースにデプロイされます。この例では、
my-etcd
です。 -
オペレータ
ClusterServiceVersion
情報は、次を使用して表示できます:kubectl get csv -n my-etcd NAME DISPLAY VERSION REPLACES PHASE etcdoperator.v0.9.4 etcd 0.9.4 etcdoperator.v0.9.2 Succeeded
-
オペレータポッドが実行中であることがわかります:
kubectl get pods -n my-etcd NAME READY STATUS RESTARTS AGE etcd-operator-75fb7df8b5-42k7b 3/3 Running 0 5m45s
オペレータの削除
オペレータを削除してアンインストールするには、Kubernetesリソースを削除します。 たとえば、コントロール・プレーン・ノードで、kubectl delete
コマンドを使用してオペレータを削除します:
kubectl delete -f etcd.yaml namespace "my-etcd" deleted operatorgroup.operators.coreos.com "operatorgroup" deleted subscription.operators.coreos.com "my-etcd" deleted
Operator Lifecycle Managerモジュールのアンインストール
Operator Lifecycle Managerモジュールをアンインストールするには、olcnectl module uninstall
コマンドを使用してモジュールをアンインストールします。 たとえば:
olcnectl module uninstall \ --environment-name myenvironment \ --name myolm
Helmモジュールが不要になった場合は、アンインストールすることもできます。
olcnectl module uninstall \ --environment-name myenvironment \ --name myhelm