Como encerro o tráfego HTTPS nas cargas de trabalho do Amazon EKS com o ACM?

4 minuto de leitura
0

Quero encerrar o tráfego HTTPS nas cargas de trabalho do Amazon Elastic Kubernetes Service (Amazon EKS) com o AWS Certificate Manager (ACM).

Breve descrição

Para encerrar o tráfego HTTPS no nível do Elastic Load Balancing para um objeto do Kubernetes Service, você deve:

  1. Solicite um certificado do ACM público para seu domínio personalizado.
  2. Publicar seu serviço do Kubernetes com o campo tipo definido como LoadBalancer.
  3. Especificar o nome do recurso da Amazon (ARN) do seu certificado do ACM em seu serviço do Kubernetes usando a anotação service.beta.kubernetes.io/aws-load-balancer-ssl-cert do site do Kubernetes. A anotação permite que o servidor de APIs do Kubernetes associe esse certificado ao Classic Load Balancer quando ele é criado.
  4. Associar seu domínio personalizado ao balanceador de carga.

A resolução a seguir pressupõe que:

  • Você tem um cluster ativo do Amazon EKS com nós de processamento associados.
  • Você está trabalhando com um Classic Load Balancer.

Observação: para usar um Application Load Balancer, você deve implantar o Application Load Balancer no Amazon EKS.

Observação: o encerramento de conexões TLS em um Network Load Balancer é suportado somente no Kubernetes 1.15 ou superior. Para obter mais informações, consulte Suporte ao encerramento do TLS com o AWS NLB no site do Kubernetes.

Resolução

1.Solicite um certificado do ACM público para seu domínio personalizado.

2.Identifique o ARN do certificado que você quer usar com o receptor HTTPS do balanceador de carga.

3.Para identificar os nós registrados em seu cluster do Amazon EKS, execute o comando a seguir no ambiente em que o kubectl está configurado:

$ kubectl get nodes

4.Em seu editor de texto, crie um arquivo de manifesto deployment.yaml com base no seguinte:

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 criar um objeto deImplantação do Kubernetes, execute o comando a seguir:

$ kubectl create -f deployment.yaml

6.Para verificar se os pods do Kubernetes estão implantados no seu cluster do Amazon EKS, execute o comando a seguir:

$ kubectl get pods

Observação: os pods são rotulados app=echo-pod. Você pode usar esse rótulo como um seletor para que o objeto de Serviço identifique um conjunto de pods.

7.Em seu editor de texto, crie um arquivo de manifesto service.yaml com base no exemplo a seguir. Em seguida, edite a anotação service.beta.kubernetes.io/aws-load-balancer-ssl-cert para fornecer o ARN do ACM a partir da etapa 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 criar um objeto de Serviço, execute o comando a seguir:

$ kubectl create -f service.yaml

9.Para retornar o URL de DNS do serviço de tipo LoadBalancer, execute o comando a seguir:

$ kubectl get service

Observação: se você tiver vários serviços ativos em execução em seu cluster, obtenha a URL do serviço correto do tipo LoadBalancer na saída do comando.

10.Abra o console do Amazon Elastic Compute Cloud (Amazon EC2) e escolha Balanceadores de carga.

11.Selecione o balanceador de carga e escolha Receptores.

12.Em ID do receptor, confirme se a porta do balanceador de carga está definida como 443.

13.Em Certificado SSL, confirme se o certificado SSL que você definiu no arquivo YAML está anexado ao seu balanceador de carga.

14.Associe seu nome de domínio ao nome do seu balanceador de carga.

15.Em um navegador Web, teste o seu domínio personalizado com o seguinte protocolo HTTPS:

https://yourdomain.com

Uma resposta bem-sucedida retorna uma página da web com detalhes sobre o cliente. Essa resposta inclui o nome do host, as informações do pod, os valores do servidor, as informações da solicitação e os cabeçalhos da solicitação.

Importante: você não pode instalar certificados com chaves RSA de 4096 bits ou chaves EC em seu balanceador de carga por meio da integração com o ACM. Para usar as chaves com seu balanceador de carga, você deve carregar certificados com chaves RSA ou EC de 4096 bits para o AWS Identity and Access Management (IAM). Em seguida, use o ARN correspondente com a anotação service.beta.kubernetes.io/aws-load-balancer-ssl-cert.


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos