Crie um Pipeline CI/CD para Implementações em Nuvem Usando Ações do Github e o Serviço Oracle Cloud Infrastructure DevOps

A rápida entrega de software é essencial para a execução eficiente de seus aplicativos na nuvem. O serviço Oracle DevOps fornece uma experiência completa de implantação contínua para desenvolvedores.
Ao fornecer soluções em uma solução híbrida ou com várias nuvens, talvez você queira separar diferentes estágios de um processo de Melhoria/Implantação Contínua (CI/CD) por vários motivos:
  • Para evitar a exposição de todos os destinos de implantação a um serviço que reside fora de algumas das suas camadas de segurança.
  • Partes de um processo de implantação podem diferir, dependendo de quando Infraestrutura como Código (IaC) pode fazer parte do processo de implantação.
  • Minimize o impacto potencial da latência nos processos de implantação. Portanto, a execução da etapa final é controlada localmente apenas com conexões e dependências locais envolvidas.
  • Capacidade de gerenciar e liberar ativos de controle que abrangem vários ambientes em um único local. Em vez de ter fontes distribuídas.

Esta Arquitetura de Referência trata dessas considerações por ter partes de seu serviço fora do Oracle Cloud (por exemplo, GitHub e outros no OCI, como DevOps). Esta arquitetura de referência examina o processo de implantação (CD) nas plataformas do Oracle Cloud Infrastructure (OCI): Oracle Container Engine for Kubernetes (OKE), Functions e Instâncias de Computação. A imagem de contêiner comum é criada usando um serviço separado (assim, o elemento é universal) e, em seguida, implantada por DevOps para que não se comunique diretamente com o OKE.

A automação de versões de software com implantação de pipeline aumenta a produtividade do desenvolvedor e permite liberar recursos com mais frequência e com menos erros. Ele ajuda a evitar o tempo de inatividade durante implementações e automatiza a complexidade de atualizar aplicativos. O Oracle DevOps pode ser usado por clientes que migram cargas de trabalho do local ou de outras nuvens para o OCI e clientes que desenvolvem novos aplicativos no OCI.

Arquitetura

Nesta arquitetura de referência, um aplicativo de amostra é implantado no GitHub usando Ações do GitHub e o serviço OCI DevOps. O aplicativo é implantado no cluster do OKE.

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

Veja a seguir a descrição da ilustração devops-arch.png
Descrição da ilustração devops-arch.png

devops-arch-oracle.zip

Esta arquitetura possui os seguintes componentes:
  • Região

    Uma região do OCI é 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 (entre países ou mesmo continentes).

    A arquitetura usa uma única região.

  • Sistema de CI Externo

    Essa arquitetura usa as Ações GitHub como um sistema de integração contínua externa. GitHub As ações automatizam, personalizam e executam workflows de desenvolvimento de software no repositório GitHub. Aqui, as Ações GitHub são usadas para criar código e depois conteinerizá-lo usando o Docker. Quando a imagem conteinerizada está pronta, as Ações GitHub enviam a imagem para um repositório de artefatos do OCI (como alternativa, o artefato é colocado em um local central onde as ações GitHub podem ser configuradas para nudizar DevOps para recuperar o artefato. Isso significa que o conteúdo foi extraído, não enviado). Após concluir a transferência para o Repositório de Artefatos, ele inicia o pipeline de implantação do OCI DevOps. Você também pode usar outros sistemas de integração contínua, como Jenkins ou Gitlab, com base em seus requisitos.

    Se as técnicas IaC estiverem sendo usadas, antes da implantação, o pipeline poderá usar serviços como o Resource Manager para instanciar um ambiente e, uma vez concluído, desmontar esses recursos usando o Resource Manager para .

    O pipeline de implantação de Devops também pode armazenar a saída resultante em algum lugar seguro para geração de relatórios.

  • DevOps project

    Um projeto DevOps é um agrupamento lógico de recursos necessários para implementar sua carga de trabalho de integração e implantação contínua (CI/CD). Os recursos DevOps podem ser artefatos, pipelines de implantação e ambientes. Os projetos DevOps facilitam a ativação de logs, monitoramento e notificações para todos os seus recursos DevOps.

  • Pipeline de implantação

    Um pipeline de implantação contém os requisitos que devem ser atendidos para fornecer um conjunto de artefatos a um ambiente. Os pipelines contêm estágios, que são os blocos de construção de um pipeline. Um Pipeline pode ter estágios executados em série ou em paralelo, para que você possa controlar o fluxo e a lógica da sua release de software.

  • Estágios de implantação
    Os estágios são ações individuais que ocorrem durante uma execução de um pipeline. O pipeline de implantação DevOps inclui os seguintes tipos de estágio predefinidos para você usar no processo de liberação:
    • Implantação incremental: uma versão incremental para o OKE, Funções ou grupos de instâncias.
    • Espera N segundos.
    • Aprovação manual: prossiga se uma aprovação for fornecida; pare se uma aprovação for rejeitada.
    • Chamar função: Execute tarefas personalizadas e integração chamando uma função e passe um artefato de parâmetros de solicitação.
  • DevOps artefato

    Um artefato DevOps é uma referência ou um ponteiro para qualquer arquivo, binário, pacote, manifesto ou imagem que compõe seu aplicativo. Ao criar um artefato, você precisa informar ao Oracle DevOps o local de origem do artefato real. DevOps suporta repositórios do OCI Container Image Registry e do OCI Artefato Registry.

  • Repositório de artefatos

    O Repositório de Artefato é usado para criar repositórios para agrupar artefatos semelhantes. Depois que o repositório for criado, os artefatos poderão ser carregados para eles. Esses artefatos são um conjunto de arquivos de texto, binários e manifestos de implantação que serão fornecidos ao ambiente de implantação de destino. Cada artefato tem um nome, que é feito de seu caminho: versão. O caminho é uma string para organizar os artefatos.

  • Serviços de registro e notificações do OCI

    O serviço de Log do OCI armazena logs relacionados à implantação. A saída de runtime de implantação e os resultados finais da implantação são mostrados como entradas de log. O serviço OCI Notifications fornece visibilidade no estado mais recente do projeto de implantação e seus recursos e executa qualquer ação necessária. Por exemplo, você é notificado quando um evento importante, como um estágio em um pipeline de implantação aguardando aprovação. Quando receber a mensagem de notificação, você poderá ir para pipelines de implantação DevOps e aprovar o estágio.

  • Ambientes de implantação
    Um ambiente é uma coleção de recursos de computação de um cliente em que os artefatos são implantados. Os ambientes podem ser uma função, uma máquina virtual de computação (VM) ou uma instância bare metal ou um cluster do OKE.
    • O cluster do Oracle Kubernetes (OKE): o Oracle Container Engine for Kubernetesé um serviço totalmente gerenciado, escalável e altamente disponível que você pode usar para implantar seus aplicativos de contêineres na nuvem.
    • Instâncias do serviço Compute: o serviço OCI Compute permite que você provisione e gerencie hosts de computação na nuvem. Você pode iniciar instâncias do Compute com formas que atendam aos seus requisitos de recursos para CPU, memória, largura de banda da rede e armazenamento.
    • Funções: O Oracle Functions é uma plataforma Functions-as-a-Service totalmente gerenciada, multitenant, altamente escalável, sob demanda. Foi desenvolvido em OCI de nível empresarial e desenvolvido pelo Fn Project open source engine.
    Nesta arquitetura, usamos um cluster do OKE como um ambiente. Os ambientes podem estar em diferentes regiões do OCI da região do pipeline de implantação. Isso permite que os desenvolvedores implantem em várias regiões do OCI usando o mesmo pipeline de implantação.

Recomendações

Use as recomendações a seguir como ponto de partida. Seus requisitos podem diferir
  • VCN

    Quando você cria 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.

    Depois de criar uma VCN, você poderá alterar, adicionar e remover seus blocos CIDR.

    Esta arquitetura usa uma VCN pública para hospedar o cluster do OKE. Você também pode usar uma VCN privada. Nesse caso, use um gateway NAT para conceder ao cluster acesso pela internet pública.

  • Formatos de computação

    Essa arquitetura usa uma imagem do SO Oracle Linux com formato flexível E3 ou E4 com recursos mínimos para hospedar hosts de computação nos nós de cluster do OKE. Se seu aplicativo precisar de mais memória ou núcleos, você poderá escolher outra forma.

  • OKE

    Essa arquitetura é disponibilizada no cluster OKE como o ponto final de destino. Os nós de trabalho são implantados em um SO Oracle Linux E3 ou E4. Essa arquitetura usa três nós de trabalho no cluster, mas você pode criar até 1.000 nós em cada cluster.

  • Registro de Imagem de Contêiner

    Esta arquitetura implanta o Registro como um registro privado do Docker para uso interno. As imagens do Docker são enviadas e extraídas do registro. Você também pode usar o Registro como registro público do Docker, permitindo que qualquer usuário com acesso à Internet e conhecimento do URL apropriado extraia imagens de repositórios públicos no Oracle Cloud.

  • Registro de artefato

    Essa arquitetura cria um artefato para o software e a configuração usados por um cluster do OKE. A arquitetura cria um repositório de registro de artefato para uso interno. Os binários, o texto e as configurações de implantação do software são carregados e baixados do repositório de registro de artefato.

Considerações

Considere os pontos a seguir ao implantar essa arquitetura de referência.

  • Implantações suportadas por DevOps

    DevOps suporta implantações no OKE, hosts de Computação e Funções. Esta arquitetura é disponibilizada em um cluster do OKE. Considere a implantação em outros pontos finais com base nos requisitos.

  • Suporte ao Linux

    Somente hosts Linux são suportados para implantações de grupo de instâncias para instâncias do serviço Compute.

  • Artefatos implantados

    Os artefatos para implantação com DevOps precisam estar em um registro de artefato do OCI ou em um repositório de registro de imagem de contêiner.

  • Agrupando aplicativos

    Como prática recomendada, agrupe cada aplicativo e todos os seus microsserviços em um único projeto. Garantir que a proposta de valor de dividir o processo seja compreendida e que as divisões sejam mantidas.

Implantar

Para implantar essa arquitetura, siga as instruções para a implantação de aplicativos Java neste Live Lab:

Log de Alteração

Esse log lista alterações significativas: