

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Sichere Kubernetes-Workloads mit ACM-Zertifikaten
<a name="exportable-certificates-kubernetes"></a>

Sie können AWS Certificate Manager exportierbare öffentliche Zertifikate mit AWS Controllers for Kubernetes (ACK) verwenden, um öffentliche TLS-Zertifikate aus ACM auszustellen und in Ihre Kubernetes-Workloads zu exportieren. Diese Integration ermöglicht es Ihnen, Amazon Elastic Kubernetes Service (Amazon EKS) -Pods zu sichern und TLS an Ihrem Kubernetes Ingress zu beenden. Um loszulegen, schauen Sie sich den [ACM](https://github.com/aws-controllers-k8s/acm-controller) Controller für Kubernetes an. GitHub

AWS Controllers for Kubernetes (ACK) erweitert die Kubernetes-API, um Ressourcen mithilfe nativer Kubernetes-Manifeste zu verwalten. AWS Der ACK Service Controller für ACM bietet automatisiertes Zertifikatslebenszyklusmanagement innerhalb Ihres Kubernetes-Workflows. Wenn Sie eine ACM-Zertifikatsressource in Kubernetes erstellen, führt der ACK-Controller die folgenden Aktionen aus:

1. Fordert ein Zertifikat von ACM an, das die Certificate Signing Request (CSR) generiert.

1. Wartet, bis die Domänenvalidierung abgeschlossen ist und ACM das Zertifikat ausstellt.

1. Wenn das `exportTo` Feld angegeben ist, werden das ausgestellte Zertifikat und der private Schlüssel exportiert und in Ihrem angegebenen Kubernetes-Secret gespeichert.

1. Wenn das `exportTo` Feld angegeben ist und das Zertifikat verlängert werden kann, aktualisiert Kubernetes Secret vor Ablauf mit erneuerten Zertifikaten.

Öffentlich ausgestellte Zertifikate erfordern eine [Domainvalidierung](https://docs.aws.amazon.com//acm/latest/userguide/dns-validation.html), bevor ACM sie ausstellen kann. Sie können den [ACK Service Controller für Amazon Route 53](https://github.com/aws-controllers-k8s/route53-controller) verwenden, um automatisch die erforderlichen CNAME-Einträge für die DNS-Validierung in Ihrer Hosting-Zone zu erstellen.

## Optionen zur Verwendung von Zertifikaten
<a name="kubernetes-ack-certificate-usage"></a>

Sie können ACM-Zertifikate auf verschiedene Arten mit Kubernetes verwenden:

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


1. *Kündigung des Load Balancers (ohne Export)*: Stellen Sie Zertifikate über ACK aus und verwenden Sie sie, um TLS auf einem Load Balancer zu beenden. AWS Das Zertifikat verbleibt in ACM und wird automatisch vom [Load AWS Balancer Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.1/guide/ingress/cert_discovery/) erkannt. Bei diesem Ansatz ist kein Export des Zertifikats erforderlich.

1. *Terminierung des Eingangs (mit Export)*: Exportieren Sie Zertifikate aus ACM und speichern Sie sie in Kubernetes Secrets für die TLS-Terminierung auf Eingangsebene. Auf diese Weise können Sie Zertifikate direkt in Ihren Kubernetes-Workloads verwenden.

**Anmerkung**  
Anwendungsfälle, für die private Zertifikate erforderlich sind, finden Sie unter [AWS Private CA Connector for Kubernetes](https://docs.aws.amazon.com//privateca/latest/userguide/PcaKubernetes-concepts.html), ein Cert-Manager-Plugin.

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

Bevor Sie den ACK Service Controller für ACM installieren, stellen Sie sicher, dass Sie über Folgendes verfügen:
+ Ein Kubernetes-Cluster.
+ Helm installiert.
+ `kubectl` für die Kommunikation mit Ihrem Cluster konfiguriert.
+ `eksctl`installiert für die Konfiguration von Pod-Identitätszuordnungen auf EKS.

## Installieren Sie den ACK Service Controller für ACM
<a name="kubernetes-ack-installation"></a>

Verwenden Sie Helm, um den ACK Service Controller für ACM in Ihrem Amazon EKS-Cluster zu installieren.

1. Erstellen Sie einen Namespace für den ACK-Controller.

   ```
   $ kubectl create namespace ack-system --dry-run=client -o yaml | kubectl apply -f -
   ```

1. Erstellen Sie eine Pod-Identitätszuordnung für den ACK-Controller. {{CLUSTER\_NAME}}Ersetzen Sie es durch Ihren Clusternamen und {{REGION}} durch Ihre AWS Region.

   ```
   $ 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. Melden Sie sich bei der öffentlichen Registrierung von Amazon ECR an.

   ```
   $ aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws
   ```

1. Installieren Sie den ACK Service Controller für ACM. Ersetzen Sie es {{REGION}} durch Ihre AWS Region.

   ```
   $ 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. Stellen Sie sicher, dass der Controller läuft.

   ```
   $ kubectl get pods -n ack-system
   ```

Weitere Informationen zu Pod-Identitätszuordnungen finden Sie unter [EKS Pod Identity](https://docs.aws.amazon.com//eks/latest/userguide/pod-identities.html) im *Amazon EKS-Benutzerhandbuch*.

## Beispiel: Beenden Sie TLS am Ingress
<a name="kubernetes-ack-example"></a>

Das folgende Beispiel zeigt, wie Sie ein ACM-Zertifikat exportieren und es verwenden, um TLS auf Kubernetes Ingress-Ebene zu beenden. Diese Konfiguration erstellt ein ACM-Zertifikat, exportiert es in ein Kubernetes Secret und konfiguriert eine Ingress-Ressource so, dass das Zertifikat für die TLS-Terminierung verwendet wird.

In diesem Beispiel:
+ Secret wird erstellt, um das exportierte Zertifikat zu speichern () `exported-cert-secret`
+ Die ACK-Zertifikatsressource fordert von ACM ein Zertifikat für Ihre Domain an und exportiert es in den `exported-cert-secret` Secret.
+ Die Ingress-Ressource verweist auf`exported-cert-secret`, um TLS für eingehenden Datenverkehr zu beenden.

Ersetzen Sie es `${HOSTNAME}` durch Ihren Domainnamen.

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

Nach der Bereitstellung verwaltet der ACK Service Controller für ACM automatisch den Lebenszyklus des Zertifikats, einschließlich Verlängerungen. Wenn ACM das Zertifikat erneuert, aktualisiert der Controller das `exported-cert-secret` Secret mit dem neuen Zertifikat und stellt so sicher, dass Ihr Ingress weiterhin gültige Zertifikate ohne manuelles Eingreifen verwendet.