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 Google Kubernetes Engine (GKE) Enterprise Edition. Pour en savoir plus, consultez les tarifs de l'édition Enterprise Google Kubernetes Engine (GKE).
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Installez et initialisez Google Cloud CLI, qui fournit les commandes
gcloud
,gsutil
,kubectl
etnomos
utilisées dans les présentes instructions. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commandegcloud components update
. Si vous utilisez Cloud Shell, Google Cloud CLI est préinstallé. - Assurez-vous que Open Source Open Policy Agent Gatekeeper n'est pas installé sur votre cluster. Si c'est le cas, désinstallez Gatekeeper avant d'installer Policy Controller.
Activez l'API Policy Controller.
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.
Accorder les rôles IAM requis à l'utilisateur qui enregistre le cluster
Si vous prévoyez d'utiliser Google Cloud CLI pour configurer Policy Controller, enregistrez votre cluster dans un fletet maintenant. Si vous prévoyez d'utiliser Google Cloud Console, enregistrez vos clusters lorsque vous installez Policy Controller.
Si vous utilisez des clusters associés à GKE, assurez-vous que votre cluster AKS ne comporte pas le module complémentaire Azure Policy et évitez d'étiqueter des espaces de noms avec la clé
control-plane
.Si vous utilisez Google Distributed Cloud sur VMware ou sur Bare Metal, veillez à installer Policy Controller sur un cluster d'utilisateur. Vous ne pouvez pas installer Policy Controller sur un cluster d'administrateur.
Installer Policy Controller
À partir de la version 1.16.0, si vous utilisez Google Cloud CLI, vous pouvez installer et gérer Policy Controller directement (recommandé) ou via l'objet ConfigManagement.
Console
Pour installer Policy Controller sur la console Google Cloud, procédez comme suit :
- Dans la console Google Cloud, accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
Sélectionnez add Installer Policy Controller.
Dans le volet Installation de Policy Controller, sélectionnez l'une des options d'installation suivantes:
Pour installer Policy Controller sur tous les clusters d'un parc:
Laissez l'option Installer dans votre parc sélectionnée.
Si vous n'avez pas de flotte dans votre projet, vous pouvez en créer une à l'étape suivante.
Si vous ne possédez pas encore de parc, choisissez un nom pour votre parc.
Sélectionnez Activer Policy Controller.
Pour installer Policy Controller sur des clusters individuels :
Sélectionnez Installer sur des clusters individuels.
Dans le tableau Clusters disponibles, sélectionnez les clusters sur lesquels vous souhaitez installer Policy Controller.
Sélectionnez Activer Policy Controller.
Vous êtes redirigé vers l'onglet Paramètres de Policy Controller. Lorsque Policy Controller est installé et configuré sur vos clusters, les colonnes d'état affichent Installé check_circle. Cette opération peut prendre plusieurs minutes.
gcloud Policy Controller
Activez Policy Controller en exécutant la commande suivante:
gcloud container fleet policycontroller enable \
--memberships=MEMBERSHIP_NAME
Vous pouvez définir des champs supplémentaires pour configurer Policy Controller. Par exemple, vous pouvez demander à Policy Controller d'exempter certains espaces de noms de l'application forcée.
Pour obtenir la liste complète des champs que vous pouvez configurer, consultez la documentation de Google Cloud CLI pour Policy Controller ou exécutez gcloud container fleet policycontroller enable --help
.
gcloud ConfigManagement
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 enable mutation # mutationEnabled: true # Uncomment to exempt namespaces # exemptableNamespaces: ["namespace-name"] # Uncomment to change the monitoring backends # monitoring: # backends: # - cloudmonitoring # - prometheus # ...other fields...
Vous devez ajouter un champ
spec.policyController
et définir la valeur deenabled
surtrue
. 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 fleet 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 fichierapply-spec.yaml
.
Appliquez le 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
: 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 fichierapply-spec.yaml
.PROJECT_ID
: ajoutez l'ID de votre projet.
Le pod est créé, et Policy Controller commence à vérifier et à appliquer les contraintes.
Vérifier l'installation de Policy Controller
Après avoir installé Policy Controller, vous pouvez vérifier qu'il s'est exécuté avec succès.
Console
Procédez comme suit :
- Dans la console Google Cloud, accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
- Sous l'onglet Paramètres, dans la table du cluster, consultez la colonne État du Policy Controller. Une installation réussie présente l'état Installécheck_circle.
gcloud Policy Controller
Exécutez la commande ci-dessous.
gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME
Une installation réussie affiche membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE
.
gcloud ConfigManagement
Exécutez la commande ci-dessous.
gcloud beta container fleet 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. Vous pouvez vérifier que la bibliothèque de modèles a bien été exécutée.
Console
Procédez comme suit :
- Dans la console Google Cloud, accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
- Sous l'onglet Paramètres, dans la table du cluster, sélectionnez le nombre répertorié dans la colonne Groupes installés. Dans le volet État du contenu de la règle, une installation réussie de la bibliothèque de modèles affiche l'état Installée check_circle.
gcloud
Exécutez la commande ci-dessous.
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
.
Configurer les valeurs par défaut au niveau du parc
Si vous avez activé l'édition Enterprise Google Kubernetes Engine (GKE), vous pouvez activer et configurer Policy Controller en tant que valeur par défaut au niveau du parc pour vos clusters. Cela signifie que Policy Controller est activé sur le cluster avec les paramètres que vous spécifiez pour chaque nouveau cluster GKE sur Google Cloud enregistré lors de la création du cluster. Pour en savoir plus sur la configuration par défaut du parc, consultez la page Gérer les fonctionnalités au niveau du parc.
Pour configurer les valeurs par défaut au niveau du parc pour Policy Controller, procédez comme suit :
Console
Dans la console Google Cloud, accédez à la page Gestionnaire de fonctionnalités.
Dans le volet Stratégie, cliquez sur Configurer.
Vérifiez vos paramètres au niveau du parc. Tous les nouveaux clusters que vous enregistrerez dans le parc hériteront de ces paramètres.
Facultatif : Pour modifier les paramètres par défaut, cliquez sur Personnaliser les paramètres du parc. Dans la boîte de dialogue qui apparaît, procédez comme suit :
- Dans la section Ajouter/Modifier des groupes de règles, incluez ou excluez un groupe de règles en cliquant sur le bouton d'activation correspondant.
- Dans la section Modifier la configuration de Policy Controller, procédez comme suit :
- Pour activer le webhook de mutation, cochez la case Activer le webhook de mutation. Cette fonctionnalité n'est pas compatible avec les clusters Autopilot.
- Dans la zone Intervalle d'audit, saisissez la durée en secondes entre deux audits consécutifs.
- Dans le champ Espaces de noms pouvant être exclus, saisissez une liste d'espaces de noms. Policy Controller ignore les objets de ces espaces de noms.
- Pour activer les contraintes référentielles, cochez la case Activer les modèles de contraintes faisant référence à des objets autres que celui en cours d'évaluation.
- Dans la liste Version, sélectionnez la version de Policy Controller que vous souhaitez utiliser.
- Cliquez sur Enregistrer les modifications.
Cliquez sur Configurer.
Dans la boîte de dialogue de confirmation, cliquez sur Confirmer. Si vous n'avez pas encore activé Policy Controller, cliquez sur Confirmer pour activer l'API
anthospolicycontroller.googleapis.com
.Facultatif : Synchronisez les clusters existants avec les paramètres par défaut :
- Dans la liste Clusters du parc, sélectionnez les clusters que vous souhaitez synchroniser.
- Cliquez sur Synchroniser avec les paramètres du parc, puis sur Confirmer dans la boîte de dialogue de confirmation qui s'affiche. Cette opération peut durer quelques minutes.
gcloud
Créez un fichier nommé
fleet-default.yaml
contenant les configurations par défaut de Policy Controller. Le champinstallSpec
est obligatoire pour activer les valeurs par défaut au niveau du parc. Cet exemple montre les options que vous pouvez configurer:# cat fleet-default.yaml policyControllerHubConfig: installSpec: INSTALL_SPEC_ENABLED # Uncomment to set default deployment-level configurations. # deploymentConfigs: # admission: # containerResources: # limits: # cpu: 1000m # memory: 8Gi # requests: # cpu: 500m # memory: 4Gi # Uncomment to set policy bundles that you want to install by default. # policyContent: # bundles: # cis-k8s-v1.5.1: # exemptedNamespaces: # - "namespace-name" # Uncomment to exempt namespaces from admission. # exemptableNamespaces: # - "namespace-name" # 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 enable mutation # mutationEnabled: true # Uncomment to adjust the value to set the constraint violation limit # constraintViolationLimit: 20 # ... other fields ...
Appliquez la configuration par défaut à votre flotte :
gcloud container fleet policycontroller enable \ --fleet-default-member-config=fleet-default.yaml
Pour vérifier que la configuration a bien été appliquée, exécutez la commande suivante :
gcloud container fleet policycontroller describe
Pour supprimer la configuration par défaut au niveau du parc, exécutez la commande suivante :
gcloud container fleet policycontroller enable \ --no-fleet-default-member-config
Interactions de Policy Controller avec Config Sync
Si vous utilisez Policy Controller avec Config Sync, vous devez connaître les interactions suivantes avec les ressources stockées dans votre source de référence, comme un dépôt Git, qui sont synchronisées par Config Sync :
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
Config
stockée dans l'espace de nomsgatekeeper-system
, vous ne devez définir que la ressourceConfig
dans la source de vérité. Le paramètregatekeeper-system
Namespace
ne doit pas être défini avec elle.
Gérer la bibliothèque de modèles de contraintes
Pour en savoir plus sur la désinstallation ou l'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. 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}"
Le tag Git (ou le hachage) utilisé pour créer Gatekeeper et le numéro de version ConfigManagement Operator sont inclus dans le tag d'image comme suit:
.../gatekeeper:VERSION_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.
Mettre à niveau Policy Controller
Avant de mettre à niveau Policy Controller, consultez les notes de version pour en savoir plus sur les changements entre les versions.
Pour mettre à niveau Policy Controller, procédez comme suit :
Console
- Dans la console Google Cloud, accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
- Dans l'onglet Paramètres, à côté du cluster dont vous souhaitez mettre à niveau la version, sélectionnez edit Modifier la configuration.
- Développez le menu Modifier la configuration Policy Controller.
- Dans la liste déroulante Version, sélectionnez la version vers laquelle vous souhaitez effectuer la mise à niveau.
- Cliquez sur Enregistrer les modifications.
gcloud
Exécutez la commande suivante :
gcloud container fleet policycontroller update \
--version=VERSION \
--membership=MEMBERSHIP_NAME
Remplacez les éléments suivants :
VERSION
: version vers laquelle vous souhaitez effectuer la mise à jour.MEMBERSHIP_NAME
: nom d'appartenance que vous avez choisi lors de l'enregistrement de votre cluster. Vous pouvez trouver le nom d'appartenance en exécutant la commandegcloud container fleet memberships list
.
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 :
- Dans la console Google Cloud, accédez à la page Stratégie de GKE Enterprise sous la section Gestion de la stratégie.
- Sous l'onglet Paramètres, dans la table du cluster, sélectionnez Modifier edit dans la colonne Modifier la configuration.
- Dans le volet du cluster, faites défiler la page vers le bas et développez le menu À propos de Policy Controller.
- Sélectionnez Désinstaller Policy Controller.
- Confirmez la désinstallation en suivant les instructions de la boîte de dialogue de confirmation et en sélectionnant Confirmer.
Lorsque Policy Controller est désinstallé, les colonnes d'état affichent Non installé do_not_disturb_on.
gcloud Policy Controller
Pour désinstaller Policy Controller, exécutez la commande suivante :
gcloud container fleet policycontroller disable \
--memberships=MEMBERSHIP_NAME
Remplacez MEMBERSHIP_NAME
par le nom d'appartenance du cluster enregistré sur lequel désactiver Policy Controller. Vous pouvez spécifier plusieurs appartenances séparées par une virgule.
gcloud ConfigManagement
Pour désinstaller Policy Controller :
Modifiez la configuration de ConfigManagement Operator dans votre fichier
apply-spec.yaml
et définissezpolicyController.enabled
surfalse
.Appliquez les modifications dans le fichier
apply-spec.yaml
:gcloud beta container fleet config-management apply \ --membership=CLUSTER_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
Remplacez les éléments suivants :
- 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.
Supprimer ConfigManagement Operator
Si vous avez installé Policy Controller via l'objet ConfigManagement
, vous devez également supprimer ConfigManagement Operator de vos clusters.
Pour supprimer ConfigManagement Operator, exécutez les commandes suivantes :
Supprimez l'objet ConfigManagement du cluster :
kubectl delete configmanagement --all
Une fois cette commande exécutée, voici ce qui se produit :
- Tous les objets ClusterRole et ClusterRoleBinding créés dans le cluster par ConfigManagement Operator sont supprimés du cluster.
- Toutes les configurations de contrôleurs d'admission installées par ConfigManagement Operator sont supprimées.
- Le contenu de l'espace de noms
config-management-system
est supprimé, à l'exception du secretgit-creds
, et pour les versions de Policy Controller à partir de la version 1.9.0, le déploiementconfig-management-operator
et le podconfig-management-operator
. ConfigManagement Operator ne peut pas fonctionner sans l'espace de nomsconfig-management-system
. Tous les objets CustomResourceDefinition (CRD) créés ou modifiés par le contrôleur ConfigManagement Operator sont supprimés des clusters où ils ont été créés ou modifiés. Le CRD requis pour exécuter ConfigManagement Operator est toujours présent car, du point de vue de Kubernetes, il a été ajouté par l'utilisateur qui a installé ConfigManagement Operator. La procédure de suppression de ces composants est présentée à l'étape suivante.
Si vous devez conserver le secret
git-creds
, procédez comme suit dès à présent :kubectl -n config-management-system get secret git-creds -o yaml
Supprimez l'espace de noms
config-management-system
:kubectl delete ns config-management-system
Supprimez l'espace de noms
config-management-monitoring
:kubectl delete ns config-management-monitoring
Supprimez l'objet CustomResourceDefinition ConfigManagement :
kubectl delete crd configmanagements.configmanagement.gke.io
RBAC Policy Controller et autorisations
Policy Controller comprend des charges de travail à privilèges élevés. Les autorisations associées à ces charges de travail sont décrites dans la documentation des opérations Open Policy Agent Gatekeeper.
Demandes de ressources Policy Controller
Le tableau suivant répertorie les besoins en ressources Kubernetes pour chaque version compatible de Policy Controller. Les demandes de ressources pour ConfigManagement Operator ne s'appliquent que si vous avez installé Policy Controller via l'objet ConfigManagement
.
Composant | Processeur | Mémoire |
---|---|---|
ConfigManagement Operator | 100 m | 100 Mi |
Policy Controller | 100 m | 256 Mi |
Étapes suivantes
- En savoir plus sur Policy Controller
- Apprenez-en plus sur les groupes Policy Controller.
- Découvrez comment créer une contrainte.
- Résoudre les problèmes liés à Policy Controller.