Créer une règle de réseau

Cette page explique comment configurer l'application des règles de réseau dans Google Kubernetes Engine (GKE). Pour obtenir des informations générales sur la mise en réseau GKE, consultez la page intitulée Présentation du réseau.

Présentation

La fonctionnalité d'application de la règle de réseau de GKE vous permet de contrôler la communication entre les pods et les services de votre cluster. Pour définir une règle de réseau, utilisez l'API Network Policy de Kubernetes pour créer des règles de pare-feu au niveau des pods. Ces règles de pare-feu déterminent quels pods et services peuvent accéder les uns aux autres au sein du cluster.

La définition d'une règle de réseau vous permet d'activer des dispositifs tels que la défense en profondeur lorsque votre cluster diffuse une application à plusieurs niveaux. Par exemple, vous pouvez créer une règle de réseau pour empêcher un service frontal de votre application qui aurait été piraté de communiquer directement avec un service de facturation ou de comptabilité séparé de celui-ci par plusieurs niveaux.

Une règle de réseau peut également aider votre application à héberger simultanément des données de plusieurs utilisateurs. Par exemple, vous pouvez fournir une architecture mutualisée sécurisée en définissant un modèle attribuant un espace de noms à chaque locataire. Dans un tel modèle, les règles de réseau peuvent garantir que les pods et les services d'un espace de noms donné n'ont pas la possibilité d'accéder aux pods ou services d'un autre espace de noms.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

Configurez les paramètres gcloud par défaut à l'aide de l'une des méthodes suivantes :

  • Utilisez gcloud init pour suivre les instructions permettant de définir les paramètres par défaut.
  • Utilisez gcloud config pour définir individuellement l'ID, la zone et la région de votre projet.

Utiliser gcloud init

Si le message d'erreur One of [--zone, --region] must be supplied: Please specify location s'affiche, effectuez les tâches ci-dessous.

  1. Exécutez gcloud init et suivez les instructions :

    gcloud init

    Si vous utilisez SSH sur un serveur distant, utilisez l'option --console-only pour empêcher la commande d'ouvrir un navigateur :

    gcloud init --console-only
  2. Suivez les instructions pour autoriser gcloud à utiliser votre compte Google Cloud.
  3. Créez ou sélectionnez une configuration.
  4. Choisissez un projet Google Cloud.
  5. Choisissez une zone Compute Engine par défaut pour les clusters zonaux ou une région pour les clusters régionaux ou Autopilot.

Utiliser gcloud config

  • Définissez votre ID de projet par défaut :
    gcloud config set project PROJECT_ID
  • Si vous utilisez des clusters zonaux, définissez votre zone de calcul par défaut :
    gcloud config set compute/zone COMPUTE_ZONE
  • Si vous utilisez des clusters Autopilot ou régionaux, définissez votre région de calcul par défaut :
    gcloud config set compute/region COMPUTE_REGION
  • Mettez à jour gcloud vers la dernière version :
    gcloud components update

Utiliser la fonctionnalité d'application de la règle de réseau

Vous pouvez activer l'application de la règle de réseau pour un cluster GKE en cours de création ou pour un cluster existant. Vous avez également la possibilité de désactiver la règle de réseau pour un cluster existant.

Une fois que vous avez activé les règles de réseau dans votre cluster, vous pouvez créer une règle réseau à l'aide de l'API Network Policy de Kubernetes.

Activer l'application de la règle de réseau

L'application de la règle de réseau est intégrée à Dataplane V2. Vous n'avez pas besoin d'activer l'application de la règle de réseau dans les clusters qui utilisent Dataplane V2.

Lorsque vous activez l'application de la règle de réseau dans un cluster GKE qui n'utilise pas Dataplane V2, GKE gère et applique les règles de réseau dans ce cluster.

Vous pouvez activer l'application de la règle de réseau dans GKE à l'aide de l'outil gcloud, de Google Cloud Console ou de l'API REST de GKE.

gcloud

Pour activer l'application de la règle de réseau lors de la création d'un cluster, exécutez la commande suivante :

gcloud container clusters create CLUSTER_NAME --enable-network-policy

Remplacez CLUSTER_NAME par le nom du nouveau cluster.

Pour activer l'application de la règle de réseau pour un cluster existant, procédez comme suit :

  1. Exécutez la commande suivante pour activer le module complémentaire :

    gcloud container clusters update cluster-name --update-addons=NetworkPolicy=ENABLED

    Remplacez CLUSTER_NAME par le nom du cluster.

  2. Exécutez la commande suivante pour activer l'application de la règle de réseau sur votre cluster, ce qui recrée les pools de nœuds de votre cluster avec l'application de la règle de réseau activée :

    gcloud container clusters update cluster-name --enable-network-policy

    Remplacez CLUSTER_NAME par le nom du cluster.

Console

Pour activer l'application de la règle de réseau lors de la création d'un cluster, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Configurez le cluster selon vos besoins.

  4. Dans le volet de navigation, cliquez sur Réseau sous Cluster.

  5. Cochez la case Activer la règle de réseau.

  6. Cliquez sur Créer.

Pour activer l'application de la règle de réseau pour un cluster existant, procédez comme suit :

  1. Accédez au menu Google Kubernetes Engine de Cloud Console.

    Accéder au menu Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Sous Mise en réseau, dans le champ Règle de réseau, cliquez sur Modifier la règle de réseau.

  4. Cochez la case Activer la règle de réseau pour le maître, puis cliquez sur Enregistrer les modifications.

  5. Attendez que les modifications s'appliquent, puis cliquez à nouveau sur Modifier la règle de réseau.

  6. Cochez la case Activer la règle de réseau pour les nœuds.

  7. Cliquez sur Save Changes (Enregistrer les modifications).

API

Pour activer l'application de la règle de réseau, procédez comme suit :

  1. Spécifiez l'objet networkPolicy au sein de l'objet cluster que vous fournissez à la méthode projects.zones.clusters.create ou projects.zones.clusters.update.

  2. L'objet networkPolicy requiert une valeur "enum" spécifiant le fournisseur de règle de réseau à utiliser, ainsi qu'une valeur booléenne indiquant s'il faut activer l'application de la règle de réseau. Si vous activez l'application de la règle de réseau sans définir de fournisseur, les commandes create et update renvoient une erreur.

Désactiver l'application de la règle de réseau

Vous pouvez désactiver l'application de la règle de réseau à l'aide de l'outil gcloud, de Google Cloud Console ou de l'API Kubernetes Engine. L'application de la règle de réseau ne peut pas être désactivée dans les clusters qui utilisent Dataplane V2.

gcloud

Pour désactiver l'application de la règle de réseau pour un cluster existant, exécutez la commande suivante :

gcloud container clusters update cluster-name --no-enable-network-policy

Remplacez CLUSTER_NAME par le nom du cluster.

Console

Pour désactiver l'application de la règle de réseau pour un cluster existant, procédez comme suit :

  1. Accédez au menu Google Kubernetes Engine de Cloud Console.

    Accéder au menu Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Sous Mise en réseau, dans le champ Règle de réseau, cliquez sur Modifier la règle de réseau.

  4. Décochez la case Activer la règle de réseau pour les nœuds, puis cliquez sur Enregistrer les modifications.

  5. Attendez que les modifications s'appliquent, puis cliquez à nouveau sur Modifier la règle de réseau.

  6. Décochez la case Activer la règle de réseau pour le maître.

  7. Cliquez sur Save Changes (Enregistrer les modifications).

API

Pour désactiver l'application de la règle de réseau pour un cluster existant, procédez comme suit :

  1. Spécifiez l'objet networkPolicy dans l'objet cluster que vous fournissez à projects.zones.clusters.update.
  2. Dans cet objet networkPolicy, définissez la valeur booléenne enabled sur false.

Si vous désactivez l'application de la règle de réseau, assurez-vous également de mettre à jour les modules complémentaires (par exemple, Calico DaemonSet) pour indiquer que la règle de réseau est désactivée pour les modules complémentaires :

gcloud container clusters update cluster-name --update-addons=NetworkPolicy=DISABLED

Remplacez CLUSTER_NAME par le nom du cluster.

Créer une règle de réseau

Une fois que vous avez activé l'application de la règle de réseau pour votre cluster, vous devez définir la règle de réseau proprement dite. La définition de la règle de réseau fait appel à l'API Network Policy de Kubernetes.

Pour plus d'informations sur la création d'une règle de réseau, consultez les rubriques suivantes dans la documentation de Kubernetes :

Utiliser PodSecurityPolicy

Si vous utilisez une règle NetworkPolicy et que vous avez un pod soumis à une règle PodSecurityPolicy, créez un objet RBAC Role ou ClusterRole autorisé à utiliser une règle PodSecurityPolicy. Liez ensuite l'objet Role ou ClusterRole au compte de service du pod. Lorsque vous utilisez conjointement les règles NetworkPolicy et PodSecurityPolicy, accorder des autorisations aux comptes utilisateur n'est pas suffisant. Vous devez associer le rôle au compte de service. Pour en savoir plus, consultez la section Autoriser les règles.

Surcharge, limites et mises en garde

  • L'activation de l'application de la règle de réseau consomme des ressources supplémentaires dans les nœuds. Plus précisément, elle augmente l'espace mémoire utilisé par le processus kube-system d'environ 128 Mo et requiert environ 300 millicores de processeur.

  • L'activation de la règle de réseau nécessite la recréation de vos nœuds. Si votre cluster a un intervalle de maintenance actif, la recréation automatique de vos nœuds n'interviendra qu'au prochain intervalle de maintenance. Si vous préférez, vous avez la possibilité de mettre à jour manuellement votre cluster à tout moment.

Limites et exigences

  • Votre cluster doit comporter au moins deux nœuds de type e2-medium ou d'un type supérieur. La taille de cluster minimale recommandée pour l'application de la règle de réseau est de trois instances e2-medium.
  • La règle de réseau n'est pas acceptée pour les clusters dont les nœuds sont des instances du type f1-micro ou g1-small, car les besoins en ressources sont trop élevés pour les instances de cette taille.

Pour plus d'informations sur les types de machines constituant les nœuds et sur les ressources pouvant être allouées, voir Architecture des clusters : les nœuds.

Utiliser l'équilibrage de charge HTTP(S)

Lorsqu'un objet Ingress est appliqué à un objet Service pour créer un équilibreur de charge HTTP(S), vous devez configurer la règle de réseau appliquée aux pods derrière cet objet Service pour autoriser les plages d'adresses IP pour les vérifications d'état de l'équilibreur de charge appropriées. Si vous utilisez un équilibreur de charge HTTP(S) interne, vous devez également configurer la règle de réseau afin d'autoriser le sous-réseau proxy réservé.

Si vous n'utilisez pas l'équilibrage de charge natif en conteneurs avec des groupes de points de terminaison du réseau, les ports de nœud d'un objet Service peuvent transférer les connexions vers les pods d'autres nœuds, à moins que vous n'empêchiez ce comportement en définissant externalTrafficPolicy sur "Local" dans la définition du service. Si externalTrafficPolicy n'est pas défini sur Local, la règle de réseau doit également autoriser les connexions à partir d'autres adresses IP de nœud du cluster.

Étape suivante