Come posso utilizzare i certificati TLS per attivare le connessioni HTTPS per le mie applicazioni Amazon EKS?
Desidero utilizzare i certificati Transport Layer Security (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, devi:
- Ottenere un certificato TLS valido per il tuo dominio personalizzato.
- Esporre il tuo servizio Kubernetes utilizzando il tipo servizio di sistema di bilanciamento del carico oppure esporre il tuo oggetto di ingresso Kubernetes utilizzando AWS Load Balancer Controller.
- Associare il tuo dominio personalizzato al DNS del sistema di bilanciamento del carico.
Risoluzione
Ottieni un certificato TLS valido per il tuo dominio personalizzato:
1. Richiedi un certificato Gestione certificati AWS (ACM) pubblico per il tuo dominio personalizzato o carica il tuo certificato TLS su ACM.
2. Identifica il nome della risorsa Amazon (ARN) del certificato che desideri utilizzare con l’ascoltatore HTTPS del sistema di bilanciamento del carico.
3. Per creare un’implementazione NGINX di esempio, esegui il seguente comando:
$ kubectl create deploy web --image=nginx --port 80 --replicas=3
4. 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.
Esponi il tuo servizio Kubernetes utilizzando il tipo di servizio di sistema di bilanciamento del carico
Nota: per utilizzare l'oggetto di ingresso per esporre la tua applicazione, passa alla sezione Esponi il servizio Kubernetes utilizzando l'oggetto di ingresso.
1. Per creare un file manifesto service.yaml, utilizza il tipo di servizio LoadBalancer. Ad esempio:
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-backend-protocol: http # TODO: Fill in with the ARN of your certificate. service.beta.kubernetes.io/aws-load-balancer-tls-cert: arn:aws:acm:{region}:{user id}:certificate/{id} # Only run TLS on the port named "https" below. service.beta.kubernetes.io/aws-load-balancer-tls-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
2. Modifica l'annotazione service.beta.kubernetes.io/aws-load-balancer-tls-cert per includere l'ARN dell'ACM.
3. Per applicare il file loadbalancer.yaml, esegui il seguente comando:
$ kubectl create -f loadbalancer.yaml
4. Passa direttamente alla sezione Associa il tuo dominio personalizzato al DNS del sistema di bilanciamento del carico.
Esponi il servizio Kubernetes utilizzando l'oggetto di ingresso
Nota: la seguente risoluzione presuppone che tu abbia installato AWS Load Balancer Controller nel tuo cluster Amazon EKS.
1. Crea un servizio Kubernetes di tipo NodePort in base al seguente esempio:
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 will be redirected to below mentioned port over HTTPS. alb.ingress.kubernetes.io/tls-redirect: '443' labels: app: web spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Prefix backend: service: name: "web-nginx" port: number: 80 EOF
Nota: il manifesto di ingresso precedente ascolta HTTP e HTTPS, quindi termina TLS su ALB e reindirizza HTTP a HTTPS.
2. Per applicare il file ingressservice.yaml, esegui il seguente comando:
$ kubectl create -f ingressservice.yaml
Associa il tuo dominio personalizzato al DNS del sistema di bilanciamento del carico
1. Per restituire l'URL DNS del servizio di tipo LoadBalancer, esegui il seguente comando:
$ kubectl get service
2. Per restituire l'URL DNS del servizio di tipo Ingress, esegui il seguente comando:
$ kubectl get ingress/web-nginx-ingress
3. Associa il tuo nome di dominio personalizzato al nome del tuo sistema di bilanciamento del carico.
4. In un browser web, testa il tuo dominio personalizzato con il seguente protocollo HTTPS:
https://yourdomain.com

Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 5 mesi fa