Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Come posso utilizzare AWS Load Balancer Controller per configurare un Application Load Balancer su un gruppo di nodi Amazon EC2 in Amazon EKS?
Desidero utilizzare AWS Load Balancer Controller per configurare un Application Load Balancer su un gruppo di nodi Amazon Elastic Compute Cloud (Amazon EC2) in Amazon Elastic Kubernetes Service (Amazon EKS).
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Prerequisito: configura le sottoreti per consentire l'accesso Internet in uscita dai nodi worker. AWS Load Balancer Controller richiede una connessione Internet in uscita.
Per distribuire AWS Load Balancer Controller su AWS Fargate, consulta Come posso configurare AWS Load Balancer Controller su un cluster Amazon EKS per Fargate?
Assegna un tag alle sottoreti
Assegna un tag alle sottoreti Amazon Virtual Private Cloud (Amazon VPC) nel cluster Amazon EKS. Dopo aver assegnato i tag alle sottoreti, AWS Load Balancer Controller le rileva automaticamente nel momento in cui crei la risorsa Application Load Balancer.
Per gli Application Load Balancer pubblici, devi avere almeno due sottoreti pubbliche nel VPC del cluster con il tag kubernetes.io/role/elb.
Per gli Application Load Balancer privati, devi avere almeno due sottoreti private nel VPC del cluster con il tag kubernetes.io/role/internal-elb.
Crea un provider di identità OIDC
Utilizza la console Amazon EKS, AWS CLI o eksctl per creare un provider di identità OIDC da utilizzare con i ruoli AWS Identity and Access Management (AWS IAM) per gli account di servizio (IRSA).
Console Amazon EKS
Per utilizzare la console, consulta Crea un provider OIDC (Console AWS).
AWS CLI
Individua l'identificazione personale dell'autorità di certificazione (CA) principale utilizzata dal cluster. Quindi esegui questo comando create-open-id-connect-provider:
ISSUER_URL=$(aws eks describe-cluster --name cluster-name \ --query "cluster.identity.oidc.issuer" --region region-name --output text)aws iam create-open-id-connect-provider \ --url ${ISSUER_URL} \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region region-name
Nota: sostituisci cluster-name con il nome del tuo cluster, region-name con la tua Regione AWS e ca-thumbprint con l'identificazione personale del certificato CA principale.
eksctl
Per utilizzare lo strumento a riga di comando eksctl, consulta Crea un provider OIDC (eksctl).
Crea una policy IAM
Crea una policy IAM che consenta ad AWS Load Balancer Controller di effettuare chiamate alle API AWS.
Importante: è consigliabile utilizzare IRSA quando concedi l'accesso alle API AWS.
Completa i seguenti passaggi:
-
Esegui uno di questi comandi in base alla Regione per scaricare una policy IAM per AWS Load Balancer Controller da GitHub.
Per tutte le Regioni tranne le Regioni cinesi di Pechino e Ningxia, esegui questo comando describe-cluster:ISSUER_URL= aws eks describe-cluster --name example-cluster-name \ --query "cluster.identity.oidc.issuer" --region example-region-name --output text aws iam create-open-id-connect-provider \ --url example-issuer-url \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region example-region-nameNota: sostituisci example-cluster-name con il nome del tuo cluster, example-region-name con la tua Regione e example-issuer-url con l'URL del tuo emittente.
Per le Regioni cinesi di Pechino e Ningxia, esegui questo comando curl:curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_cn.json -
Esegui questo comando create-policy per creare una policy IAM denominata AWSLoadBalancerControllerIAMPolicy per il profilo di istanza del nodo worker:
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json -
Annota il nome della risorsa Amazon (ARN) della policy restituita dal comando.
-
Utilizza il ruolo IAM esistente o crea un nuovo ruolo IAM per AWS Load Balancer Controller.
Nota: per creare un ruolo IAM con eksctl, utilizza il parametro -attach-policy-arn con l'ARN della policy IAM AWSLoadBalancerControllerIAMPolicy. -
Esegui questo comando attach-role-policy per collegare AWSLoadBalancerControllerIAMPolicy al ruolo IAM:
aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \--role-name role-nameNota: Sostituisci 111122223333 con l'ID dell’account AWS e role-name con il nome del ruolo IAM.
Distribuisci AWS Load Balancer Controller
Completa i seguenti passaggi:
-
Verifica di avere il tag richiesto per il bilanciatore del carico associato alle sottoreti.
-
Esegui questo comando con Kubernetes 1.16 o versioni successive per installare cert-manager:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/example-version/cert-manager.yaml -
Nel file manifesto scaricato da GitHub, esegui questo comando:
curl -Lo ingress-controller.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/example-version/v2_13_3_full.yamlNota: sostituisci example-version con la versione di AWS Load Balancer Controller che desideri distribuire. Per verificare la versione di AWS Load Balancer Controller, consulta Kubernetes SIGs (SIG Kubernetes) sul sito web GitHub. Assicurati di modificare il nome del file in modo che corrisponda alla versione. Nell'esempio di codice precedente, v2_13_3_full.yaml corrisponde ad AWS Load Balancer Controller v2.13.3. Per ulteriori informazioni, consulta aws-load-balancer-controller sul sito web GitHub.
-
Effettua i seguenti aggiornamenti nella sezione ServiceAccount del file **.yaml **:
spec: containers: - args: - --cluster-name=example-cluster-name - --ingress-class=albNota: sostituisci example-cluster-name con il nome del tuo cluster.
Nell'esempio seguente, 111122223333 è l'ID dell'account e example-role-name è il nome del ruolo IAM:apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/example-role-name name: aws-load-balancer-controller namespace: kube-system -
Esegui questo comando per distribuire AWS Load Balancer Controller:
kubectl apply -f ingress-controller.yaml
Distribuisci un esempio di applicazione
Distribuisci un esempio di applicazione per verificare che AWS Load Balancer Controller crei un Application Load Balancer pubblico per l'oggetto in entrata.
Completa i seguenti passaggi:
-
Esegui questo comando per distribuire un gioco denominato 2048:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlNota: sostituisci example-version con la versione di AWS Load Balancer Controller che desideri distribuire. Per verificare la versione di AWS Load Balancer Controller, consulta Kubernetes SIGs (SIG Kubernetes) sul sito web GitHub.
-
Dopo alcuni minuti, esegui questo comando per verificare che Kubernetes abbia creato la risorsa in entrata:
kubectl get ingress/ingress-2048 -n game-2048Esempio di output:
NAME CLASS HOSTS ADDRESS PORTS AGEingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com 80 2m32s -
Se Kubernetes non crea la risorsa in entrata, esegui questo comando per individuare messaggi di errore di distribuzione nei log di AWS Load Balancer Controller:
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller -
Per vedere il gioco, apri un browser web, quindi inserisci l'indirizzo URL presente nell'output del passaggio 2.
-
Per eliminare il gioco, esegui questo comando:
kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlNota: sostituisci example-version con la versione di AWS Load Balancer Controller che desideri distribuire.
- Argomenti
- Containers
- Lingua
- Italiano
