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
Accédez à la page Réseaux VPC dans la console Google Cloud .
Cliquez sur add_boxCréer un réseau VPC.
Dans le champ Nom, saisissez
my-net-0
.Dans le champ Mode de création de sous-réseau, sélectionnez Personnalisé.
Dans la section Nouveau sous-réseau, saisissez la valeur
my-subnet-0
pour le champ Nom.Dans la liste Région, sélectionnez la région de votre choix.
Dans Plage d'adresses IP, saisissez
10.2.204.0/22
.Définissez Accès privé à Google sur Activé.
Cliquez sur OK.
Cliquez sur Créer.
Créer un cluster privé
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Cliquez sur
Créer, puis sur Configurer dans la section Standard ou Autopilot.Dans le champ Nom, spécifiez
private-cluster-0
.Dans le volet de navigation, cliquez sur Mise en réseau.
Dans la liste Réseau, sélectionnez my-net-0.
Dans la liste Sous-réseau de nœud, sélectionnez my-subnet-0.
Sélectionnez la case d'option Cluster privé.
Décochez la case Accéder au plan de contrôle à l'aide de son adresse IP externe.
(Facultatif pour Autopilot) : Définissez la plage d'adresses IP du plan de contrôle sur
172.16.0.32/28
.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 principale192.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
Accédez à la page Réseaux VPC dans la console Google Cloud .
Cliquez sur add_boxCréer un réseau VPC.
Dans le champ Nom, saisissez
my-net-2
.Dans le champ Mode de création de sous-réseau, sélectionnez Personnalisé.
Dans la section Nouveau sous-réseau, saisissez la valeur
my-subnet-2
pour le champ Nom.Dans la liste Région, sélectionnez la région de votre choix.
Dans Plage d'adresses IP, saisissez
192.168.0.0/20
.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, saisissez10.0.32.0/20
.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, saisissez10.4.0.0/14
.Définissez Accès privé à Google sur Activé.
Cliquez sur OK.
Cliquez sur Créer.
Créer un cluster privé
Créez un cluster privé qui utilise votre sous-réseau :
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Cliquez sur
Créer, puis sur Configurer dans la section Standard ou Autopilot.Dans le champ Nom, saisissez
private-cluster-2
.Dans le volet de navigation, cliquez sur Mise en réseau.
Sélectionnez la case d'option Cluster privé.
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.
(Facultatif pour Autopilot) Définissez le paramètre Plage d'adresses IP du plan de contrôle sur
172.16.0.16/28
.Dans la liste Réseau, sélectionnez my-net-2.
Dans la liste Sous-réseau de nœud, sélectionnez my-subnet-2.
Décochez la case Créer automatiquement des plages secondaires.
Dans la liste Plage CIDR secondaire des pods, sélectionnez my-pods.
Dans la liste Plage CIDR secondaire des services, sélectionnez my-services.
Cochez la case Activer les réseaux autorisés pour le plan de contrôle.
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 :
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
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 clusterEXISTING_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.
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.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
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Cliquez sur
Créer, puis sur Configurer dans la section Standard ou Autopilot.Dans le champ Nom, saisissez
private-cluster-3
.Dans le volet de navigation, cliquez sur Mise en réseau.
Sélectionnez l'option Cluster privé
La case Accéder au plan de contrôle à l'aide de son adresse IP externe doit rester cochée.
(Facultatif pour Autopilot) Définissez le paramètre Plage d'adresses IP du plan de contrôle sur
172.16.0.32/28
.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.Décochez la case Activer les réseaux autorisés pour le plan de contrôle.
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 :
- Webhooks d'admission
- Serveurs d'API agrégés
- Conversion de webhooks
- Configuration de l'audit dynamique
- En règle générale, toutes les API qui possèdent un champ ServiceReference nécessitent des règles de pare-feu supplémentaires.
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
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
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
Accédez à la page Stratégies de pare-feu de la console Google Cloud .
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
Accédez à la page Stratégies de pare-feu de la console Google Cloud .
Cliquez sur add_box Créer une règle de pare-feu.
Dans la section Nom, saisissez le nom pour la règle de pare-feu.
Dans la liste Réseau, sélectionnez le réseau approprié.
Dans la section Sens du trafic, cliquez sur Entrée.
Dans Action en cas de correspondance, cliquez sur Autoriser.
Dans la liste Cibles, sélectionnez Tags cibles spécifiés.
Dans le champ Tags cibles, saisissez la valeur cible que vous avez notée précédemment.
Dans la liste Filtre source, sélectionnez Plages IPv4.
Sous Plages d'adresses IPv4 sources, saisissez le bloc CIDR du plan de contrôle du cluster.
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.
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
ouudp
.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
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Dans la liste des clusters, cliquez sur le nom du cluster.
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 :
- Sur la page Clusters, cliquez sur l'onglet Nœuds.
- Sous Pools de nœuds, cliquez sur le nom du pool de nœuds.
- 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.
- 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 :
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Cliquez sur
Créer, puis sur Configurer dans la section Standard ou Autopilot.Saisissez un nom.
Dans le volet de navigation, cliquez sur Mise en réseau.
Sélectionner Cluster privé.
Cochez la case Activer l'accès mondial au plan de contrôle.
Configurez les autres champs comme vous le souhaitez.
Cliquez sur Créer.
Pour activer l'accès mondial au plan de contrôle pour un cluster privé existant, procédez comme suit :
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
À côté du cluster que vous souhaitez modifier, cliquez sur more_vertActions, puis sur edit Modifier.
Dans la section Mise en réseau, à côté de Accès mondial au plan de contrôle, cliquez sur edit Modifier.
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.
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 :
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 :
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 :
CLUSTER_NAME
: nom du cluster.COMPUTE_LOCATION
: emplacement Compute Engine du cluster.
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
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.
Créez une route pour l'adresse IP
privateEndpoint
ou la plage d'adresses IPmasterIpv4CidrBlock
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 IPv4masterIpv4CidrBlock
, créer une route pour l'adresse IPprivateEndpoint
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.
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
et128.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
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Sélectionnez chaque cluster.
Cliquez sur delete Supprimer.
gcloud
gcloud container clusters delete -q private-cluster-0 private-cluster-1 private-cluster-2 private-cluster-3
Supprimer le réseau
Console
Accédez à la page Réseaux VPC dans la console Google Cloud .
Dans la liste des réseaux, cliquez sur
my-net-0
.Sur la page Détails du réseau VPC, cliquez sur delete Supprimer le réseau VPC.
Dans la boîte de dialogue Supprimer un réseau, cliquez sur Supprimer.
gcloud
gcloud compute networks delete my-net-0
Étapes suivantes
- Découvrez les configurations avancées avec des clusters privés.
- Apprenez à créer des clusters de VPC natif.
- En savoir plus sur l'appairage de réseaux VPC.