Utiliser un proxy HTTP

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 et httpsProxy ne sont pas compatibles avec les URL commençant par https://. Vous devez utiliser http://. Les requêtes envoyées au port 443 utilisent HTTPS.
  • Vous devez définir des valeurs pour httpProxy, httpsProxy et noProxy.
  • 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
  1. Pour créer le fichier de configuration, créez un fichier JSON contenant les valeurs des clés httpProxy, noProxy et httpsProxy (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 passe
    • NO_PROXY_ADDRESSES : liste d'URL et de blocs CIDR séparés par une virgule, par exemple 10.0.0.0/16,http://example.com

    Enregistrez le fichier pour l'utiliser dans la section suivante.

  2. 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 exemple arn:aws::secretsmanager:us-east-2:111122223333:secret:example/ExampleSecret-jiObOV
  • PROXY_SECRET_VERSION : ID de version des secrets, par exemple EXAMPLE1-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 cluster
  • PROXY_SECRET_ARN: ARN du secret contenant les paramètres de proxy
  • PROXY_SECRET_VERSION : ID de version des secrets, par exemple EXAMPLE1-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 cluster
  • PROXY_SECRET_ARN: ARN du secret contenant les paramètres de proxy
  • PROXY_SECRET_VERSION : ID de version des secrets, par exemple EXAMPLE1-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 :

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 exemple us-west1

Étape suivante