Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Installa AWS Load Balancer Controller con manifesti
Questo argomento descrive come installare il controller scaricandolo e applicandolo Kubernetes manifesta. È possibile visualizzare la documentazione
Nei passaggi seguenti, sostituisci il example values
con i tuoi valori.
Prerequisiti
Prima di iniziare questo tutorial, devi installare e configurare i seguenti strumenti e risorse necessari per creare e gestire un EKS cluster Amazon.
-
Un EKS cluster Amazon esistente. Per implementarne uno, consulta Inizia a usare Amazon EKS.
-
Un AWS Identity and Access Management esistente (IAM) OpenID Connect (OIDC) provider per il tuo cluster. Per determinare se disponi già di un provider IAM o per crearne uno, consulta Crea un IAM OIDC provider per il tuo cluster.
-
Assicurati che il tuo Amazon VPC CNI plugin for Kubernetes,
kube-proxy
, e CoreDNS i componenti aggiuntivi hanno le versioni minime elencate nei token dell'account di servizio. -
Familiarità con AWS Elastic Load Balancing. Per ulteriori informazioni, consulta la Guida per l'utente di Elastic Load Balancing.
-
Familiarità con il servizio
Kubernetes e le risorse in ingresso .
Fase 1: Configurazione IAM
Nota
Devi solo creare un ruolo per AWS Load Balancer Controller uno per AWS account. Controlla se AmazonEKSLoadBalancerControllerRole
esiste nella IAMconsole
-
Scarica una politica per IAM AWS Load Balancer Controller che gli consente di effettuare chiamate per tuo AWS APIs conto.
- AWS
-
**
$ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy.json
- AWS GovCloud (STATI UNITI)
-
**
$ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_us-gov.json
$ mv iam_policy_us-gov.json iam_policy.json
-
Crea una IAM politica utilizzando la politica scaricata nel passaggio precedente.
$ aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
Nota
Se visualizzi la policy in AWS Management Console, la console mostra gli avvisi per il ELBservizio, ma non per il servizio ELBv2. Ciò accade perché alcune azioni nella policy esistono per la ELBv2, ma non per. ELB Puoi ignorare gli avvisi per. ELB
- eksctl
-
-
Replace (Sostituisci)
my-cluster
con il nome del tuo cluster,111122223333
con l'ID del tuo account, quindi esegui il comando. Se il cluster si trova nelle AWS regioni AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali),arn:aws:
sostituiscilo con.arn:aws-us-gov:
$ eksctl create iamserviceaccount \ --cluster=my-cluster \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --role-name AmazonEKSLoadBalancerControllerRole \ --attach-policy-arn=arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --approve
-
- AWS CLIe kubectl
-
-
Recupera i dati del tuo cluster OIDC ID del provider e memorizzalo in una variabile.
oidc_id=$(aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
-
Determina se un IAM OIDC il provider con l'ID del cluster è già presente nel tuo account. Hai bisogno OIDC configurato sia per il cluster che perIAM.
aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
Se viene restituito un output, allora hai già un IAM OIDC provider per il tuo cluster. Se non viene restituito alcun output, è necessario creare un IAM OIDC provider per il tuo cluster. Per ulteriori informazioni, consulta Crea un IAM OIDC provider per il tuo cluster.
-
Copia i seguenti contenuti sul dispositivo. Replace (Sostituisci)
111122223333
con l'ID del tuo account. Replace (Sostituisci)region-code
con la AWS regione in cui si trova il cluster. Replace (Sostituisci)EXAMPLED539D4633E53DE1B71EXAMPLE
con l'output restituito nel passaggio precedente. Se il cluster si trova nelle AWS regioni AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali),arn:aws:
sostituiscilo con.arn:aws-us-gov:
Dopo aver sostituito il testo, esegui il comando modificato per creare il fileload-balancer-role-trust-policy.json
.cat >load-balancer-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws: iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-load-balancer-controller" } } } ] } EOF
-
Crea il ruolo. IAM
aws iam create-role \ --role-name AmazonEKSLoadBalancerControllerRole \ --assume-role-policy-document file://"load-balancer-role-trust-policy.json"
-
Allega la IAM policy EKS gestita di Amazon richiesta al IAM ruolo. Replace (Sostituisci)
111122223333
con l'ID del tuo account.aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --role-name AmazonEKSLoadBalancerControllerRole
-
Copia i seguenti contenuti sul dispositivo. Replace (Sostituisci)
111122223333
con l'ID del tuo account. Se il tuo cluster si trova nelle AWS regioni AWS GovCloud (Stati Uniti orientali) o AWS GovCloud (Stati Uniti occidentali),arn:aws:
sostituiscilo con.arn:aws-us-gov:
Dopo aver sostituito il testo, esegui il comando modificato per creare il fileaws-load-balancer-controller-service-account.yaml
.cat >aws-load-balancer-controller-service-account.yaml <<EOF apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller name: aws-load-balancer-controller namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws: iam::111122223333:role/AmazonEKSLoadBalancerControllerRole EOF
-
Crea il Kubernetes account di servizio sul tuo cluster. Il Kubernetes l'account di servizio denominato
aws-load-balancer-controller
è annotato con il nome del IAM ruolo che hai creatoAmazonEKSLoadBalancerControllerRole
.$ kubectl apply -f aws-load-balancer-controller-service-account.yaml
-
Fase 2: Installazione cert-manager
Installa cert-manager
utilizzando uno dei metodi seguenti per inserire la configurazione del certificato nei Webhook. Per ulteriori informazioni, consulta la sezione Guida introduttiva
Si consiglia di utilizzare il registro dei quay.io
contenitori per l'installazione. cert-manager
Se i tuoi nodi non hanno accesso al registro dei quay.io
container, installa cert-manager
utilizzando Amazon ECR (vedi sotto).
- Quay.io
-
-
Se i tuoi nodi hanno accesso al registro del container
quay.io
, installacert-manager
per inserire la configurazione del certificato nei Webhook.$ kubectl apply \ --validate=false \ -f https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
-
- Amazon ECR
-
-
Installa
cert-manager
utilizzando uno dei metodi seguenti per inserire la configurazione del certificato nei Webhook. Per ulteriori informazioni, consulta la sezione Guida introduttivanella documentazione del cert-manager. -
Eseguire il download del manifesto.
curl -Lo cert-manager.yaml https://github.com/jetstack/cert-manager/releases/download/v1.13.5/cert-manager.yaml
-
Estrai le seguenti immagini e inviale a un repository a cui i tuoi nodi hanno accesso. Per ulteriori informazioni su come estrarre, taggare e inviare immagini al tuo repository, consulta la sezione Copia di un'immagine di container da un repository a un altro.
quay.io/jetstack/cert-manager-cainjector:v1.13.5 quay.io/jetstack/cert-manager-controller:v1.13.5 quay.io/jetstack/cert-manager-webhook:v1.13.5
-
Nel manifesto, sostituisci
quay.io
per le tre immagini con il nome del tuo registro. Il comando seguente presuppone che il nome del repository privato sia lo stesso del repository di origine. Replace (Sostituisci)111122223333.dkr.ecr.region-code.amazonaws.com
con il tuo registro privato.$ sed -i.bak -e 's|quay.io|111122223333.dkr.ecr.region-code.amazonaws.com|' ./cert-manager.yaml
-
Applicare il file manifesto.
$ kubectl apply \ --validate=false \ -f ./cert-manager.yaml
-
Fase 3: Installazione AWS Load Balancer Controller
-
Scaricare le specifiche del controller. Per ulteriori informazioni sul controller, consulta la documentazione
su GitHub. curl -Lo v2_7_2_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_full.yaml
-
Apporta le seguenti modifiche al file.
-
Se hai scaricato il file
v2_7_2_full.yaml
, emetti il seguente comando per rimuovere la sezioneServiceAccount
nel manifesto. Se non rimuovi questa sezione, l'annotazione richiesta che hai apportato all'account di servizio nel passaggio precedente viene sovrascritta. Inoltre, se elimini il controller, conserva l'account del servizio creato in una fase precedente.$ sed -i.bak -e '612,620d' ./v2_7_2_full.yaml
Se hai scaricato una versione diversa del file, apri il file in un editor e rimuovi le righe seguenti.
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller name: aws-load-balancer-controller namespace: kube-system ---
-
Sostituisci
your-cluster-name
nellaDeployment
spec
sezione del file il nome del cluster sostituendomy-cluster
con il nome del tuo cluster.$ sed -i.bak -e 's|your-cluster-name|my-cluster|' ./v2_7_2_full.yaml
-
Se i tuoi nodi non hanno accesso agli archivi di ECR immagini di EKS Amazon Amazon, devi estrarre l'immagine seguente e inviarla a un repository a cui i tuoi nodi hanno accesso. Per ulteriori informazioni su come estrarre, taggare e inviare un'immagine al tuo repository, consulta la sezione Copia di un'immagine di container da un repository a un altro.
public.ecr.aws/eks/aws-load-balancer-controller:v2.7.2
Aggiungi il nome del registro al manifesto. Il comando seguente presuppone che il nome del repository privato sia lo stesso del repository di origine e aggiunge il nome del registro privato al file. Replace (Sostituisci)
111122223333.dkr.ecr.region-code.amazonaws.com
con il tuo registro. Questa riga presuppone che il nome del repository privato sia lo stesso del repository di origine. In caso contrario, sostituisci il testoeks/aws-load-balancer-controller
dopo il nome del registro privato con il nome del tuo repository.$ sed -i.bak -e 's|public.ecr.aws/eks/aws-load-balancer-controller|111122223333.dkr.ecr.region-code.amazonaws.com/eks/aws-load-balancer-controller|' ./v2_7_2_full.yaml
-
(Obbligatorio solo per Fargate o Restricted) IMDS
Se stai distribuendo il controller su EC2 nodi Amazon con accesso limitato al servizio di metadati delle EC2 istanze Amazon (IMDS)
o se lo stai distribuendo su Fargate, aggiungi quanto segue. following parameters
- args:
[...] spec: containers: - args: - --cluster-name=your-cluster-name - --ingress-class=alb - --aws-vpc-id=vpc-xxxxxxxx - --aws-region=region-code [...]
-
-
Applicare il file.
$ kubectl apply -f v2_7_2_full.yaml
-
Scarica il manifesto di
IngressClass
eIngressClassParams
sul cluster.$ curl -Lo v2_7_2_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_ingclass.yaml
-
Applica il manifesto al cluster.
$ kubectl apply -f v2_7_2_ingclass.yaml
Passaggio 4: verifica che il controller sia installato
-
Verificare che il controller sia installato.
$ kubectl get deployment -n kube-system aws-load-balancer-controller
Di seguito viene riportato un output di esempio:
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s
Riceverai l'output precedente se hai eseguito l'implementazione con Helm. Se l'implementazione è stata effettuata utilizzando il Kubernetes manifest, è disponibile solo una replica.
-
Prima di utilizzare il controller per il provisioning AWS delle risorse, il cluster deve soddisfare requisiti specifici. Per ulteriori informazioni, consulta Indirizza l'applicazione e HTTP il traffico con Application Load Balancer e Percorso TCP e UDP traffico con Network Load Balancer.