Créer un cluster privé


Cette page explique comment créer un cluster privé Google Kubernetes Engine (GKE), qui est un type de cluster de VPC natif. Dans un cluster privé, les nœuds ne disposent que d'adresses IP internes, ce qui signifie que les nœuds et les pods sont isolés par défaut d'Internet. Vous pouvez choisir de ne pas disposer d'un accès client, d'un accès limité ou d'un accès illimité au plan de contrôle.

Restrictions et limitations

Les clusters privés doivent être des clusters de VPC natif. Les clusters de VPC natif ne sont pas compatibles avec les anciens réseaux.

Développez les sections suivantes pour afficher les règles concernant les plages d'adresses IP et le trafic lors de la création d'un cluster.

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.
  • Assurez-vous de disposer des autorisations appropriées pour créer des clusters. Vous devez au minimum disposer du rôle Administrateur de cluster Kubernetes Engine.

  • Assurez-vous de disposer d'une route vers la passerelle Internet par défaut.

Créer un cluster privé sans accès client au point de terminaison public

Dans cette section, vous allez créer les ressources suivantes :

  • Un cluster privé nommé private-cluster-0 comportant des nœuds privés et n'ayant pas accès au point de terminaison public.
  • Un réseau nommé my-net-0.
  • Un sous-réseau nommé my-subnet-0.

Console

Créer un réseau et un sous-réseau

  1. Accédez à la page Réseaux VPC dans la console Google Cloud .

    Accéder aux réseaux VPC

  2. Cliquez sur Créer un réseau VPC.

  3. Dans le champ Nom, saisissez my-net-0.

  4. Dans le champ Mode de création de sous-réseau, sélectionnez Personnalisé.

  5. Dans la section Nouveau sous-réseau, saisissez la valeur my-subnet-0 pour le champ Nom.

  6. Dans la liste Région, sélectionnez la région de votre choix.

  7. Dans Plage d'adresses IP, saisissez 10.2.204.0/22.

  8. Définissez Accès privé à Google sur Activé.

  9. Cliquez sur OK.

  10. Cliquez sur Créer.

Créer un cluster privé

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

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer, puis sur Configurer dans la section Standard ou Autopilot.

  3. Dans le champ Nom, spécifiez private-cluster-0.

  4. Dans le volet de navigation, cliquez sur Mise en réseau.

  5. Dans la liste Réseau, sélectionnez my-net-0.

  6. Dans la liste Sous-réseau de nœud, sélectionnez my-subnet-0.

  7. Sélectionnez la case d'option Cluster privé.

  8. Décochez la case Accéder au plan de contrôle à l'aide de son adresse IP externe.

  9. (Facultatif pour Autopilot) : Définissez la plage d'adresses IP du plan de contrôle sur 172.16.0.32/28.

  10. Cliquez sur Créer.

gcloud

  • Pour les clusters Autopilot, exécutez la commande suivante :

    gcloud container clusters create-auto private-cluster-0 \
        --create-subnetwork name=my-subnet-0 \
        --enable-master-authorized-networks \
        --enable-private-nodes \
        --enable-private-endpoint
    
  • Pour les clusters Standard, exécutez la commande suivante :

    gcloud container clusters create private-cluster-0 \
        --create-subnetwork name=my-subnet-0 \
        --enable-master-authorized-networks \
        --enable-ip-alias \
        --enable-private-nodes \
        --enable-private-endpoint \
        --master-ipv4-cidr 172.16.0.32/28
    

où :

  • --create-subnetwork name=my-subnet-0 force GKE à créer automatiquement un sous-réseau nommé my-subnet-0.
  • --enable-master-authorized-networks spécifie que l'accès au point de terminaison public est limité aux plages d'adresses IP que vous autorisez.
  • --enable-ip-alias rend le cluster VPC natif (non requis pour Autopilot).
  • --enable-private-nodes indique que les nœuds du cluster ne possèdent pas d'adresses IP externes.
  • --enable-private-endpoint indique que le cluster est géré à l'aide de l'adresse IP interne du point de terminaison de l'API du plan de contrôle.
  • --master-ipv4-cidr 172.16.0.32/28 spécifie une plage d'adresses IP internes pour le plan de contrôle (facultatif pour Autopilot). Ce paramètre est définitif pour ce cluster et doit être unique au sein du VPC. L'utilisation d'adresses IP internes 1918 non RFC est acceptée.

API

Pour créer un cluster sans plan de contrôle accessible publiquement, spécifiez le champ enablePrivateEndpoint: true dans la ressource privateClusterConfig.

À ce stade, les adresses IP ci-dessous sont les seules à avoir accès au plan de contrôle :

  • Plage principale de my-subnet-0
  • Plage secondaire utilisée pour les pods

Par exemple, supposons que vous ayez créé une VM dans la plage principale de my-subnet-0. Vous pouvez ensuite, sur cette VM, configurer kubectl pour utiliser l'adresse IP interne du plan de contrôle.

Si vous souhaitez accéder au plan de contrôle depuis l'extérieur de my-subnet-0, vous devez autoriser au moins une plage d'adresses pour pouvoir accéder au point de terminaison privé.

Supposons que votre VM se trouve dans le réseau par défaut, dans la même région que votre cluster, mais pas dans my-subnet-0.

Exemple :

  • my-subnet-0 : 10.0.0.0/22
  • Plage secondaire du pod : 10.52.0.0/14
  • Adresse de la VM : 10.128.0.3

Vous pouvez autoriser la VM à accéder au plan de contrôle à l'aide de la commande suivante :

gcloud container clusters update private-cluster-0 \
    --enable-master-authorized-networks \
    --master-authorized-networks 10.128.0.3/32

Créer un cluster privé avec accès limité au point de terminaison public

Lorsque vous créez un cluster privé à l'aide de cette configuration, vous pouvez choisir d'utiliser un sous-réseau généré automatiquement ou un sous-réseau personnalisé.

Utiliser un sous-réseau généré automatiquement

Dans cette section, vous allez créer un cluster privé nommé private-cluster-1, de sorte que GKE génère automatiquement un sous-réseau pour vos nœuds de cluster. L'accès privé à Google est activé sur le sous-réseau. Dans le sous-réseau, GKE crée automatiquement deux plages secondaires : une pour les pods et une pour les services.

Vous pouvez utiliser Google Cloud CLI ou l'API GKE.

gcloud

  • Pour les clusters Autopilot, exécutez la commande suivante :

    gcloud container clusters create-auto private-cluster-1 \
        --create-subnetwork name=my-subnet-1 \
        --enable-master-authorized-networks \
        --enable-private-nodes
    
  • Pour les clusters Standard, exécutez la commande suivante :

    gcloud container clusters create private-cluster-1 \
        --create-subnetwork name=my-subnet-1 \
        --enable-master-authorized-networks \
        --enable-ip-alias \
        --enable-private-nodes \
        --master-ipv4-cidr 172.16.0.0/28
    

où :

  • --create-subnetwork name=my-subnet-1 force GKE à créer automatiquement un sous-réseau nommé my-subnet-1.
  • --enable-master-authorized-networks spécifie que l'accès au point de terminaison public est limité aux plages d'adresses IP que vous autorisez.
  • --enable-ip-alias rend le cluster VPC natif (non requis pour Autopilot).
  • --enable-private-nodes indique que les nœuds du cluster ne possèdent pas d'adresses IP externes.
  • --master-ipv4-cidr 172.16.0.0/28 spécifie une plage d'adresses IP internes pour le plan de contrôle (facultatif pour Autopilot). Ce paramètre est définitif pour ce cluster et doit être unique au sein du VPC. L'utilisation d'adresses IP internes 1918 non RFC est acceptée.

API

Spécifiez le champ privateClusterConfig dans la ressource API Cluster :

{
  "name": "private-cluster-1",
  ...
  "ipAllocationPolicy": {
    "createSubnetwork": true,
  },
  ...
    "privateClusterConfig" {
      "enablePrivateNodes": boolean # Creates nodes with internal IP addresses only
      "enablePrivateEndpoint": boolean # false creates a cluster control plane with a publicly-reachable endpoint
      "masterIpv4CidrBlock": string # CIDR block for the cluster control plane
      "privateEndpoint": string # Output only
      "publicEndpoint": string # Output only
  }
}

À ce stade, les adresses IP ci-dessous sont les seules à avoir accès au plan de contrôle du cluster :

  • Plage principale de my-subnet-1
  • Plage secondaire utilisée pour les pods

Supposons que vous ayez un groupe de machines, en dehors de votre réseau VPC, dont les adresses se situent dans la plage 203.0.113.0/29. Vous pouvez autoriser ces machines à accéder au point de terminaison public en saisissant la commande suivante :

gcloud container clusters update private-cluster-1 \
    --enable-master-authorized-networks \
    --master-authorized-networks 203.0.113.0/29

Voici les seules adresses IP ayant accès au plan de contrôle :

  • Plage principale de my-subnet-1
  • Plage secondaire utilisée pour les pods
  • Les plages d'adresses que vous avez autorisées ; par exemple, 203.0.113.0/29.

Utiliser un sous-réseau personnalisé

Dans cette section, vous allez créer les ressources suivantes :

  • Un cluster privé nommé private-cluster-2.
  • Un réseau nommé my-net-2.
  • Un sous-réseau nommé my-subnet-2, avec comme plage principale 192.168.0.0/20, pour vos nœuds de cluster. Le sous-réseau comporte les plages d'adresses secondaires suivantes :
    • my-pods pour les adresses IP de pod.
    • my-services pour les adresses IP de service.

Console

Créer un réseau, un sous-réseau et des plages secondaires

  1. Accédez à la page Réseaux VPC dans la console Google Cloud .

    Accéder aux réseaux VPC

  2. Cliquez sur Créer un réseau VPC.

  3. Dans le champ Nom, saisissez my-net-2.

  4. Dans le champ Mode de création de sous-réseau, sélectionnez Personnalisé.

  5. Dans la section Nouveau sous-réseau, saisissez la valeur my-subnet-2 pour le champ Nom.

  6. Dans la liste Région, sélectionnez la région de votre choix.

  7. Dans Plage d'adresses IP, saisissez 192.168.0.0/20.

  8. Cliquez sur Créer une plage d'adresses IP secondaire. Dans Nom de la plage du sous-réseau, saisissez my-services, et dans Plage d'adresses IP secondaire, saisissez 10.0.32.0/20.

  9. Cliquez sur Ajouter une plage d'adresses IP. Dans Nom de plage du sous-réseau, saisissez my-pods, et dans Plage d'adresses IP secondaire, saisissez 10.4.0.0/14.

  10. Définissez Accès privé à Google sur Activé.

  11. Cliquez sur OK.

  12. Cliquez sur Créer.

Créer un cluster privé

Créez un cluster privé qui utilise votre sous-réseau :

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

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer, puis sur Configurer dans la section Standard ou Autopilot.

  3. Dans le champ Nom, saisissez private-cluster-2.

  4. Dans le volet de navigation, cliquez sur Mise en réseau.

  5. Sélectionnez la case d'option Cluster privé.

  6. Pour que vous puissiez créer un plan de contrôle accessible à partir de plages d'adresses IP externes autorisées, la case Accéder au plan de contrôle à l'aide de son adresse IP externe doit rester cochée.

  7. (Facultatif pour Autopilot) Définissez le paramètre Plage d'adresses IP du plan de contrôle sur 172.16.0.16/28.

  8. Dans la liste Réseau, sélectionnez my-net-2.

  9. Dans la liste Sous-réseau de nœud, sélectionnez my-subnet-2.

  10. Décochez la case Créer automatiquement des plages secondaires.

  11. Dans la liste Plage CIDR secondaire des pods, sélectionnez my-pods.

  12. Dans la liste Plage CIDR secondaire des services, sélectionnez my-services.

  13. Cochez la case Activer les réseaux autorisés pour le plan de contrôle.

  14. Cliquez sur Créer.

gcloud

Créer un réseau

Commencez par créer un réseau pour votre cluster. La commande suivante crée un réseau, my-net-2 :

gcloud compute networks create my-net-2 \
    --subnet-mode custom

Créer un sous-réseau et des plages secondaires

Ensuite, créez un sous-réseau, my-subnet-2, dans le réseau my-net-2, avec les plages secondaires my-pods pour les pods et my-services pour les services :

gcloud compute networks subnets create my-subnet-2 \
    --network my-net-2 \
    --range 192.168.0.0/20 \
    --secondary-range my-pods=10.4.0.0/14,my-services=10.0.32.0/20 \
    --enable-private-ip-google-access

Créer un cluster privé

Créez un cluster privé, private-cluster-2, en utilisant les plages réseau, sous-réseau et secondaire que vous avez créées.

  • Pour les clusters Autopilot, exécutez la commande suivante :

    gcloud container clusters create-auto private-cluster-2 \
        --enable-master-authorized-networks \
        --network my-net-2 \
        --subnetwork my-subnet-2 \
        --cluster-secondary-range-name my-pods \
        --services-secondary-range-name my-services \
        --enable-private-nodes
    
  • Pour les clusters Standard, exécutez la commande suivante :

    gcloud container clusters create private-cluster-2 \
        --enable-master-authorized-networks \
        --network my-net-2 \
        --subnetwork my-subnet-2 \
        --cluster-secondary-range-name my-pods \
        --services-secondary-range-name my-services \
        --enable-private-nodes \
        --enable-ip-alias \
        --master-ipv4-cidr 172.16.0.16/28 \
        --no-enable-basic-auth \
        --no-issue-client-certificate
    

À ce stade, les adresses IP ci-dessous sont les seules à avoir accès au plan de contrôle :

  • Plage principale de my-subnet-2
  • Plage secondaire de my-pods

Supposons que vous ayez un groupe de machines, en dehors de my-net-2, dont les adresses sont comprises dans la plage 203.0.113.0/29. Vous pouvez autoriser ces machines à accéder au point de terminaison public en saisissant la commande suivante :

gcloud container clusters update private-cluster-2 \
    --enable-master-authorized-networks \
    --master-authorized-networks 203.0.113.0/29

À ce stade, les adresses IP ci-dessous sont les seules à avoir accès au plan de contrôle :

  • Plage principale de my-subnet-2
  • Plage secondaire de my-pods
  • Les plages d'adresses que vous avez autorisées ; par exemple, 203.0.113.0/29.

Accéder à un cluster privé via Cloud Shell

Si vous avez activé un point de terminaison privé, vous ne pouvez pas accéder à votre plan de contrôle GKE avec Cloud Shell.

Si vous souhaitez accéder à votre cluster via Cloud Shell, vous devez ajouter l'adresse IP externe de votre environnement Cloud Shell à la liste des réseaux autorisés du cluster.

Procédez comme suit :

  1. Dans la fenêtre de ligne de commande Cloud Shell, utilisez dig pour trouver l'adresse IP externe de votre environnement Cloud Shell :

    dig +short myip.opendns.com @resolver1.opendns.com
    
  2. Ajoutez l'adresse externe de votre environnement Cloud Shell à la liste des réseaux autorisés du cluster :

    gcloud container clusters update CLUSTER_NAME \
        --enable-master-authorized-networks \
        --master-authorized-networks EXISTING_AUTH_NETS,SHELL_IP/32
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster
    • EXISTING_AUTH_NETS : adresses IP de votre liste existante de réseaux autorisés. Les réseaux autorisés sont visibles dans la console ou au moyen de la commande suivante :

      gcloud container clusters describe CLUSTER_NAME --format "flattened(masterAuthorizedNetworksConfig.cidrBlocks[])"
      
    • SHELL_IP : l'adresse IP externe de votre environnement Cloud Shell.

  3. Obtenez des identifiants afin de pouvoir utiliser kubectl pour accéder au cluster :

    gcloud container clusters get-credentials CLUSTER_NAME \
        --project=PROJECT_ID \
        --internal-ip
    

    Remplacez PROJECT_ID par l'ID du projet.

  4. Utilisez kubectl dans Cloud Shell pour accéder à votre cluster:

    kubectl get nodes
    

    Le résultat ressemble à ce qui suit :

    NAME                                               STATUS   ROLES    AGE    VERSION
    gke-cluster-1-default-pool-7d914212-18jv   Ready    <none>   104m   v1.21.5-gke.1302
    gke-cluster-1-default-pool-7d914212-3d9p   Ready    <none>   104m   v1.21.5-gke.1302
    gke-cluster-1-default-pool-7d914212-wgqf   Ready    <none>   104m   v1.21.5-gke.1302
    

Créer un cluster privé disposant d'un accès illimité au point de terminaison public

Dans cette section, vous allez créer un cluster privé dans lequel n'importe quelle adresse IP peut accéder au plan de contrôle.

Console

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

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer, puis sur Configurer dans la section Standard ou Autopilot.

  3. Dans le champ Nom, saisissez private-cluster-3.

  4. Dans le volet de navigation, cliquez sur Mise en réseau.

  5. Sélectionnez l'option Cluster privé

  6. La case Accéder au plan de contrôle à l'aide de son adresse IP externe doit rester cochée.

  7. (Facultatif pour Autopilot) Définissez le paramètre Plage d'adresses IP du plan de contrôle sur 172.16.0.32/28.

  8. Laissez les paramètres Mise en réseau et Sous-réseau de nœud définis sur default. Cela force GKE à générer un sous-réseau pour votre cluster.

  9. Décochez la case Activer les réseaux autorisés pour le plan de contrôle.

  10. Cliquez sur Créer.

gcloud

  • Pour les clusters Autopilot, exécutez la commande suivante :

    gcloud container clusters create-auto private-cluster-3 \
        --create-subnetwork name=my-subnet-3 \
        --no-enable-master-authorized-networks \
        --enable-private-nodes
    
  • Pour les clusters Standard, exécutez la commande suivante :

    gcloud container clusters create private-cluster-3 \
        --create-subnetwork name=my-subnet-3 \
        --no-enable-master-authorized-networks \
        --enable-ip-alias \
        --enable-private-nodes \
        --master-ipv4-cidr 172.16.0.32/28
    

où :

  • --create-subnetwork name=my-subnet-3 force GKE à créer automatiquement un sous-réseau nommé my-subnet-3.
  • --no-enable-master-authorized-networks désactive les réseaux autorisés pour le cluster.
  • --enable-ip-alias rend le cluster VPC natif (non requis pour Autopilot).
  • --enable-private-nodes indique que les nœuds du cluster ne possèdent pas d'adresses IP externes.
  • --master-ipv4-cidr 172.16.0.32/28 spécifie une plage d'adresses IP internes pour le plan de contrôle (facultatif pour Autopilot). Ce paramètre est définitif pour ce cluster et doit être unique au sein du VPC. L'utilisation d'adresses IP internes 1918 non RFC est acceptée.

Ajouter des règles de pare-feu pour des cas d'utilisation spécifiques

Cette section explique comment ajouter une règle de pare-feu à un cluster. Par défaut, les règles de pare-feu limitent le plan de contrôle de cluster de sorte qu'il ne lance que des connexions TCP vers vos nœuds et pods sur les ports 443 (HTTPS) et 10250 (kubelet). Pour certaines fonctionnalités Kubernetes, vous devrez peut-être ajouter des règles de pare-feu pour autoriser l'accès sur des ports supplémentaires. Ne créez pas de règles de pare-feu ni de règles de stratégies de pare-feu hiérarchiques ayant une priorité plus élevée que les règles de pare-feu créées automatiquement.

Les fonctionnalités de Kubernetes nécessitant des règles de pare-feu supplémentaires sont les suivantes :

L'ajout d'une règle de pare-feu autorise le trafic provenant du plan de contrôle de cluster vers tous les éléments suivants :

  • Port spécifié de chaque nœud (hostPort)
  • Port spécifié de chaque pod exécuté sur ces nœuds
  • Port spécifié de chaque service exécuté sur ces nœuds

Pour en savoir plus sur les règles de pare-feu, reportez-vous à la section Règles de pare-feu de la documentation de Cloud Load Balancing.

Pour ajouter une règle de pare-feu dans un cluster, vous devez enregistrer le bloc CIDR du plan de contrôle de cluster et la cible utilisée. Une fois l'enregistrement effectué, vous pouvez créer la règle.

Afficher le bloc CIDR du plan de contrôle

Vous avez besoin du bloc CIDR du plan de contrôle de cluster pour ajouter une règle de pare-feu.

Console

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

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster.

Dans l'onglet Détails, sous Mise en réseau, notez la valeur du champ Plage d'adresses du plan de contrôle.

gcloud

Exécutez la commande suivante :

gcloud container clusters describe CLUSTER_NAME

Remplacez CLUSTER_NAME par le nom de votre cluster.

Dans le résultat de la commande, notez la valeur du champ masterIpv4CidrBlock.

Afficher les règles de pare-feu existantes

Vous devez spécifier la cible (dans ce cas, les nœuds de destination) utilisée par les règles de pare-feu existantes du cluster.

Console

  1. Accédez à la page Stratégies de pare-feu de la console Google Cloud .

    Accéder à la page "Stratégies de pare-feu"

  2. Dans le champ Filtrer le tableau des Règles de pare-feu VPC, saisissez gke-CLUSTER_NAME.

Dans les résultats, notez la valeur du champ Cibles.

gcloud

Exécutez la commande suivante :

gcloud compute firewall-rules list \
    --filter 'name~^gke-CLUSTER_NAME' \
    --format 'table(
        name,
        network,
        direction,
        sourceRanges.list():label=SRC_RANGES,
        allowed[].map().firewall_rule().list():label=ALLOW,
        targetTags.list():label=TARGET_TAGS
    )'

Dans le résultat de la commande, notez la valeur du champ Targets.

Pour afficher les règles de pare-feu d'un VPC partagé, ajoutez l'option --project HOST_PROJECT_ID à la commande.

Ajouter une règle de pare-feu

Console

  1. Accédez à la page Stratégies de pare-feu de la console Google Cloud .

    Accéder à la page "Stratégies de pare-feu"

  2. Cliquez sur Créer une règle de pare-feu.

  3. Dans la section Nom, saisissez le nom pour la règle de pare-feu.

  4. Dans la liste Réseau, sélectionnez le réseau approprié.

  5. Dans la section Sens du trafic, cliquez sur Entrée.

  6. Dans Action en cas de correspondance, cliquez sur Autoriser.

  7. Dans la liste Cibles, sélectionnez Tags cibles spécifiés.

  8. Dans le champ Tags cibles, saisissez la valeur cible que vous avez notée précédemment.

  9. Dans la liste Filtre source, sélectionnez Plages IPv4.

  10. Sous Plages d'adresses IPv4 sources, saisissez le bloc CIDR du plan de contrôle du cluster.

  11. Sous Protocoles et ports, cliquez surProtocoles et ports spécifiés, cochez la case correspondant au protocole approprié (tcp ou udp ) puis saisissez le numéro de port dans le champ du protocole.

  12. Cliquez sur Créer.

gcloud

Exécutez la commande ci-dessous.

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --action ALLOW \
    --direction INGRESS \
    --source-ranges CONTROL_PLANE_RANGE \
    --rules PROTOCOL:PORT \
    --target-tags TARGET

Remplacez les éléments suivants :

  • FIREWALL_RULE_NAME : nom choisi pour la règle de pare-feu.
  • CONTROL_PLANE_RANGE : plage d'adresses IP du plan de contrôle du cluster (masterIpv4CidrBlock) que vous avez collectée précédemment.
  • PROTOCOL:PORT : port et son protocole, tcp ou udp.
  • TARGET : valeur cible (Targets) que vous avez collectée précédemment.

Pour ajouter une règle de pare-feu pour un VPC partagé, ajoutez les options suivantes à la commande:

--project HOST_PROJECT_ID
--network NETWORK_ID

Vérifier que les nœuds ne possèdent pas d'adresses IP externes

Après avoir créé un cluster privé, vérifiez que les nœuds du cluster ne possèdent pas d'adresses IP externes.

Console

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

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster.

  3. Pour les clusters Autopilot, dans la section Paramètres de base du cluster, cochez le champ Point de terminaison externe. La valeur est Désactivée.

Pour les clusters standards, procédez comme suit :

  1. Sur la page Clusters, cliquez sur l'onglet Nœuds.
  2. Sous Pools de nœuds, cliquez sur le nom du pool de nœuds.
  3. Sur la page Détails du pool de nœuds, sous Groupes d'instances, cliquez sur le nom de votre groupe d'instances. Exemple : gke-private-cluster-0-default-pool-5c5add1f-grp.
  4. Dans la liste des instances, vérifiez que les vôtres ne disposent pas d'adresses IP externes.

gcloud

Exécutez la commande suivante :

kubectl get nodes --output wide

La colonne EXTERNAL-IP du résultat est vide :

STATUS ... VERSION        EXTERNAL-IP  OS-IMAGE ...
Ready      v.8.7-gke.1                 Container-Optimized OS
Ready      v1.8.7-gke.1                Container-Optimized OS
Ready      v1.8.7-gke.1                Container-Optimized OS

Vérifier la réutilisation de l'appairage de VPC dans le cluster

Tous les clusters privés que vous créez après le 15 janvier 2020 réutilisent des connexions d'appairage de réseaux VPC.

Vous pouvez vérifier si votre cluster privé réutilise les connexions d'appairage de réseaux VPC à l'aide de gcloud CLI ou de la console Google Cloud .

Console

Vérifiez la ligne Appairage de VPC sur la page Détails du cluster. Si votre cluster réutilise des connexions d'appairage de VPC, la sortie commence par gke-n. Exemple :gke-n34a117b968dee3b2221-93c6-40af-peer

gcloud

gcloud container clusters describe CLUSTER_NAME \
    --format="value(privateClusterConfig.peeringName)"

Si votre cluster réutilise des connexions d'appairage de VPC, la sortie commence par gke-n. Exemple :gke-n34a117b968dee3b2221-93c6-40af-peer

Configurations de cluster avancées

Cette section décrit certaines configurations avancées que vous pouvez choisir lors de la création d'un cluster privé.

Octroyer un accès Internet sortant aux nœuds privés

Pour fournir un accès Internet sortant à vos nœuds privés, par exemple pour extraire des images d'un registre externe, utilisez Cloud NAT pour créer et configurer une instance Cloud Router. Cloud NAT permet aux nœuds privés d'établir des connexions sortantes via Internet pour envoyer et recevoir des paquets.

Cloud Router permet à tous vos nœuds de la région d'utiliser Cloud NAT pour toutes les plages d'adresses IP principales et plages d'adresses IP d'alias. De plus, il attribue automatiquement les adresses IP externes de la passerelle NAT.

Pour obtenir des instructions sur la création et la configuration de Cloud Router, reportez-vous à la section Créer une configuration Cloud NAT à l'aide de Cloud Router dans la documentation de Cloud NAT.

Créer un cluster privé dans un réseau VPC partagé

Pour apprendre à créer un cluster privé dans un réseau VPC partagé, consultez la page Créer un cluster privé dans un VPC partagé.

Déployer une application de conteneur Windows Server

Pour savoir comment déployer une application de conteneur Windows Server sur un cluster avec des nœuds privés, consultez la documentation sur le pool de nœuds Windows.

Accéder au point de terminaison privé du plan de contrôle dans le monde entier

Le point de terminaison privé du plan de contrôle est mis en œuvre par un équilibreur de charge réseau passthrough interne dans le réseau VPC du plan de contrôle. Les clients internes ou connectés via des tunnels Cloud VPN et des rattachements de VLAN Cloud Interconnect peuvent accéder aux équilibreurs de charge réseau passthrough internes.

Par défaut, ces clients doivent se situer dans la même région que l'équilibreur de charge.

Lorsque vous activez l'accès mondial au plan de contrôle, l'équilibreur de charge réseau passthrough interne est accessible dans le monde entier. Ainsi, les VM clientes et les systèmes sur site peuvent se connecter au point de terminaison privé du plan de contrôle, en fonction de la configuration des réseaux autorisés, depuis n'importe quelle région.

Pour en savoir plus sur les équilibreurs de charge réseau passthrough internes et l'accès mondial, consultez la page Équilibreurs de charge internes et réseaux connectés.

Activer l'accès mondial au point de terminaison privé du plan de contrôle

Par défaut, l'accès mondial n'est pas activé pour le point de terminaison privé du plan de contrôle lorsque vous créez un cluster privé. Pour activer l'accès mondial au plan de contrôle, utilisez les outils suivants en fonction du mode de votre cluster :

  • Pour les clusters standards, vous pouvez utiliser Google Cloud CLI ou la console Google Cloud .
  • Pour les clusters Autopilot, vous pouvez utiliser la ressource Terraform google_container_cluster.

Console

Pour créer un cluster privé avec accès mondial au plan de contrôle activé, procédez comme suit :

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

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer, puis sur Configurer dans la section Standard ou Autopilot.

  3. Saisissez un nom.

  4. Dans le volet de navigation, cliquez sur Mise en réseau.

  5. Sélectionner Cluster privé.

  6. Cochez la case Activer l'accès mondial au plan de contrôle.

  7. Configurez les autres champs comme vous le souhaitez.

  8. Cliquez sur Créer.

Pour activer l'accès mondial au plan de contrôle pour un cluster privé existant, procédez comme suit :

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

    Accéder à Google Kubernetes Engine

  2. À côté du cluster que vous souhaitez modifier, cliquez sur Actions, puis sur Modifier.

  3. Dans la section Mise en réseau, à côté de Accès mondial au plan de contrôle, cliquez sur Modifier.

  4. Dans la boîte de dialogue Modifier l'accès mondial au plan de contrôle, cochez la case Activer l'accès mondial au plan de contrôle.

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

gcloud

Ajoutez l'option --enable-master-global-access afin de créer un cluster privé pour lequel l'accès mondial au point de terminaison privé du plan de contrôle est activé :

gcloud container clusters create CLUSTER_NAME \
    --enable-private-nodes \
    --enable-master-global-access

Vous pouvez également activer l'accès mondial au point de terminaison privé du plan de contrôle pour un cluster privé existant :

gcloud container clusters update CLUSTER_NAME \
    --enable-master-global-access

Vérifier l'accès mondial au point de terminaison privé du plan de contrôle

Vous pouvez vérifier que l'accès mondial au point de terminaison privé du plan de contrôle est activé en exécutant la commande suivante et en consultant son résultat.

gcloud container clusters describe CLUSTER_NAME

Le résultat inclut une section privateClusterConfig dans laquelle vous pouvez voir l'état de masterGlobalAccessConfig.

privateClusterConfig:
  enablePrivateNodes: true
  masterIpv4CidrBlock: 172.16.1.0/28
  peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer
  privateEndpoint: 172.16.1.2
  publicEndpoint: 34.68.128.12
  masterGlobalAccessConfig:
    enabled: true

Accéder au point de terminaison privé du plan de contrôle à partir d'autres réseaux

Lorsque vous créez un cluster privé GKE et désactivez le point de terminaison public du plan de contrôle, vous devez administrer le cluster avec des outils tels que kubectl en utilisant le point de terminaison privé de son plan de contrôle. Vous pouvez accéder au point de terminaison privé du plan de contrôle du cluster à partir d'un autre réseau, y compris depuis les réseaux suivants :

  • Un réseau sur site connecté au réseau VPC du cluster à l'aide de tunnels Cloud VPN ou de rattachements de VLAN Cloud Interconnect
  • Un autre réseau VPC connecté au réseau VPC du cluster à l'aide de tunnels Cloud VPN

Le schéma suivant illustre un chemin de routage entre un réseau sur site et les nœuds du plan de contrôle GKE :

Schéma illustrant le routage entre un VPC sur site et un plan de contrôle de cluster

Pour permettre aux systèmes d'un autre réseau de se connecter au point de terminaison privé du plan de contrôle d'un cluster, procédez comme suit :

  1. Identifiez et enregistrez les informations réseau pertinentes concernant le cluster et le point de terminaison privé de son plan de contrôle.

    gcloud container clusters describe CLUSTER_NAME \
       --location=COMPUTE_LOCATION \
       --format="yaml(network, privateClusterConfig)"
    

    Remplacez les éléments suivants :

    Dans le résultat de la commande, identifiez et enregistrez les informations ci-dessous à utiliser dans les étapes suivantes :

    • network : nom ou URI du réseau VPC du cluster.
    • privateEndpoint : adresse IPv4 du point de terminaison privé du plan de contrôle ou de la plage CIDR IPv4 englobante (masterIpv4CidrBlock).
    • peeringName : nom de la connexion d'appairage de réseaux VPC utilisée pour connecter le réseau VPC du cluster au réseau VPC du plan de contrôle.

    Le résultat ressemble à ce qui suit :

    network: cluster-network
    privateClusterConfig:
      enablePrivateNodes: true
      masterGlobalAccessConfig:
        enabled: true
      masterIpv4CidrBlock: 172.16.1.0/28
      peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer
      privateEndpoint: 172.16.1.2
      publicEndpoint: 34.68.128.12
    
  2. Envisagez d'activer l'accès mondial au point de terminaison privé du plan de contrôle pour autoriser les paquets à entrer depuis n'importe quelle région du réseau VPC du cluster. L'activation de l'accès mondial au point de terminaison privé du plan de contrôle vous permet de vous connecter au point de terminaison privé à l'aide de tunnels Cloud VPN ou de rattachements de VLAN Cloud Interconnect situés dans n'importe quelle région, et pas seulement dans la région du cluster.

  3. Créez une route pour l'adresse IP privateEndpoint ou la plage d'adresses IP masterIpv4CidrBlock dans l'autre réseau. Comme l'adresse IP du point de terminaison privé du plan de contrôle correspond toujours à la plage d'adresses IPv4 masterIpv4CidrBlock, créer une route pour l'adresse IP privateEndpoint ou sa plage englobante fournit un chemin d'accès aux paquets provenant de l'autre réseau vers le point de terminaison privé du plan de contrôle dans les cas suivants :

    • L'autre réseau se connecte au réseau VPC du cluster à l'aide de rattachements de VLAN Cloud Interconnect ou de tunnels Cloud VPN utilisant des routes dynamiques (BGP) : utilisez une route annoncée personnalisée sur Cloud Router. Pour en savoir plus, consultez la section Annoncer des plages d'adresses personnalisées dans la documentation de Cloud Router.

    • L'autre réseau se connecte au réseau VPC du cluster à l'aide de tunnels VPN classiques qui n'utilisent pas de routes dynamiques : vous devez configurer une route statique dans l'autre réseau.

  4. Configurez le réseau VPC du cluster pour exporter ses routes personnalisées dans la relation d'appairage au réseau VPC du plan de contrôle. Google Cloud configure toujours le réseau VPC du plan de contrôle pour importer les routes personnalisées à partir du réseau VPC du cluster. Cette étape fournit un chemin de retour aux paquets provenant du point de terminaison privé du plan de contrôle vers l'autre réseau.

    Pour activer l'exportation de routes personnalisées à partir du réseau VPC de votre cluster, utilisez la commande suivante :

    gcloud compute networks peerings update PEERING_NAME \
        --network=CLUSTER_VPC_NETWORK \
        --export-custom-routes
    

    Remplacez les éléments suivants :

    • PEERING_NAME : nom de l'appairage qui connecte le réseau VPC du cluster au réseau VPC du plan de contrôle.
    • CLUSTER_VPC_NETWORK : nom ou URI du réseau VPC du cluster.

    Lorsque l'exportation de routes personnalisées est activée pour le VPC, la création de routes qui chevauchent les plages d'adresses IP peut interrompre votre cluster.

    Pour en savoir plus sur la mise à jour de l'échange de route pour les connexions d'appairage de réseaux VPC existantes, consultez la section Mettre à jour la connexion d'appairage.

    Les routes personnalisées dans le réseau VPC du cluster incluent des routes dont les destinations sont des plages d'adresses IP dans d'autres réseaux, par exemple un réseau sur site. Pour vous assurer que ces routes sont efficaces en tant que routes d'appairage personnalisées dans le réseau VPC du plan de contrôle, consultez la section Destinations compatibles depuis l'autre réseau.

Destinations compatibles depuis l'autre réseau

Les plages d'adresses envoyées par l'autre réseau aux routeurs cloud du réseau VPC du cluster doivent respecter les conditions suivantes :

  • Si le VPC de votre cluster peut accepter une route par défaut (0.0.0.0/0), le réseau VPC du plan de contrôle refuse toujours les routes par défaut, car il possède déjà une route par défaut locale. Si l'autre réseau envoie une route par défaut à votre réseau VPC, l'autre réseau doit également envoyer les destinations spécifiques des systèmes qui doivent se connecter au point de terminaison privé du plan de contrôle. Pour plus d'informations, reportez-vous à la section Ordre de routage.

  • Si le réseau VPC du plan de contrôle accepte les routes qui remplacent effectivement une route par défaut, ces routes brisent la connectivité aux API et servicesGoogle Cloud , ce qui interrompt le plan de contrôle du cluster. À titre d'exemple, l'autre réseau ne doit pas annoncer de routes avec des destinations 0.0.0.0/1 et 128.0.0.0/1. Reportez-vous au point précédent pour obtenir une autre solution.

Surveillez les limites de Cloud Router, en particulier le nombre maximal de destinations uniques pour les routes apprises.

Protéger un cluster privé avec VPC Service Controls

Pour renforcer la sécurité de vos clusters privés GKE, vous pouvez les protéger à l'aide de VPC Service Controls.

VPC Service Controls offre une sécurité supplémentaire pour vos clusters privés GKE afin de réduire le risque d'exfiltration des données. À l'aide de VPC Service Controls, vous pouvez ajouter des projets aux périmètres de service afin de protéger les ressources et les services des requêtes provenant de l'extérieur du périmètre.

Pour en savoir plus sur les périmètres de service, consultez la page Périmètres de service : détails et configuration.

Si vous utilisez Artifact Registry avec votre cluster privé GKE dans un périmètre de service VPC Service Controls, vous devez configurer le routage vers l'adresse IP virtuelle restreinte pour empêcher l'exfiltration de données.

Nettoyer

Une fois les tâches de cette page terminées, procédez comme suit pour supprimer les ressources afin d'éviter que des frais inutiles ne vous soient facturés sur votre compte :

Supprimer les clusters

Console

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

    Accéder à Google Kubernetes Engine

  2. Sélectionnez chaque cluster.

  3. Cliquez sur Supprimer.

gcloud

gcloud container clusters delete -q private-cluster-0 private-cluster-1 private-cluster-2 private-cluster-3

Supprimer le réseau

Console

  1. Accédez à la page Réseaux VPC dans la console Google Cloud .

    Accéder aux réseaux VPC

  2. Dans la liste des réseaux, cliquez sur my-net-0.

  3. Sur la page Détails du réseau VPC, cliquez sur Supprimer le réseau VPC.

  4. Dans la boîte de dialogue Supprimer un réseau, cliquez sur Supprimer.

gcloud

gcloud compute networks delete my-net-0

Étapes suivantes