As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configuração do ajuste de escala automático orientado por eventos no Amazon EKS usando o Identidade de Pods do Amazon EKS e o KEDA
Dipen Desai, Abhay Diwan, Kamal Joshi e Mahendra Revanasiddappa, Amazon Web Services
Resumo
Plataformas de orquestração, como o Amazon Elastic Kubernetes Service (Amazon EKS), simplificaram o gerenciamento do ciclo de vida de aplicações baseadas em contêineres. Isso ajuda as organizações a se concentrarem na criação, proteção, operação e manutenção de aplicações baseadas em contêineres. À medida que as implantações orientadas por eventos se tornam mais comuns, as organizações estão escalando com mais frequência as implantações do Kubernetes com base em várias fontes de eventos. Esse método, combinado com o ajuste de escala automático, pode resultar em economias de custo significativas ao fornecer recursos computacionais sob demanda e escalabilidade eficiente, adaptada à lógica da aplicação.
O KEDA
AWS fornece funções AWS Identity and Access Management (IAM) que oferecem suporte a diversas opções de implantação do Kubernetes, incluindo Amazon EKS, Amazon EKS Anywhere Serviço Red Hat OpenShift na AWS (ROSA) e clusters de Kubernetes autogerenciados no Amazon Elastic Compute Cloud (Amazon). EC2 Essas funções usam construções do IAM, como provedores de identidade OpenID Connect (OIDC) e políticas de confiança do IAM, para operar em diferentes ambientes sem depender diretamente dos serviços do Amazon EKS ou. APIs Para obter mais informações, consulte Perfis do IAM para contas de serviço na documentação do Amazon EKS.
A Identidade de Pods do Amazon EKS simplifica o processo para que as contas de serviço do Kubernetes assumam perfis do IAM sem exigir provedores de OIDC. Ela fornece a capacidade de gerenciar credenciais para suas aplicações. Em vez de criar e distribuir suas AWS credenciais para os contêineres ou usar a função da EC2 instância da Amazon, você associa uma função do IAM a uma conta de serviço do Kubernetes e configura seus pods para usar a conta de serviço. Isso ajuda você a usar um perfil do IAM em vários clusters e simplifica o gerenciamento de políticas ao permitir a reutilização de políticas de permissão em todos os perfis do IAM.
Ao implementar o KEDA com a Identidade de Pods do Amazon EKS, as empresas podem implantar o ajuste de escala automático eficiente orientado por eventos e o gerenciamento simplificado de credenciais. As aplicações são dimensionadas com base na demanda, o que otimiza a utilização dos recursos e reduz os custos.
Este padrão ajuda você a integrar a Identidade de Pods do Amazon EKS com o KEDA. Ele mostra como você pode usar a conta de serviço keda-operator e delegar a autenticação com TriggerAuthentication. Também descreve como configurar uma relação de confiança entre um perfil do IAM para o operador do KEDA e um perfil do IAM para a aplicação. Essa relação de confiança permite que o KEDA monitore mensagens nas filas de eventos e ajuste a escala para os objetos do Kubernetes de destino.
Pré-requisitos e limitações
Pré-requisitos
AWS Command Line Interface (AWS CLI) versão 2.13.17 ou posterior, instalada
Python versão 3.11.5 ou posterior, instalado
AWS SDK para Python (Boto3) versão 1.34.135 ou posterior, instalada
Helm versão 3.12.3 ou posterior, instalado
kubectl versão 1.25.1 ou posterior, instalado
Docker Engine versão 26.1.1 ou posterior, instalado
Um cluster do Amazon EKS versão 1.24 ou posterior, criado
Pré-requisitos para criar o agente da Identidade de Pods do Amazon EKS, atendidos
Limitações
É necessário que você estabeleça uma relação de confiança entre o perfil
keda-operatore o perfilkeda-identity. As instruções são fornecidas na seção Épicos deste padrão.
Arquitetura
Nesse padrão, você cria os seguintes AWS recursos:
Repositório do Amazon Elastic Container Registry (Amazon ECR): neste padrão, esse repositório se chama
keda-pod-identity-registry. Esse repositório privado é usado para armazenar imagens do Docker da aplicação de exemplo.Fila do Amazon Simple Queue Service (Amazon SQS): neste padrão, essa fila se chama
event-messages-queue. A fila funciona como um buffer de mensagens que coleta e armazena as mensagens recebidas. O KEDA monitora as métricas da fila, como contagem de mensagens ou comprimento da fila, e escala automaticamente a aplicação com base nessas métricas.Perfil do IAM para a aplicação: neste padrão, esse perfil se chama
keda-identity. O perfilkeda-operatorassume esse perfil. Esse perfil permite o acesso à fila do Amazon SQS.Perfil do IAM para o operador do KEDA: neste padrão, esse perfil se chama
keda-operator. O operador KEDA usa essa função para fazer as chamadas de AWS API necessárias. Esse perfil tem permissões para assumir o perfilkeda-identity. Devido à relação de confiança entre okeda-operatore os perfiskeda-identity, o perfilkeda-operatortem permissões do Amazon SQS.
Por meio dos recursos personalizados TriggerAuthentication e ScaledObject do Kubernetes, o operador usa o perfil keda-identity para se conectar a uma fila do Amazon SQS. Com base no tamanho da fila, o KEDA escala automaticamente a implantação da aplicação. Ele adiciona um pod para cada cinco mensagens não lidas na fila. Na configuração padrão, se não houver mensagens não lidas na fila do Amazon SQS, a escala da aplicação é reduzida verticalmente para zero pods. O operador do KEDA monitora a fila em um intervalo especificado.
A imagem a seguir mostra como você usa a Identidade de Pods do Amazon EKS para fornecer ao perfil keda-operator acesso seguro à fila do Amazon SQS.

O diagrama mostra o seguinte fluxo de trabalho:
Você instala o agente da Identidade de Pods do Amazon EKS no cluster do Amazon EKS.
Você implanta o operador do KEDA no namespace do cluster do Amazon EKS.
Você cria os papéis
keda-operatorekeda-identityIAM no alvo Conta da AWS.Você estabelece uma relação de confiança entre os perfis do IAM.
Você implanta a aplicação no namespace
security.O operador do KEDA enfileira as mensagens em uma fila do Amazon SQS.
O KEDA inicia o HPA, que escala automaticamente a aplicação com base no tamanho da fila.
Ferramentas
Serviços da AWS
O Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.
O Amazon Elastic Kubernetes Service (Amazon EKS) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.
AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
O Amazon Simple Queue Service (Amazon SQS) fornece uma fila hospedada segura, durável e disponível que ajuda a integrar e desacoplar sistemas e componentes de software distribuídos.
Outras ferramentas
O KEDA
é um autoescalador baseado no Kubernetes orientado por eventos.
Repositório de código
O código desse padrão está disponível no escalonamento GitHub automático orientado por eventos usando o EKS Pod Identity e
Práticas recomendadas
Convém seguir estas práticas recomendadas:
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Crie o perfil do IAM para o operador do KEDA. |
| Administrador da AWS |
Crie um perfil do IAM para a aplicação de exemplo. |
| Administrador da AWS |
Como criar uma fila do Amazon SQS. |
| AWS geral |
Crie um repositório do Amazon ECR. |
| AWS geral |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Implante o agente da Identidade de Pods do Amazon EKS. | Para o cluster de destino do Amazon EKS, configure o agente da Identidade de Pods do Amazon EKS. Siga as instruções em Configurar o atendente da Identidade de Pods do Amazon EKS na documentação do Amazon EKS. | AWS DevOps |
Implante o KEDA. |
| DevOps engenheiro |
Atribua o perfil do IAM à conta de serviço do Kubernetes. | Siga as instruções em Atribuir um perfil do IAM a uma conta de serviço do Kubernetes na documentação do Amazon EKS. Use os seguintes valores:
| AWS DevOps |
Crie um namespace . | Insira o seguinte comando para criar um namespace
| DevOps engenheiro |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Clone os arquivos da aplicação. | Insira o comando a seguir para clonar o escalonamento automático controlado por eventos usando o EKS Pod Identity e
| DevOps engenheiro |
Crie a imagem do Docker. |
| DevOps engenheiro |
Envie a imagem do Docker para o Amazon ECR. |
notaVocê pode encontrar comandos push navegando até a página do repositório do Amazon ECR e, em seguida, escolhendo Visualizar comandos push. | DevOps engenheiro |
Implante a aplicação de exemplo. |
| DevOps engenheiro |
Atribua o perfil do IAM à conta de serviço da aplicação. | Siga uma destas etapas para associar o perfil
| DevOps engenheiro |
Implante |
| DevOps engenheiro |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Envie mensagens para a fila do Amazon SQS. |
| DevOps engenheiro |
Monitore os pods de aplicação. |
| DevOps engenheiro |
Solução de problemas
| Problema | Solução |
|---|---|
O operador do KEDA não pode escalar a aplicação. | Insira o seguinte comando para verificar os logs do perfil do IAM
Se houver um código de resposta
Se houver um erro
|
Recursos relacionados
Configurar o atendente da Identidade de Pods do Amazon EKS na documentação do Amazon EKS.
Deploying KEDA
(documentação do KEDA) ScaledObject especificação
(documentação KEDA) Autenticação com TriggerAuthentication
(documentação KEDA)