Crie um pipeline de CI/CD usando o serviço Oracle Cloud Infrastructure DevOps e o Oracle Cloud Infrastructure Functions
A entrega rápida de software é essencial para a execução eficiente de seus aplicativos na nuvem. O serviço Oracle DevOps fornece uma plataforma de integração e implantação contínuas (CI/CD) para desenvolvedores. Você pode usar o serviço DevOps para criar, testar e implantar facilmente software e aplicativos no Oracle Cloud. DevOps pipelines de criação e implantação reduzem erros orientados a mudanças e diminuem o tempo gasto pelos clientes na criação e implantação de versões.
O serviço também fornece repositórios Git privados para armazenar seu código e suporta conexões com repositórios de código externos. Quer você esteja migrando cargas de trabalho para o Oracle Cloud Infrastructure (OCI) - localmente ou em outras nuvens - ou desenvolvendo novos aplicativos no OCI, você pode usar o serviço DevOps para simplificar o ciclo de vida da sua entrega de software.
Arquitetura
Nesta arquitetura de referência, você criará e implantará aplicativos python usando os serviços OCI DevOps e OCI Function.
O código-fonte do aplicativo é hospedado em um repositório de código DevOps. O usuário final confirma o código no repositório de código. Um novo commit no repositório de código acionará o início de um pipeline de build. O pipeline de build segue um fluxo definido pelo usuário para criar os artefatos de função a serem implantados nos serviços de Função do OCI. A saída do build é armazenada no registro do contêiner como imagens do Docker. Em seguida, o pipeline de implantação usa a imagem criada do registro do contêiner para implantar no ambiente do OCI Functions. O diagrama de arquitetura a seguir mostra como um aplicativo é criado e implantado usando uma imagem padrão e uma imagem personalizada (usando um Dockerfile).
Para simplificar a configuração desse workflow de exemplo CI/CD, esse aplicativo de amostra usa o Terraform para automatizar a criação e a configuração de recursos DevOps.
O diagrama a seguir ilustra essa arquitetura de referência.
Descrição da ilustração cicd-pipe-devops-functions-arch.png
cicd-pipe-devops-functions-arch-oracle.zip
- Região
Uma região do OCI é uma área geográfica localizada que contém um ou mais data centers, chamados domínios de disponibilidade. As regiões são independentes de outras regiões, e grande distância pode separá-las (entre países ou até mesmo continentes). A arquitetura usa uma única região.
- Projeto DevOps
Um agrupamento lógico de recursos DevOps necessários para implementar um workflow 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.
- Pipeline de build
Um pipeline de construção usa um ID de commit de seus repositórios de código-fonte e usa esse código-fonte para executar suas instruções de construção. Os pipelines de build definem um conjunto de estágios para o processo de criação: criar, testar e compilar artefatos de software, entregar artefatos a repositórios do OCI e, opcionalmente, acionar uma implantação. Você define o fluxo e as instruções da execução do build no arquivo de especificação do build.
- Repositório de código
Repositórios Git privados hospedados pelo serviço DevOps. Você pode armazenar, gerenciar e desenvolver código-fonte com nossos Repositórios de Código DevOps.
- 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 versão do software podem ser controlados pela 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 release:
- Implantação incremental: uma release incremental para o Oracle Container Engine for Kubernetes (OKE), Functions ou grupos de instâncias
- Espera: N segundos
- Aprovação manual: Continuar se uma aprovação for fornecida; interromper se uma aprovação for rejeitada.
- Chamar função: Execute tarefas ou integrações personalizadas chamando uma Função e informe um artefato de parâmetros de solicitação.
- Artefato DevOps
Um artefato DevOps é uma referência ou ponteiro para qualquer arquivo, binário, pacote, manifesto ou imagem que compõem seu aplicativo. Ao criar um artefato, informe ao Oracle DevOps o local de origem do artefato real. DevOps suporta o Registro de Imagem de Contêiner do OCI e os repositórios de Registro de Artefato do OCI.
- Repositório de artefatos
O repositório de artefatos cria repositórios para agrupar artefatos semelhantes. Quando o repositório for criado, você poderá fazer upload de artefatos para ele. Esses artefatos são um conjunto de arquivos de texto, binários e manifestos de implantação entregues 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ção do OCI
O serviço OCI Logging armazena logs relacionados à implantação. A saída do runtime de implantação e os resultados finais da implantação são mostrados como entradas de log. O serviço de Notificações do OCI oferece visibilidade do estado mais recente do projeto de implantação e de seus recursos e toma as medidas necessárias. 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 é um conjunto de recursos de computação de um cliente em que os artefatos são implantados. Os ambientes podem ser uma função, uma instância bare metal (máquina virtual) do serviço Compute ou um cluster OKE.
- Cluster do Oracle Kubernetes: O OCI Container Engine for Kubernetes (OKE) é um serviço totalmente gerenciado, escalável e altamente disponível que você pode usar para implantar seus aplicativos conteinerizados na nuvem.
- Instâncias de computação: o serviço OCI Compute permite que você provisione e gerencie hosts de Computação na nuvem. Você pode implantar instâncias do serviço Compute com configurações 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 totalmente gerenciada, multitenant, altamente escalável, sob demanda, de funções como um serviço. O serviço é desenvolvido no Oracle Cloud Infrastructure de nível empresarial e desenvolvido pelo mecanismo de código-fonte aberto Fn Project.
Recomendações
- Alocação de memória e tempo limite para funções
Podemos alterar a configuração atualizando o arquivo func.yaml, de acordo com as seguintes configurações:
Descrição do Parâmetro Definições Tempo máximo em que uma função poderá ser executada - Valor Padrão: 30
- Unidades: Segundos
- Parâmetro func.yaml: timeout
- Variável de Ambiente: n/d
- Opção da CLI do Fn: n/d
- Observações:
- Valor máximo: 300
- A melhor prática é especificar um timeout próximo daquele que provavelmente será necessário, em vez de significativamente mais.
Limite máximo de memória de uma função - Valor Padrão: 128
- Unidades: MB
- Parâmetro func.yaml: memória
- Variável de Ambiente: FN_MEMORY
- Opção da CLI do Fn: n/d
- Observações:
Um de:
- 128
- 256
- 512
- 1024
- Rede Virtual na Nuvem (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 estão dentro do espaço de endereço IP privado padrão.
Depois de criar uma VCN, você pode alterar, adicionar e remover seus blocos CIDR.
Essa arquitetura usa uma VCN pública para hospedar o OKE. Você também pode usar uma VCN privada. Nesse caso, use um gateway NAT para conceder ao cluster acesso pela internet pública.
- Registro de Imagem do 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 extraia imagens de repositórios públicos no OCI.
Considerações
Ao criar e implantar aplicativos Python usando os serviços OCI DevOps e Função OCI, considere:
- DevOps suporta implantações no OKE, nos hosts de Computação e no serviço Functions.
- Ao implantar um grupo de instâncias no serviço Compute, somente hosts Linux são suportados.
- Os artefatos implantados com DevOps devem estar em um registro de artefatos do OCI ou repositório de registros de imagens do contêiner.
- A melhor prática é agrupar cada aplicativo e todos os seus microsserviços em um único projeto.
Implantar
O código necessário para implantar essa arquitetura de referência está disponível no GitHub. Você pode extrair o código para o Oracle Cloud Infrastructure Resource Manager com um único clique, criar a pilha e implantá-lo. Como alternativa, faça download do código do GitHub para seu computador, personalize o código e implante a arquitetura usando a CLI do Terraform.
- Implante usando a pilha de amostra no Oracle Cloud Infrastructure Resource Manager:
- Clique em
Se você ainda não estiver conectado, informe a tenancy e as credenciais do usuário.
- Selecione a região na qual você deseja implantar a pilha.
- Siga os prompts na tela e as instruções para criar a pilha.
- Após criar a pilha, clique em Ações do Terraform e selecione Planejar.
- Aguarde a conclusão da tarefa e revise o plano.
Para fazer qualquer alteração, retorne à página Detalhes da Pilha, clique em Editar Pilha e faça as alterações necessárias. Em seguida, execute a ação Planejar novamente.
- Se nenhuma outra alteração for necessária, retorne à página Detalhes da Pilha, clique em Ações do Terraform e selecione Aplicar.
- Clique em
- Implante usando o código do Terraform no GitHub:
- Vá para GitHub.
- Clone ou faça download do repositório para seu computador local.
- Siga as instruções no documento
README
.