Implante um Pipeline de CI/CD do Jenkins Dockerizado Usando o Terraform no Oracle Cloud Infrastructure
A entrega rápida de software é importante para executar com eficiência seus aplicativos na nuvem. O Jenkins é um produto popular para automatizar os pipelines de Integração e Implantação Contínua (CI/CD) para cargas de trabalho no Oracle Cloud. Você pode hospedar o Jenkins no OCI (Oracle Cloud Infrastructure) para centralizar sua automação de criação e dimensionar sua implantação à medida que seus projetos de software aumentam.
Arquitetura
Essa arquitetura de referência mostra como usar o Terraform para implantar um agente do controlador do Jenkins em um único Oracle Linux VM. Quando implantada, uma instância de computação do Oracle Linux será criada. Esta instância hospedará dois contêineres Docker separados no topo: um para o controlador Jenkins e o outro para o agente Jenkins.
A solução também salva a configuração do controlador e os espaços de trabalho do agente no armazenamento em blocos do OCI, que é anexado à instância de computação. Uma VCN separada será criada no OCI para hospedar todos os serviços na implantação.
O diagrama a seguir ilustra essa arquitetura de referência.

Descrição da ilustração dock-jenkins-cicd-pipe.png
dock-jenkins-cicd-pipe-oracle.zip
-
Região
Uma 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).
- Compartimento
Os compartimentos são partições lógicas entre regiões dentro de 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ínios de disponibilidade
Domínios de disponibilidade são data centers stand-alone 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, o que oferece 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. Portanto, provavelmente uma falha em um domínio de disponibilidade não afetará os outros domínios de disponibilidade da região.
- Rede virtual na nuvem (VCN) e sub-redes
Uma VCN é uma rede personalizável e definida por software que você configura em uma região do Oracle Cloud Infrastructure. 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 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.
- Instância de computação
O Jenkins é implantado em uma VM da instância do serviço Compute com dois contêineres em execução, um como controlador e outro como agente.
- Tabela de Rota
As tabelas de roteamento virtual contêm regras para rotear o tráfego de sub-redes para destinos fora de uma VCN, geralmente por meio de gateways.
- 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.
- Jenkins
O Jenkins é um servidor de automação de código-fonte aberto que permite aos desenvolvedores criar, testar e implantar software de forma confiável. O Jenkins suporta o modo mestre/agente, no qual a carga de trabalho de criação de projetos é delegada a vários nós de agente pelo mestre. Uma única instalação do Jenkins pode hospedar vários projetos ou fornecer ambientes diferentes para builds e testes.
- Armazenamento em Blocos
Com volumes de armazenamento em blocos, você pode criar, anexar, conectar e mover volumes de armazenamento e alterar o desempenho do volume para atender aos requisitos de armazenamento, desempenho e aplicativo. Depois de anexar e conectar um volume a uma instância, você pode usar o volume como disco rígido comum. Também é possível desconectar um volume e anexá-lo a outra instância sem perder dados. Isso será usado para salvar a configuração do controlador e os espaços de trabalho do agente do Jenkins.
Recomendações
- VCN
Quando você cria uma VCN, determina o número de blocos CIDR necessários e o tamanho de cada bloco com base no número de recursos que 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 blocos CIDR que não se sobrepõem a nenhuma outra rede (no Oracle Cloud Infrastructure, no 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.
Usar sub-redes regionais.
- Segurança
Use o Oracle Cloud Guard para monitorar e manter a segurança de seus recursos no OCI de forma proativa. O Cloud Guard usa receitas do detector que você pode definir para examinar seus recursos em busca de pontos fracos de segurança e para monitorar operadores e usuários em busca de atividades de risco. Quando qualquer atividade de configuração incorreta ou insegura é detectada, o Cloud Guard recomenda ações corretivas e ajuda a tomar 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 em 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 OCI validará as operações com relação às políticas na receita de zona de segurança e negará as 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 uma advertência 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 a detectores.
- 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.
Considerações
Considere os pontos a seguir ao implantar essa arquitetura de referência.
- Desempenho
Para obter o melhor desempenho, certifique-se de que a instância de computação tenha núcleos e memória suficientes, que se baseiam na criação ou em outras tarefas executadas pelo Jenkins.
- Segurança
Use políticas para restringir quem pode acessar os recursos do OCI que sua empresa tem e como.
- Disponibilidade
Este é um design mínimo para que você possa começar a trabalhar o mais rápido possível. Para obter maior disponibilidade, você pode consultar a implantação descrita na Arquitetura de Referência, Implantar Jenkins no modo de controlador/agente, que você pode acessar no tópico Explorar Mais, abaixo.
- Custo
O custo dessa implementação se baseia nas horas de computação da VM em execução.
Implantar
O código do Terraform para implantar um pipeline de CI/CD do Jenkins em contêiner usando o Terraform no OCI está disponível no Oracle Cloud Infrastructure Resource Manager ou em GitHub.
- 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.
- Depois de criar a pilha, clique em Ações do Terraform e selecione Planejar.
- 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 novamente a ação Plano.
- Se nenhuma alteração adicional for necessária, retorne à página Detalhes da Pilha, clique em Ações do Terraform e selecione Aplicar.
- Clique em
- Implante usando a CLI do Terraform:
- Vá para GitHub.
- Clone ou faça download do repositório para seu computador local.
- Siga as instruções no documento README.