Ce document explique comment acheminer le trafic depuis GKE sur AWS via un proxy HTTP/HTTPS. Vous spécifiez la configuration du proxy lorsque vous créez un cluster.
Présentation
GKE sur AWS peut acheminer le trafic Internet sortant via un proxy pour les raisons suivantes :
- Enregistrer des clusters avec Google Cloud via Connect
- Exécuter l'agent Connect
- Télécharger des images à partir de Container Registry
Limites
- Les champs
httpProxy
ethttpsProxy
ne sont pas compatibles avec les URL commençant parhttps://
. Vous devez utiliserhttp://
. Les requêtes envoyées au port 443 utilisent HTTPS. - Vous devez définir des valeurs pour
httpProxy
,httpsProxy
etnoProxy
. - Vous devrez peut-être ajouter des domaines, des adresses IP ou des plages CIDR supplémentaires au champ
noProxy
. Nous vous recommandons d'ajouter la plage d'adresses IP du VPC. À partir de la version 1.22 de Google Kubernetes Engine, GKE sur AWS ajoute automatiquement le CIDR d'adresse du pod et le CIDR d'adresse de service.
Prérequis
Cette section décrit les conditions préalables que vous devez appliquer avant d'utiliser un proxy.
Activer les points de terminaison VPC
Avant de configurer un proxy, vous devez créer des points de terminaison VPC pour votre installation GKE sur AWS.
Les points de terminaison VPC permettent aux ressources des sous-réseaux privés d'accéder aux services AWS sans accès Internet public.
Le tableau suivant répertorie les services AWS pour lesquels GKE sur AWS nécessite des points de terminaison VPC, ainsi que le type de point de terminaison et les groupes de sécurité nécessitant un accès au point de terminaison.
Service | Type de point de terminaison | Groupes de sécurité |
---|---|---|
Autoscaling | Interface | Plan de contrôle, pools de nœuds |
EC2 | Interface | Plan de contrôle, pools de nœuds |
EFS | Interface | Plan de contrôle |
Équilibrage de charge | Interface | Plan de contrôle, pools de nœuds |
Service de gestion des clés | Interface | Plan de contrôle, pools de nœuds |
S3 | Passerelle | Plan de contrôle, pools de nœuds |
Secrets Manager | Interface | Plan de contrôle, pools de nœuds |
Service de jetons de sécurité (STS) | Interface | Plan de contrôle, pools de nœuds |
Vous pouvez créer des points de terminaison à partir de la console VPC AWS. Les options que vous définissez lorsque vous créez des points de terminaison VPC dépendent de la configuration de votre VPC.
Définir un groupe de sécurité
GKE sur AWS doit pouvoir se connecter au serveur proxy pour télécharger des composants logiciels. Créez ou recherchez un groupe de sécurité AWS qui autorise les connexions sortantes à votre serveur proxy. Le groupe de sécurité doit autoriser l'accès sortant de vos groupes de sécurité "Gestion", "Plan de contrôle" et "Pool de nœuds" à l'adresse et au port du proxy. Enregistrez l'ID de ce groupe de sécurité (par exemple, sg-12345678
).
Type | Protocole | Depuis le port | Au port | Adresse |
---|---|---|---|---|
Sortie | TCP | Port du proxy | Port du proxy | Groupe de sécurité du proxy |
Liste d'autorisation du proxy
Pour que GKE sur AWS puisse se connecter aux services Google Cloud, le serveur proxy doit autoriser le trafic vers les domaines suivants :
.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com
Remplacez GCP_LOCATION
par la région Google Cloud dans laquelle se trouve votre cluster GKE Enterprise. Spécifiez us-west1
ou une autre région compatible.
Mettre à jour les rôles IAM AWS
Pour que GKE sur AWS puisse lire la configuration du proxy depuis AWS Secrets Manager, vous devez ajouter secretsmanager:GetSecretValue
au Rôle du plan de contrôle et au Rôle du pool de nœuds de votre cluster.
Pour ajouter cette autorisation, ajoutez-la à votre stratégie de plan de contrôle et de pool de nœuds. Pour en savoir plus, consultez la page Modifier des stratégies IAM.
Créer un fichier de configuration de proxy
La configuration du proxy est stockée dans un secret AWS Secrets Manager en tant que chaîne JSON.
Vous pouvez transmettre cette configuration à l'outil de ligne de commande aws
sous forme de fichier. La présente section explique comment créer ce fichier.
Le tableau suivant décrit le contenu de ce fichier.
Champ | Description | Exemples | Obligatoire |
---|---|---|---|
httpProxy |
URL du serveur proxy. La valeur doit inclure un nom d'hôte ou une adresse IP, et éventuellement un port, un nom d'utilisateur et un mot de passe. | "http://user:password@10.184.37.42:80" "10.184.37.42" |
Oui |
httpsProxy |
URL du proxy pour le trafic HTTPS chiffré. L'URL httpProxy sera utilisée si httpsProxy n'est pas fourni. | "http://10.101.16.31:80"
|
Oui |
noProxy |
Liste d'URL séparées par une virgule à exclure du proxy. Chaque valeur peut être une adresse IP, une plage CIDR, un nom de domaine ou le caractère astérisque (*). Les domaines spécifiés par un point (par exemple, ".google.com") indiquent qu'un sous-domaine est requis. Le fait d'utiliser un seul astérisque (*) permet d'ignorer toute configuration de proxy. | "1.2.3.4,10.0.0.0/16,example.com,.site.com" |
Oui |
Pour créer le fichier de configuration, créez un fichier JSON contenant les valeurs des clés
httpProxy
,noProxy
ethttpsProxy
(facultative).{ "httpProxy": "AUTHENTICATION_URL", "httpsProxy": "AUTHENTICATION_URL", "noProxy": "NO_PROXY_ADDRESSES" }
Remplacez les éléments suivants :
AUTHENTICATION_URL
: URL encodée contenant le nom d'utilisateur de proxy et le mot de passeNO_PROXY_ADDRESSES
: liste d'URL et de blocs CIDR séparés par une virgule, par exemple10.0.0.0/16,http://example.com
Enregistrez le fichier pour l'utiliser dans la section suivante.
Créez un secret avec ces données JSON en tant que secret dans AWS Secrets Manager à l'aide de l'outil de ligne de commande
aws
.aws secretsmanager create-secret \ --name SECRET_NAME \ --secret-string file://PROXY_CONFIGURATION_FILE
Remplacez les éléments suivants :
SECRET_NAME
: nom du nouveau secret.PROXY_CONFIGURATION_FILE
: chemin d'accès à votre fichier de configuration de proxy.
Le résultat inclut le nom de ressource Amazon (ARN) et le contenu du secret. Vous pouvez maintenant référencer ce secret lors de la création d'un cluster.
Créer un cluster utilisant un proxy
Pour configurer GKE sur AWS afin d'utiliser un proxy HTTP pour la connectivité sortante, procédez comme suit :
Suivez la procédure décrite dans Créer un cluster et transmettez les options proxy-secret-arn
et proxy-secret-version-id
.
gcloud container aws clusters create CLUSTER_NAME \
--proxy-secret-arn=PROXY_SECRET_ARN \
--proxy-secret-version-id=PROXY_SECRET_VERSION \
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster.PROXY_SECRET_ARN
: ARN du secret contenant les paramètres de proxy, par exemplearn:aws::secretsmanager:us-east-2:111122223333:secret:example/ExampleSecret-jiObOV
PROXY_SECRET_VERSION
: ID de version des secrets, par exempleEXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
Mettre à jour la configuration du proxy
Vous pouvez mettre à jour la configuration du proxy pour un plan de contrôle de cluster ou un pool de nœuds. Pour mettre à jour l'ARN de configuration du proxy, vous devez d'abord mettre à jour le rôle IAM AWS du plan de contrôle ou du pool de nœuds.
Mettre à jour les rôles IAM AWS
Avant de modifier l'ARN où la configuration du proxy est stockée, vous devez vérifier que le Rôle du plan de contrôle et le Rôle du pool de nœuds de votre cluster disposent d'un accès en lecture à l'ARN secret. Si votre instruction IAM avec l'autorisation secretsmanager:GetSecretValue
est limitée à des ARN de ressources spécifiques, ajoutez le nouvel ARN secret à cette liste avant de mettre à jour la configuration du proxy.
Mettre à jour la configuration du proxy de cluster
Pour mettre à jour la configuration du proxy de votre cluster, utilisez la CLI Google Cloud.
gcloud container aws clusters update CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--proxy-secret-arn=PROXY_SECRET_ARN \
--proxy-secret-version-id=PROXY_SECRET_VERSION
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster.GOOGLE_CLOUD_LOCATION
: région Google Cloud compatible qui gère votre clusterPROXY_SECRET_ARN
: ARN du secret contenant les paramètres de proxyPROXY_SECRET_VERSION
: ID de version des secrets, par exempleEXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
Mettre à jour la configuration du proxy de pool de nœuds
Pour mettre à jour la configuration du proxy de votre pool de nœuds, utilisez Google Cloud CLI.
gcloud container aws node-pools update NODE_POOL_NAME
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--proxy-secret-arn=PROXY_SECRET_ARN \
--proxy-secret-version-id=PROXY_SECRET_VERSION
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom de votre pool de nœuds.CLUSTER_NAME
: nom de votre cluster.GOOGLE_CLOUD_LOCATION
: région Google Cloud compatible qui gère votre clusterPROXY_SECRET_ARN
: ARN du secret contenant les paramètres de proxyPROXY_SECRET_VERSION
: ID de version des secrets, par exempleEXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
Supprimer la configuration du proxy
Vous pouvez supprimer la configuration du proxy du plan de contrôle ou des pools de nœuds du cluster. Ces opérations sont indépendantes. La suppression de la configuration du plan de contrôle ne la supprime pas des pools de nœuds du cluster.
Supprimer la configuration du proxy du plan de contrôle
Pour supprimer la configuration du proxy de votre plan de contrôle de cluster, utilisez Google Cloud CLI.
gcloud container aws clusters update CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--clear-proxy-config
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster.GOOGLE_CLOUD_LOCATION
: région Google Cloud compatible qui gère votre cluster, par exempleus-west1
Supprimer la configuration du proxy de pool de nœuds
Pour supprimer la configuration de proxy d'un pool de nœuds, utilisez Google Cloud CLI.
gcloud container aws node-pools update NODE_POOL_NAME
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--clear-proxy-config
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom de votre pool de nœuds.CLUSTER_NAME
: nom de votre cluster.GOOGLE_CLOUD_LOCATION
: région Google Cloud compatible qui gère votre cluster, par exempleus-west1
Étape suivante
- Consultez les informations supplémentaires sur la création d'un cluster.