5.5.2.6. カスタムリソースの作成
Operator のインストール後に、Operator によってクラスターに提供されるカスタムリソース (CR) を作成して、これをテストできます。
前提条件
-
クラスターにインストールされている
NginxCR を提供する Nginx Operator の例
手順
Operator がインストールされている namespace へ変更します。たとえば、
make deployコマンドを使用して Operator をデプロイした場合は、以下のようになります。$ oc project nginx-operator-systemconfig/samples/demo_v1_nginx.yamlでNginxCR マニフェストのサンプルを編集し、以下の仕様が含まれるようにします。apiVersion: demo.example.com/v1 kind: Nginx metadata: name: nginx-sample ... spec: ... replicaCount: 3Nginx サービスアカウントには、OpenShift Container Platform で実行する特権アクセスが必要です。以下の SCC (Security Context Constraints) を
nginx-samplePod のサービスアカウントに追加します。$ oc adm policy add-scc-to-user \ anyuid system:serviceaccount:nginx-operator-system:nginx-sampleCR を作成します。
$ oc apply -f config/samples/demo_v1_nginx.yamlNginxOperator が、正しいサイズで CR サンプルのデプロイメントを作成することを確認します。$ oc get deployments出力例
NAME READY UP-TO-DATE AVAILABLE AGE nginx-operator-controller-manager 1/1 1 1 8m nginx-sample 3/3 3 3 1mステータスが Nginx Pod 名で更新されていることを確認するために、Pod および CR ステータスを確認します。
Pod を確認します。
$ oc get pods出力例
NAME READY STATUS RESTARTS AGE nginx-sample-6fd7c98d8-7dqdr 1/1 Running 0 1m nginx-sample-6fd7c98d8-g5k7v 1/1 Running 0 1m nginx-sample-6fd7c98d8-m7vn7 1/1 Running 0 1mCR ステータスを確認します。
$ oc get nginx/nginx-sample -o yaml出力例
apiVersion: demo.example.com/v1 kind: Nginx metadata: ... name: nginx-sample ... spec: replicaCount: 3 status: nodes: - nginx-sample-6fd7c98d8-7dqdr - nginx-sample-6fd7c98d8-g5k7v - nginx-sample-6fd7c98d8-m7vn7
デプロイメントサイズを更新します。
config/samples/demo_v1_nginx.yamlファイルを更新して、NginxCR のspec.sizeフィールドを3から5に変更します。$ oc patch nginx nginx-sample \ -p '{"spec":{"replicaCount": 5}}' \ --type=mergeOperator がデプロイメントサイズを変更することを確認します。
$ oc get deployments出力例
NAME READY UP-TO-DATE AVAILABLE AGE nginx-operator-controller-manager 1/1 1 1 10m nginx-sample 5/5 5 5 3m
次のコマンドを実行して CR を削除します。
$ oc delete -f config/samples/demo_v1_nginx.yamlこのチュートリアルの一環として作成したリソースをクリーンアップします。
Operator のテストに
make deployコマンドを使用した場合は、以下のコマンドを実行します。$ make undeployOperator のテストに
operator-sdk run bundleコマンドを使用した場合は、以下のコマンドを実行します。$ operator-sdk cleanup <project_name>