Proteggi i carichi di lavoro Kubernetes con i certificati ACM - AWS Certificate Manager

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. GitHub

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:

  1. Richiede un certificato ad ACM, che genera la richiesta di firma del certificato (CSR).

  2. Attende il completamento della convalida del dominio e l'emissione del certificato da parte di ACM.

  3. Se il exportTo campo è specificato, esporta il certificato e la chiave privata emessi e li archivia nel Kubernetes Secret specificato.

  4. Se il exportTo campo è 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 per creare automaticamente i record CNAME di convalida DNS richiesti nella tua zona ospitata.

Opzioni di utilizzo dei certificati

Puoi utilizzare i certificati ACM con Kubernetes in diversi modi:

  1. 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.

  2. 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.

  • kubectl configurato 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.

  1. Crea uno spazio dei nomi per il controller ACK.

    $ kubectl create namespace ack-system --dry-run=client -o yaml | kubectl apply -f -
  2. Crea un'associazione di identità del pod per il controller ACK. Sostituisci CLUSTER_NAME con il nome del cluster e REGION con la tua AWS regione.

    $ eksctl create podidentityassociation --cluster CLUSTER_NAME --region REGION \ --namespace ack-system \ --create-service-account \ --service-account-name ack-acm-controller \ --permission-policy-arns arn:aws:iam::aws:policy/AWSCertificateManagerFullAccess
  3. 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
  4. 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
  5. 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-secret Secret.

  • La risorsa Ingress fa riferimento exported-cert-secret a 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.