Implantar um Aplicativo Baseado em Microsserviços no Kubernetes Conectado com um Autonomous Database
Como desenvolvedor ou administrador de aplicativos, ao projetar e gerenciar aplicativos nativos da nuvem, você precisa de uma infraestrutura fácil de provisionar e manter e que permita se concentrar em seus objetivos de design e negócios. O OCI Kubernetes Engine (OKE) permite que você implante e execute aplicativos baseados em microsserviços altamente disponíveis e escaláveis na nuvem.
Arquitetura
Em uma arquitetura de serviços, cada serviço executa uma tarefa simples e se comunica com clientes ou outros serviços usando mecanismos leves, como solicitações de API REST.
Essa arquitetura de referência é para um aplicativo de comércio eletrônico que é composto de vários microsserviços poliglotas implantados como contêineres Docker em um cluster do Kubernetes. A persistência de dados é obtida usando um banco de dados Oracle Autonomous Transaction Processing. Os arquivos de mídia e imagem do aplicativo de comércio eletrônico são armazenados no Oracle Cloud Infrastructure Object Storage.
O diagrama a seguir ilustra a arquitetura.
mushop-infraestrutura-oracle.zip
A arquitetura tem os seguintes componentes:
- Região
Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, hospedando domínios de disponibilidade. As regiões são independentes de outras regiões, e grandes distâncias podem separá-las (entre países ou até mesmo continentes).
- Domínio de disponibilidade
Domínios de disponibilidade são data centers stand-alone e independentes dentro de uma região. Os recursos físicos de cada domínio de disponibilidade são isolados dos recursos de outros domínios de disponibilidade, o que oferece tolerância a falhas. Os domínios de disponibilidade não compartilham infraestrutura como energia ou refrigeração ou a rede interna do domínio de disponibilidade. Portanto, uma falha em um domínio de disponibilidade não deve afetar os outros domínios de disponibilidade na região.
- Domínios de falha
Um domínio de falha é um agrupamento de hardware e infraestrutura dentro de um domínio de disponibilidade. Cada domínio de disponibilidade tem três domínios de falha com energia e hardware independentes. O OCI Kubernetes Engine trata a distribuição dos nós no cluster em vários domínios de falha. Portanto, seu aplicativo conteinerizado é protegido contra falha física do servidor, manutenção do sistema e falha de energia em um domínio de falha.
- Rede virtual na nuvem (VCN) e sub-redes
Uma VCN é uma rede personalizável definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes tradicionais de data center, as VCNs oferecem controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após a criação da VCN. Você pode segmentar uma VCN em sub-redes, com escopo definido para uma região ou para um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobrepõem a outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.
- Gateway de serviço
Um gateway de serviço fornece acesso de uma VCN a outros serviços, como o Oracle Cloud Infrastructure Object Storage. O tráfego da VCN para o serviço Oracle percorre a malha da rede Oracle e não atravessa a internet.
- Gateway NAT (Network Address Translation)
Um gateway NAT permite que recursos privados em uma VCN acessem hosts na internet, sem expor esses recursos a conexões de internet de entrada.
- Gateway de internet
Um gateway de internet permite o tráfego entre as sub-redes públicas em uma VCN e a internet pública.
- Autonomous Transaction Processing
O Oracle Autonomous Transaction Processing é um serviço de banco de dados autônomo, autoprotegido e autorreparável otimizado para cargas de trabalho de processamento de transações. Você não precisa configurar nem gerenciar nenhum hardware, nem instalar nenhum software. O Oracle Cloud Infrastructure trata da criação, backup, aplicação de patches, upgrade e ajuste do banco de dados.
- Armazenamento de objetos
O serviço OCI Object Storage oferece acesso a grandes quantidades de dados estruturados e não estruturados de qualquer tipo de conteúdo, incluindo backups de bancos de dados, dados de análise e conteúdo avançado, como imagens e vídeos. Você pode armazenar dados de forma segura e protegida diretamente da internet ou de dentro da plataforma da nuvem. Você pode dimensionar o armazenamento sem prejudicar o desempenho ou a confiabilidade do serviço.
Nesta arquitetura, os ativos de mídia do aplicativo são armazenados no Oracle Cloud Infrastructure Object Storage em um bucket da classe de armazenamento padrão.
- Kubernetes Engine
O Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) é um serviço totalmente gerenciado, escalável e altamente disponível que você pode usar para implantar seus aplicativos em contêineres na nuvem. Você especifica os recursos de computação necessários aos seus aplicativos, e o serviço Kubernetes Engine os provisiona no Oracle Cloud Infrastructure em uma tenancy existente. O OKE usa o Kubernetes para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres entre clusters de hosts.
O diagrama a seguir mostra as interações entre os microsserviços conteinerizados nesta arquitetura:
mushop-infraestrutura-expandir-oracle.zip
O tráfego da internet pública é roteado pelo serviço DNS por meio de um firewall de aplicativo web (WAF) para o balanceador de carga, que encaminha as solicitações de entrada para um microsserviço de Entrada (Nginx). O microsserviço de Entrada envia tráfego para um microsserviço de Roteador (Traefik). Dependendo da natureza das solicitações, o microsserviço do Roteador as encaminha para os microsserviços apropriados no aplicativo. Além de interagir com outros microsserviços, muitos deles também interagem com os serviços do Oracle Cloud Infrastructure: OCI Object Storage, OCI API Gateway, OCI Functions, OCI Email Delivery, OCI Streaming e Oracle Autonomous Database.
Recomendações
- VCN
Ao criar uma VCN, determine o número de blocos CIDR necessários e o tamanho de cada bloco com base no número de recursos que você planeja anexar a sub-redes na VCN. Use blocos CIDR que estejam dentro do espaço de endereço IP privado padrão.
Selecione blocos CIDR que não se sobreponham a nenhuma outra rede (no Oracle Cloud Infrastructure, em seu data center local ou em outro provedor de nuvem) para a qual você pretende configurar conexões privadas.
Depois de criar uma VCN, você poderá alterar, adicionar e remover seus blocos CIDR.
Ao projetar as sub-redes, considere seus requisitos de fluxo de tráfego e segurança. Anexe todos os recursos dentro de uma camada ou atribuição específica à mesma sub-rede, que pode servir como um limite de segurança.
Usar sub-redes regionais.
Observação:
O código do Terraform para implementar essa arquitetura provisiona o banco de dados Oracle Autonomous Transaction Processing na rede de serviços da Oracle. Se preferir expor apenas um ponto final privado para o banco de dados, você poderá ajustar o código do Terraform para anexar o banco de dados a uma sub-rede privada, conforme mostrado no diagrama de arquitetura. - Mecanismo do Kubernetes do OCI
Nessa arquitetura, os nós de trabalho no cluster do Kubernetes usam a forma VM.Standard2.1 e são executados no Oracle Linux. Você pode criar até 1000 nós em um cluster.
Considerações
Ao implementar essa arquitetura, considere seus requisitos para os seguintes parâmetros:
- Escalabilidade
Você pode expandir seu aplicativo atualizando o número de nós de trabalho no cluster do Kubernetes, dependendo da carga. Da mesma forma, você pode ampliar reduzindo o número de nós de trabalho no cluster. Ao criar um serviço no cluster do Kubernetes, você pode criar um balanceador de carga para distribuir o tráfego de serviço entre os nós designados para o serviço. Essa arquitetura usa um balanceador de carga para tratar solicitações de entrada.
- Disponibilidade do aplicativo
Os domínios de falha fornecem resiliência dentro de um único domínio de disponibilidade. Você também pode implantar instâncias ou nós que executam as mesmas tarefas em vários domínios de disponibilidade. Esse design remove pontos únicos de falha introduzindo redundância. Nesta arquitetura, o Oracle Cloud Infrastructure Kubernetes Engine é responsável por distribuir os nós entre domínios de falha dentro de um domínio de disponibilidade e por gerenciar a distribuição dos microsserviços nos nós disponíveis dentro do cluster do Kubernetes.
- Gerenciabilidade
Todos os microsserviços são conteinerizados usando o Docker. Essas imagens são armazenadas no serviço Oracle Cloud Infrastructure Registry. A implantação é automatizada usando o Terraform, que também implanta outros serviços comuns, como gráficos Grafana, Prometheus e Helm.
Você pode usar outros serviços do Oracle Cloud Infrastructure, como OCI API Gateway, OCI Functions e OCI Email Delivery, para gerenciar as APIs de backend e ativar assinaturas de boletins informativos ou e-mails relacionados ao produto.
- Segurança
O OCI Kubernetes Engine está integrado com o Oracle Cloud Infrastructure Identity and Access Management (IAM), que fornece autenticação fácil com funcionalidade nativa de identidade. Use políticas do serviço IAM para controlar quem pode acessar seus recursos e as ações que eles podem executar.
Considere o uso do Oracle Cloud Infrastructure Web Application Firewall (WAF) para proteger o aplicativo contra tráfego malicioso da internet pública.
Você pode usar o serviço Oracle Cloud Infrastructure Streaming para transmitir e registrar eventos no nível do aplicativo.
Para proteger seus segredos do Kubernetes, você pode armazená-los em um vault ou criptografar os segredos usando chaves mantidas no serviço Oracle Cloud Infrastructure Vault. O cluster do Kubernetes pode acessar o vault, as chaves e os segredos de forma privada por meio do gateway de serviço da VCN, sem expor as solicitações de acesso à internet pública. As políticas que você define no Oracle Cloud Infrastructure Identity and Access Management controlam o acesso ao vault. O serviço Oracle Cloud Infrastructure Audit permite monitorar e rastrear o uso de suas chaves e segredos protegidos por vault.
Implante
O código necessário para implantar essa arquitetura de referência está disponível em GitHub. Você pode extrair o código para o Oracle Cloud Infrastructure Resource Manager com um único clique, criar a pilha e implantá-la. Como alternativa, faça download do código de GitHub para seu computador, personalize o código e implante a arquitetura usando a CLI do Terraform.
- Implante usando o Oracle Cloud Infrastructure Resource Manager:
- Clique
Se você ainda não tiver acessado, informe a tenancy e as credenciais do usuário.
- Revise e aceite os termos e condições.
- Selecione a região na qual você deseja implantar a pilha.
- Siga os prompts na tela e as instruções para criar a pilha.
- Após criar a pilha, clique em Ações do Terraform e selecione Planejar.
- Aguarde a conclusão do job e revise o plano.
Para fazer qualquer alteração, retorne à página Detalhes da Pilha, clique em Editar Pilha e faça as alterações necessárias. Em seguida, execute a ação Planejar novamente.
- Se nenhuma alteração adicional for necessária, retorne à página Detalhes da Pilha, clique em Ações do Terraform e selecione Aplicar.
- Clique
- Implante usando a CLI do Terraform:
- Vá para GitHub.
- Faça download ou clone o código no seu computador local.
- Siga as instruções em
deploy/complete/README.md
.
Explorar Mais
Saiba mais sobre a implantação de aplicativos baseados em microsserviços em contêineres em clusters do Kubernetes na nuvem.
Alterar Log
Este log lista apenas as alterações significativas:
21 de abril de 2025 |
|
Dezembro de 1, 2020 | Etapas adicionadas para implantar a arquitetura usando o Oracle Cloud Infrastructure Resource Manager. |