Cette rubrique explique comment configurer un équilibreur de charge AWS Elastic Load Balancer (ELB) avec Anthos clusters on AWS (GKE sur AWS).
Lorsque vous créez un service de type LoadBalancer
, un contrôleur Anthos clusters on AWS configure un équilibreur de charge (ELB, Elastic Load Balancer) classique ou réseau sur AWS
Vous pouvez également suivre le guide de démarrage rapide pour créer un ELB classique orienté vers l'extérieur depuis la console Google Cloud ou créer un équilibreur de charge d'application AWS (ALB).
Avant de commencer
Avant de commencer à utiliser Anthos clusters on AWS, assurez-vous d'avoir effectué les tâches suivantes :
- Remplissez les conditions préalables.
- Installez un service de gestion.
- Créez un cluster d'utilisateur.
- À partir de votre répertoire
anthos-aws
, utilisezanthos-gke
pour basculer vers le contexte de votre cluster d'utilisateur.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Remplacez CLUSTER_NAME par le nom de votre cluster d'utilisateur. - Installez l'outil de ligne de commande
curl
ou un outil similaire.
Sélectionner un équilibreur de charge externe ou interne
Anthos clusters on AWS crée un équilibreur de charge externe (dans votre sous-réseau public) ou interne (dans votre sous-réseau privé) en fonction d'une annotation de la ressource LoadBalancer.
Si vous sélectionnez un équilibreur de charge externe, celui-ci est accessible par les adresses IP autorisées dans les groupes de sécurité du pool de nœuds et dans les listes de contrôle d'accès (LCA) au réseau du sous-réseau.
Choisir un type d'équilibreur de charge
Choisissez entre créer un équilibreur de charge classique (ELB classique) ou un équilibreur de charge réseau (NLB). Pour découvrir les différences entre les types d'équilibreurs de charge, consultez la section Types d'équilibreurs de charge de la documentation AWS.
Créer un équilibreur de charge
Pour créer un équilibreur de charge, vous devez créer un déploiement et l'exposer avec un service.
Créez votre déploiement. Les conteneurs de ce déploiement écoutent le port 50001. Enregistrez le fichier YAML suivant dans un fichier nommé
my-deployment-50001.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment-50001 spec: selector: matchLabels: app: products department: sales replicas: 3 template: metadata: labels: app: products department: sales spec: containers: - name: hello image: "gcr.io/google-samples/hello-app:2.0" env: - name: "PORT" value: "50001"
Créez le déploiement avec
kubectl apply
:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-deployment-50001.yaml
Vérifiez que trois pods sont en cours d'exécution :
env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods --selector=app=products
Créez un service de type
LoadBalancer
pour votre déploiement. Vous pouvez créer un ELB classique ou réseau sur votre sous-réseau public ou privé. Choisissez l'une des options suivantes :- Un ELB classique sur le sous-réseau public
- Un NLB sur le sous-réseau public
- Un ELB classique sur le sous-réseau privé
- Un NLB sur le sous-réseau privé
Copiez ensuite le fichier manifeste suivant dans un fichier nommé
my-lb-service.yaml
.Public classique
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
NLB public
Pour créer un NLB, définissez l'annotation
service.beta.kubernetes.io/aws-load-balancer-type
surnlb
. Le code YAML suivant inclut cette annotation.apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Classique privé
Pour créer une ressource LoadBalancer privée, définissez l'annotation
service.beta.kubernetes.io/aws-load-balancer-internal
sur"true"
. Le code YAML suivant inclut cette annotation.apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
NLB privé
Pour créer un NLB privé, définissez les annotations suivantes :
- De
service.beta.kubernetes.io/aws-load-balancer-internal
à"true"
- De
service.beta.kubernetes.io/aws-load-balancer-type
ànlb
Le code YAML suivant inclut les deux annotations.
apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" service.beta.kubernetes.io/aws-load-balancer-type: nlb spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
Créez le service à l'aide de
kubectl apply
:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-lb-service.yaml
Affichez le nom d'hôte du service avec
kubectl get service
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get service my-lb-service \ --output jsonpath="{.status.loadBalancer.ingress..hostname}{'\n'}"
Le résultat ressemble au suivant :
elb-id.elb.aws-region.amazonaws.com
.Si vous avez créé un équilibreur de charge externe et que vous avez accès au sous-réseau VPC public, vous pouvez vous connecter à l'équilibreur de charge à l'aide de
curl
. Remplacez external-ip par l'adresse IP obtenue dans le résultat de la commandekubectl get service
de l'étape précédente.curl external-ip:60000
Le résultat se présente comme suit :
Hello, world! Version: 2.0.0 Hostname: my-deployment-50001-84b6dc5555-zmk7q
Nettoyer
Pour supprimer le service et le déploiement, utilisez la commande kubectl delete
.
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f my-lb-service.yaml
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f my-deployment-50001.yaml
Dépannage
Si vous ne pouvez pas accéder à un point de terminaison d'équilibreur de charge, essayez d'ajouter des tags à vos sous-réseaux.
Étape suivante
Suivez le guide de démarrage rapide pour créer un fichier ELB classique créé en externe depuis la console Google Cloud.
Consultez la documentation GKE sur Google Cloud concernant l'exposition d'applications à l'aide de services.