Ative o Oracle Cloud Infrastructure Service Mesh em seus aplicativos Kubernetes
Os clientes da Oracle Cloud Infrastructure (OCI) migraram cada vez mais para uma arquitetura de microsserviços que, juntamente com seus benefícios, também traz novos desafios. Em uma arquitetura de microsserviços, os aplicativos monolíticos são divididos em microsserviços menores que se comunicam pela rede usando uma API. Isso causa uma onda de tráfego de rede e aumenta a complexidade e a superfície de ataque geral na arquitetura.
- Permite controlar o fluxo de tráfego de microsserviços.
- Fornece visibilidade de seus aplicativos.
- Permite que os microsserviços se conectem com segurança sem qualquer alteração no código do aplicativo.
Recursos da Malha de Serviços do OCI
- Aplicação de políticas relacionadas a segurança
A Malha de Serviços do OCI usa políticas de acesso para definir regras de acesso. As políticas de acesso impõem a comunicação entre microsserviços e permitem apenas solicitações validadas originadas dentro e fora do aplicativo. As políticas de acesso também são usadas para definir a comunicação permitida a serviços externos.
- Confiança Zero
O OCI Service Mesh implementa automaticamente uma arquitetura de segurança de confiança zero em todos os microsserviços. Os dados entre microsserviços são criptografados. A identificação de microsserviço para microsserviço é necessária no início da comunicação. As duas partes devem trocar credenciais com suas informações de identidade. Isso permite que os serviços se identifiquem para determinar se estão autorizados a interagir. Isso é implementado com TLS mútuo com certificado automatizado e rotação de chaves usando o serviço Oracle Cloud Infrastructure Certificates (OCI Certificates) e o Oracle Key Management Cloud Service para gerenciar certificados e chaves.
- Mudança de tráfego
O OCI Service Mesh permite que você faça implantações canárias. Quando você publica uma nova versão do seu código em produção, só permite que uma parte do tráfego o alcance. O recurso permite que você implante rapidamente e causa o menor distúrbio em seu aplicativo. Você pode definir regras de roteamento que regem toda a comunicação entre microsserviços dentro da malha. Você pode rotear uma parte do tráfego para uma determinada versão do serviço.
- Monitoramento e Log
A Malha de Serviços da OCI está posicionada exclusivamente para fornecer informações de telemetria, pois toda comunicação entre microsserviços deve passar por ela. Isso permite que a malha de serviços capture dados de telemetria, como origem, destino, protocolo, URL, duração, código de status, latência, registro em log e outras estatísticas detalhadas. Você pode exportar informações de log para o serviço Oracle Cloud Infrastructure Logging (OCI Logging). A Malha de Serviços do OCI fornece dois tipos de logs: logs de erro e logs de tráfego. Você pode usar esses logs para depurar problemas 404 ou 505 ou gerar estatísticas baseadas em log. Métricas e dados de telemetria podem ser exportados para o Prometheus e visualizados com o Grafana. Ambos podem ser implantados diretamente em um cluster do OKE.
Arquitetura
A Malha de Serviços do Oracle Cloud Infrastructure (Malha de Serviços do OCI) usa um modelo sidecar. Essa arquitetura encapsula o código que implementa a funcionalidade de rede em um proxy de rede e, em seguida, depende do tráfego de e para os serviços a serem redirecionados para o proxy sidecar. É chamado de sidecar porque um proxy é anexado a cada aplicação, muito parecido com um sidecar anexado a uma moto. No OKE, o contêiner de aplicativos fica ao lado do contêiner sidecar proxy no mesmo pod. Como eles estão no mesmo pod, eles compartilham o mesmo namespace de rede e endereço IP, permitindo que os contêineres se comuniquem via "localhost".
- Plano de controle
O plano de controle da Malha de Serviços do OCI gerencia e configura toda a coleção de proxies para rotear o tráfego. Ele lida com encaminhamento, verificação de integridade, balanceamento de carga, autenticação, autorização e agregação de telemetria. O plano de controle interage com o serviço de certificado do OCI e o serviço de gerenciamento de chaves do OCI para fornecer a cada proxy seu certificado.
- Plano de dados
O plano de dados é composto pela coleta de proxies sidecar implantados no ambiente e é responsável pela segurança, funções de rede e observabilidade do aplicativo. Eles também coletam e relatam telemetria em todo o tráfego de malha. O proxy Envoy é usado para o plano de dados do OCI Service Mesh.
O diagrama a seguir ilustra essa arquitetura de referência.
oci_service_mesh_oke_arch-oracle.zip
Essa arquitetura de referência mostra um aplicativo implantado em um cluster do OKE com três serviços. O namespace no qual o aplicativo é implantado foi "meshificado". Um namespace "meshificado" indica que os serviços implantados dentro do namespace farão parte de uma malha de serviços, e cada novo pod implantado será injetado com um contêiner de proxy do enviado. À medida que cada pod é implantado, as configurações e os certificados são enviados para cada um dos contêineres de proxy pelo plano de controle da Malha de Serviços do OCI. O plano de controle da Malha de Serviços do OCI se comunica com o serviço OCI Certificates e o Oracle Key Management Cloud Service para obter certificados para cada proxy.
Um gateway de entrada é implantado para fornecer acesso externo ao aplicativo. O gateway de entrada faz parte do plano de dados da Malha de Serviços do OCI e também é um proxy enviado que recebe configuração e certificados do plano de controle da Malha de Serviços do OCI.
É responsabilidade do contêiner proxy executar descoberta de serviço, criptografia de tráfego e autenticação com o serviço de destino. Os contêineres proxy também aplicam políticas de rede, como como o tráfego é distribuído entre diferentes versões de serviço e impõem políticas de acesso. O gateway de entrada executa a mesma função para tráfego fora da malha de serviços.
Prometheus e Grafana são implantados no cluster do OKE em um namespace separado que não faz parte da malha de serviços. O plano de dados da malha de serviços envia estatísticas operacionais importantes, como latência, falhas, solicitações e telemetria para a implantação do Prometheus. O Grafana extrai dados da implantação do Prometheus, que pode ser usada para criar painéis de controle para visualização.
A Malha de Serviços do OCI é integrada ao serviço OCI Logging e o registro em log pode ser ativado quando a malha de serviços é criada. A Malha de Serviços do OCI fornece dois tipos de logs: logs de erro e logs de tráfego. Esses logs podem ser usados para depurar problemas 404 ou 505 ou gerar estatísticas baseadas em log.
Essa arquitetura tem os seguintes Serviços do OCI:
- OCI Kubernetes Engine (OKE)
Fornece um cluster Kubernetes altamente disponível e escalável pronto para produção para implementar seus aplicativos em contêineres na nuvem.
- Balanceador de Carga
Fornece acesso ao gateway de entrada no cluster do OKE. A entrada direciona o tráfego para os serviços solicitados no cluster do OKE.
- Autoridade de Certificação
Gerencia os certificados TLS para o serviço OCI Service Mesh.
- Key Management
Gerencia as chaves usadas pelo serviço de Autoridade de Certificação.
A arquitetura tem os seguintes componentes:
- Região
Região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominada 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).
- 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.
- Lista de segurança
Para cada sub-rede, você pode criar regras de segurança que especifiquem a origem, o destino e o tipo de tráfego que deve ser permitido dentro e fora da sub-rede.
Recursos da Malha de Serviços do OCI
Recursos do Kubernetes | Descrição |
Malha | A malha no nível superior é o contêiner lógico para todos os microsserviços em seu aplicativo. |
Serviço virtual | Um serviço virtual é uma representação lógica de microsserviço em uma malha de serviços. |
Implantações virtuais | Uma implantação virtual é uma representação lógica de uma implantação que pode ser agrupada em um serviço virtual. Isso permite que um serviço virtual distribua tráfego entre diferentes versões do microsserviço. Um microsserviço do Kubernetes pode ter várias versões que são implantações separadas no cluster. |
Associações de implantação virtual | Os bindings virtuais são usados para associar um conjunto de pods a uma implantação virtual. |
Tabelas de roteamento de serviço virtual | Uma tabela de roteamento virtual define como o tráfego é distribuído entre implantações virtuais em um serviço virtual com base no protocolo e no caminho. Cada serviço virtual terá uma tabela de roteamento virtual. |
Implantação do gateway de saída | Uma implantação de gateway de entrada criará pods de entrada que atuam como balanceadores de carga para tráfego de entrada para a malha. |
Gateways de entrada | Os gateways de entrada gerenciam o tráfego de entrada na malha. Os gateways de entrada definem um conjunto de regras para como o tráfego externo se comunica com a malha, como se a criptografia é necessária em todo o tráfego de entrada e saída. Essas regras são aplicadas à implantação do gateway de entrada. |
Tabelas de roteamento de gateway de entrada | As tabelas de roteamento do gateway de entrada estão associadas a uma implantação do gateway de entrada. A tabela de roteamento define quais serviços virtuais dentro da malha são acessíveis pela implantação do gateway de entrada. |
Políticas de acesso | As políticas de acesso são regras definidas que definem a comunicação permitida entre microsserviços na malha, bem como aplicativos externos. |
O diagrama a seguir descreve como os recursos configurados da Malha de Serviços do OCI: Políticas de Acesso, Gateway de Entrada, Serviço Virtual e Implantação Virtual são mapeados para os recursos do aplicativo: K8s Service, K8s Service Load Balancer, Implantações e Pods.
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.
- Largura de banda do balanceador de carga
Ao criar o balanceador de carga, você pode selecionar uma forma predefinida que forneça uma largura de banda fixa ou especificar uma forma personalizada (flexível), na qual você define uma faixa de largura de banda e permite que o serviço dimensione a largura de banda automaticamente com base nos padrões de tráfego. Com qualquer uma das abordagens, você pode alterar a forma a qualquer momento após criar o balanceador de carga.
Considerações
Considere as opções a seguir ao implantar essa arquitetura de referência.
- Custo
Não há cobrança pelo plano de controle da Malha de Serviços do OCI no cluster do OKE. Os clientes são cobrados pela utilização de recursos dos contêineres de proxy para o plano de dados da Malha de Serviços. Na prática, no entanto, os clientes já estão pagando pelos recursos do pool de nós em um cluster do OKE e, a menos que a utilização dos contêineres de proxy impulsione a utilização do pool de nós em mais de 100%, não há cobrança adicional para adicionar o OCI Service Mesh à sua arquitetura de microsserviços.
- Disponibilidade
O plano de controle da Malha de Serviços do OCI é sempre implantado com alta disponibilidade.