Crie um Pipeline de Integração e Implantação Contínuas Usando os Serviços do Oracle Cloud Infrastructure DevOps

A entrega rápida de software é a chave para criar e implantar de forma eficiente seus aplicativos na nuvem. Os serviços DevOps do Oracle Cloud Infrastructure (OCI) fornecem uma plataforma CI/CD (Continuous Integration and Deployment) para que os desenvolvedores criem, testem e implantem facilmente software e aplicativos no Oracle Cloud.

Os pipelines de criação e implantação DevOps da OCI reduzem erros baseados em alterações e diminuem o tempo que os clientes gastam na criação e remediação de problemas, permitindo que o software seja reconstruído e testado novamente à medida que as alterações são aplicadas. Como resultado, a detecção precoce de qualquer impacto adverso.

O serviço inclui o provisionamento de repositórios GIT privados para armazenar seu código e suporta conexões com repositórios de código externos para manter o código-fonte e arquivos de configuração. À medida que os processos de construção dependem de artefatos intermediários (módulos, pacotes etc.), eles também trabalham com repositórios de contêiner e artefatos da Oracle. Quer você esteja migrando cargas de trabalho para o OCI (de nuvens locais ou de outras nuvens) ou desenvolvendo novos aplicativos no OCI, poderá usar o OCI DevOps para simplificar o ciclo de vida de entrega de software.

Ao trabalhar em um ambiente híbrido ou multinuvem, o OCI DevOps pode ser usado para criar artefatos a serem implantados em outros ambientes.

Arquitetura

Essa arquitetura de referência estabelece todos os serviços e configurações que permitem criar e testar um aplicativo Web Node.js de amostra e depois implantá-lo no OKE usando o OCI DevOps. A implantação do Terraform inclui a criação dos pipelines e repositórios necessários. O código-fonte do aplicativo é hospedado em um repositório de código DevOps. O usuário pode então confirmar o código no repositório, o que aciona o início de um pipeline de build.

O pipeline de build segue um fluxo definido pelo usuário para criar e testar software e, em seguida, criar uma imagem de contêiner com a versão mais recente do aplicativo. A saída da compilação é armazenada no registro do contêiner como uma imagem. Em seguida, um pipeline de implantação usa a imagem criada no registro do contêiner e um manifesto do Kubernetes para implantar a versão mais recente do aplicativo no OKE.

O pipeline fornecido não aborda considerações, como a aplicação de testes de unidade e a análise da qualidade do código usando análise de código estático e ferramentas linter.

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

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

deployment-pipeline-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.

  • Projeto DevOps

    Um agrupamento lógico de recursos DevOps necessários para implementar um workflow de CI/CD. Os recursos DevOps podem ser artefatos, pipelines de construção, pipelines de implantação, conexões externas, acionadores e ambientes. Os projetos DevOps facilitam a ativação de logs, monitoramento e notificações para todos os seus recursos DevOps.

  • Crie pipeline

    Um pipeline de criação utiliza um ID de commit de seus repositórios de código-fonte e utiliza esse código-fonte para executar suas instruções de criação. Os pipelines de construção definem um conjunto de estágios para o processo de construção - criando, testando e compilando artefatos de software, entregando artefatos a repositórios do OCI e, opcionalmente, acionando uma implantação. Você define o fluxo e as instruções de sua execução de compilação no arquivo de especificação de criação.

  • Repositório de código

    Repositórios Git privados hospedados pelo serviço DevOps. Você pode armazenar, gerenciar, desenvolver código-fonte com Repositórios de Código DevOps do OCI.

  • Pipeline de implantação

    Uma sequência de etapas para entregar e implantar um conjunto de artefatos em um ambiente de destino. O fluxo e a lógica da sua versão de software podem ser controlados por meio da definição de estágios que podem ser executados em série ou em paralelo.

  • 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 ou integrações 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, informe 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 cria repositórios para agrupar artefatos semelhantes. Quando o repositório é criado, você pode fazer upload de artefatos para ele. Esses artefatos são um conjunto de arquivos de texto, binários e manifestos de implantação fornecidos para o 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ção 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.
    • Cluster do Oracle Kubernetes (OKE): O OCI 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 do Compute na nuvem. Você pode implantar 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 de funções como serviço totalmente gerenciada, multitenant, altamente escalável, sob demanda. O serviço foi desenvolvido no Oracle Cloud Infrastructure de nível empresarial e desenvolvido pelo mecanismo de código-fonte aberto Fn Project.
    Os ambientes podem estar em diferentes regiões do OCI da região do pipeline de implantação. Essa separação 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 para criar e implantar um pipeline usando o OCI DevOps. Os requisitos podem diferir da arquitetura descrita aqui.
  • Formatos de computação

    Essa arquitetura usa uma imagem do SO Oracle Linux com formato flex E3 ou E4. Você pode começar com o mínimo de recursos necessários para os hosts do serviço Compute no ambiente do grupo de instâncias e nos nós do cluster do OKE. Se seu aplicativo precisar de mais memória ou núcleos, você poderá escolher outra forma.

  • 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.

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

  • Oracle Container Engine for Kubernetes (OKE)

    Essa arquitetura implanta o cluster do OKE como um dos ambientes 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 um registro público do Docker, permitindo que qualquer usuário com acesso à Internet e conhecimento do URL apropriado capture imagens de repositórios públicos no OCI.

Considerações

Considere os seguintes pontos ao implantar esta arquitetura de referência:

  • DevOps suporta implantações no OKE, hosts de Computação e Funções.
  • Somente hosts Linux são suportados para implantações de grupo de instâncias para instâncias do serviço Compute.
  • Os artefatos a serem implantados com DevOps devem estar em um registro de artefato do OCI ou em um repositório de registro de imagem do contêiner.
  • A melhor prática é agrupar cada aplicativo e todos os seus microsserviços em um único projeto.

Implantar

O código do Terraform para criar e implantar o pipeline usando o OCI DevOps está disponível no GitHub.

  • Implante usando a pilha de amostra no Oracle Cloud Infrastructure Resource Manager:
    1. Clique em Implante no Oracle Cloud.

      Se você ainda não estiver conectado, informe a tenancy e as credenciais do usuário.

    2. Selecione a região na qual você deseja implantar a pilha.
    3. Siga os prompts na tela e as instruções para criar a pilha.
    4. Após criar a pilha, clique em Ações do Terraform e selecione Planejar.
    5. Aguarde a conclusão do job e revise o plano.

      Para fazer alterações, retorne à página Detalhes da Pilha, clique em Editar Pilha e faça as alterações necessárias. Em seguida, execute a ação Plano novamente.

    6. Se nenhuma alteração adicional for necessária, retorne à página Detalhes da Pilha, clique em Ações do Terraform e selecione Aplicar.
  • Implante usando a CLI do Terraform:
    1. Vá para GitHub.
    2. Clone ou faça download do repositório no computador local.
    3. Siga as instruções no documento README.

Alterar Log

Este log lista alterações significativas: