5.4. Ansible ベースの Operator
5.4.1. Ansible ベースの Operator の Operator SDK の使用を開始する リンクのコピーリンクがクリップボードにコピーされました!
Operator プロジェクトを生成するための Operator SDK には、Go コードを作成せずに Kubernetes リソースを統一されたアプリケーションとしてデプロイするために、既存の Ansible Playbook およびモジュールを使用するオプションがあります。
Operator SDK によって提供されるツールおよびライブラリーを使用して Ansible ベースの Operator をセットアップし、実行するための基本を示すには、Operator 開発者は Memcached の Ansible ベースの Operator のサンプルをビルドして、分散キー/値のストアを作成し、クラスターへデプロイすることができます。
5.4.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Operator SDK CLI がインストールされている。
-
OpenShift CLI (
oc) v4.13 以降がインストールされている - Ansible v2.9.0
- Ansible Runner v2.0.2+
- Ansible Runner HTTP Event Emitter プラグイン v1.0.0+
- Python 3.8.6 以降
- OpenShift Python クライアント v0.12.0 以降
-
cluster-adminパーミッションを持つアカウントを使用して、ocで OpenShift Container Platform 4.13 クラスターにログインしている - クラスターがイメージをプルできるように、イメージをプッシュするリポジトリーを public として設定するか、イメージプルシークレットを設定している。
5.4.1.2. Ansible ベース Operator の作成およびデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Operator SDK を使用して、単純な Memcached の Ansible ベースの Operator をビルドし、デプロイできます。
手順
プロジェクトを作成します。
プロジェクトディレクトリーを作成します。
$ mkdir memcached-operatorプロジェクトディレクトリーに移動します。
$ cd memcached-operatoransibleプラグインを指定してoperator-sdk initコマンドを実行し、プロジェクトを初期化します。$ operator-sdk init \ --plugins=ansible \ --domain=example.com
API を作成します。
単純な Memcached API を作成します。
$ operator-sdk create api \ --group cache \ --version v1 \ --kind Memcached \ --generate-role1 - 1
- API の Ansible ロールを生成します。
Operator イメージをビルドし、プッシュします。
デフォルトの
Makefileターゲットを使用して Operator をビルドし、プッシュします。プッシュ先となるレジストリーを使用するイメージのプル仕様を使用してIMGを設定します。$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>Operator を実行します。
CRD をインストールします。
$ make installプロジェクトをクラスターにデプロイします。
IMGをプッシュしたイメージに設定します。$ make deploy IMG=<registry>/<user>/<image_name>:<tag>
サンプルカスタムリソース (CR) を作成します。
サンプル CR を作成します。
$ oc apply -f config/samples/cache_v1_memcached.yaml \ -n memcached-operator-systemOperator を調整する CR を確認します。
$ oc logs deployment.apps/memcached-operator-controller-manager \ -c manager \ -n memcached-operator-system出力例
... I0205 17:48:45.881666 7 leaderelection.go:253] successfully acquired lease memcached-operator-system/memcached-operator {"level":"info","ts":1612547325.8819902,"logger":"controller-runtime.manager.controller.memcached-controller","msg":"Starting EventSource","source":"kind source: cache.example.com/v1, Kind=Memcached"} {"level":"info","ts":1612547325.98242,"logger":"controller-runtime.manager.controller.memcached-controller","msg":"Starting Controller"} {"level":"info","ts":1612547325.9824686,"logger":"controller-runtime.manager.controller.memcached-controller","msg":"Starting workers","worker count":4} {"level":"info","ts":1612547348.8311093,"logger":"runner","msg":"Ansible-runner exited successfully","job":"4037200794235010051","name":"memcached-sample","namespace":"memcached-operator-system"}
Delete a CR.
次のコマンドを実行して CR を削除します。
$ oc delete -f config/samples/cache_v1_memcached.yaml -n memcached-operator-systemクリーンアップします。
以下のコマンドを実行して、この手順の一部として作成されたリソースをクリーンアップします。
$ make undeploy
5.4.1.3. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
- Ansible ベースの Operator のビルドに関する詳細な手順は、Ansible ベースの Operator の Operator SDK チュートリアル を参照してください。