このページでは、Policy Controller で除外する Namespace の構成方法について説明します。
除外する Namespace では、Policy Controller を使用したアドミッション Webhook の適用対象から Namespace は除外されますが、違反があれば今後も監査で報告されます。Namespace を構成しない場合は、gatekeeper-system
Namespace のみが、Policy Controller アドミッション Webhook の適用対象外として事前構成されます。
除外する Namespace を構成する
除外する Namespace を構成すると、admission.gatekeeper.sh/ignore
ラベルを適用して、Policy Controller アドミッション Webhook の適用から Namespace を除外できます。除外可能な Namespace を後で削除しても、Policy Controller は Namespace から admission.gatekeeper.sh/ignore
ラベルを削除しません。
Namespace を適用の対象外にする
Namespace の除外は Policy Controller のインストール中またはインストール後に行えます。次のプロセスは、インストール後に Namespace を除外する方法を示しています。
コンソール
- Google Cloud コンソールで [GKE Enterprise] に移動し、[体制の管理] の下にある [ポリシー] を選択します。
- [設定] タブのクラスタ テーブルで、[構成の編集] 列にある [編集 edit] を選択します。
- [Policy Controller の構成を編集] メニューを開きます。
- [Exempt namespaces] フィールドに、有効な Namespace のリストを入力します。これらの Namespace 内のオブジェクトは、すべてのポリシーで無視されます。この時点で Namespace が存在している必要はありません。
- [変更を保存] をクリックします。
gcloud Policy Controller
アドミッション Webhook によって適用から除外される Namespace のリストに Namespace を追加するには、次のコマンドを実行します。
gcloud container fleet policycontroller update \
--memberships=MEMBERSHIP_NAME \
--exemptable-namespaces=[NAMESPACE_LIST]
次のように置き換えます。
MEMBERSHIP_NAME
: Namespace を除外する登録済みクラスタのメンバーシップ名。複数のメンバーシップを指定する場合は、カンマ区切りで指定します。NAMESPACE_LIST
: Policy Controller の適用対象から除外する Namespace のカンマ区切りリスト。
このコマンドは、アドミッション Webhook からのみリソースを除外します。リソースは引き続き監査されます。Namespace を監査から除外するには、代わりにポリシー バンドル レベルで除外を設定します。
gcloud container fleet policycontroller content bundles set BUNDLE_NAME \
--memberships=MEMBERSHIP_NAME \
--exempted-namespaces=[NAMESPACE_LIST]
次のように置き換えます。
BUNDLE_NAME
は、除外された Namespace で更新するポリシー バンドルの名前に置き換えます。MEMBERSHIP_NAME
: Namespace を除外する登録済みクラスタのメンバーシップ名。複数のメンバーシップを指定する場合は、カンマ区切りで指定します。NAMESPACE_LIST
: Policy Controller の適用対象から除外する Namespace のカンマ区切りリスト。
gcloud ConfigManagement
Namespace の適用を解除するには、次のように
spec.policyController.exemptableNamespaces
に Namespace の名前を追加します。# apply-spec.yaml applySpecVersion: 1 spec: # Set to true to install and enable Policy Controller policyController: enabled: true exemptableNamespaces: ["NAMESPACE_NAME"] ...
NAMESPACE_NAME は、適用から除外する Namespace の名前に置き換えます。
複数の Namespace を除外することもできます。たとえば、Namespace
not-applicable
とalso-not-applicable
を追加するには、次のマニフェストを適用します。# apply-spec.yaml applySpecVersion: 1 spec: # Set to true to install and enable Policy Controller policyController: enabled: true exemptableNamespaces: ["not-applicable","also-not-applicable"] ...
変更を
apply-spec.yaml
ファイルに追加します。gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
次のように置き換えます。
- MEMBERSHIP_NAME: この構成を適用する登録済みクラスタを追加します。Google Cloud Console にクラスタを登録した場合、メンバーシップ名はクラスタの名前と同じになります。
- CONFIG_YAML:
apply-spec.yaml
ファイルのパスを追加します。 - PROJECT_ID: プロジェクト ID を追加します。
除外可能な Namespace にラベルを付けて、Policy Controller のアドミッション Webhook でその内容が適用されないようにします。
kubectl label namespace NAMESPACE_NAME "admission.gatekeeper.sh/ignore=true"
NAMESPACE_NAME は、適用から除外する Namespace の名前に置き換えます。
適用から除外する Namespace
以下は、Google Kubernetes Engine(GKE)と関連プロダクトによって作成される可能性のある Namespace です。望ましくない影響を避けるために、次のものを適用除外することをおすすめします。
- anthos-creds
- anthos-identity-service
- apigee
- apigee-system
- asm-system
- capi-kubeadm-bootstrap-system
- capi-system
- cert-manager
- cnrm-system
- config-management-monitoring
- config-management-system
- gke-connect
- gke-gmp-system
- gke-managed-cim
- gke-managed-filestorecsi
- gke-managed-metrics-server
- gke-managed-system
- gke-system
- gmp-public
- gmp-system
- hnc-system
- istio-system
- kube-node-lease
- kube-public
- kube-system
- poco-trial
- resource-group-system
- vm-system