Como encerro o tráfego HTTPS nas cargas de trabalho do Amazon EKS com o ACM?
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:
- Solicite um certificado do ACM público para seu domínio personalizado.
- Publicar seu serviço do Kubernetes com o campo tipo definido como LoadBalancer.
- 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.
- 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.
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 3 anos