This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.5.4.4. operator_sdk.util Ansible コレクションを使用したカスタムリソースのステータス管理
Ansible ベースの Operator は、カスタムリソース (CR) status
サブリソース を以前の Ansible 実行についての一般的な情報で自動的に更新します。これには、以下のように成功したタスクおよび失敗したタスクの数と関連するエラーメッセージが含まれます。
status: conditions: - ansibleResult: changed: 3 completion: 2018-12-03T13:45:57.13329 failures: 1 ok: 6 skipped: 0 lastTransitionTime: 2018-12-03T13:45:57Z message: 'Status code was -1 and not [200]: Request failed: <urlopen error [Errno 113] No route to host>' reason: Failed status: "True" type: Failure - lastTransitionTime: 2018-12-03T13:46:13Z message: Running reconciliation reason: Running status: "True" type: Running
さらに Ansible ベースの Operator は、Operator の作成者が operator_sdk.util
コレクション に含まれる k8s_status
Ansible モジュールでカスタムのステータス値を指定できるようにします。これにより、作成者は必要に応じ、任意のキー/値のペアを使って Ansible から status
を更新できます。
デフォルトでは、Ansible ベースの Operator には、上記のように常に汎用的な Ansible 実行出力が含まれます。アプリケーションのステータスが Ansible 出力で更新 されない ようにする必要がある場合に、アプリケーションからステータスを手動で追跡することができます。
手順
CR ステータスをアプリケーションから手動で追跡するには、
manageStatus
フィールドをfalse
に設定してwatches.yaml
ファイルを更新します。- version: v1 group: api.example.com kind: Test1 role: Test1 manageStatus: false
operator_sdk.util.k8s_status
Ansible モジュールを使用してサブリソースを更新します。たとえば、キーtest1
および値test2
を使用して更新するには、operator_sdk.util
を以下のように使用することができます。- operator_sdk.util.k8s_status: api_version: app.example.com/v1 kind: Test1 name: "{{ meta.name }}" namespace: "{{ meta.namespace }}" status: test1: test2
コレクションは、新たにスキャフォールディングされた Ansible Operator に含まれるロールの
meta/main.yml
で宣言することもできます。collections: - operator_sdk.util
ロールのメタでコレクションを宣言すると、
k8s_status
モジュールを直接起動することができます。k8s_status: <snip> status: test1: test2
追加リソース
- Ansible ベース Operator からのユーザー主導のステータス管理を行う方法についての詳細は、Ansible-based Operator Status Proposal for Operator SDK を参照してください。