Simplifique o gerenciamento de seus aplicativos em contêineres usando Instâncias do OCI Container

A execução de aplicativos em contêineres pode exigir uma sobrecarga considerável, incluindo a instanciação de máquinas virtuais, a instalação de componentes para executar imagens de contêiner e todas as dependências para suportá-las, incluindo atualizações de software e sistema operacional e o monitoramento de aplicativos enquanto eles são executados para garantir que estejam em execução de forma otimizada, estejam disponíveis e não tenham sido comprometidos.

Instâncias de Contêiner é um serviço de computação OCI (Oracle Cloud Infrastructure) totalmente gerenciado que permite aos clientes executar aplicativos em contêineres sem gerenciar servidores. Isso fornece uma experiência sem servidor que permite aos clientes se concentrarem em agregar valor aos seus aplicativos, em vez de implantar e gerenciar a infraestrutura.

Como alternativa, para executar um aplicativo em contêiner sem Instâncias do Contêiner, os clientes precisam instanciar uma máquina virtual e instalar todos os componentes para executar uma imagem de contêiner. Isso inclui o runtime do contêiner, como Docker ou Podman, e todas as dependências para suportá-lo. Além disso, os clientes precisam proteger a máquina virtual instalando os patches de segurança mais recentes e aplicando as configurações de segurança corretas. À medida que novas atualizações de software e sistemas operacionais são introduzidas, atualizações e patches precisam ser aplicados de forma consistente. Quando o aplicativo está sendo executado, o monitoramento precisa estar ativo para garantir que o aplicativo esteja sendo executado da forma ideal, disponível e que não tenha sido comprometido.

Com Instâncias de Contêiner, os clientes só precisam criar as imagens de contêiner do aplicativo e armazená-las em um registro de contêiner. O aplicativo em contêiner pode então ser implantado usando a Instância de Contêiner com comandos da CLI ou um assistente de GUI guiada na console do OCI com as etapas a seguir.

  • Definir parâmetros da Instância do Contêiner: O cliente define a região do OCI para executar a Instância do Contêiner e, opcionalmente, o domínio de disponibilidade e o domínio de falha. Em seguida, o cliente seleciona a forma de computação da Instância do Contêiner. Para cada instância, você pode alocar até a CPU e a memória da forma de computação selecionada. Por exemplo, se você tiver escolhido uma forma AMD E3/E4, poderá ter 64 OCPU (128 vCPU) e 1024 GB de memória em uma instância de contêiner. Em seguida, você adicionaria as definições de rede, como se a Instância do Contêiner exigisse um endereço IP público e a sub-rede da Instância do Contêiner, juntamente com as configurações de rede avançadas opcionais. Nesta etapa, você também tem a opção de especificar um registro de DNS privado e um nome de host, o que geraria um nome de domínio totalmente qualificado para a Instância do Contêiner. Também há uma opção avançada opcional para definir a política de reinicialização do contêiner.
  • Especifique a configuração de inicialização do aplicativo: Nesta etapa, o local da imagem do contêiner a ser executada é especificado, juntamente com todas as variáveis de ambiente necessárias para a imagem do contêiner. A imagem pode estar no Oracle Cloud Infrastructure Registry ou em qualquer registro compatível com Open Container Initiative público ou privado em que a Instância do Contêiner tenha conectividade IP. Para registros privados, você deve fornecer credenciais para acessar a imagem do contêiner.
  • Revisão e criação: A última etapa é revisar todas as configurações e, se tudo estiver correto, você poderá prosseguir com a criação, e uma instância de contêiner será iniciada em segundos.

Os clientes só pagam pelos recursos de CPU e memória alocados para suas instâncias na mesma taxa que o Oracle Cloud Infrastructure Compute regular. Com uma experiência simples, operações contínuas e sem custo extra para a experiência sem servidor, as Instâncias de Contêiner oferecem o melhor valor para executar contêineres na nuvem. Os clientes também podem integrar Instâncias de Contêiner com outros serviços do OCI, como o serviço MySQL e o Oracle Autonomous Database, usando mecanismos padrão de conexão de banco de dados, o que facilita o uso de outros serviços do OCI para aplicativos em contêineres.

Arquitetura

Esta arquitetura implanta um aplicativo WordPress em contêiner com um banco de dados MySQL integrado usando Instâncias de Contêiner. A Instância do Contêiner será implantada em uma sub-rede pública com um endereço IP público acessível pela internet.

As Instâncias de Contêiner são projetadas para aplicativos independentes que não exigem orquestração de contêiner. Isso inclui APIs, aplicativos web, jobs CI/CD, tarefas de automação, processamento de dados e mídia, ambientes de desenvolvimento e teste e muito mais. Para aplicativos em contêineres que requerem orquestração, o OCI fornece o Oracle Container Engine for Kubernetes (OKE), um serviço Kubernetes gerenciado com uma opção sem servidor com Nós Virtuais.

Cada Instância de Contêiner pode executar vários contêineres. Todos os contêineres de uma Instância de Contêiner compartilham o mesmo ciclo de vida, recursos, rede e armazenamento. Os contêineres de uma Instância de Contêiner têm o mesmo conceito que um pod no Kubernetes com o contêiner de aplicativos principal e com suporte a contêineres sidecar. Os contêineres sidecar estão lá para aprimorar ou estender as funcionalidades do contêiner de aplicativos principal. Um exemplo é uma Instância de Contêiner com o aplicativo Web principal e um contêiner sidecar que exporta os logs do aplicativo Web para um servidor de logs.

Observação:

A execução de um contêiner de banco de dados com um contêiner de aplicativos é adequada apenas para desenvolvimento e teste. Considere o uso do Oracle MySQL Database Service para implantações de produção.

Implantaremos WordPress com um banco de dados integrado com Instâncias de Contêiner nesta arquitetura de referência. O vídeo a seguir percorre o processo.

O diagrama a seguir ilustra essa arquitetura de referência.



oci-container-instance-wordpress-oracle.zip

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 dentro da 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 nessa locação. Em geral, uma única tenancy está associada a uma única assinatura e uma única assinatura geralmente só tem uma tenancy.

  • Região

    Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominados domínios de disponibilidade. As regiões são independentes de outras regiões, e grandes distâncias podem separá-las (em países ou 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 seus recursos no Oracle Cloud, controlar o acesso aos recursos e definir cotas de uso. Para controlar o acesso aos recursos em um determinado compartimento, você define políticas que especificam quem pode acessar os recursos e quais ações eles podem executar.

  • Domínio de disponibilidade

    Os domínios de disponibilidade são data centers independentes 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, que oferecem 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. Desse modo, é pouco provável que uma falha em um domínio de disponibilidade afete os outros domínios de disponibilidade na região.

  • Domínio 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 diversos domínios de falha, seus aplicativos podem tolerar falha física do servidor, manutenção do sistema e falhas de alimentação dentro de um domínio de falha.

  • Rede virtual na nuvem (VCN) e sub-rede

    VCN é uma rede personalizável definida por software que você configura em uma região do Oracle Cloud Infrastructure. Assim como as redes tradicionais de data center, as VCNs oferecem total controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após criar a VCN. Você pode segmentar uma VCN em sub-redes, que podem ter escopo em uma região ou em um domínio de disponibilidade. Cada sub-rede consiste em uma faixa contígua de endereços que não se sobrepõem às 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.

  • 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 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 de rede da Oracle e nunca atravessa a internet.

  • Registro de contêiner

    Registro gerenciado pela Oracle que permite simplificar seu desenvolvimento para o workflow de produção.

Recomendações

Use as recomendações a seguir como ponto de partida. Seus requisitos podem ser diferentes da arquitetura descrita aqui.
  • 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 às sub-redes na VCN. Use blocos CIDR que estão dentro do espaço de endereço IP privado padrão.

    Selecione os blocos CIDR que não se sobrepõem 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 seu fluxo de tráfego e os requisitos de segurança. Anexe todos os recursos dentro de uma camada ou atribuição específica à mesma sub-rede, que pode servir como limite de segurança.

  • Segurança

    Use o Oracle Cloud Guard para monitorar e manter a segurança dos seus recursos no Oracle Cloud Infrastructure de forma proativa. O Cloud Guard usa receitas do detector que você pode definir para examinar seus recursos em busca de falhas de segurança e monitorar operadores e usuários em busca de atividades de risco. Quando qualquer configuração incorreta ou atividade não segura é detectada, o Cloud Guard recomenda ações corretivas e ajuda a executar essas ações, com base nas receitas do respondedor que você pode definir.

    Para recursos que exigem segurança máxima, a Oracle recomenda que você use zonas de segurança. Uma zona de segurança é um compartimento associado a uma receita definida pela Oracle de políticas de segurança que se baseiam nas melhores práticas. Por exemplo, os recursos de uma zona de segurança não devem estar acessíveis pela internet pública e devem ser criptografados usando chaves gerenciadas pelo cliente. Quando você cria e atualiza recursos em uma zona de segurança, o Oracle Cloud Infrastructure valida as operações em relação às políticas na receita da zona de segurança e nega operações que violam qualquer uma das políticas.

  • Cloud Guard

    Clone e personalize as receitas padrão fornecidas pela Oracle para criar receitas personalizadas do detector e do respondedor. Essas receitas permitem especificar 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 abranger o escopo mais amplo e reduzir a carga administrativa de manter várias configurações.

    Você também pode usar o recurso Lista Gerenciada para aplicar determinadas configurações aos detectores.

  • Zonas de Segurança

    Para recursos que exigem segurança máxima, a Oracle recomenda que você use zonas de segurança. Uma zona de segurança é um compartimento associado a uma receita definida pela Oracle de políticas de segurança que se baseiam nas melhores práticas. Por exemplo, os recursos de uma zona de segurança não devem estar acessíveis pela internet pública e devem ser criptografados usando chaves gerenciadas pelo cliente. Quando você cria e atualiza recursos em uma zona de segurança, o Oracle Cloud Infrastructure valida as operações em relação às políticas na receita da zona de segurança e nega operações que violam qualquer uma das políticas.

  • Grupos de segurança de rede (NSGs)

    Você pode usar NSGs para definir um conjunto de regras de entrada e saída que se aplicam a VNICs específicas. Recomendamos o uso de NSGs em vez de listas de segurança, porque os NSGs permitem que você separe a arquitetura de sub-rede da VCN dos requisitos de segurança do seu aplicativo.

  • 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 configuração a qualquer momento após criar o balanceador de carga.

Confirmações

  • Autores: Rishikesh Palve, Chiping Hwang
  • Colaboradores: John Sulyok