Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter 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.
Crie pipelines do OCI DevOps para criar e implantar os microsserviços Golang
Introdução
Esta é a parte quatro de uma série de tutoriais em seis partes que mostra como implantar um conjunto temporário de recursos em um cluster do OKE usando microsserviços Golang que representam o uso do OCI SDK, OCI-CLI, Resource Manager, OCI Devops e Helm para implantar e destruir o Apache Airflow.
Objetivo
Neste tutorial, você aprenderá a criar pipelines DevOps do OCI para criação e implantação.
Pré-requisitos
- Conclusão do tutorial anterior nesta programação de estudo, Parte 3/6 - Crie um projeto OCI Devops, configure permissões e repositório de código para microsserviços.
Tarefa 1: Explore o código de go-login
-
Este microsserviço é um código de amostra no Golang que é usado para criar um token JWT e retorná-lo ao usuário. Esse token será usado pelos go-microservices para autenticar a chamada. Este é um método simples de autenticação para garantir a segurança deste tutorial.
-
O repositório contém todos os arquivos necessários para implantação no OKE usando o serviço DevOps do OCI, como gráficos de Helm, Dockerfile e
build_spec.yaml
.
Observação
O upload do código já foi feito para seu repositório do OCI chamado go-login nas etapas anteriores deste laboratório.
Tarefa 2: Explore o código dos microsserviços de destino
-
Este microsserviço é um código de amostra para executar as seguintes tarefas:
Método Descrição /oci-init Esta rota executará um job de Aplicação de Pilha no gerenciador de recursos do OCI. Isso executará um terraform para criar um novo pool de nós no cluster OKE. Também iniciará o pipeline de build do OCI Devops para instalar o fluxo de ar nos novos nós. /oci-destroy Isso excluirá a implantação do fluxo de ar no OKE e, em seguida, executará a destruição de pilha no gerenciador de recursos para remover o pool de nós extra -
O repositório contém todos os arquivos necessários para implantar no OKE usando o serviço DevOps do OCI, como gráficos Helm, Dockerfile e
build_spec.yaml
.
Observação
O upload do código já foi feito para seu repositório do OCI chamado go-microservice nas etapas anteriores deste laboratório.
Tarefa 3: Criar os artefatos DevOps para o go-login e o go-microservice
Antes de criar o pipeline de build DevOps, precisamos criar os artefatos que estabelecerão conexão com os resultados do build (pacote Helm e imagem de contêiner).
-
Vá para o Registro do OCI que você criou para este tutorial.
-
Clique nos Artefatos em seu projeto DevOps, em seguida, clique em Adicionar artefato e digite Repositório de imagens do contêiner.
Observação importante sobre o url do registro:
-
Esta é a base do registro da região sa-saopaulo-1.
-
Verifique o código da sua região, que será diferente se você não estiver usando "sa-saopaulo-1". Para obter mais informações, consulte Regiões e Domínios de Disponibilidade.
-
-
Repita a Etapa 2 e adicione o artefato de go-microservice.
-
Crie um novo artefato geral para armazenar os valores de Helm para go-login colando o conteúdo do arquivo
values.yaml
do repositório de código. -
Crie um novo artefato geral para armazenar os valores do Helm para go-microservice colando o conteúdo do arquivo
values.yaml
do repositório de código. -
Crie um novo artefato de tipo de gráfico Helm para log-in. Defina o namespace e o código da região corretos no URL do gráfico.
-
Crie um novo artefato do tipo de gráfico Helm para o microsserviço go. Defina o namespace e o código da região corretos no URL do gráfico.
Nesse ponto, você deve ter os artefatos a seguir no seu projeto DevOps.
Tarefa 4: Criar o pipeline de build do Devops para go-login
-
Vá para a página da console do seu projeto DevOps e selecione o projeto DevOps que você criou.
-
Selecione Criar Pipelines e clique em Criar pipeline de build, informe o nome e a descrição e clique em Criar.
-
Clique em Adicionar estágio e selecione Build Gerenciado.
-
No Repositório de código principal, selecione seu repositório do OCI para go-login.
- Confirme seu repositório, selecione e clique em Adicionar.
-
Adicione um novo estágio no pipeline de build para publicar o artefato no registro. Selecione a opção Entregar artefatos e, em seguida, selecione o artefato go-login-image criado nas etapas anteriores.
Seu pipeline deve ter esta aparência.
Tarefa 5: Criar o pipeline de build DevOps para o microsserviço go
-
Vá para a página da console do seu projeto DevOps e selecione o projeto DevOps que você criou.
-
Selecione Criar Pipelines, clique em Criar pipeline de build, informe o nome e a descrição e clique em Criar.
-
Clique em Adicionar estágio e selecione Build Gerenciado.
-
No Repositório de código principal, selecione seu repositório do OCI para go-microservice.
- Confirme seu repositório, selecione e clique em Adicionar.
-
Adicione um novo estágio no pipeline de build para publicar o artefato no registro. Selecione a opção Entregar artefatos e, em seguida, selecione o artefato go-microservice-image criado nas etapas anteriores.
Seu pipeline deve ter esta aparência.
Tarefa 6: Criar pipeline {build_spec.yaml} - go-login
O arquivo build_spec
é um arquivo yaml que descreve as etapas a serem executadas durante a execução do pipeline de build. Ele é executado em um executor de build de nuvem e suporta a maioria das linguagens populares nos aplicativos nativos da nuvem. O arquivo está localizado na raiz do seu código de repositório de go-login no OCI. Esse arquivo usa algumas variáveis do VAULT e precisamos alterá-lo para nossos ocids do tutorial Vault.
Para obter mais detalhes sobre especificações de construção, consulte Especificação de Criação.
Devem ser definidas as duas variáveis a seguir.
-
HELM_REPO_USER
: O nome de usuário que você armazenou como segredo no Vault. -
USER_AUTH_TOKEN
: O token de autorização do usuário armazenado no vault.
-
Vá até seus segredos do vault e obtenha o OCID para cada segredo.
-
Vá até os repositórios do projeto e obtenha o
ssh url
para go-login.-
Atualize seu arquivo build_spec.yaml e substitua valores pelos segredos do OCID copiados e confirme as alterações no código.
-
-
Vá para o console do shell do jump-box do seu bastion.
cd $HOME # If you still have the old go-login.git and go-microservices.git directory, delete it! rm -rf go-login.git rm -rf go-microservice.git git clone <your ssh url for the repo> cd go-login/ vi build_spec.yaml #perform the needed changes for your ocid variables and save the file. git add . git commit -m "fixed ocid variables" git push
-
Vá para seu pipeline de build de go-login em seu projeto DevOps, selecione a guia "Parâmetros" e adicione os novos parâmetros a seguir.
HELM_REPO
: A base do seu Registro do OCI xxx.ocir.io.HELM_REPO_URL
: O URL de Registro do OCI para o gráfico Helm relacionado.APP_HOST
: O host será usado para acessar seu aplicativo no Controlador de Entrada.IMAGE_URL
: O URL da Imagem do Registro do OCI sem a tag.
-
Clique na guia Criar pipeline e, em seguida, clique em Iniciar execução manual.
-
Como podemos ver, o build foi concluído com sucesso junto com o envio de imagem ao Registro do OCI.
-
-
Vá para o OCI Container Registry e verifique se há uma imagem lá.
Tarefa 7: Configurar credenciais do OCI para o microsserviço go
O go-microservices interage com o OCI usando o SDK e, para fazer isso, precisamos configurar as credenciais corretas. Usaremos as informações semelhantes que usamos para configurar a CLI do OCI durante a configuração do bastion das etapas anteriores deste tutorial.
Todas as credenciais necessárias serão armazenadas no configmap do OKE e elas são injetadas nas variáveis de ambiente dentro do contêiner em execução.
-
Vá para seus repositórios do OCI e obtenha o
ssh url
para seu repositório de go-microservice. -
Vá para a página da console do cluster do OKE, copie o ocid do cluster e substitua-o no comando da variável de ambiente
ENV_CLUSTER_ID
na próxima etapa. -
Abra seu bastion jump-box terminal de shell. Certifique-se de que sua chave ssh tenha sido criada em: ~/.oci/oci_api_key.pem. Exceto pela variável ENV_CLUSTER_ID, todas as outras variáveis podem ser encontradas no arquivo ~/.oci/config em seu bastion host que você configurou anteriormente a CLI do OCI
cat ~/.oci/config
-
A lista de comandos de shell a seguir criará um novo arquivo configmap/values.yaml com todas as variáveis necessárias para serem injetadas no contêiner em execução e depois enviá-lo ao repositório de código no OCI. Antes de executar os comandos no seu terminal de host bastion, substitua os valores "RESUMO..." abaixo.
cd $HOME rm -rf go-microservice/ git clone <PAST YOUR ssh url> cd go-microservice/chart-go-microservice/configmap/ rm values.yaml pem=$(cat ~/.oci/oci_api_key.pem|base64 -w 0) echo 'ENV_PEM: "'$pem'"' > values.yaml echo 'ENV_TENANCY_OCID: "PASTE YOUR TENANCY OCID"' >> values.yaml echo 'ENV_USER_OCID: "PASTE YOUR USER OCID"' >> values.yaml echo 'ENV_REGION: "PASTE YOUR REGION NAME"' >> values.yaml echo 'ENV_FINGERPRINT: "PASTE YOUR FINGERPRINT"' >> values.yaml echo 'ENV_CLUSTER_ID: "PASTER YOUR CLUSTER OCID"' >> values.yaml cd $HOME/go-microservice git add . git commit -m "added correct values on configmap" git push
Agora, o microsserviço Go é capaz de se comunicar com o OCI usando o SDK.
Tarefa 8: Criar pipeline {build_spec.yaml} - go-microservices
O arquivo build_spec é um arquivo yaml que descreve as etapas a serem executadas durante a execução do pipeline de build. Ele é executado em um executor de build de nuvem e suporta a maioria das linguagens populares nos aplicativos nativos da nuvem. O arquivo está localizado na raiz do código de repositório do go-microservice no OCI. Esse arquivo usa algumas variáveis do VAULT e precisamos alterá-lo para nossos ocids do tutorial Vault.
Para obter mais detalhes sobre especificações de construção, consulte Especificação de Criação.
Devem ser definidas as duas variáveis a seguir.
-
HELM_REPO_USER
: O nome de usuário que você armazenou como segredo no Vault. -
USER_AUTH_TOKEN
: O token de autorização do usuário armazenado no vault.
-
Vá até seus segredos do vault e obtenha o OCID para cada segredo.
-
Vá para os repositórios do projeto e obtenha o url ssh para go-login.
- Você precisará atualizar seu arquivo build_spec.yaml e substituir valores pelos segredos do OCID copiados e, em seguida, confirmar as alterações no código.
-
Vá para o console do shell do jump-box do seu bastion.
cd $HOME # If you still have the old go-login.git and go-microservices.git directory, delete it! rm -rf go-login.git rm -rf go-microservice.git git clone <your ssh url for the repo> cd go-microservice/ vi build_spec.yaml #perform the needed changes for your ocid variables and save the file. git add . git commit -m "fixed ocid variables" git push
-
Vá até seu pipeline de build do go-microservice em seu projeto Devops, selecione a guia "Parâmetros" e adicione novos parâmetros.
HELM_REPO
: A base do seu Registro do OCI xxx.ocir.io.HELM_REPO_URL
: O URL de Registro do OCI para o gráfico Helm relacionado.APP_HOST
: O host será usado para acessar seu aplicativo no Controlador de Entrada.IMAGE_URL
: O URL da Imagem do Registro do OCI sem a tag.
-
Clique na guia Criar pipeline e, em seguida, clique em Iniciar execução manual.
-
Como podemos ver, o build foi concluído com sucesso junto com o envio de imagem ao Registro do OCI.
-
-
Vá para o OCI Container Registry e verifique se há uma imagem lá.
Tarefa 9: Preparar o OKE para receber as implantações
Neste tutorial, criaremos manualmente os namespaces do OKE para go-login e go-microservices. Também precisamos configurar as credenciais do OCI Container Registry dentro de cada um dos namespaces usando segredos. Isso é necessário; caso contrário, sua implantação não poderá extrair a imagem do contêiner do registro.
-
Obtenha o texto simples TOKEN e o nome de usuário do Registro do OCI que você armazenou no vault.
-
Abra seu bastion jump-box shell console e execute o comando a seguir.
Observação: certifique-se de substituir as variáveis nos comandos abaixo pelas credenciais que você obteve na etapa anterior e também verifique o docker-server correto com base na sua região gru.ocir.io.
cd $HOME kubectl get ns kubectl create ns go-login kubectl create ns go-microservices kubectl create secret docker-registry docker-registry --docker-server=gru.ocir.io --docker-username='your_user_name' --docker-password='your_token' --docker-email='user-email' -n go-login kubectl create secret docker-registry docker-registry --docker-server=gru.ocir.io --docker-username='your_user_name' --docker-password='your_token' --docker-email='user-email' -n go-microservices
-
Agora vamos implantar o controlador de entrada para poder acessar os microsserviços pela internet. Estamos usando a imagem de entrada oficial na versão v1.4.0.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml kubectl scale --replicas=4 deployment ingress-nginx-controller -n ingress-nginx
-
Agora, vamos verificar se os serviços de entrada são bons, deve ser assim.
kubectl get svc -n ingress-nginx
-
Após a criação do nginx de entrada, um novo balanceador de carga é criado automaticamente no OCI. Agora atualize a configuração do balanceador de carga para uma configuração mais barata e evite custos extras.
-
-
Vá para sua console, selecione Balanceadores de carga em Rede e selecione o balanceador de carga recém-criado.
-
Clique para atualizar a SHAPE e marque a caixa de seleção Usar um Balanceador de Carga Flexível.
Tarefa 10: Criar um novo ambiente OCI DevOps
Para poder implantar seus aplicativos, precisamos criar o ambiente.
-
Selecione seu projeto DevOps, clique em Ambientes e, em seguida, clique em Criar ambiente.
Tarefa 11: Implante o go-login no OCI DevOps usando gráficos Helm
-
Vá para seu projeto Devops, clique em Pipelines de Implantação e crie um novo pipeline para go-login.
-
Clique para adicionar um novo estágio a ser implantado, selecione "Instalar Gráficos do Helm no Cluster do Kubernetes", selecione o artefato helm e o artefato de valores para go-login. Certifique-se de preencher o nome do namespace como go-login.
-
Crie um trigger no pipeline de build para iniciar a implantação automaticamente após a conclusão do build.
-
Vá para o pipeline de build de go-login em seu projeto Devops e clique em Adicionar estágio.
-
Selecione Implantação do trigger, clique em Selecionar pipeline de implantação e selecione go-login-deploy.
-
-
Clique em Iniciar execução manual para testar o pipeline.
-
Na página Projeto de DevOps, clique em Implantações para verificar o status da implantação em execução.
Tarefa 12: Verificar sua implantação de entrada
-
Vá para seu terminal de host bastion e verifique o seguinte:
-
Verifique a integridade do pod.
kubectl get pod -n go-login
-
Verifique o host de entrada e o endereço do aplicativo.
kubectl get ingress -n go-login
-
Essa implantação usa o tráfego de roteamento do controle de entrada pelo nome do host, o que significa que precisamos chamar o serviço usando o nome do host correto como parte do URL.
-
Neste tutorial, não usamos certificados SSL. Para poder chamar os serviços que precisamos incluir no /etc/hosts local do seu laptop a rota de DNS correta para ele. Isso não é recomendado para ambientes de produção.
-
Anote seu endereço IP externo e adicione a entrada em /etc/hosts.
sudo vi /etc/hosts
-
Adicione uma nova linha no fim do arquivo.
your.ip.aaa.xx go-login.superocilab.com
-
Execute o seguinte comando.
cat /etc/hosts
-
Seu /etc/hosts deve ter esta aparência.
-
-
Agora você pode chamar o serviço go-login usando um curl e gerar um jwt TOKEN chamando o ponto final /login.
curl http://go-login.superocilab.com curl http://go-login.superocilab.com/login
Tarefa 13: Implantar o microsserviço go para Devops do OCI usando gráficos Helm
-
Vá para seu projeto Devops, clique em Pipelines de Implantação e crie um novo pipeline para go-microservice.
-
Clique para adicionar um novo estágio a ser implantado, selecione Instalar Gráficos do Helm no Cluster do Kubernetes, selecione o artefato helm e o artefato de valores para go-microservice. Certifique-se de preencher o nome do namespace como go-microservices.
-
Crie um trigger no pipeline de build para iniciar a implantação automaticamente após a conclusão do build.
-
Vá para o pipeline de build do microsserviço de go em seu projeto DevOps e clique em Adicionar estágio.
-
Selecione Disponibilizar trigger, depois clique em Selecionar pipeline de implantação e selecione go-microservice-deploy.
-
-
Clique em Iniciar execução manual para testar o pipeline.
-
Na página Projeto de DevOps, clique em Implantações para verificar o status da implantação em execução.
Tarefa 14: Verificar a implantação do microsserviço go
-
Vá para seu terminal de host bastion e verifique os seguintes detalhes:
-
Verifique a integridade do pod.
kubectl get pod -n go-microservices
-
Verifique o host de entrada e o endereço do aplicativo.
kubectl get ingress -n go-microservices
-
Essa implantação usa o tráfego de roteamento do controle de entrada pelo nome do host, o que significa que precisamos chamar o serviço usando o nome do host correto como parte do URL.
-
Neste tutorial, não usamos certificados SSL. Para poder chamar os serviços que precisamos incluir no /etc/hosts local do seu laptop a rota de DNS correta para ele. Isso não é recomendado para ambientes de produção.
-
Anote seu endereço IP externo e adicione a entrada em /etc/hosts (você também pode adicionar na sua máquina local!)
sudo vi /etc/hosts
-
Adicione uma nova linha no fim do arquivo.
your.ip.aaa.xx go-microservice.superocilab.com
-
Execute o seguinte comando.
cat /etc/hosts
-
Seu /etc/hosts deve ter esta aparência.
-
Agora você pode chamar o serviço go-microservice.
curl curl http://go-microservice.superocilab.com
Próxima Etapa
Para ir para o próximo tutorial nesta programação de estudo, clique aqui.
Links Relacionados
Aquisições
- Autor - Joao Tarla (Engenheiro de Soluções da Equipe do Oracle LAD)
Mais Recursos de Aprendizagem
Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. 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.
Create OCI DevOps pipelines to build and deploy the Golang microservices
F79787-01
April 2023
Copyright © 2023, Oracle and/or its affiliates.