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.
Sichern Sie 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 von 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 auf Ihrem Kubernetes Ingress zu beenden. Um loszulegen, schauen Sie sich den ACM Controller für Kubernetes an.
Tipp
Wenn Sie Cert-Manager
AWS Controllers for Kubernetes (ACK) erweitert die Kubernetes-API, um AWS Ressourcen mithilfe nativer Kubernetes-Manifeste zu verwalten. Der ACK Service Controller für ACM bietet ein 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 Zertifikatsignieranforderung (CSR) generiert.
-
Wartet, bis die Domainvalidierung abgeschlossen ist und ACM das Zertifikat ausstellt.
-
Wenn das
exportToFeld angegeben ist, exportiert das ausgestellte Zertifikat und den privaten Schlüssel und speichert sie in Ihrem angegebenen Kubernetes Secret. -
Wenn das
exportToFeld angegeben ist und das Zertifikat für eine Verlängerung in Frage kommt, 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,
Optionen zur Verwendung von Zertifikaten
Sie können ACM-Zertifikate auf verschiedene Arten mit Kubernetes verwenden:
-
Beendigung des Load Balancers (ohne Export): Stellen Sie Zertifikate über ACK aus und verwenden Sie sie, um TLS an einem Load Balancer zu beenden. AWS Das Zertifikat verbleibt in ACM und wird automatisch vom AWS Load Balancer Controller erkannt.
Bei diesem Ansatz muss das Zertifikat nicht exportiert werden. -
Eingangsabbruch (mit Export): Exportieren Sie Zertifikate aus ACM und speichern Sie sie in Kubernetes Secrets für die TLS-Terminierung auf Ingress-Ebene. 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. -
eksctlwurde für die Konfiguration von Pod-Identitätszuordnungen auf EKS installiert.
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 Amazon ECR-Registrierung 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
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: TLS beim Eingang beenden
Das folgende Beispiel zeigt, wie Sie ein ACM-Zertifikat exportieren und es verwenden, um TLS auf der 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 ein Zertifikat von ACM für Ihre Domain an und exportiert es in das
exported-cert-secretSecret. -
Die Ingress-Ressource verweist auf das
exported-cert-secret, um TLS für eingehenden Verkehr zu beenden.
Ersetzen Sie ${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, um sicherzustellen, dass Ihr Ingress weiterhin gültige Zertifikate ohne manuelles Eingreifen verwendet.