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.
Désactiver 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, la gestion des règles de pare-feu peut être plus efficace. 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 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'affecte pas 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 sécurité pour développer une stratégie de configuration manuelle des règles de pare-feu.
Déterminez 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 globale ou une stratégie de pare-feu réseau régionale. Pour savoir comment créer une stratégie de pare-feu, consultez les articles suivants:
- 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 créées manuellement doivent être des règles d'entrée autorisées, car la règle de pare-feu d'entrée interdite implicite 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 d'autorisation d'entrée correspondant 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 lequel 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, 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 les destinations implicitement. 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 d'équilibreur 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 articles suivants:
Pour vous assurer que les règles de pare-feu que vous avez créées manuellement fonctionnent correctement, exécutez un test de connectivité du 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 la procédure à 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
:gcloud
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.
Terraform
Pour créer un cluster avec la création de règles de pare-feu VPC désactivée à l'aide de Terraform, reportez-vous à l'exemple suivant:
resource "google_container_cluster" "primary" { provider = google-beta name = CLUSTER_NAME location = ZONE enable-l4-ilb-subsetting = true disable_l4_lb_firewall_reconciliation = true }
Créez un service LoadBalancer externe ou interne:
Vérifiez que GKE ne crée pas de règle de pare-feu autorisant l'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 suivante:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
.)La commande suivante ne renvoie rien:
gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
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 créée automatiquement par GKE pour vos services LoadBalancer.
- GKE arrête de mettre à jour les règles existantes et ne crée plus de 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 autorisant le trafic entrant pour le service LoadBalancer. (Les règles de pare-feu d'entrée autorisée créées automatiquement portent le nom suivant:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
.)La commande suivante ne renvoie rien:
gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
Résoudre les problèmes de connectivité
Les exemples suivants illustrent comment utiliser les tests de connectivité de Network Intelligence Center pour tester la connectivité à un cluster LoadBalancer Service externe :
Network Intelligence Center:
- Dans la console Google Cloud, accédez au Network Intelligence Center et lancez un nouveau test de connectivité.
- Dans le menu déroulant, sélectionnez Toute adresse IP publique externe comme source, puis votre équilibreur de charge dans la destination.
- Réexécutez 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 station de travail locale 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. Exemple :LOADBALANCER_NAME
: nom du service LoadBalancer externe.PROJECT_ID
: ID du projet qui contient 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 Règles de pare-feu créées automatiquement pour obtenir une présentation des règles de pare-feu VPC d'autorisation d'entrée 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 Google Cloud.
- Découvrez comment créer des règles de pare-feu dans les projets utilisant un VPC partagé.