Installer Policy Controller

Cette page vous explique comment installer Policy Controller. Policy Controller vérifie, audite et applique la conformité de vos clusters aux règles liées à la sécurité, aux réglementations ou aux règles métier.

Policy Controller est disponible si vous utilisez Anthos ou Google Kubernetes Engine (GKE). Avec GKE, Policy Controller est une fonctionnalité payante. Pour en savoir plus, consultez la section Tarifs.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  1. Installez et initialisez le SDK Cloud, qui fournit les commandes gcloud, gsutil, kubectl et nomos utilisées dans ces instructions. Si vous utilisez Cloud Shell, le SDK Cloud est pré-installé.

  2. Si vous utilisez Anthos Config Management pour la première fois, activez Anthos Config Management.

  3. Créez un cluster exécutant une version de Kubernetes 1.14.x ou ultérieure, ou assurez-vous d'y avoir accès. Policy Controller peut sembler s'exécuter sur une version de Kubernetes antérieure à 1.14.x, mais le produit ne se comporte pas correctement.

  4. Accorder les rôles IAM requis à l'utilisateur qui enregistre le cluster

  5. Si vous prévoyez de configurer Policy Controller à l'aide de l'outil de ligne de commande gcloud, enregistrez dès maintenant votre cluster dans un parc. Si vous prévoyez d'utiliser Google Cloud Console, enregistrez vos clusters lorsque vous installez Policy Controller.

Installer Policy Controller

Procédez comme suit pour configurer Anthos Config Management afin d'installer le contrôleur d'admission dynamique Policy Controller dans le cluster.

Console

Enregistrer vos clusters

Pour utiliser Anthos Config Management, vous devez d'abord enregistrer les clusters. L'enregistrement de vos clusters leur permet de partager un ensemble commun de configurations et de règles.

Pour enregistrer vos clusters, procédez comme suit :

  1. Dans Cloud Console :

    Ces pages présentent les clusters actuellement enregistrés et configurés, et vous permettent d'enregistrer de nouveaux clusters.

  2. Cliquez sur Nouvelle configuration.

  3. Sur la page Sélectionner des clusters enregistrés pour Config Management, localisez le tableau Clusters non enregistrés de ce projet, puis recherchez le cluster que vous souhaitez enregistrer.

  4. Cliquez sur Enregistrer en regard du cluster que vous souhaitez enregistrer.

    Une fois le cluster enregistré, il apparaît dans la table Sélectionner des clusters enregistrés pour Config Management.

Configurer Policy Controller

Pour installer Policy Controller sur Cloud Console, procédez comme suit :

  1. Sur la page Sélectionner des clusters enregistrés pour Config Management, sélectionnez le cluster enregistré sur lequel vous souhaitez activer Policy Controller, puis cliquez sur Suivant.
  2. Dans la liste déroulante Version, sélectionnez la version d'Anthos Config Management que vous souhaitez utiliser. La valeur par défaut est la version actuelle.
  3. Si vous ne souhaitez pas installer Config Sync, décochez la case Activer Config Sync, puis cliquez sur Suivant.
  4. Sur la page Policy Controller, laissez la case Activer Policy Controller cochée.
  5. Facultatif : Pour installer une bibliothèque de modèles de contrainte pour les types de règles courants, laissez la case Installer la bibliothèque de modèles par défaut cochée.
  6. Facultatif : dans le champ Intervalle d'audit, sélectionnez la durée en secondes entre les synchronisations consécutives. La valeur par défaut est de 60 secondes. Si vous définissez l'intervalle d'audit sur 0, l'audit est désactivé.
  7. (Facultatif) Dans le champ Exempt namespaces (Espaces de noms exemptés), indiquez une liste d'espaces de noms. 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 actuellement.
  8. Facultatif : Pour activer les contraintes référentielles, cochez la case Activer la possibilité d'utiliser des modèles de contraintes faisant référence à des objets autres que celui en cours d'évaluation.
  9. Cliquez sur Terminé. Vous êtes redirigé vers la page Anthos Config Management.

    Après quelques minutes, vous devriez voir Installé dans la colonne d'état Policy Controller à côté des clusters que vous avez configurés.

gcloud

  1. Préparez la configuration en créant un nouveau fichier manifeste apply-spec.yaml ou en utilisant un fichier manifeste existant. L'utilisation d'un fichier manifeste existant vous permet de configurer votre cluster avec les mêmes paramètres que ceux utilisés par un autre cluster.

Créer un nouveau fichier manifeste

Pour configurer Policy Controller avec de nouveaux paramètres pour votre cluster, créez un fichier nommé apply-spec.yaml et copiez-y le fichier YAML suivant :

# apply-spec.yaml

applySpecVersion: 1
spec:
  policyController:
    # Set to true to install and enable Policy Controller
    enabled: true
    # Uncomment to prevent the template library from being installed
    # templateLibraryInstalled: false
    # Uncomment to enable support for referential constraints
    # referentialRulesEnabled: true
    # Uncomment to disable audit, adjust value to set audit interval
    # auditIntervalSeconds: 0
    # Uncomment to log all denies and dryrun failures
    # logDeniesEnabled: true
    # Uncomment to exempt namespaces
    # exemptableNamespaces: ["namespace-name"]
    # Uncomment to enable mutation (preview feature)
    # mutation:
    #   # enabled: true
  # ...other fields...

Vous devez ajouter un champ spec.policyController et définir la valeur de enabled sur true. Vous pouvez choisir d'activer d'autres fonctionnalités de Policy Controller. Toutefois, la prise en charge des contraintes référentielles est désactivée par défaut. Avant de l'activer, veillez à vous familiariser avec les mises en garde concernant la cohérence à terme.

Utiliser un fichier manifeste existant

Pour configurer votre cluster avec les mêmes paramètres que ceux utilisés par un autre cluster, récupérez les paramètres d'un cluster enregistré :

gcloud alpha container hub config-management fetch-for-apply \
     --membership=MEMBERSHIP_NAME \
     --project=PROJECT_ID \
     > CONFIG_YAML_PATH

Remplacez les éléments suivants :

  • MEMBERSHIP_NAME : nom de l'appartenance du cluster enregistré contenant les paramètres Policy Controller que vous souhaitez utiliser.
  • PROJECT_ID : ID de votre projet.
  • CONFIG_YAML_PATH : chemin d'accès au fichier apply-spec.yaml.

2. Appliquez le fichier apply-spec.yaml :

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

Remplacez les éléments suivants :

  • MEMBERSHIP_NAME : nom de l'appartenance du cluster enregistré contenant les paramètres Policy Controller que vous souhaitez utiliser.
  • CONFIG_YAML : ajoutez le chemin d'accès à votre fichier apply-spec.yaml.
  • PROJECT_ID : ajoutez l'ID de votre projet.

Le pod est créé, et Policy Controller commence à vérifier et à appliquer les contraintes.

Installer Policy Controller sur un cluster privé

Si vous utilisez une version antérieure à la version 1.8.0 et que vous installez Policy Controller sur un cluster privé dans Google Kubernetes Engine (GKE), vous devez prendre des mesures supplémentaires pour terminer votre installation. Dans les clusters privés, le pare-feu empêche le plan de contrôle d'atteindre les nœuds du port 8443, où le plan de contrôle tente de se connecter à Policy Controller. Vous pouvez créer une règle de pare-feu pour que le plan de contrôle puisse atteindre le port 8443 (ou tout autre port personnalisé). Vous pouvez également exécuter votre pod sur le port privilégié 443. Pour plus d'informations, consultez la section Exécution sur des nœuds de cluster GKE privés dans la documentation GateKeeper.

Vérifiez l'installation

Après avoir installé Policy Controller, vous pouvez vérifier qu'il s'est exécuté avec succès.

Console

Procédez comme suit :

  1. Dans Cloud Console :

  2. Dans le tableau du cluster, affichez la colonne État du Policy Controller. Une installation réussie présente l'état Installé.

gcloud

Exécutez la commande suivante :

gcloud beta container hub config-management status \
    --project=PROJECT_ID

Remplacez PROJECT_ID par l'ID de votre projet.

Un résultat semblable aux lignes suivantes doit s'afficher :

Name          Status  Last_Synced_Token  Sync_Branch  Last_Synced_Time      Policy_Controller
CLUSTER_NAME  SYNCED  a687c2c            1.0.0        2021-02-17T00:15:55Z  INSTALLED

Une installation réussie affiche l'état INSTALLED dans la colonne Policy Controller.

Vérifier l'installation de la bibliothèque de modèles de contraintes

Lorsque vous installez Policy Controller, la bibliothèque de modèles de contraintes est installée par défaut. Cette installation peut prendre plusieurs minutes.

Pour vérifier que la bibliothèque de modèles est installée, répertoriez tous les objets ConstraintTemplate :

kubectl get constrainttemplates

Un résultat semblable aux lignes suivantes doit s'afficher :

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Lorsqu'un modèle de contrainte individuelle est installé correctement, son champ status.created est true.

Interactions de Policy Controller avec Anthos Config Management

Anthos Config Management gère les ressources essentielles à l'exécution de Policy Controller. Pour éviter les conflits entre Anthos Config Management et Policy Controller, soyez conscient de ce qui est placé dans le dépôt Config Sync.

Lorsque vous utilisez Policy Controller, posez-vous les questions suivantes :

  • Vous ne pouvez pas synchroniser un modèle de contrainte qui fait également partie de la bibliothèque de modèles, sauf si la bibliothèque de modèles de contraintes est désactivée.

  • Si vous souhaitez synchroniser la ressource de configuration stockée dans l'espace de noms gatekeeper-system, celui-ci doit être indéfini dans le dépôt ou correspondre à la configuration qu'Anthos Config Management doit installer.

  • Si l'espace de noms gatekeeper-system est supprimé du dépôt source de référence, Anthos Config Management risque de ne pas pouvoir le récupérer. Pour récupérer les données, supprimez la validation de configuration du webhook pour Policy Controller.

Gérer la bibliothèque de modèles de contraintes

Pour en savoir plus sur la désinstallation ou la réinstallation des modèles de contraintes, les contraintes associées ou la bibliothèque de modèles de contraintes, consultez la page Créer des contraintes.

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

Vous pouvez configurer Policy Controller pour ignorer des objets dans un espace de noms. Pour en savoir plus, consultez la page Exclure des espaces de noms de Policy Controller.

Muter des ressources

Policy Controller agit également comme un webhook de mutation (fonctionnalité d'aperçu). Pour en savoir plus, consultez la section Muter des ressources.

Afficher la version de Policy Controller

Pour connaître la version de Gatekeeper que Policy Controller utilise, affichez le tag d'image en exécutant la commande suivante :

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

À partir d'Anthos Config Management version 1.3.2 ou ultérieure, le tag Git (ou le hachage) utilisé pour créer Gatekeeper ainsi que le numéro de version Anthos Config Management sont inclus dans le tag d'image comme suit :

.../gatekeeper:VERIOSN_NUMBER-GIT_TAG.gBUILD_NUMBER

Par exemple, pour l'image suivante :

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 est le numéro de version.
  • 480baac est le tag Git.
  • 0 est le numéro de build.

Vous pouvez également afficher la liste de toutes les versions Anthos Config Management avec les fichiers manifestes, les installations et les versions binaires nomos correspondantes dans la matrice des versions.

Mettre à niveau Policy Controller

Policy Controller est mis à niveau chaque fois que vous mettez à niveau Anthos Config Management. Pour en savoir plus, consultez la page Mettre à niveau Anthos Config Management.

Désinstaller Policy Controller

Suivez ces étapes pour désinstaller Policy Controller de vos clusters.

Console

Pour désactiver Policy Controller sur vos clusters, effectuez les tâches suivantes :

  1. Dans Cloud Console :

  2. À côté du cluster sur lequel vous souhaitez désactiver Policy Controller, cliquez sur Modifier.

  3. Pour accéder à la page de configuration de Policy Controller, cliquez sur Suivant.

  4. Décochez la case Activer Policy Controller.

  5. Cliquez sur Terminé.

gcloud

Pour désinstaller Policy Controller, procédez comme suit :

  1. Modifiez la configuration d'Anthos Config Management dans votre fichier apply-spec.yaml et définissez policyController.enabled sur false.

  2. Appliquez les modifications dans le fichier apply-spec.yaml :

     gcloud beta container hub config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Remplacez l'élément suivant :

    • CLUSTER_NAME : ajoutez le cluster enregistré auquel vous souhaitez appliquer cette configuration.
    • CONFIG_YAML : ajoutez le chemin d'accès à votre fichier apply-spec.yaml.
    • PROJECT_ID : ajoutez l'ID de votre projet.

Une fois qu'Anthos Config Management supprime l'outil de finalisation policycontroller.configmanagement.gke.io, la désinstallation est terminée.

Si vous souhaitez désinstaller complètement Anthos Config Management, consultez la section Désinstaller Anthos Config Management.

Étape suivante