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à.
Proteggi i carichi di lavoro Kubernetes con i certificati ACM
Puoi utilizzare certificati pubblici AWS Certificate Manager esportabili con AWS Controllers for Kubernetes (ACK) per emettere ed esportare certificati TLS pubblici da ACM ai tuoi carichi di lavoro Kubernetes. Questa integrazione ti consente di proteggere i pod Amazon Elastic Kubernetes Service (Amazon EKS) e di terminare TLS al tuo Kubernetes Ingress. Per iniziare, consulta ACM Controller for Kubernetes su.
AWS Controllers for Kubernetes (ACK) estende l'API Kubernetes per gestire le risorse utilizzando i manifest nativi di Kubernetes. AWS Il controller di servizio ACK per ACM fornisce la gestione automatizzata del ciclo di vita dei certificati all'interno del flusso di lavoro Kubernetes. Quando crei una risorsa ACM Certificate in Kubernetes, il controller ACK esegue le seguenti azioni:
-
Richiede un certificato ad ACM, che genera la richiesta di firma del certificato (CSR).
-
Attende il completamento della convalida del dominio e l'emissione del certificato da parte di ACM.
-
Se il
exportTocampo è specificato, esporta il certificato e la chiave privata emessi e li archivia nel Kubernetes Secret specificato. -
Se il
exportTocampo è specificato e il certificato è idoneo per il rinnovo, aggiorna Kubernetes Secret con certificati rinnovati prima della scadenza.
I certificati emessi pubblicamente richiedono la convalida del dominio prima che ACM possa emetterli. Puoi utilizzare il controller di servizio ACK per Amazon Route 53
Opzioni di utilizzo dei certificati
Puoi utilizzare i certificati ACM con Kubernetes in diversi modi:
-
Terminazione del sistema di bilanciamento del carico (senza esportazione): emette certificati tramite ACK e utilizzali per terminare TLS su un sistema di bilanciamento del carico. AWS Il certificato rimane in ACM e viene rilevato automaticamente dal Load AWS Balancer Controller
. Questo approccio non richiede l'esportazione del certificato. -
Terminazione in ingresso (con esportazione): esporta i certificati da ACM e li archivia in Kubernetes Secrets for TLS termination a livello di Ingress. Ciò consente di utilizzare i certificati direttamente all'interno dei carichi di lavoro Kubernetes.
Nota
Per i casi d'uso che richiedono certificati privati, consulta AWS Private CA Connector for Kubernetes, un plug-in cert-manager.
Prerequisiti
Prima di installare il controller di servizio ACK per ACM, assicurati di disporre di quanto segue:
-
Un cluster Kubernetes.
-
Helm installato.
-
kubectlconfigurato per comunicare con il cluster. -
eksctlinstallato per configurare le associazioni di identità dei pod su EKS.
Installa il controller di servizio ACK per ACM
Usa Helm per installare il controller di servizio ACK per ACM nel tuo cluster Amazon EKS.
-
Crea uno spazio dei nomi per il controller ACK.
$ kubectl create namespace ack-system --dry-run=client -o yaml | kubectl apply -f - -
Crea un'associazione di identità del pod per il controller ACK. Sostituisci
CLUSTER_NAMEcon il nome del cluster eREGIONcon la tua AWS regione.$ eksctl create podidentityassociation --clusterCLUSTER_NAME--regionREGION\ --namespace ack-system \ --create-service-account \ --service-account-name ack-acm-controller \ --permission-policy-arns arn:aws:iam::aws:policy/AWSCertificateManagerFullAccess -
Accedi al registro pubblico di Amazon ECR.
$ aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws -
Installa il controller di servizio ACK per ACM.
REGIONSostituiscilo con la tua AWS regione.$ helm install -n ack-system ack-acm-controller oci://public.ecr.aws/aws-controllers-k8s/acm-chart --set serviceAccount.create=false --set serviceAccount.name=ack-acm-controller --set aws.region=REGION -
Verifica che il controller sia in funzione.
$ kubectl get pods -n ack-system
Per ulteriori informazioni sulle associazioni di identità dei pod, consulta EKS Pod Identity nella Amazon EKS User Guide.
Esempio: terminare TLS all'ingresso
L'esempio seguente dimostra come esportare un certificato ACM e utilizzarlo per terminare TLS a livello di Kubernetes Ingress. Questa configurazione crea un certificato ACM, lo esporta in un Kubernetes Secret e configura una risorsa Ingress per utilizzare il certificato per la terminazione TLS.
In questo esempio:
-
Secret viene creato per archiviare il certificato esportato ()
exported-cert-secret -
La risorsa ACK Certificate richiede un certificato da ACM per il tuo dominio e lo esporta nel
exported-cert-secretSecret. -
La risorsa Ingress fa riferimento
exported-cert-secreta per terminare il TLS per il traffico in entrata.
Sostituiscilo ${HOSTNAME} con il tuo nome di dominio.
apiVersion: v1 kind: Secret type: kubernetes.io/tls metadata: name: exported-cert-secret namespace: demo-app data: tls.crt: "" tls.key: "" --- apiVersion: acm.services.k8s.aws/v1alpha1 kind: Certificate metadata: name: exportable-public-cert namespace: demo-app spec: domainName: ${HOSTNAME} options: certificateTransparencyLoggingPreference: ENABLED exportTo: namespace: demo-app name: exported-cert-secret key: tls.crt --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-traefik namespace: demo-app spec: tls: - hosts: - ${HOSTNAME} secretName: exported-cert-secret ingressClassName: traefik rules: - host: ${HOSTNAME} http: paths: - path: / pathType: Prefix backend: service: name: whoami port: number: 80
Una volta implementato, il controller di servizio ACK per ACM gestisce automaticamente il ciclo di vita del certificato, compresi i rinnovi. Quando ACM rinnova il certificato, il controller aggiorna il exported-cert-secret Secret con il nuovo certificato, assicurando che Ingress continui a utilizzare certificati validi senza l'intervento manuale.