Come posso terminare il traffico HTTPS sui carichi di lavoro Amazon EKS con ACM?

4 minuti di lettura
0

Desidero terminare il traffico HTTPS sui carichi di lavoro di Amazon Elastic Kubernetes Service (Amazon EKS) con Gestione certificati AWS (ACM).

Breve descrizione

Per terminare il traffico HTTPS a livello di Elastic Load Balancing per un oggetto Kubernetes Service, devi:

  1. Richiedere un certificato ACM pubblico per il tuo dominio personalizzato.
  2. Pubblicare il tuo servizio Kubernetes con il campo tipo impostato su LoadBalancer.
  3. Specificare il nome della risorsa Amazon (ARN) del tuo certificato ACM sul tuo servizio Kubernetes utilizzando l'annotazione service.beta.kubernetes.io/aws-load-balancer-ssl-cert dal sito web Kubernetes. L'annotazione consente al server API Kubernetes di associare quel certificato al Classic Load Balancer al momento della creazione.
  4. Associare il tuo dominio personalizzato con il sistema di bilanciamento del carico.

La risoluzione seguente presuppone che:

  • Hai un cluster Amazon EKS attivo con nodi worker associati.
  • Stai lavorando con un Classic Load Balancer.

Nota: per utilizzare un Application Load Balancer, devi implementare il bilanciamento del carico delle applicazioni su Amazon EKS.

Nota: l'interruzione delle connessioni TLS su un Network Load Balancer è supportata solo in Kubernetes 1.15 o versioni successive. Per ulteriori informazioni, consulta Supporta la terminazione TLS con AWS NLB sul sito web di Kubernetes.

Risoluzione

  1. Richiedi un certificato ACM pubblico per il tuo dominio personalizzato.

2.    Identifica la risorsa ARN del certificato che desideri utilizzare con l’ascoltatore HTTPS del sistema di bilanciamento del carico.

  1. Per identificare i nodi registrati nel tuo cluster Amazon EKS, esegui il seguente comando nell'ambiente in cui è configurato kubectl:
$ kubectl get nodes
  1. Nel tuo editor di testo, crea un file manifesto deployment.yaml basato su quanto segue:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: echo-pod
  template:
    metadata:
      labels:
        app: echo-pod
    spec:
      containers:
      - name: echoheaders
        image: k8s.gcr.io/echoserver:1.10
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
  1. Per creare un oggetto Implementazione di Kubernetes, esegui il seguente comando:
$ kubectl create -f deployment.yaml

6.    Per verificare che i pod Kubernetes siano distribuiti sul tuo cluster Amazon EKS, esegui il seguente comando:

$ kubectl get pods

Nota: i pod sono etichettati app=echo-pod. Utilizza questa etichetta come selettore per l'oggetto Servizio per identificare un gruppo di pod.

  1. Nel tuo editor di testo, crea un file manifesto service.yaml basato sull'esempio seguente. Quindi, modifica l'annotazione service.beta.kubernetes.io/aws-load-balancer-ssl-cert per fornire l'ARN ACM del passaggio 2.
apiVersion: v1
kind: Service
metadata:
  name: echo-service
  annotations:
    # Note that the backend talks over HTTP.
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    # 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}
    # Only run SSL on the port named "https" below.
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
spec:
  selector:
    app: echo-pod
  ports:
  - name: http
    port: 80
    targetPort: 8080
  - name: https
    port: 443
    targetPort: 8080
  type: LoadBalancer
  1. Per creare un oggetto Servizio, esegui il comando seguente:
$ kubectl create -f service.yaml

9.    Per restituire l'URL DNS del servizio di tipo LoadBalancer, esegui il seguente comando:

$ kubectl get service

Nota: se hai numerosi servizi attivi in esecuzione nel tuo cluster, ottieni l'URL del servizio corretto di tipo LoadBalancer dall'output del comando.

  1. Apri la console Amazon Elastic Compute Cloud (Amazon EC2), quindi scegli Sistemi di bilanciamento del carico.

  2. Seleziona il tuo sistema di bilanciamento del carico, quindi scegli Ascoltatori.

  3. Per ID dell’ascoltatore, verifica che la porta del sistema di bilanciamento del carico sia impostata su 443.

  4. Per il certificato SSL, verifica che il certificato SSL che hai definito nel file YAML sia allegato al tuo sistema di bilanciamento del carico.

14.    Associa il tuo nome di dominio personalizzato al nome del tuo sistema di bilanciamento del carico.

15.    In un browser web, testa il tuo dominio personalizzato con il seguente protocollo HTTPS:

https://yourdomain.com

Una risposta corretta restituisce una pagina web con i dettagli sul client. Questa risposta include il nome host, le informazioni sul pod, i valori del server, le informazioni sulla richiesta e le intestazioni delle richieste.

Importante: non puoi installare certificati con chiavi RSA a 4.096 bit o chiavi EC sul tuo sistema di bilanciamento del carico tramite l'integrazione con ACM. Per utilizzare le chiavi con il tuo sistema di bilanciamento del carico, devi caricare i certificati con chiavi RSA o EC a 4.096 bit su AWS Identity and Access Management (IAM). Quindi, usa l'ARN corrispondente con l'annotazione service.beta.kubernetes.io/aws-load-balancer-ssl-cert.


AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa