Implante Aplicativos em um Cluster do OKE Privado Usando Ações do OCI Bastion e do GitHub
Saiba como aproveitar as sessões do Oracle Cloud Infrastructure Bastion e o GitHub Actions de forma eficaz para implantar em um cluster privado do Oracle Cloud Infrastructure Kubernetes Engine (OKE) quando surgir a necessidade devido a vários fatores, como segurança, conformidade, isolamento de rede e controle.
O 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.
GitHub Actions é uma plataforma avançada de automação de workflow e integração contínua/implantação contínua (CI/CD) fornecida por GitHub. Ele permite definir fluxos de trabalho personalizados usando a sintaxe YAML, que pode ser acionada por vários eventos, como envios de código, solicitações de extração ou tarefas agendadas.
Essa arquitetura de referência explora a utilização de sessões do OCI Bastion e GitHub Actions para implantar em um cluster privado do OKE.
Arquitetura
Essa arquitetura de referência mostra a integração de um OCI Bastion e GitHub Actions para facilitar as implantações em um cluster privado do OKE.
O cluster privado do OKE está inacessível a partir de redes externas. Para acessar o ponto final privado da API K8s, uma sessão do OCI Bastion de encaminhamento de porta SSH é estabelecida. Essa configuração permite a execução de comandos kubectl
para executar várias operações de implantação no cluster.
Quando o código é enviado ao repositório, o workflow GitHub Actions é acionado automaticamente. Durante a execução do workflow, a sessão do OCI Bastion é criada e utilizada para estabelecer conexão com o ponto final privado da API K8s para executar ações de implantação.
Após a conclusão do workflow, a sessão do OCI Bastion é excluída. Essa abordagem garante um processo de implantação altamente seguro e eficiente. Além disso, esse fluxo de trabalho serve como uma estrutura para executar tarefas de integração contínua e pode ser adaptado ainda mais para se alinhar aos seus processos e requisitos de desenvolvimento específicos.
O diagrama a seguir ilustra essa arquitetura de referência.
oke-bastion-deployment-diagram-oracle.zip
Antes de começar
- Provisione um cluster do OKE com o ponto final da API do Kubernetes e os nós de trabalho configurados em uma sub-rede privada.
Observação:
O ponto final privado da API do Kubernetes será utilizado para estabelecer a sessão de encaminhamento de porta do OCI Bastion. - Defina o serviço OCI Bastion criado para ter a VCN do OKE como a VCN de destino e a sub-rede do nó do OKE como a sub-rede de destino.
- Defina a política de serviço do IAM necessária.
Observação:
Consulte Explorar Mais para obter links para a Configuração de Política para Criação e Implantação de Cluster para configurar as políticas de IAM necessárias.
A arquitetura tem os seguintes componentes:
- Tenancy
Uma tenancy é uma partição segura e isolada que a Oracle configura no Oracle Cloud quando você se inscreve no Oracle Cloud Infrastructure. Você pode criar, organizar e administrar seus recursos no Oracle Cloud em sua tenancy. Uma tenancy é sinônimo de uma empresa ou organização. Normalmente, uma empresa terá uma única locação e refletirá sua estrutura organizacional dentro dessa locação. Uma única tenancy geralmente é associada a uma única assinatura, e uma única assinatura geralmente só tem uma tenancy.
- 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).
- Compartimento
Os compartimentos são partições lógicas entre regiões em uma tenancy do Oracle Cloud Infrastructure. Use compartimentos para organizar, controlar o acesso e definir metas de uso para seus recursos do Oracle Cloud. Em um determinado compartimento, você define políticas que controlam o acesso e definem privilégios para recursos.
- Domínios 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. Quando você distribui recursos entre vários domínios de falha, seus aplicativos podem tolerar falha no servidor físico, manutenção do sistema e falhas de energia dentro de 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.
- Balanceador de carga
O serviço Oracle Cloud Infrastructure Load Balancing fornece distribuição automatizada de tráfego de um único ponto de entrada para vários servidores no back-end.
- 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.
- Gateway de conversão de endereço de rede (NAT)
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 serviço
O 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 passa pela internet.
- Cloud Guard
Você pode usar o Oracle Cloud Guard para monitorar e manter a segurança de seus recursos no Oracle Cloud Infrastructure. O Cloud Guard usa receitas do detector que você pode definir para examinar seus recursos quanto a pontos fracos de segurança e para monitorar operadores e usuários em relação a determinadas atividades arriscadas. Quando qualquer configuração incorreta ou atividade insegura é detectada, o Cloud Guard recomenda ações corretivas e auxilia na execução dessas ações, com base nas receitas do respondedor que você pode definir.
- Zona de segurança
As zonas de segurança garantem as melhores práticas de segurança da Oracle desde o início, impondo políticas, como criptografar dados e impedir o acesso público a redes de um compartimento inteiro. Uma zona de segurança está associada a um compartimento com o mesmo nome e inclui políticas de zona de segurança ou uma "receita" que se aplica ao compartimento e seus subcompartimentos. Não é possível adicionar ou mover um compartimento padrão para um compartimento de zona de segurança.
- 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, 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.
- Serviço Bastion
O Oracle Cloud Infrastructure Bastion fornece acesso seguro restrito e limitado por tempo a recursos que não têm pontos finais públicos e que exigem controles rígidos de acesso a recursos, como bare metal e máquinas virtuais, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Cloud Infrastructure Kubernetes Engine (OKE) e qualquer outro recurso que permita acesso ao Secure Shell Protocol (SSH). Com o serviço OCI Bastion, você pode permitir o acesso a hosts privados sem implantar e manter um jump host. Além disso, você ganha uma postura de segurança aprimorada com permissões baseadas em identidade e uma sessão SSH centralizada, auditada e limitada por tempo. O OCI Bastion elimina a necessidade de um IP público para acesso ao bastion, eliminando o aborrecimento e a potencial superfície de ataque ao fornecer acesso remoto.
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.
- Cloud Guard
Clone e personalize as receitas padrão fornecidas pela Oracle para criar receitas personalizadas de detector e respondedor. Essas receitas permitem que você especifique que tipo de violações de segurança geram um aviso e quais ações podem ser executadas nelas. Por exemplo, talvez você queira detectar buckets do Object Storage que tenham visibilidade definida como pública.
Aplique o Cloud Guard no nível da tenancy para cobrir o escopo mais amplo e reduzir a carga administrativa de manutenção de várias configurações.
Você também pode usar o recurso Lista Gerenciada para aplicar determinadas configurações aos detectores.
- Bastion
O OCI Bastion permite que os usuários autorizados se conectem de endereços IP específicos a recursos de destino usando sessões SSH (Secure Shell). Certifique-se de que somente usuários autorizados tenham acesso para criar serviços e sessões do Bastion. O acesso ao Bastion deve ser concedido apenas a usuários autorizados.
- Kubernetes Engine (OKE)
Certifique-se de que as políticas de IAM necessárias sejam criadas e apenas usuários autorizados tenham acesso aos recursos do cluster. O monitoramento e o registro adicionais devem ser ativados para melhorar a postura de segurança.
Considerações
Considere os pontos a seguir ao implantar essa arquitetura de referência.
- Escalabilidade do OKE
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 esse serviço.
- Disponibilidade do aplicativo
Os domínios de falha fornecem a melhor 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 um único ponto de falha introduzindo redundância.
- Segurança
Use políticas que restrinjam quem pode acessar quais recursos do OCI e como eles podem acessá-los.
O OKE é integrado ao serviço Oracle Cloud Infrastructure Identity and Access Management (IAM). O IAM fornece autenticação fácil com a funcionalidade nativa de identidade do OCI.
Implante
O código do workflow GitHub Actions está disponível em GitHub.
- Vá para GitHub.
- Clone ou faça download do repositório para seu computador local.
- Siga as instruções no documento
README
.