Cette page explique comment désactiver les règles de pare-feu VPC d'autorisation d'entrée 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 au moins deux clusters GKE, il peut être plus efficace de gérer vous-même les règles de pare-feu. Par exemple, au lieu de laisser GKE créer une règle de pare-feu unique pour chaque service LoadBalancer, les règles de pare-feu que vous avez 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 à la place des règles de pare-feu VPC. Les règles de ces stratégies de pare-feu sont compatibles avec les actions supplémentaires, les cibles plus flexibles et les fonctionnalités telles que la géolocalisation, les renseignements sur les menaces, les groupes d'adresses et les noms de domaine complets.
Pour désactiver les règles de pare-feu créées automatiquement pour les services LoadBalancer, vous devez spécifier l'indicateur --disable-l4-lb-firewall-reconciliation
lorsque vous créez ou mettez à jour un cluster. L'indicateur --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 qui facilitent la communication entre les nœuds ou celles qui autorisent 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 permet de désactiver 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 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
.
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 ressources 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 d'autorisation d'entrée, car la règle de pare-feu d'entrée interdite implicite interdit le trafic entrant. Lorsque vous désactivez 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 d'autorisation du 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 d'entrée autorisée que vous créez, définissez les paramètres suivants :
Paramètre "Cible" : assurez-vous que la règle de pare-feu inclut au moins tous les nœuds du 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 cible d'une règle dans une stratégie de pare-feu, consultez 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, utilisez 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 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 d'équilibrage de charge 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 Résoudre les problèmes de connectivité.
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 l'indicateur
--disable-l4-lb-firewall-reconciliation
:Autopilot :
gcloud container clusters create-auto CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=VERSION
Standard :
gcloud container clusters create CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --enable-l4-ilb-subsetting \ --cluster-version=VERSION
Remplacez 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 de trafic entrant autorisé créées automatiquement ont des noms au format suivant :
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
.)La commande suivante renvoie une liste des 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'état au format
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fw
si le paramètreexternalTrafficPolicy
est 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'état à partir de la plage de ports du nœud.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 False
Si le paramètre
externalTrafficPolicy
est défini surCluster
, la règle de pare-feu de vérification de l'état;état suivante est renvoyée à la place.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 False
Pour en savoir plus sur les règles de pare-feu générées pour les services GKE, consultez 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 qu'il a créée automatiquement pour vos services LoadBalancer.
- GKE arrête de mettre à jour les règles existantes et ne crée pas de nouvelles règles pour les nouveaux services LoadBalancer.
- Pour réactiver la création de règles de pare-feu VPC, vous pouvez utiliser l'indicateur
--enable-l4-lb-firewall-reconciliation
avec la commandegcloud_name container clusters update
.
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_version
Remplacez 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 d'entrée pour le service LoadBalancer. (Les règles de pare-feu d'entrée autorisée créées automatiquement ont des noms de la forme
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
.)La commande suivante renvoie une liste des 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'état au format
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fw
si le paramètreexternalTrafficPolicy
est 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'état à partir de la plage de ports du nœud.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 False
Si le paramètre
externalTrafficPolicy
est défini surCluster
, la règle de pare-feu de vérification de l'état;état suivante est renvoyée à la place.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 False
Pour en savoir plus sur les règles de pare-feu générées pour les services GKE, consultez 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 console Trusted Cloud , accédez à Network Intelligence Center et lancez un test de connectivité.
- Dans le menu déroulant, sélectionnez Toute adresse IP publique externe comme source, puis sélectionnez votre équilibreur de charge comme destination.
- Relancez 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_NAME
Remplacez 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 externe.PROJECT_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
Étapes suivantes
- En savoir plus sur les stratégies de pare-feu
- Consultez Règles de pare-feu créées automatiquement pour obtenir une présentation des règles de pare-feu VPC d'entrée autorisée que GKE crée automatiquement par défaut.
- Pour obtenir une description des paramètres des services LoadBalancer, consultez Paramètres du service LoadBalancer.
- Découvrez d'autres règles de pare-feu préremplies dans Trusted Cloud.
- Découvrez comment créer des règles de pare-feu dans les projets utilisant un VPC partagé.