¿Cómo cancelo el tráfico HTTPS en las cargas de trabajo de Amazon EKS con ACM?

4 minutos de lectura
0

Quiero cancelar el tráfico HTTPS en las cargas de trabajo de Amazon Elastic Kubernetes Service (Amazon EKS) con AWS Certificate Manager (ACM).

Breve descripción

Para cancelar el tráfico HTTPS en el nivel de Elastic Load Balancing para un objeto de Kubernetes Service, debe hacer lo siguiente:

  1. Solicite un certificado de ACM público para su dominio personalizado.
  2. Publique su servicio de Kubernetes con el campo tipo establecido en LoadBalancer.
  3. Especifique el nombre de recurso de Amazon (ARN) de su certificado de ACM en su servicio de Kubernetes mediante la anotación service.beta.kubernetes.io/aws-load-balancer-ssl-cert del sitio web de Kubernetes. La anotación permite que el servidor de la API de Kubernetes asocie ese certificado al equilibrador de carga clásico cuando se crea.
  4. Asocie su dominio personalizado al equilibrador de carga.

La siguiente resolución asume que:

  • Tiene un clúster de Amazon EKS activo con nodos de trabajo asociados.
  • Está trabajando con un equilibrador de carga clásico.

Nota: Para utilizar un equilibrador de carga de aplicación, debe desplegar el equilibrio de carga de aplicación en Amazon EKS.

Nota: La cancelación de conexiones TLS en un equilibrador de carga de red solo se admite en Kubernetes 1.15 o en versiones posteriores. Para obtener más información, consulte Admisión de la cancelación de TLS con AWS NLB en el sitio web de Kubernetes.

Resolución

1.    Solicite un certificado de ACM público para su dominio personalizado.

2.    Identifique el ARN del certificado que desea usar con el agente de escucha HTTPS del equilibrador de carga.

3.    Para identificar los nodos registrados en su clúster de Amazon EKS, ejecute el siguiente comando en el entorno en el que está configurado kubectl:

$ kubectl get nodes

4.    En su editor de texto, cree un archivo de manifiesto deployment.yaml basado en lo siguiente:

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

5.    Para crear un objeto de despliegue de Kubernetes, ejecute el siguiente comando:

$ kubectl create -f deployment.yaml

6.    Para comprobar que los pods de Kubernetes estén desplegados en su clúster de Amazon EKS, ejecute el siguiente comando:

$ kubectl get pods

Nota: Los pods tienen la etiqueta app=echo-pod. Puede utilizar esta etiqueta como selector del objeto Servicio para identificar un conjunto de pods.

7.    En el editor de texto, cree un archivo de manifiesto service.yaml basado en el siguiente ejemplo. A continuación, edite la anotación service.beta.kubernetes.io/aws-load-balancer-ssl-cert para proporcionar el ARN de ACM del paso 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

8.    Para crear un objeto Servicio, ejecute el siguiente comando:

$ kubectl create -f service.yaml

9.    Para devolver la URL de DNS del servicio de tipo LoadBalancer, ejecute el siguiente comando:

$ kubectl get service

Nota: Si tiene varios servicios activos en ejecución en su clúster, obtenga la URL del servicio correcto del tipo LoadBalancer del resultado del comando.

10.    Abra la consola de Amazon Elastic Compute Cloud (Amazon EC2) y, a continuación, seleccione Equilibradores de carga.

11.    Seleccione su equilibrador de carga y, a continuación, elija Agentes de escucha.

12.    Para el ID de agente de escucha, confirme que el puerto de su equilibrador de carga esté configurado en 443.

13.    Para el certificado SSL, confirme que el certificado SSL que ha definido en el archivo YAML esté adjunto a su equilibrador de carga.

14.    Asocie su nombre de dominio personalizado con el nombre de su equilibrador de carga.

15.    En un navegador web, pruebe su dominio personalizado con el siguiente protocolo HTTPS:

https://yourdomain.com

Una respuesta correcta devuelve una página web con detalles sobre el cliente. Esta respuesta incluye el nombre de host, la información del pod, los valores del servidor, la información de la solicitud y los encabezados de la solicitud.

Importante: No puede instalar certificados con claves RSA o EC de 4096 bits en su equilibrador de carga mediante la integración con ACM. Para usar las claves con su equilibrador de carga, debe cargar certificados con claves RSA o EC de 4096 bits en AWS Identity and Access Management (IAM). A continuación, utilice el ARN correspondiente con la anotación service.beta.kubernetes.io/aws-load-balancer-ssl-cert.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años