機械翻訳について

このドキュメントで説明されているソフトウェアは、サポートされなくなったか、拡張サポートされています。
Oracleでは、現在サポートされているリリースにアップグレードすることをお勧めします。

第9章 Kubernetesでのオペレータの使用

この章では、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は次の場所にあります:

https://operatorhub.io/

Operator Lifecycle Managerは、多くの方法でHelmと同じタスクを実行します。 Operator Lifecycle Managerが提供する主な追加機能は、Kubernetesソフトウェア内のカスタム・リソース定義(CRD)を検証するための組込みサポートがあることです。 CRDのあるオペレータは、これらのオペレータを使用して、依存関係が満たされ、インタフェースが重複しないようにできます。 それ以外の場合、Operator Lifecycle ManagerはHelmと同様の方法でデプロイメントを管理します。

9.1 Operator Lifecycle Managerモジュールのインストール

Operator Lifecycle Managerは、Oracle Cloud Native EnvironmentモジュールとしてKubernetesクラスタにインストールされます。

Operator Lifecycle Managerモジュールをインストールするには:
  1. クラスタに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
  2. 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
  3. olcnectl module installコマンドを使用して、Operator Lifecycle Managerモジュールをインストールします:

    olcnectl module install \
    --environment-name myenvironment \
    --name myolm 

    Operator Lifecycle Managerモジュールがデプロイされ、必要なコンテナがoperator-lifecycle-managerネームスペースで実行されています。

9.2 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コマンドを使用して、モジュールに関する情報を確認します。

たとえば、次のコマンドを使用して、myenvironmentmyolmという名前のOperator Lifecycle Managerモジュールを確認します:

olcnectl module report \
--environment-name myenvironment \
--name mycluster \
--children

olcnectl module reportコマンドの構文の詳細は、プラットフォーム・コマンドライン・インタフェースを参照してください。

9.3 オペレータ登録の一覧表示

コントロール・プレーン・ノードで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ファイルの例があります。

9.4 オペレータのインストール

インストール可能なすべてのオペレータを表示するには、コントロール・プレーン・ノードで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オペレータの作成方法を示します。

オペレータを作成するには:
  1. webブラウザで、OperatorHubに移動し、インストールするオペレータの名前を検索します。 OperatorHubは次の場所にあります:

    https://operatorhub.io/

    この例では、次の場所にあるetcdオペレータを使用します:

    https://operatorhub.io/operator/etcd

    インストールをクリックします。

    オペレータをデプロイするためのkubectl createコマンドを示すダイアログが表示されます。 たとえば:

    kubectl create -f https://operatorhub.io/install/etcd.yaml

    オペレータ・マニフェストYAMLファイルを含むこのコマンドのURLをコピーします。

  2. コントロール・プレーン・ノードで、OperatorHubからetcdオペレータ・マニフェストYAMLファイルをダウンロードします:

    curl --remote-name https://operatorhub.io/install/etcd.yaml
  3. このマニフェストYAMLファイルは、必要に応じて編集できます。 書込み時に、このファイルには、etcdオペレータのNamespaceOperatorGroupおよび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セクションのsourceNamespaceolmから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
  4. 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です。

  5. オペレータ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
  6. オペレータポッドが実行中であることがわかります:

    kubectl get pods -n my-etcd
    NAME                             READY   STATUS    RESTARTS   AGE
    etcd-operator-75fb7df8b5-42k7b   3/3     Running   0          5m45s

9.5 オペレータの削除

オペレータを削除してアンインストールするには、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

9.6 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