Exclure des espaces de noms de Policy Controller

Cette page explique comment configurer des espaces de noms exemptés dans Policy Controller.

Les espaces de noms exemptés suppriment un espace de noms de l'application du webhook d'admission avec Policy Controller, mais les violations sont toujours signalées dans l'audit. Si vous ne configurez aucun espace de noms, seul l'espace de noms gatekeeper-system est préconfiguré pour être exempté de l'application du webhook d'admission Policy Controller.

Configurer des espaces de noms exemptés

La configuration d'un espace de noms exempté vous permet d'appliquer le libellé admission.gatekeeper.sh/ignore pour exempter l'espace de noms de l'application du webhook d'admission Policy Controller. Si vous supprimez ultérieurement un espace de noms exempté, Policy Controller ne supprime pas le libellé admission.gatekeeper.sh/ignore de l'espace de noms.

Exempter des espaces de noms de l'application forcée

Vous pouvez exempter des espaces de noms pendant l'installation de Policy Controller ou après l'installation. Le processus suivant vous montre comment exempter des espaces de noms après l'installation.

Console

  1. Dans la console Google Cloud, accédez à la page Stratégie de GKE Enterprise dans la section Gestion de la stratégie.

    Accéder au règlement

  2. Dans l'onglet Paramètres, dans la table des clusters, sélectionnez Modifier dans la colonne Modifier la configuration.
  3. Développez le menu Modifier la configuration de Policy Controller.
  4. Dans le champ Exempter les espaces de noms, fournissez la liste des espaces de noms valides. Les objets de ces espaces de noms sont ignorés par toutes les règles. Les espaces de noms n'ont pas besoin d'exister pour le moment.
  5. Sélectionnez Enregistrer les modifications.

gcloud Policy Controller

Pour ajouter des espaces de noms à la liste des espaces de noms qui peuvent être exemptés d'application par le webhook d'admission, exécutez la commande suivante:

  gcloud container fleet policycontroller update \
    --memberships=MEMBERSHIP_NAME \
    --exemptable-namespaces=[NAMESPACE_LIST]

Remplacez les éléments suivants :

  • MEMBERSHIP_NAME: nom d'appartenance du cluster enregistré sur lequel exempter les espaces de noms. Vous pouvez spécifier plusieurs abonnements séparés par une virgule.
  • NAMESPACE_LIST: liste d'espaces de noms séparés par une virgule que Policy Controller ne doit pas appliquer.

Cette commande exclut les ressources uniquement du webhook d'admission. Les ressources sont toujours auditées. Pour exempter des espaces de noms de l'audit, définissez plutôt l'exception au niveau du groupe de règles:

  gcloud container fleet policycontroller content bundles set BUNDLE_NAME \
    --memberships=MEMBERSHIP_NAME \
    --exempted-namespaces=[NAMESPACE_LIST]

Remplacez les éléments suivants :

  • BUNDLE_NAME par le nom du groupe de règles que vous souhaitez mettre à jour avec des espaces de noms exemptés.
  • MEMBERSHIP_NAME: nom d'appartenance du cluster enregistré sur lequel exempter les espaces de noms. Vous pouvez spécifier plusieurs abonnements séparés par une virgule.
  • NAMESPACE_LIST: liste d'espaces de noms séparés par une virgule que Policy Controller ne doit pas appliquer.

gcloud ConfigManagement

  1. Pour qu'un espace de noms soit exempté de l'application forcée, ajoutez son nom dans spec.policyController.exemptableNamespaces :

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["NAMESPACE_NAME"]
    ...
    

    Remplacez NAMESPACE_NAME par le nom de l'espace de noms que vous ne souhaitez pas appliquer.

    Vous pouvez également exempter plusieurs espaces de noms. Par exemple, pour ajouter les espaces de noms not-applicable et also-not-applicable, vous devez appliquer le fichier manifeste suivant:

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["not-applicable","also-not-applicable"]
    ...
    
  2. Appliquez les modifications au fichier apply-spec.yaml :

     gcloud beta container fleet config-management apply \
         --membership=MEMBERSHIP_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Remplacez les éléments suivants :

    • MEMBERSHIP_NAME : ajoutez le cluster enregistré auquel vous souhaitez appliquer cette configuration. Si vous avez enregistré le cluster dans Google Cloud Console, le nom de l'appartenance est identique à celui de votre cluster.
    • CONFIG_YAML : ajoutez le chemin d'accès à votre fichier apply-spec.yaml.
    • PROJECT_ID : ajoutez l'ID de votre projet.
  3. Ajoutez un libellé à votre espace de noms exempté afin que le webhook d'admission de Policy Controller n'applique pas son contenu:

    kubectl label namespace NAMESPACE_NAME "admission.gatekeeper.sh/ignore=true"
    

    Remplacez NAMESPACE_NAME par le nom de l'espace de noms que vous ne souhaitez pas appliquer.

Espaces de noms à dispenser d'application

Voici quelques espaces de noms qui peuvent être créés par Google Kubernetes Engine (GKE) et les produits associés. Vous pouvez les dispenser de cette mesure pour éviter tout impact indésirable:

- 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