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
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:
-
Fordert ein Zertifikat von ACM an, das die Certificate Signing Request (CSR) generiert.
-
Wartet, bis die Domänenvalidierung abgeschlossen ist und ACM das Zertifikat ausstellt.
-
Wenn das
exportToFeld angegeben ist, werden das ausgestellte Zertifikat und der private Schlüssel exportiert und in Ihrem angegebenen Kubernetes-Secret gespeichert. -
Wenn das
exportToFeld 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
Optionen zur Verwendung von Zertifikaten
Sie können ACM-Zertifikate auf verschiedene Arten mit Kubernetes verwenden:
-
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. -
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.
-
kubectlfü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.
-
Erstellen Sie einen Namespace für den ACK-Controller.
$ kubectl create namespace ack-system --dry-run=client -o yaml | kubectl apply -f - -
Erstellen Sie eine Pod-Identitätszuordnung für den ACK-Controller.
CLUSTER_NAMEErsetzen Sie es durch Ihren Clusternamen undREGIONdurch Ihre AWS Region.$ 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 -
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 -
Installieren Sie den ACK Service Controller für ACM. Ersetzen Sie es
REGIONdurch 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 -
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-secretSecret. -
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.