Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Implantar no OCI Container Engine for Kubernetes em GitLab CI/CD
Introdução
No cenário em rápida evolução do DevOps e do desenvolvimento nativo da nuvem, a necessidade de integração simplificada entre sistemas de controle de versão e plataformas de orquestração de contêineres pode ser fundamental. O Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) oferece uma solução robusta e escalável para gerenciar aplicativos em contêineres. No entanto, algumas equipes podem ter preferências e requisitos específicos que os levam a procurar alternativas aos serviços DevOps nativos da Oracle Cloud Infrastructure (OCI).
GitLab é uma plataforma versátil e abrangente de controle de versão, integração contínua e entrega/implantação contínua (CI/CD) que não apenas atende a essas preferências, mas também fornece uma alternativa atraente aos serviços DevOps da OCI. Neste tutorial, orientaremos você no processo de conexão perfeita do GitLab com o Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). A integração apresentada neste tutorial não só se alinha para usar uma solução GitLab já existente que você pode ter em vigor, mas também capacita a equipe com uma solução unificada para controle de versão, integração contínua e orquestração do Kubernetes.
Nas seções subsequentes, este tutorial apresenta duas abordagens distintas destinadas a fazer essa integração.
-
Abordagem 1: Usando token de curta duração gerado pela CLI do OCI (Interface de Linha de Comando) do Oracle Cloud Infrastructure. Quando você configura o arquivo
kubeconfig
para um cluster usando as instruções de acesso ao cluster do OKE, por padrão, ele contém um comando da CLI do OCI para gerar um token de autenticação de curta duração, com escopo baseado no cluster e específico do usuário. O token de autenticação gerado pelo comando da CLI é apropriado para autenticar usuários individuais que acessam o cluster usando a ferramenta de linha de comando (kubectl) do Kubernetes e o painel de controle do Kubernetes. No entanto, é recomendável limitar essa abordagem para fins de teste, não para ambientes de produção. -
Abordagem 2: Usando uma conta de serviço do Kubernetes. O token de autenticação gerado de curta duração da abordagem 1 não é apropriado para autenticar processos e ferramentas que acessam o cluster, como ferramentas CI/CD. Para garantir o acesso ao cluster, essas ferramentas requerem tokens de autenticação de longa duração e não específicos do usuário. Isso pode ser feito usando uma conta de serviço do Kubernetes.
Objetivos
-
Configure o Executor GitLab.
-
Configure o pipeline CI/CD.
Pré-requisitos
-
Uma conta ativa do OCI.
-
Um cluster do OKE em execução com ponto final público. Para obter mais informações, consulte Visão Geral do Serviço Container Engine for Kubernetes.
-
Conta GitLab com privilégios suficientes.
Abordagem 1: Implantar no OKE a partir de GitLab CI/CD usando token gerado de curta duração
Tarefa 1: Preparar a Instância do OCI Compute
Você precisará de uma instância do OCI Compute para o Executor GitLab, por exemplo, uma máquina virtual (VM).
-
Instale o kubectl na VM. Para obter mais informações, consulte Instalar e Configurar kubectl no Linux.
-
Instale a CLI do OCI e crie o arquivo de configuração para autenticação na tenancy do OCI (ou você será solicitado a criá-lo ao executar as etapas de acesso ao cluster). Para obter mais informações, consulte Instalar a CLI do OCI e Arquivo de Configuração do SDK e da CLI.
-
Configurar o acesso ao cluster do OKE. Vá para Acessar Seu Cluster e clique em instruções de Acesso Local na Console do OCI.
-
Instale o GitLab Runner na VM. Execute os comandos a seguir como root.
sudo curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash sudo yum install -y gitlab-runner
Verifique se o GitLab Runner funciona.
gitlab-runner list
Tarefa 2: Configurar Executor e Projeto do GitLab
-
Faça log-in em GitLab, vá para Projetos e crie um novo projeto ou use um existente.
-
Crie um corredor ou use um corredor existente. Para criar um novo executor, vá para Definições, CI/CD, Executores e Expandir. Clique em Novo Executor de Projeto e selecione Plataforma (por exemplo: Linux), adicione uma Tag que usaremos posteriormente no arquivo
.gitlab-ci.yaml
ao configurar seu pipeline de implantação e clique em Criar executor. -
Registre o executor na VM.
Observação: Anote o token de autenticação do executor caso precise dele posteriormente.
-
Execute o comando
gitlab-runner register
e insira as informações a seguir.- GitLab URL da instância: Aceite o valor padrão
https://gitlab.com
. - Nome do Executor: Válido localmente no arquivo
config.toml
. Por exemplo:gitlab-oke-runner
. - Informe um Executor: shell, com esse valor, você escolhe que as instruções de CI/CD serão executadas na máquina local em que o kubectl e a CLI do OCI estão instalados.
- GitLab URL da instância: Aceite o valor padrão
-
Você pode revisar a configuração do executor no arquivo
$HOME/.gitlab-runner/config.toml
.
-
Tarefa 3: Configurar o pipeline de CI/CD
-
Clone o projeto GitLab em sua máquina local.
-
Crie um arquivo chamado
.gitlab-ci.yaml
no diretório do projeto, contendo as instruções de build e implantação. Na seção de implantação, certifique-se de incluir a tag runner que você definiu ao criar o runner antes.$ cat ~/demo-oke/.gitlab-ci.yml stages: - build - deploy build_job: stage: build script: - echo "Building the ServiceAccount project..." deploy_job: stage: deploy script: - echo "Deploying an nginx pod to the OKE cluster" - kubectl run nginx --image=nginx tags: - shell-executor
-
Envie as alterações ao seu projeto GitLab e vá para Criar e Jobs para verificar se os pipelines de build e implantação foram acionados e executados com sucesso.
O pipeline implantou um pod nginx no cluster do OKE.
Observações: Anote a tag e a chave. Vamos escolher o executor shell que fará uso dos recursos da máquina local. Caso contrário, se você escolher o Docker, por exemplo, precisará fornecer em suas instruções uma imagem que instale o kubectl (e a CLI do OCI para a abordagem 1) no contêiner.
$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 47h
Abordagem 2: Implantar no OKE em GitLab CI/CD usando uma Conta de Serviço do Kubernetes
Repita as Tarefas 1,2 e 3 da Abordagem 1 para configurar a VM local (instalar kubectl, CLI do OCI, GitLab Runner), registrar o executor, criar o arquivo de pipeline .gitlab-ci.yaml
.
Tarefa 1: Criar uma Conta de Serviço do Kubernetes e adicionar seu Token
-
Crie uma conta de serviço do Kubernetes e adicione seu token ao arquivo
kubeconfig
. Para obter mais informações, consulte Adding a Service Account Authentication Token to a Kubeconfig File.Observação: Certifique-se de que a conta de serviço seja usada, não o token de vida curta da CLI do OCI.
-
Defina o usuário especificado no arquivo
kubeconfig
para o contexto atual como o novo usuário da conta de serviço que você criou usando os comandos kubectl a seguir.kubectl config set-context --current --user=<service-account-name>
Por exemplo:
kubectl config set-context --current --user=kubeconfig-sa
Quando você usa uma conta de serviço do Kubernetes para implantar no OKE em GitLab, o processo envolve a autenticação de GitLab com o cluster do Kubernetes usando as credenciais da conta de serviço.
Próximas Etapas
Usando essas tarefas, você pode usar seu pipeline de CI/CD GitLab para implantar no OKE. Essas tarefas podem ser consideradas como referência para outras ferramentas de CI/CD. A integração facilita a integração e a entrega contínuas, permitindo uma rápida iteração e implantação de aplicativos no OKE.
Neste tutorial, as instruções empregam um executor de shell para testar e lidar com cenários diretos. Como alternativa, você pode optar por outro executor, por exemplo, um executor do Docker. Nesse caso, o pipeline é executado em um contêiner do Docker em vez de na máquina local. A execução com um executor do Docker precisará especificar uma imagem do Docker que inclua os utilitários necessários. Consequentemente, a criação de uma imagem personalizada pode ser essencial, incorporando ferramentas como kubectl e CLI do OCI para atender aos requisitos específicos do pipeline.
Links Relacionados
-
Visão Geral do Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)
-
Adicionando um token de autenticação de conta de serviço a um arquivo Kubeconfig
Confirmações
- Autores - Adina Nicolescu (Engenheira Sênior de Nuvem), Guido Alejandro Ferreyra (Arquiteto de Nuvem Principal)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Deploy to OCI Container Engine for Kubernetes from GitLab CI/CD
F92407-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.