

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
<a name="exportable-certificates-kubernetes"></a>

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.](https://github.com/aws-controllers-k8s/acm-controller) 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).

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

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

1. 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](https://docs.aws.amazon.com//acm/latest/userguide/dns-validation.html) prima che ACM possa emetterli. Puoi utilizzare il [controller di servizio ACK per Amazon Route 53](https://github.com/aws-controllers-k8s/route53-controller) per creare automaticamente i record CNAME di convalida DNS richiesti nella tua zona ospitata.

## Opzioni di utilizzo dei certificati
<a name="kubernetes-ack-certificate-usage"></a>

Puoi utilizzare i certificati ACM con Kubernetes in diversi modi:

![](http://docs.aws.amazon.com/it_it/acm/latest/userguide/images/kubernetes-acm.png)


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](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.1/guide/ingress/cert_discovery/). Questo approccio non richiede l'esportazione del certificato.

1. *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](https://docs.aws.amazon.com//privateca/latest/userguide/PcaKubernetes-concepts.html), un plug-in cert-manager.

## Prerequisiti
<a name="kubernetes-ack-prerequisites"></a>

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.
+ `eksctl`installato per configurare le associazioni di identità dei pod su EKS.

## Installa il controller di servizio ACK per ACM
<a name="kubernetes-ack-installation"></a>

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 -
   ```

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

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

1. Installa il controller di servizio ACK per ACM. Sostituisci {{REGION}} 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}}
   ```

1. 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](https://docs.aws.amazon.com//eks/latest/userguide/pod-identities.html) nella *Amazon EKS User Guide*.

## Esempio: terminare TLS all'ingresso
<a name="kubernetes-ack-example"></a>

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 intervento manuale.