AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Wie verwende ich TLS-Zertifikate, um HTTPS-Verbindungen für meine Amazon EKS-Anwendungen zu aktivieren?
Ich möchte TLS-Zertifikate verwenden, um HTTPS-Verbindungen für meine Amazon Elastic Kubernetes Service (Amazon EKS)-Anwendungen zu aktivieren.
Kurzbeschreibung
Um HTTPS-Verbindungen für Ihre Amazon EKS-Anwendungen zu aktivieren, führen Sie die folgenden Aufgaben aus:
- Holen Sie sich ein gültiges TLS-Zertifikat für Ihre benutzerdefinierte Domain.
- Verwenden Sie den Diensttyp Load Balancer, um Ihren Kubernetes-Dienst darzustellen, oder verwenden Sie den AWS Load Balancer-Controller, um Ihr Kubernetes-Ingress-Objekt darzustellen.
- Ordnen Sie Ihre benutzerdefinierte Domain dem DNS des Load-Balancers zu.
Behebung
Ein gültiges TLS-Zertifikat für Ihre benutzerdefinierte Domain holen
Gehen Sie wie folgt vor, um ein gültiges TLS-Zertifikat für Ihre benutzerdefinierte Domain zu holen:
-
Fordern Sie ein öffentliches AWS Certificate Manager (ACM)-Zertifikat für Ihre benutzerdefinierte Domain an oder laden Sie Ihr eigenes TLS-Zertifikat auf ACM hoch.
-
Identifizieren Sie den ARN (Amazon Resource Name) des Zertifikats, das Sie mit dem HTTPS-Listener des Load-Balancers verwenden möchten.
-
Führen Sie den folgenden Befehl aus, um eine NGINX-Beispielbereitstellung zu erstellen:
$ kubectl create deploy web --image=nginx --port 80 --replicas=3 -
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Kubernetes-Pods in Ihrem Amazon EKS-Cluster bereitgestellt werden:
$ kubectl get pods -l app=web**Hinweis:**Die Pods tragen die Bezeichnung app=web. Verwenden Sie dieses Label als Selektor für das Serviceobjekt, um eine Gruppe von Pods zu identifizieren.
Verwenden Sie den Diensttyp Load Balancer, um Ihren Kubernetes-Dienst verfügbar zu machen
**Hinweis:**Wenn Sie das Ingress-Objekt verwenden möchten, um Ihre Anwendung verfügbar zu machen, fahren Sie mit dem Abschnitt Machen Sie Ihren Kubernetes-Dienst mithilfe des Ingress-Objekts verfügbar fort.
Gehen Sie wie folgt vor, um Ihren Kubernetes-Dienst mithilfe des Diensttyps Load Balancer verfügbar zu machen:
-
Verwenden Sie den Diensttyp LoadBalancer, um eine service.yaml-Manifest-Datei zu erstellen:
cat <<EOF > loadbalancer.yaml apiVersion: v1 kind: Service metadata: name: lb-service annotations: # Note that the backend talks over HTTP. service.beta.kubernetes.io/aws-load-balancer-type: external # TODO: Fill in with the ARN of your certificate. service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:{region}:{user id}:certificate/{id} # Run TLS only on the port named "https" below. service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https" # By default In-tree controller will create a Classic LoadBalancer if you require a NLB uncomment below annotation. # service.beta.kubernetes.io/aws-load-balancer-type: "nlb" spec: selector: app: web ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 80 type: LoadBalancer EOF -
Bearbeiten Sie die Anmerkung service.beta.kubernetes.io/aws-load-balancer-tls-cert, sodass sie den ARN des ACM enthält.
-
Führen Sie den folgenden Befehl aus, um die Datei loadbalancer.yaml anzuwenden:
$ kubectl create -f loadbalancer.yaml -
Fahren Sie mit dem Abschnitt Verknüpfen Sie Ihre benutzerdefinierte Domain mit dem DNS des Load Balancers fort.
Ihren Kubernetes-Dienst mithilfe des Ingress-Objekts verfügbar machen
**Hinweis:**Die folgende Lösung geht davon aus, dass Sie den AWS Load Balancer Controller in Ihrem Amazon EKS-Cluster installiert haben. Weitere Informationen finden Sie unter aws-load-balancer-controller auf der GitHub-Website.
Gehen Sie wie folgt vor, um das Ingress-Objekt zum Bereitstellen Ihres Kubernetes-Dienstes zu verwenden:
- Erstellen Sie einen Kubernetes-Dienst vom Typ NodePort anhand des folgenden Beispiels:
Hinweis: Das vorhergehende Ingress-Manifest lauscht auf HTTP und HTTPS, beendet dann TLS auf Application Load Balancer und leitet dann HTTP zu HTTPS um.cat <<EOF > ingressservice.yaml apiVersion: v1 kind: Service metadata: name: web-nginx spec: ports: - port: 80 targetPort: 80 protocol: TCP type: NodePort selector: app: web --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: "web-nginx-ingress" annotations: # Below annotation is to specify if the loadbalancer is "internal" or "internet-facing" alb.ingress.kubernetes.io/scheme: internet-facing # TODO: Fill in with the ARN of your certificate. alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:xxxx:certificate/xxxxxx # TODO: Fill in the listening ports. alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' # Set HTTP to HTTPS redirects. Every HTTP listener configured is redirected to below mentioned port over HTTPS. alb.ingress.kubernetes.io/ssl-redirect: '443' labels: app: web spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Prefix backend: service: name: "web-nginx" port: number: 80 EOF - Führen Sie den folgenden Befehl aus, um die Datei ingressservice.yaml anzuwenden:
$ kubectl create -f ingressservice.yaml
Ordnen Sie Ihre benutzerdefinierte Domain dem DNS des Load-Balancers zu
Gehen Sie wie folgt vor, um Ihre benutzerdefinierte Domain mit dem DNS des Load Balancers zu verknüpfen:
-
Um die DNS-URL des Dienstes vom Typ LoadBalancer zurückzugeben, führen Sie folgenden Befehl aus:
$ kubectl get service -
Führen Sie den folgenden Befehl aus, um die DNS-URL des Dienstes vom Typ ** Ingress** zurückzugeben:
$ kubectl get ingress/web-nginx-ingress -
Verknüpfen Sie Ihren benutzerdefinierten Domainnamen mit dem Namen Ihres Load Balancer.
-
Testen Sie Ihre benutzerdefinierte Domain in einem Webbrowser mit dem folgenden HTTPS-Protokoll:
https://yourdomain.com
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor 2 Jahren
AWS OFFICIALAktualisiert vor einem Jahr