Cette page explique comment désactiver les règles de pare-feu VPC autorisant le trafic entrant que GKE crée pour les services LoadBalancer.
La désactivation de ces règles de pare-feu créées automatiquement pour les services LoadBalancer peut être utile dans les situations suivantes :
- Si vous disposez de plusieurs services LoadBalancer dans deux clusters GKE ou plus, il peut être plus efficace de gérer vous-même les règles de pare-feu. Par exemple, au lieu de demander à GKE de créer une règle de pare-feu unique pour chaque service LoadBalancer, vos règles de pare-feu créées manuellement peuvent autoriser le trafic entrant pour plusieurs services LoadBalancer.
- Vous pouvez utiliser des stratégies de pare-feu hiérarchiques, des stratégies de pare-feu réseau mondiales, ou des stratégies de pare-feu réseau régionales au lieu de règles de pare-feu VPC. Les règles de ces stratégies de pare-feu sont compatibles avec des actions supplémentaires, des cibles plus flexibles, et des fonctionnalités telles que la géolocalisation, les renseignements sur les menaces, les groupes d'adresses, et les FQDN.
Pour désactiver les règles de pare-feu créées automatiquement pour les services LoadBalancer, vous devez spécifier le flag --disable-l4-lb-firewall-reconciliation lorsque vous créez ou mettez à jour un cluster. Le flag --disable-l4-lb-firewall-reconciliation n'a pas d'incidence sur les autres règles de pare-feu VPC créées automatiquement, telles que celles facilitant la communication entre les nœuds ou celles autorisant les vérifications de l'état de vos services.
Conditions requises
- Pour utiliser des règles de pare-feu gérées par l'utilisateur pour les services LoadBalancer, vos clusters GKE doivent utiliser la version 1.31.3-gke.105600 ou ultérieure.
Limites
GKE est compatible avec la désactivation de la création automatique de règles de pare-feu pour les types de services LoadBalancer suivants :
- Services LoadBalancer internes utilisant le sous-paramètre GKE
- Services LoadBalancer externes basés sur un service de backend
Vous ne pouvez pas désactiver la création automatique de règles de pare-feu pour les types de services LoadBalancer suivants :
- Services LoadBalancer internes n'utilisant pas le sous-paramètre GKE
- Services LoadBalancer externes basés sur un pool cible
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 la
gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière
version en exécutant la
gcloud components updatecommande. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
Stratégies de gestion manuelle des règles de pare-feu
Avant de désactiver la création automatique de règles de pare-feu VPC pour les services LoadBalancer dans votre cluster GKE, collaborez avec un administrateur de la sécurité pour élaborer une stratégie de configuration manuelle des règles de pare-feu.
Choisissez le type de stratégie de pare-feu à utiliser : une stratégie de pare-feu hiérarchique, une stratégie de pare-feu réseau mondiale ou une stratégie de pare-feu réseau régionale. Pour savoir comment créer une stratégie de pare-feu, consultez les pages suivantes :
- Utiliser des stratégies et des règles de pare-feu hiérarchiques
- Utiliser des stratégies et des règles de pare-feu de réseau globales
- Utiliser des stratégies et des règles de pare-feu de réseau régionales
Vous pouvez également utiliser des règles de pare-feu VPC, qui n'utilisent aucune stratégie.
Les règles de pare-feu que vous créez manuellement doivent être des règles autorisant le trafic entrant, car la règle de pare-feu implicite refusant le trafic entrant rule interdit le trafic entrant. Lorsque vous avez désactivé la création automatique de règles de pare-feu VPC, le trafic entrant n'atteint pas vos nœuds, sauf si vous avez créé des règles de pare-feu autorisant le trafic entrant qui correspondent au trafic de vos services LoadBalancer.
En fonction des paramètres de la règle de pare-feu, une seule règle de pare-feu autorisant le trafic entrant peut s'appliquer à un ou plusieurs services LoadBalancer. Pour chaque règle de pare-feu autorisant le trafic entrant que vous créez, définissez les paramètres suivants :
Paramètre de cible : assurez-vous que la règle de pare-feu inclut au moins tous les nœuds de le cluster contenant les services LoadBalancer. Les cibles compatibles dépendent du type de stratégie de pare-feu dans laquelle se trouve une règle ou si vous utilisez une règle de pare-feu VPC. Pour en savoir plus sur le paramètre de cible d'une règle dans une stratégie de pare-feu, consultez la section Cibles.
Protocoles et ports : incluez tous les protocoles et ports de destination utilisés par les services LoadBalancer auxquels la règle de pare-feu doit s'appliquer.
Paramètre de destination : vous pouvez utiliser l'une des stratégies suivantes pour le paramètre de destination :
- Incluez les adresses IP de tous les services LoadBalancer auxquels la règle de pare-feu doit s'appliquer dans le paramètre de destination. Pour trouver l'adresse IP d'un service LoadBalancer, exécutez la commande suivante :
kubectl get svc LOADBALANCER_NAME \ -n NAMESPACE_NAME \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}- Vous pouvez choisir d'omettre le paramètre de destination. Lorsque le paramètre de destination est omis, le paramètre de cible définit implicitement les destinations. Pour en savoir plus, consultez la section Cibles et adresses IP pour les règles d'entrée.
Paramètre source : spécifiez les sources (par exemple, les adresses IP) utilisées par les clients qui doivent se connecter aux services LoadBalancer auxquels la règle de pare-feu doit s'appliquer.
Pour savoir comment créer des règles de pare-feu, consultez les pages suivantes :
Pour vous assurer que les règles de pare-feu que vous avez créées manuellement fonctionnent correctement, exécutez un test de connectivité Network Intelligence Center (NIC). Lorsque vous exécutez le test de connectivité :
- Définissez la destination sur l'adresse IP du service LoadBalancer.
- Définissez la source sur l'adresse IP du client.
Pour en savoir plus, consultez la section Résoudre les problèmes de connectivité issues.
Désactiver la création de règles de pare-feu VPC pour vos services LoadBalancer
Cette section décrit les étapes à suivre pour désactiver la création automatique de règles de pare-feu VPC pour les services LoadBalancer.
Créer un cluster GKE avec la création de règles de pare-feu VPC désactivée
Pour désactiver les règles de pare-feu VPC créées automatiquement pour les services LoadBalancer dans un cluster nouvellement créé, créez le cluster avec le flag
--disable-l4-lb-firewall-reconciliation:Autopilot :
gcloud container clusters create-auto CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=VERSIONStandard :
gcloud container clusters create CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --enable-l4-ilb-subsetting \ --cluster-version=VERSIONRemplacez les éléments suivants :
CLUSTER_NAME: nom du nouveau clusterVERSION: version de GKE
Créez un service LoadBalancer externe ou interne :
Vérifiez que GKE ne crée pas de règle de pare-feu autorisant le trafic entrant pour le service LoadBalancer. (Les règles de pare-feu autorisant le trafic entrant créées automatiquement ont des noms au format suivant :
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash].)La commande suivante renvoie une liste de règles de pare-feu contenant
k8s2:gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"La réponse ne doit renvoyer que la règle de pare-feu de vérification de l'état au format
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fwsi le paramètreexternalTrafficPolicyest défini surLocal. Il utilise le port TCP défini par le paramètrespec.healthCheckNodePort. Si aucune valeur n'est spécifiée, le plan de contrôle Kubernetes attribue un port de vérification de l'état à partir de la plage de ports du nœud.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 FalseSi le paramètre
externalTrafficPolicyest défini surCluster, la règle de pare-feu de vérification de l'état suivante est renvoyée à la place.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 FalsePour en savoir plus sur les règles de pare-feu générées pour les services GKE, consultez la section Règles de pare-feu créées automatiquement.
Mettre à jour un cluster GKE existant pour désactiver la création de règles de pare-feu VPC
Avant de désactiver la création de règles de pare-feu VPC, tenez compte des points suivants concernant la mise à jour d'un cluster existant :
- Lorsque vous mettez à jour un cluster existant pour désactiver la création de règles de pare-feu VPC, GKE ne supprime aucune règle de pare-feu existante que GKE a créée automatiquement pour vos services LoadBalancer.
- GKE cesse de mettre à jour les règles existantes et n'en crée pas de nouvelles pour les nouveaux services LoadBalancer.
- Pour réactiver la création de règles de pare-feu VPC, vous pouvez utiliser le
--enable-l4-lb-firewall-reconciliationflag avec lagcloud_name container clusters updatecommande.
Pour désactiver la création automatique de règles de pare-feu sur un cluster existant :
Mettez à jour le cluster pour désactiver la création et la gestion automatiques des règles de pare-feu pour les services LoadBalancer :
gcloud container clusters update CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=supported_versionRemplacez les éléments suivants :
CLUSTER_NAME: nom du nouveau clusterVERSION: version de GKE
Créez un service LoadBalancer externe ou interne :
Vérifiez que GKE ne crée pas de règle de pare-feu autorisant le trafic entrant pour le service LoadBalancer. (Les règles de pare-feu autorisant le trafic entrant créées automatiquement ont des noms au format suivant :
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash].)La commande suivante renvoie une liste de règles de pare-feu contenant
k8s2:gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"La réponse ne doit renvoyer que la règle de pare-feu de vérification de l'état au format
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fwsi le paramètreexternalTrafficPolicyest défini surLocal. Il utilise le port TCP défini par le paramètrespec.healthCheckNodePort. Si aucune valeur n'est spécifiée, le plan de contrôle Kubernetes attribue un port de vérification de l'état à partir de la plage de ports du nœud.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 FalseSi le paramètre
externalTrafficPolicyest défini surCluster, la règle de pare-feu de vérification de l'état suivante est renvoyée à la place.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 FalsePour en savoir plus sur les règles de pare-feu générées pour les services GKE, consultez la section Règles de pare-feu créées automatiquement.
Résoudre les problèmes de connectivité
Les exemples suivants illustrent comment utiliser les tests de connectivité Network Intelligence Center pour tester la connectivité à un service LoadBalancer externe :cluster :
Network Intelligence Center:
- Dans la Cloud de Confiance console, accédez à Network Intelligence Center et démarrez un nouveau test de connectivité.
- Dans le menu déroulant, choisissez N'importe quelle adresse IP publique externe comme source et sélectionnez votre équilibreur de charge comme destination.
- Exécutez à nouveau le test de connectivité.
gcloud CLI :
L'exemple de commande suivant crée et exécute un test avec l'adresse IP publique de votre poste de travail local comme source et l'adresse IP externe de l'équilibreur de charge externe comme destination :
gcloud network-management connectivity-tests create TEST_NAME \ --source-ip-address=SOURCE_IP_ADDRESS \ --source-network-type=NON_GCP_NETWORK \ --destination-ip-address=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.status.loadBalancer.ingress[0].ip}') \ --destination-port=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.spec.ports[0].targetPort}') \ --destination-network=projects/PROJECT_ID/global/networks/NETWORK_NAMERemplacez les éléments suivants :
TEST_NAME: nom du test de connectivitéSOURCE_IP_ADDRESS: adresse IP du système qui doit se connecter au service LoadBalancer externe ExempleLOADBALANCER_NAME: nom du service LoadBalancer externePROJECT_ID: ID du projet contenant le réseau VPC du cluster Si votre cluster utilise un réseau VPC partagé, utilisez l'ID du projet hôte.NETWORK_NAME: nom du réseau VPC de votre cluster
Vérifiez les résultats du test :
gcloud network-management connectivity-tests describe TEST_NAME
Étape suivante
- En savoir plus sur les stratégies de pare-feu.
- Consultez la section Règles de pare-feu créées automatiquement rules pour obtenir une présentation de les règles de pare-feu VPC autorisant le trafic entrant que GKE crée automatiquement par défaut.
- Consultez la section Paramètres du service LoadBalancer pour obtenir une description des paramètres des services LoadBalancer.
- Découvrez d'autres règles de pare-feu préremplies dans Cloud de Confiance.
- Découvrez comment créer des règles de pare-feu dans les projets utilisant un VPC partagé.