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á.
Simplifique a implantação de aplicativos multilocatários do Amazon EKS usando o Flux
Criado por Nadeem Rahaman (AWS), Aditya Ambati (AWS), Aniket Dekate (AWS) e Shrikant Patil (AWS)
Resumo
Aviso: não AWS CodeCommit está mais disponível para novos clientes. Os clientes existentes do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais
Muitas empresas que oferecem produtos e serviços são setores regulados por dados que precisam manter barreiras de dados entre suas funções comerciais internas. Esse padrão descreve como você pode usar o recurso de multilocação no Amazon Elastic Kubernetes Service (Amazon EKS) para criar uma plataforma de dados que obtenha isolamento lógico e físico entre locatários ou usuários que compartilham um único cluster do Amazon EKS. O padrão fornece isolamento por meio das seguintes abordagens:
Isolamento do namespace Kubernetes
Regras de controle de acesso com base em função (RBAC)
Políticas de rede
Cotas de recurso
AWS Identity and Access Management Funções (IAM) para contas de serviço (IRSA)
Além disso, essa solução usa o Flux para manter a configuração do locatário imutável quando você implanta aplicativos. Você pode implantar seus aplicativos de locatário especificando o repositório de locatários que contém o arquivo Flux kustomization.yaml
em sua configuração.
Esse padrão implementa o seguinte:
Um AWS CodeCommit repositório, AWS CodeBuild projetos e um AWS CodePipeline pipeline, que são criados com a implantação manual de scripts do Terraform.
Componentes de rede e computação necessários para hospedar os inquilinos. Eles são criados por meio CodePipeline e CodeBuild usando o Terraform.
Namespaces de inquilinos, políticas de rede e cotas de recursos, que são configurados por meio de um gráfico do Helm.
Aplicativos que pertencem a diferentes locatários, implantados usando o Flux.
Recomendamos que você planeje e crie cuidadosamente sua própria arquitetura para multilocação com base em seus requisitos exclusivos e considerações de segurança. Esse padrão fornece um ponto de partida para sua implementação.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS
AWS Command Line Interface (AWS CLI) versão 2.11.4 ou posterior, instalada e configurada
Terraform
versão 0.12 ou posterior instalada em sua máquina local Terraform AWS Provider
versão 3.0.0 ou posterior Kubernetes Provider
versão 2.10 ou posterior Helm Provider
versão 2.8.0 ou posterior Kubectl Provider
versão 1.14 ou posterior
Limitações
Dependência das implantações manuais do Terraform: a configuração inicial do fluxo de trabalho, incluindo a criação de CodeCommit repositórios, CodeBuild projetos e CodePipeline pipelines, depende de implantações manuais do Terraform. Isso introduz uma limitação potencial em termos de automação e escalabilidade, porque requer intervenção manual para mudanças na infraestrutura.
CodeCommit dependência do repositório: o fluxo de trabalho depende dos CodeCommit repositórios como solução de gerenciamento de código-fonte e é fortemente acoplado a. Serviços da AWS
Arquitetura
Arquiteturas de destino
Esse padrão implanta três módulos para criar a infraestrutura de pipeline, rede e computação para uma plataforma de dados, conforme ilustrado nos diagramas a seguir.
Arquitetura do pipeline:

Arquitetura de rede:

Arquitetura de computação:

Ferramentas
Serviços da AWS
AWS CodeBuildé um serviço de compilação totalmente gerenciado que ajuda você a compilar o código-fonte, executar testes de unidade e produzir artefatos prontos para implantação.
AWS CodeCommité um serviço de controle de versão que ajuda você a armazenar e gerenciar repositórios Git de forma privada, sem precisar gerenciar seu próprio sistema de controle de origem.
AWS CodePipelineajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software e automatizar as etapas necessárias para liberar alterações de software continuamente.
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 Transit Gatewayé um hub central que conecta nuvens privadas virtuais (VPCs) e redes locais.
A Amazon Virtual Private Cloud (Amazon VPC) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.
Outras ferramentas
As políticas de rede Cilium oferecem suporte às políticas de rede
L3 e L4 do Kubernetes. Eles podem ser estendidos com políticas L7 para fornecer segurança em nível de API para HTTP, Kafka e gRPC e outros protocolos similares. O Flux
é uma ferramenta de entrega contínua (CD) baseada em Git que automatiza as implantações de aplicativos no Kubernetes. O Helm
é um gerenciador de pacotes de código aberto para Kubernetes que ajuda você a instalar e gerenciar aplicativos em seu cluster Kubernetes. O Terraform
é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.
Repositório de código
O código desse padrão está disponível no repositório GitHub EKS Multi-Tenancy Terraform Solution
Práticas recomendadas
Para obter diretrizes e melhores práticas para usar essa implementação, consulte o seguinte:
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Clone o repositório do projeto. | Clone o repositório GitHub EKS Multi-Tenancy Terraform Solution
| AWS DevOps |
Inicialize o bucket do Terraform S3 e o Amazon DynamoDB. |
| AWS DevOps |
Atualize |
| AWS DevOps |
Implante o módulo de pipeline. | Para criar recursos de pipeline, execute os seguintes comandos do Terraform manualmente. Não há orquestração para executar esses comandos automaticamente.
| AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Iniciar o pipeline. |
Após essa primeira execução, o pipeline é iniciado automaticamente sempre que você confirma uma alteração na ramificação principal do CodeCommit repositório. O pipeline inclui os seguintes estágios:
| AWS DevOps |
Valide os recursos criados por meio do módulo de rede. | Confirme se os seguintes AWS recursos foram criados após a implantação bem-sucedida do pipeline:
| AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Atualize | Para implantar os complementos para o cluster privado do Amazon EKS, o CodeBuild projeto deve ser anexado à VPC do Amazon EKS.
| AWS DevOps |
Atualize os | Na
| AWS DevOps |
Atualize o |
| AWS DevOps |
Valide os recursos computacionais. | Depois de atualizar os arquivos nas etapas anteriores, CodePipeline inicia automaticamente. Confirme se ele criou os seguintes AWS recursos para a infraestrutura computacional:
| AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Valide os recursos de gerenciamento de inquilinos no Kubernetes. | Execute os comandos a seguir para verificar se os recursos de gerenciamento de inquilinos foram criados com êxito com a ajuda do Helm.
| AWS DevOps |
Verifique as implantações de aplicativos do locatário. | Execute os comandos a seguir para verificar se os aplicativos do locatário foram implantados.
|
Solução de problemas
Problema | Solução |
---|---|
Você encontra uma mensagem de erro semelhante à seguinte:
| Siga estas etapas para solucionar o problema:
|
Recursos relacionados
Mais informações
Aqui está um exemplo de estrutura de repositório para implantar aplicativos de locatários:
applications
sample_tenant_app
├── README.md
├── base
│ ├── configmap.yaml
│ ├── deployment.yaml
│ ├── ingress.yaml
│ ├── kustomization.yaml
│ └── service.yaml
└── overlays
├── tenant-1
│ ├── configmap.yaml
│ ├── deployment.yaml
│ └── kustomization.yaml
└── tenant-2
├── configmap.yaml
└── kustomization.yaml