Configurer des règles de réseau multiréseaux


Cette page explique comment contrôler le flux de trafic entre les pods et les services au niveau du pod en configurant des règles de réseau multiréseaux qui s'appliquent spécifiquement à un réseau de pods désigné.

En tant qu'administrateur de cluster, vous pouvez configurer des règles de réseau multiréseaux pour contrôler le flux de trafic entre les pods et les services à l'aide de règles de pare-feu au niveau du pod. Vous pouvez améliorer la sécurité du réseau et le contrôle du trafic au sein de votre cluster.

Pour comprendre le fonctionnement des règles de réseau multiréseaux, consultez la section dédiée au Fonctionnement des règles de réseau avec des réseaux de pods.

Conditions requises

Pour utiliser des règles de réseau multiréseaux, tenez compte des exigences suivantes :

  • Google Cloud CLI version 459 et ultérieure.
  • Un cluster GKE doit exécuter l'une des versions suivantes :
    • 1.28.5-gke.1293000 (et versions ultérieures)
    • 1.29.0-gke.1484000 (et versions ultérieures)
  • Votre cluster doit utiliser GKE Dataplane V2.

Limites

Les règles de réseau FQDN et CiliumClusterWide ne sont pas prises en charge : si vous utilisez la règle de réseau FQDN et la règle de réseau CiliumClusterWide sur un pod connecté à plusieurs réseaux, la règle affecte toutes les connexions du pod et pas seulement celles auxquelles les règles sont appliquées.

Tarifs

La fonctionnalité de règles de réseau multiréseaux GKE est disponible en version Bêta et n'est compatible qu'avec les clusters qui se trouvent dans des projets sur lesquels GKE Enterprise est activé. Pour connaître les frais qui s'appliquent en cas d'activation de l'édition Enterprise de Google Kubernetes Engine (GKE), consultez les tarifs de GKE Enterprise.

Configurer des règles de réseau multiréseaux

Pour utiliser des règles de réseau multiréseaux, procédez comme suit :

  1. Créez un cluster avec GKE multiréseau activé.
  2. Créez un pool de nœuds et un réseau de pods.
  3. Référencez le réseau de pods.
  4. Créez une règle de réseau à appliquer qui référence le même réseau de pods que celui utilisé par la charge de travail.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Créer une règle de réseau

  1. Pour créer une règle de réseau qui applique des règles sur le même réseau de pods que votre charge de travail, référencez le réseau de pods spécifique dans la définition de la règle de réseau.

  2. Pour définir les règles de trafic d'entrée et les pods cibles sélectionnés en fonction de libellés ou d'autres sélecteurs, créez une règle de réseau standard.

    Enregistrez l'exemple de fichier manifeste suivant sous le nom sample-ingress-network-policy1.yaml :

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation for network selection
    spec:
      podSelector:
        matchLabels:
          app: test-app-2  # Selects pods with the label "app: test-app-2"
      policyTypes:
      - Ingress  # Specifies the policy applies only to incoming traffic
      ingress:
      - from:  # Allow incoming traffic only from...
        - podSelector:
            matchLabels:
              app: test-app-1  # ...pods with the label "app: test-app-1"
    
  3. Appliquez le fichier manifeste sample-ingress-network-policy1.yaml :

    kubectl apply -f sample-ingress-network-policy1.yaml
    
  4. Pour définir les règles de trafic de sortie et les pods cibles sélectionnés en fonction de libellés ou d'autres sélecteurs, créez une règle de réseau standard.

    Enregistrez l'exemple de fichier manifeste suivant sous le nom sample-egress-network-policy2.yaml :

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy-2
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation (optional)
    spec:
      podSelector:
        matchLabels:
          app: test-app-2
      policyTypes:
        - Egress  # Only applies to outgoing traffic
      egress:
        - to:
            - podSelector:
                matchLabels:
                  app: test-app-3
    
  5. Appliquez le fichier manifeste sample-egress-network-policy2.yaml :

    kubectl apply -f sample-egress-network-policy2.yaml
    

Résoudre les problèmes liés aux règles de réseau multiréseaux

Si vous rencontrez des problèmes avec les règles de réseau, qu'elles soient appliquées ou non à des réseaux de pods spécifiques, vous pouvez diagnostiquer et résoudre le problème en exécutant les commandes suivantes :

  1. kubectl get networkpolicy : répertorie tous les objets de règle de réseau et les informations les concernant.
  2. iptables-save : récupère et répertorie toutes les chaînes de tables d'adresses IP pour un nœud particulier. Vous devez exécuter cette commande sur le nœud en tant qu'utilisateur racine.
  3. cilium bpf policy get <endpoint-id> : récupère et répertorie les adresses IP autorisées à partir du mappage de règles de chaque point de terminaison.
  4. cilium policy selectors : affiche les identités et les règles associées qui les ont sélectionnées.
  5. cilium identity list : affiche les mappages d'identité associés à l'adresse IP.

Étape suivante