Sichere Kubernetes-Workloads mit ACM-Zertifikaten - AWS Certificate Manager

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

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

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

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

  4. 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, bevor ACM sie ausstellen kann. Sie können den ACK Service Controller für Amazon Route 53 verwenden, um automatisch die erforderlichen CNAME-Einträge für die DNS-Validierung in Ihrer Hosting-Zone zu erstellen.

Optionen zur Verwendung von Zertifikaten

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

  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 erkannt. Bei diesem Ansatz ist kein Export des Zertifikats erforderlich.

  2. 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, ein Cert-Manager-Plugin.

Voraussetzungen

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.

  • eksctlinstalliert für die Konfiguration von Pod-Identitätszuordnungen auf EKS.

Installieren Sie den ACK Service Controller für ACM

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 -
  2. Erstellen Sie eine Pod-Identitätszuordnung für den ACK-Controller. CLUSTER_NAMEErsetzen 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
  3. 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
  4. 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
  5. 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 im Amazon EKS-Benutzerhandbuch.

Beispiel: Beenden Sie TLS am Ingress

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