¿Cómo utilizo certificados TLS para activar conexiones HTTPS en las aplicaciones de Amazon EKS?
Quiero utilizar certificados de seguridad de la capa de transporte (TLS) para activar conexiones HTTPS en las aplicaciones de Amazon Elastic Kubernetes Service (Amazon EKS).
Descripción breve
Para activar las conexiones HTTPS en las aplicaciones de Amazon EKS, debe:
- Obtener un certificado TLS válido para el dominio personalizado.
- Exponer el servicio de Kubernetes mediante el tipo de servicio de equilibrador de carga o exponer el objeto de entrada de Kubernetes mediante el controlador del equilibrador de carga de AWS.
- Asociar el dominio personalizado a los DNS del equilibrador de carga.
Resolución
Obtención de un certificado TLS válido para el dominio personalizado:
1. Solicite un certificado público de AWS Certificate Manager (ACM) para el dominio personalizado o cargue su propio certificado TLS en ACM.
2. Identifique el nombre de recurso de Amazon (ARN) del certificado que desea utilizar con el agente de escucha HTTPS del equilibrador de carga.
3. Para crear un ejemplo de despliegue de NGINX, ejecute el siguiente comando:
$ kubectl create deploy web --image=nginx --port 80 --replicas=3
4. Para comprobar que los pods de Kubernetes están desplegados en el clúster de Amazon EKS, ejecute el siguiente comando:
$ kubectl get pods -l app=web
Nota: Los pods llevan la etiqueta app=web. Utilice esta etiqueta como selector del objeto de servicio para identificar un conjunto de pods.
Exponga su servicio Kubernetes utilizando el tipo de servicio equilibrador de carga
Nota: Para utilizar el objeto de entrada para exponer su aplicación, vaya a la sección Exponer su servicio Kubernetes utilizando el objeto de entrada.
1. Para crear un archivo de manifiesto service.yaml, utilice el tipo de servicio LoadBalancer. Por ejemplo:
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. Edite la anotación service.beta.kubernetes.io/aws-load-balancer-tls-cert para incluir el ARN del ACM.
3. Para aplicar el archivo loadbalancer.yaml, ejecute el siguiente comando:
$ kubectl create -f loadbalancer.yaml
4. Ve a la sección Asociar tu dominio personalizado al DNS del equilibrador de carga.
Exposición de su servicio Kubernetes mediante el objeto de entrada
Nota: La siguiente resolución presupone que ha instalado el controlador del equilibrador de carga de AWS en el clúster de Amazon EKS.
1. Crea un servicio de Kubernetes de tipo NodePort basado en el siguiente ejemplo:
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: El manifiesto de entrada anterior escucha HTTP y HTTPS, luego termina TLS en ALB y redirige HTTP a HTTPS.
2. Para aplicar el archivo ingressservice.yaml, ejecute el siguiente comando:
$ kubectl create -f ingressservice.yaml
Asociación de su dominio personalizado con el DNS del equilibrador de carga
1. Para devolver la URL DNS del servicio de tipo LoadBalancer, ejecute el siguiente comando:
$ kubectl get service
2. Para devolver la URL DNS del servicio de tipo Ingress, ejecute el siguiente comando:
$ kubectl get ingress/web-nginx-ingress
3. Asocie su nombre de dominio personalizado con al nombre del equilibrador de carga.
4. Pruebe su dominio personalizado en un navegador web con el siguiente protocolo HTTPS:
https://yourdomain.com

Contenido relevante
- OFICIAL DE AWSActualizada hace 6 meses
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 6 meses