1.16. Red Hat OpenShift GitOps を使用した respectRBAC の設定
Argo CD の respectRBAC 機能は、Argo CD がクラスター上のリソースを監視する方法を制御します。デフォルトでは、Argo CD はクラスタースコープでクラスター上のすべての Kubernetes リソース (CRD) を監視しようとします。respectRBAC 機能を使用すると、リソースの除外を手動で設定することなく、コントローラー RBAC のみを使用して ArgoCD コントローラーによる特定のリソースの検出や同期を制限できます。
この機能を有効にするには、Argo CD リソースで .spec.controller.respectRBAC キーを設定します。このキーを設定すると、コントローラーはリストまたはアクセスできないリソースの監視を自動的に停止します。たとえば、こうすることで、Argo CD クラスターロールにより、Argo CD が OpenShift Routes を監視できなくなるといった状況が回避されます。監視できなくなると、同期中にリソースの監視ができない旨のエラーが発生してしまいます。
コマンドラインインターフェイス (CLI) または Web コンソールを使用して Argo CD インスタンスを作成し、respectRBAC 機能を有効にできます。
前提条件
Subscription リソースで namespace を作成して更新していることを確認し、Subscription がクラスタースコープの Argo CD インスタンスをホストできるようにします。詳細は、「Argo CD インスタンスを使用してクラスタースコープのリソースの管理」を参照してください。
1.16.1. CLI を使用した respectRBAC の設定 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して respectRBAC 機能を設定できます。
手順
respectRBAC機能を設定するには、YAML オブジェクトファイル (例:argo-cd-resource.yaml) を作成します。respectRBACを作成するためのArgoCDYAML の例:apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example-argocd spec: controller: respectRBAC: strict各項目の説明:
metadata.name- Argo CD インスタンスの名前を指定します。
spec.controller.respectRBAC-
ArgoCDリソースのspec.controller.respectRBACキーの値をnormalまたはstrictとして定義します。リソースの表示は軽量な操作であるため、精度と速度のバランスをとるために値をnormalに設定することを検討してください。値をnormalに設定したときに、Argo CD がリソースにアクセスできないことを示すエラーを報告する場合は、値をstrictに設定します。strictに設定すると、サーバーへの API 呼び出しの数が増え、Argo CD が RBAC リソースの追加検証を実行して権限を決定するため、normalよりも正確になります。
次のコマンドを実行して、YAML ファイルに変更を適用します。
$ oc apply -f argocd-resource.yaml -n argo-cd-instanceArgoCDリソースを含む YAML ファイルの名前と、ArgoCDをホストする namespace を指定します。次のコマンドを実行して、
.status.phaseフィールドのステータスがAvailableであることを確認します。$ oc get argocd <argocd_instance_name> -n <argocd_namespace> -o jsonpath='{.status.phase}'<argocd_instance_name>は、Argo CD インスタンスの名前に置き換えます (例:example-argocd)。ConfigMapリソースのresource.respectRBACパラメーターが正常に更新されていることを確認します。argocd-cmconfig map の内容を取得するには、次のコマンドを実行します。$ oc get cm argocd-cm -n <argocd_namespace> -o yaml-
argocd-cmConfigMapにresource.respectRBACパラメーターが含まれていることを確認し、その値がstrictまたはnormalに設定されていることを確認します。