Criar um Pipeline de CI/CD para o OCI Functions com Ações GitHub

CI/CD (Integração Contínua/Implantação Contínua) automatiza suas criações, testes e implantações para que você possa enviar alterações de código com mais rapidez e confiabilidade. O Oracle Cloud Infrastructure Functions é uma plataforma totalmente gerenciada, multitenant, altamente escalável e sob demanda. Ela foi criada no Oracle Cloud Infrastructure (OCI) de nível empresarial e desenvolvida pelo Fn Project, um mecanismo de código-fonte aberto. Esta Arquitetura de Referência fornece estruturas e integrações recomendadas para como você pode usar a CLI do Fn Project em qualquer ferramenta de ambiente de desenvolvimento integrado (IDE) para criar e implantar um pipeline de serviço do OCI Functions CI/CD.

Arquitetura

Essa arquitetura usa o GitHub Actions como um sistema externo de integração e implantação contínuas para criar código, conteinerizá-lo e implantar o Oracle Cloud Infrastructure Functions. Em vez da Ação GitHub, você pode usar outras ferramentas do ambiente de desenvolvimento integrado (IDE), como GitLab ou DevOps do Azure.

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

Veja a seguir a descrição da cicd-deploy-oci-functions.png
Descrição da ilustração cicd-deploy-oci-functions.png

cicd-deploy-oci-functions-oracle.zip

A arquitetura inclui os seguintes sistemas externos:

  • Sistema Externo (CI/CD)

    O sistema externo para CI/CD inclui o ambiente de desenvolvimento integrado (IDE), o repositório de código e o pipeline.

    Essa arquitetura usa Ações GitHub como um sistema de repositório de código de implantação e integração contínua externa. Ele é usado para criar código e, em seguida, conteinerizá-lo usando o Docker. Quando a imagem conteinerizada estiver pronta, as Ações GitHub enviarão a imagem para um OCI Registry. Depois de concluir a transferência para o registro, ela inicia a implantação do OCI Functions. Você pode usar outros sistemas contínuos de integração ou implantação, como OCI DevOps, Azure DevOps, Gitlab ou Jenkins, com base em seus requisitos.

  • Sistema Externo (SIEM/ITSM/OUTRO)

    O sistema externo para SIEM e ITSM representa outros sistemas de terceiros ou serviços não OCI.

    A agregação e o enriquecimento de logs do OCI Audit, logs de serviço e eventos de segurança são requisitos fundamentais para sistemas SIEM ou ITSM externos. A centralização desses dados permite que as organizações analisem, monitorem e protejam suas tenancies.

A arquitetura tem os seguintes componentes:

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

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

  • Registro

    O Oracle Cloud Infrastructure Registry é um registro gerenciado pela Oracle que permite simplificar seu desenvolvimento para o workflow de produção. O registro facilita o armazenamento, o compartilhamento e o gerenciamento de artefatos de desenvolvimento, como imagens do Docker. A arquitetura altamente disponível e escalável do Oracle Cloud Infrastructure garante que você possa implantar e gerenciar seus aplicativos de forma confiável.

  • Serviço Functions

    O Oracle Cloud Infrastructure Functions é uma plataforma Functions-as-a-Service (FaaS) totalmente gerenciada, multitenant, altamente escalável e sob demanda. Ele é alimentado pelo mecanismo de código aberto do Fn Project. As funções permitem que você implante seu código e o chame diretamente ou acione-o em resposta a eventos. O Oracle Functions usa contêineres do Docker hospedados no Oracle Cloud Infrastructure Registry.

  • Conectores de serviço

    O Oracle Cloud Infrastructure Service Connector Hub é uma plataforma de barramento de mensagens da nuvem que orquestra a movimentação de dados entre serviços no OCI. Você pode usar conectores de serviço para mover dados de um serviço de origem para um serviço de destino. Os conectores de serviço também permitem que você especifique opcionalmente uma tarefa (como uma função) a ser executada nos dados antes de serem entregues ao serviço de destino.

    Você pode usar o Oracle Cloud Infrastructure Service Connector Hub para criar rapidamente uma estrutura de agregação de logs para sistemas de gerenciamento de eventos e informações de segurança (SIEM).

  • Logging
    O registro em log é um serviço altamente escalável e totalmente gerenciado que oferece acesso aos seguintes tipos de logs de seus recursos na nuvem:
    • Logs de auditoria: Logs relacionados a eventos emitidos pelo serviço Audit.
    • Logs de serviço: Logs emitidos por serviços individuais, como API Gateway, Events, Functions, Load Balancing, Object Storage e logs de fluxo da VCN.
    • Logs personalizados: Logs que contêm informações de diagnóstico de aplicativos personalizados, outros provedores de nuvem ou um ambiente on-premises.
  • Streaming

    O Oracle Cloud Infrastructure Streaming fornece uma solução de armazenamento totalmente gerenciada, escalável e durável para ingestão de streams contínuos de alto volume de dados que você pode consumir e processar em tempo real. Você pode usar o serviço Streaming para ingestão de dados de alto volume, como logs de aplicativo, telemetria operacional, dados de fluxo de cliques na Web ou para outros casos de uso nos quais os dados são produzidos e processados de forma contínua e sequencial em um modelo de mensagem de publicação/inscrição.

  • Notifications

    O serviço Oracle Cloud Infrastructure Notifications transmite mensagens a componentes distribuídos por meio de um padrão publicar-assinar, entregando mensagens seguras, altamente confiáveis, de baixa latência e duráveis para aplicativos hospedados no Oracle Cloud Infrastructure.

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

    Usar sub-redes regionais.

  • Listas de segurança

    Use listas de segurança para definir regras de entrada e saída que se aplicam a toda a sub-rede.

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

  • Cloud Guard

    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.

  • Zonas de Segurança

    Para recursos que exigem segurança máxima, a Oracle recomenda o uso de zonas de segurança. Uma zona de segurança é um compartimento associado a uma receita de políticas de segurança definida pela Oracle baseada nas melhores práticas. Por exemplo, os recursos de uma zona de segurança não devem ser acessíveis por meio da internet pública e devem ser criptografados usando chaves gerenciadas pelo cliente. Quando você criar e atualizar recursos em uma zona de segurança, o Oracle Cloud Infrastructure validará as operações de acordo com as políticas na receita de zona de segurança e negará as operações que violam qualquer uma das políticas.

  • Funções do OCI

    Os aplicativos implantados por meio do serviço OCI Functions são altamente disponíveis, escaláveis, seguros e monitorados. Com o OCI Functions, você pode escrever código em Java, Python, Node, Go, Ruby e C# (e para casos de uso avançados, trazer seu próprio Dockerfile e Graal VM). Em seguida, você poderá implantar o código, chamá-lo diretamente ou acioná-lo em resposta a eventos.

  • OCI Registry

    Essa arquitetura implanta um registro público do Docker. As imagens do Docker são enviadas e extraídas do registro, o que permite que qualquer usuário com acesso à Internet e conhecimento do URL apropriado extraia imagens de repositórios públicos no Oracle Cloud.

Considerações

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

  • Integrações SIEM

    Para ajudar a simplificar a implantação das informações de log agregadas nas regiões e configurações de aplicativos de uma tenancy, você pode usar o serviço OCI Functions.

    Você pode usar o OCI Functions para enviar logs para o Ponto Final da API HTTPS do SIEM. Para fazer isso, adicione um OCI Service Connector Hub regional que leia os outros serviços do OCI.

  • Funções de agrupamento

    Como prática recomendada, você pode definir várias funções (por exemplo, uma por ambiente). Se você tiver vários ambientes (como DEV, UAT, PROD), poderá rastrear linhas de código separadas para cada função em um ambiente separado.

Implante

Faça download do código de script de automação em GitHub, personalize o código e implante-o.

Você pode chamar uma função que implantou no OCI Functions:

  • A CLI do Fn Project.
  • Os SDKs do Oracle Cloud Infrastructure.
  • Solicitações HTTP assinadas para o ponto final de chamada da função. Cada função tem um ponto final de chamada.
  • Outros serviços do Oracle Cloud (por exemplo, acionados por um evento no serviço Events) ou por serviços externos.
  1. Vá para GitHub.
  2. Clone ou faça download do repositório.
  3. Para implantar essa arquitetura, siga o arquivo de referência YAML, o exemplo de código de aplicativo hello world e o documento README.

Reconhecimentos

  • Autor: Dipesh Rathod
  • Colaborador: Bhanu Prakash Lohumi