21.5. Création d'une instance de AWS Load Balancer Controller
Après avoir installé l'opérateur, vous pouvez créer une instance du contrôleur AWS Load Balancer.
21.5.1. Création d'une instance du contrôleur AWS Load Balancer à l'aide d'AWS Load Balancer Operator
Vous ne pouvez installer qu'une seule instance de aws-load-balancer-controller
dans un cluster. Vous pouvez créer le contrôleur AWS Load Balancer en utilisant le CLI. L'opérateur AWS Load Balancer (ALB) ne réconcilie que la ressource portant le nom cluster
.
Conditions préalables
-
Vous avez créé l'espace de noms
echoserver
. -
Vous avez accès au CLI OpenShift (
oc
).
Procédure
Créez un fichier YAML de la ressource
aws-load-balancer-controller
, par exemplesample-aws-lb.yaml
, comme suit :apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController 1 metadata: name: cluster 2 spec: subnetTagging: Auto 3 additionalResourceTags: 4 - key: example.org/security-scope value: staging ingressClass: cloud 5 config: replicas: 2 6 enabledAddons: 7 - AWSWAFv2 8
- 1
- Définit la ressource
aws-load-balancer-controller
. - 2
- Définit le nom de l'instance du contrôleur AWS Load Balancer. Ce nom d'instance est ajouté comme suffixe à toutes les ressources connexes.
- 3
- Les options valides sont
Auto
etManual
. Lorsque la valeur est définie surAuto
, l'opérateur tente de déterminer les sous-réseaux qui appartiennent à la grappe et les marque de manière appropriée. L'opérateur ne peut pas déterminer le rôle correctement si les balises de sous-réseau interne ne sont pas présentes sur le sous-réseau interne. Si vous avez installé votre cluster sur une infrastructure fournie par l'utilisateur, vous pouvez marquer manuellement les sous-réseaux avec les balises de rôle appropriées et définir la stratégie de marquage des sous-réseaux surManual
. - 4
- Définit les balises utilisées par le contrôleur lorsqu'il approvisionne les ressources AWS.
- 5
- La valeur par défaut de ce champ est
alb
. L'opérateur fournit une ressourceIngressClass
portant le même nom si elle n'existe pas. - 6
- Spécifie le nombre de répliques du contrôleur.
- 7
- Spécifie les modules complémentaires pour les équilibreurs de charge AWS, qui sont spécifiés par le biais d'annotations.
- 8
- Active l'annotation
alb.ingress.kubernetes.io/wafv2-acl-arn
.
Créez une ressource
aws-load-balancer-controller
en exécutant la commande suivante :$ oc create -f sample-aws-lb.yaml
Une fois le contrôleur AWS Load Balancer lancé, créez une ressource
deployment
:apiVersion: apps/v1 kind: Deployment 1 metadata: name: <echoserver> 2 namespace: echoserver spec: selector: matchLabels: app: echoserver replicas: 3 3 template: metadata: labels: app: echoserver spec: containers: - image: openshift/origin-node command: - "/bin/socat" args: - TCP4-LISTEN:8080,reuseaddr,fork - EXEC:'/bin/bash -c \"printf \\\"HTTP/1.0 200 OK\r\n\r\n\\\"; sed -e \\\"/^\r/q\\\"\"' imagePullPolicy: Always name: echoserver ports: - containerPort: 8080
Créer une ressource
service
:apiVersion: v1 kind: Service 1 metadata: name: <echoserver> 2 namespace: echoserver spec: ports: - port: 80 targetPort: 8080 protocol: TCP type: NodePort selector: app: echoserver
Déployer une ressource
Ingress
soutenue par l'ALB :apiVersion: networking.k8s.io/v1 kind: Ingress 1 metadata: name: <echoserver> 2 namespace: echoserver annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: instance spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Exact backend: service: name: <echoserver> 3 port: number: 80
Vérification
Vérifiez l'état de la ressource
Ingress
pour afficher l'hôte de l'équilibreur de charge AWS (ALB) provisionné en exécutant la commande suivante :$ HOST=$(oc get ingress -n echoserver echoserver --template='{{(index .status.loadBalancer.ingress 0).hostname}}')
Vérifiez l'état de l'hôte AWS Load Balancer (ALB) provisionné en exécutant la commande suivante :
$ curl $HOST