Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Criar uma IngressClass para configurar um Application Load Balancer
O Modo Automático do EKS automatiza tarefas de rotina de balanceamento de carga, incluindo a exposição de aplicações de cluster à internet.
A AWS sugere o uso de Application Load Balancers (ALB) para fornecer tráfego HTTP e HTTPS. Os Application Load Balancers podem rotear solicitações com base no conteúdo da solicitação. Para obter mais informações sobre Application Load Balancers, consulte What is Elastic Load Balancing?.
O Modo Automático do EKS cria e configura Application Load Balancers (ALBs). Por exemplo, o Modo Automático do EKS cria um balanceador de carga quando você cria um objeto Ingress
do Kubernetes e o configura para rotear o tráfego para a workload do cluster.
Visão geral
-
Crie uma workload que você deseja expor à internet.
-
Crie um recurso
IngressClassParams
, especificando valores de configuração da AWS específicos, como o certificado a ser usado para sub-redes SSL/TLS e VPC. -
Crie um recurso
IngressClass
, especificando que o Modo Automático do EKS será o controlador do recurso. -
Crie um recurso
Ingress
que associe um caminho HTTP e uma porta a uma workload do cluster.
O Modo Automático do EKS criará um Application Load Balancer que aponte para a workload específica no recurso Ingress
, usando a configuração do balanceador de carga específica no recurso IngressClassParams
.
Pré-requisitos
-
Modo Automático do EKS habilitado em um cluster do Amazon EKS
-
Kubectl configurado para se conectar ao cluster
-
Você pode usar
kubectl apply -f <filename>
para aplicar os arquivos YAML de configuração de exemplo abaixo ao cluster.
-
nota
O Modo Automático do EKS precisa de tags de sub-rede para identificar sub-redes públicas e privadas.
Se você criou o cluster com o eksctl
, você já tem essas tags.
Aprenda como Marcar sub-redes para o Modo Automático do EKS.
Etapa 1: criar uma workload
Crie uma workload que você deseja expor à internet. Pode ser qualquer recurso do Kubernetes que envia tráfego HTTP, como um Deployment e um Service. Neste exemplo, usamos um serviço HTTP simples denominado service-2048
que envia tráfego HTTP na porta 80.
Etapa 2: criar IngressClassParams
Crie um objeto IngressClassParams
para especificar as opções de configuração da AWS específicas do Application Load Balancer. Neste exemplo, criamos um recurso IngressClassParams
denominado alb
(que você usará na próxima etapa) que especifica o esquema do balanceador de carga como internet-facing
em um arquivo nomeado como alb-ingressclassparams.yaml
.
apiVersion: eks.amazonaws.com/v1 kind: IngressClassParams metadata: name: alb spec: scheme: internet-facing
Aplicar a configuração ao cluster:
kubectl apply -f alb-ingressclassparams.yaml
Etapa 3: criar IngressClass
Crie um IngressClass
que faça referência aos valores de configuração específicos da AWS definidos no recurso IngressClassParams
em um arquivo nomeado como alb-ingressclass.yaml
. Registre o nome da IngressClass
. Neste exemplo, tanto IngressClass
como IngressClassParams
são denominados alb
.
Use a anotação is-default-class
para controlar se os recursos Ingress
devem usar essa classe por padrão.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb annotations: # Use this annotation to set an IngressClass as Default # If an Ingress doesn't specify a class, it will use the Default ingressclass.kubernetes.io/is-default-class: "true" spec: # Configures the IngressClass to use EKS Auto Mode controller: eks.amazonaws.com/alb parameters: apiGroup: eks.amazonaws.com kind: IngressClassParams # Use the name of the IngressClassParams set in the previous step name: alb
Para obter mais informações sobre as opções de configuração, consulte Referência IngressClassParams.
Aplicar a configuração ao cluster:
kubectl apply -f alb-ingressclass.yaml
Etapa 4: criar Ingress
Crie um recurso Ingress
em um arquivo nomeado como alb-ingress.yaml
. O objetivo desse recurso é associar caminhos e portas no Application Load Balancer às workloads no cluster. Neste exemplo, criamos um recurso Ingress
denominado 2048-ingress
que roteia o tráfego para um serviço denominado service-2048
na porta 80.
Para obter mais informações sobre como configurar esse recurso, consulte Ingress
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: 2048-ingress spec: # this matches the name of IngressClass. # this can be omitted if you have a default ingressClass in cluster: the one with ingressclass.kubernetes.io/is-default-class: "true" annotation ingressClassName: alb rules: - http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: service-2048 port: number: 80
Aplicar a configuração ao cluster:
kubectl apply -f alb-ingress.yaml
Etapa 5: verificar o status
Use kubectl
para encontrar o status de Ingress
. Pode levar alguns minutos para que o balanceador de carga esteja disponível.
Use o nome do recurso Ingress
que você definiu na etapa anterior. Por exemplo:
kubectl get ingress 2048-ingress
Quando o recurso estiver pronto, recupere o nome de domínio do balanceador de carga.
kubectl get ingress 2048-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
Para visualizar o serviço em um navegador da Web, analise a porta e o caminho especificados no recurso Ingress
.
Etapa 6: limpeza
Para limpar o balanceador de carga, use o seguinte comando:
kubectl delete ingress 2048-ingress kubectl delete ingressclass alb kubectl delete ingressclassparams alb
O Modo Automático do EKS excluirá automaticamente o balanceador de carga associado na conta da AWS.
Referência IngressClassParams
A tabela abaixo é uma referência rápida das opções de configuração mais usadas.
Campo | Descrição | Valor de exemplo |
---|---|---|
|
Define se o ALB é interno ou voltado para a internet |
|
|
Restringe quais namespaces podem usar esta IngressClass |
|
|
Agrupa várias entradas para compartilhar um único ALB |
|
|
Define o tipo de endereço IP para o ALB |
|
|
Lista de IDs de sub-rede para implantação do ALB |
|
|
Filtros de tag para selecionar sub-redes do ALB |
|
|
ARNs de certificados SSL para usar |
|
|
Tags personalizadas de recursos da AWS |
|
|
Atributos específicos do balanceador de carga |
|
Considerações
-
Você não pode usar Anotações em uma IngressClass para configurar balanceadores de carga com o Modo Automático do EKS.
-
Você deve atualizar o perfil do IAM do cluster para permitir a propagação de tags do Kubernetes para os recursos do AWS Load Balancer. Para obter mais informações, consulte Tags da AWS personalizadas para recursos do Modo Automático do EKS..
-
Para obter informações sobre como associar recursos ao Modo Automático do EKS ou ao AWS Load Balancer Controller autogerenciado, consulte Referência de migração.
-
Para obter informações sobre como corrigir problemas com balanceadores de carga, consulte Solucionar problemas do Modo Automático do EKS.
-
Para obter mais considerações sobre o uso do recurso de balanceamento de carga do Modo Automático do EKS, consulte Balanceamento de carga.
As tabelas a seguir fornecem uma comparação detalhada das alterações nas configurações de IngressClassParams, anotações de Ingress e TargetGroupBinding do Modo Automático do EKS. Essas tabelas destacam as principais diferenças entre a capacidade de balanceamento de carga do Modo Automático do EKS e o controlador de balanceador de carga de código aberto, incluindo alterações na versão da API, recursos obsoletos e nomes de parâmetros atualizados.
IngressClassParams
Anterior | Novo | Descrição |
---|---|---|
|
|
Alteração de versão da API |
|
|
Compatibilidade com vários ARNs de certificados |
|
|
Esquema de correspondência de sub-rede alterado |
|
|
Nomenclatura de atributos simplificada |
Anotações de Ingress
Anterior | Novo | Descrição |
---|---|---|
|
Não compatível |
Use |
|
Não compatível |
Especifique grupos somente em IngressClass |
|
Não compatível |
Use WAF v2 em vez disso |
|
Não compatível |
Use WAF v2 em vez disso |
|
Não compatível |
Integração com Shield desabilitada |
|
Não compatível |
No momento, o tipo OIDC Auth não é compatível. |
TargetGroupBinding
Anterior | Novo | Descrição |
---|---|---|
|
|
Alteração de versão da API |
|
|
Especificação explícita do tipo de destino |
|
Não compatível |
Não oferece mais compatibilidade com NLB sem grupos de segurança |