Come faccio a utilizzare i certificati TLS per attivare le connessioni HTTPS per le mie applicazioni Amazon EKS?
Vorrei utilizzare i certificati TLS per attivare le connessioni HTTPS per le mie applicazioni Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrizione
Per attivare le connessioni HTTPS per le tue applicazioni Amazon EKS, completa le seguenti attività:
- Ottieni un certificato TLS valido per il tuo dominio personalizzato.
- Usa il tipo di servizio di bilanciatore del carico per esporre il tuo servizio Kubernetes o usa AWS Load Balancer Controller per esporre il tuo oggetto di ingresso Kubernetes.
- Associa il tuo dominio personalizzato al DNS del bilanciatore del carico.
Risoluzione
Acquisisci un certificato TLS valido per il tuo dominio personalizzato
Per acquisire un certificato TLS valido per il tuo dominio personalizzato, completa i seguenti passaggi:
-
Richiedi un certificato pubblico della Gestione certificati AWS (ACM) per il tuo dominio personalizzato o carica il tuo certificato TLS su ACM.
-
Identifica la risorsa ARN del certificato che desideri utilizzare con l’ascoltatore HTTPS del bilanciatore del carico.
-
Per creare un'implementazione NGINX di esempio, esegui il seguente comando:
$ kubectl create deploy web --image=nginx --port 80 --replicas=3
-
Per verificare che i pod Kubernetes siano distribuiti sul tuo cluster Amazon EKS, esegui il seguente comando:
$ kubectl get pods -l app=web
Nota: i pod sono etichettati app=web. Utilizza questa etichetta come selettore per l'oggetto del servizio per identificare un set di pod.
Usa il tipo di servizio di bilanciatore del carico per esporre il tuo servizio Kubernetes
Nota: per utilizzare l'oggetto di ingresso per esporre la tua applicazione, continua con la sezione Esposizione del servizio Kubernetes usando l'oggetto di ingresso.
Per utilizzare il tipo di servizio di bilanciatore del carico per esporre il tuo servizio Kubernetes, completa i seguenti passaggi:
-
Per creare un file manifesto service.yaml, usa il tipo di servizio LoadBalancer:
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
-
Modifica l'annotazione service.beta.kubernetes.io/aws-load-balancer-tls-cert per includere l'ARN dell'ACM.
-
Per applicare il file loadbalancer.yaml, esegui il seguente comando:
$ kubectl create -f loadbalancer.yaml
-
Passa alla sezione Associazione del dominio personalizzato al DNS del bilanciatore del carico.
Esposizione del servizio Kubernetes usando l'oggetto di ingresso
Nota: la seguente risoluzione presuppone che tu abbia installato AWS Load Balancer Controller nel cluster Amazon EKS. Per altre informazioni, consulta aws-load-balancer-controller sul sito web GitHub.
Per utilizzare l'oggetto di ingresso in modo da esporre il servizio Kubernetes, completa i seguenti passaggi:
- Crea un servizio Kubernetes di tipo NodePort in base al seguente esempio:
Nota: il precedente manifesto di ingresso è in ascolto su HTTP e HTTPS, quindi termina TLS su Application Load Balancer e reindirizza HTTP a HTTPS.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
- Per applicare il file ingressservice.yaml, esegui il seguente comando:
$ kubectl create -f ingressservice.yaml
Associazione del dominio personalizzato al DNS del bilanciatore del carico
Per associare il tuo dominio personalizzato al DNS del bilanciatore del carico, completa i seguenti passaggi:
-
Per restituire l'URL DNS del servizio di tipo LoadBalancer, esegui il seguente comando:
$ kubectl get service
-
Per restituire l'URL DNS del servizio di tipo Ingress, esegui il seguente comando:
$ kubectl get ingress/web-nginx-ingress
-
Associa il nome di dominio personalizzato al nome del bilanciatore del carico.
-
In un browser web, testa il dominio personalizzato con il seguente protocollo HTTPS:
https://yourdomain.com
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa