2.3.4. カスタムポリシーコントローラーの作成
カスタムポリシーコントローラーの作成、適用、表示、および更新について説明します。ポリシーコントローラーがクラスターにデプロイする YAML ファイルを作成できます。以下のセクションを参照して、ポリシーコントローラーを作成します。
2.3.4.1. ポリシーコントローラーの作成 リンクのコピーリンクがクリップボードにコピーされました!
multicloud-operators-policy-controller
リポジトリーにあるポリシーコントローラーフレームワークを使用します。ポリシーコントローラーを作成するには、以下の手順を完了します。
以下のコマンドを実行して
multicloud-operators-policy-controller
リポジトリーのクローンを作成します。git clone git@github.com:open-cluster-management/multicloud-operators-policy-controller.git
git clone git@github.com:open-cluster-management/multicloud-operators-policy-controller.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシースキーマ定義を更新してコントローラーポリシーをカスタマイズします。ポリシーは次のような内容になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SamplePolicy
の種類を監視するようにポリシーコントローラーを更新します。以下のコマンドを実行します。for file in $(find . -name "*.go" -type f); do sed -i "" "s/SamplePolicy/g" $file; done for file in $(find . -name "*.go" -type f); do sed -i "" "s/samplepolicy-controller/samplepolicy-controller/g" $file; done
for file in $(find . -name "*.go" -type f); do sed -i "" "s/SamplePolicy/g" $file; done for file in $(find . -name "*.go" -type f); do sed -i "" "s/samplepolicy-controller/samplepolicy-controller/g" $file; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順を実行してポリシーコントローラーを再コンパイルし、実行します。
- クラスターにログインします。
- ユーザーアイコンを選択し、クライアントの設定 をクリックします。
- 設定情報をコマンドラインにコピーアンドペーストし、Enter を押します。
以下のコマンドを実行してポリシー CRD を適用し、コントローラーを起動します。
export GO111MODULE=on kubectl apply -f deploy/crds/policy.open-cluster-management.io_samplepolicies_crd.yaml operator-sdk run --local --verbose
export GO111MODULE=on kubectl apply -f deploy/crds/policy.open-cluster-management.io_samplepolicies_crd.yaml operator-sdk run --local --verbose
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントローラーが実行していることを示す以下の出力が表示される場合があります。
{“level”:”info”,”ts”:1578503280.511274,”logger”:”controller-runtime.manager”,”msg”:”starting metrics server”,”path”:”/metrics”} {“level”:”info”,”ts”:1578503281.215883,”logger”:”controller-runtime.controller”,”msg”:”Starting Controller”,”controller”:”samplepolicy-controller”} {“level”:”info”,”ts”:1578503281.3203468,”logger”:”controller-runtime.controller”,”msg”:”Starting workers”,”controller”:”samplepolicy-controller”,”worker count”:1} Waiting for policies to be available for processing…
{“level”:”info”,”ts”:1578503280.511274,”logger”:”controller-runtime.manager”,”msg”:”starting metrics server”,”path”:”/metrics”} {“level”:”info”,”ts”:1578503281.215883,”logger”:”controller-runtime.controller”,”msg”:”Starting Controller”,”controller”:”samplepolicy-controller”} {“level”:”info”,”ts”:1578503281.3203468,”logger”:”controller-runtime.controller”,”msg”:”Starting workers”,”controller”:”samplepolicy-controller”,”worker count”:1} Waiting for policies to be available for processing…
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシーを作成し、コントローラーがポリシーを取得し、そのポリシーをクラスターに適用していることを確認します。以下のコマンドを実行します。
kubectl apply -f deploy/crds/policy.open-cluster-management.io_samplepolicies_crd.yaml
kubectl apply -f deploy/crds/policy.open-cluster-management.io_samplepolicies_crd.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシーが適用されると、カスタムコントローラーによってポリシーが監視され、検出されることを示すメッセージが表示されます。メッセージは次のような内容になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
status
フィールドでコンプライアンスの詳細を確認します。kubectl describe SamplePolicy example-samplepolicy -n default
kubectl describe SamplePolicy example-samplepolicy -n default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は次のような内容になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシールールおよびポリシーロジックを変更して、ポリシーコントローラーの新規ルールを作成します。以下の手順を実行します。
SamplePolicySpec
を更新して、YAML ファイルに新規フィールドを追加します。仕様は次のような内容になります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
新しいフィールドを持つ samplepolicy_controller.go で、
SamplePolicySpec
構造を更新します。 -
samplepolicy_controller.go
ファイルのPeriodicallyExecSamplePolicies
関数を、ポリシーコントローラーを実行する新しいロジックで更新します。PeriodicallyExecSamplePolicies
フィールドの例については、open-cluster-management/multicloud-operators-policy-controller を参照してください。 - ポリシーコントローラーを再コンパイルし、実行します。「ポリシーコントローラーの作成」を参照してください。
ポリシーコントローラーが機能します。