Observação:

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

Tarefa 1: Explore o código de go-login

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.

T1_1

Tarefa 2: Explore o código dos microsserviços de destino

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.

T2_1

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

  1. Vá para o Registro do OCI que você criou para este tutorial.

    T3_1

  2. Clique nos Artefatos em seu projeto DevOps, em seguida, clique em Adicionar artefato e digite Repositório de imagens do contêiner.

    T3_2

    Observação importante sobre o url do registro:

    T3_2

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

    T3_2

  3. Repita a Etapa 2 e adicione o artefato de go-microservice.

    T3_2

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

    T3_4

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

    T3_5

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

    T3_6

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

    T3_7

Nesse ponto, você deve ter os artefatos a seguir no seu projeto DevOps.

T3_7

Tarefa 4: Criar o pipeline de build do Devops para go-login

  1. Vá para a página da console do seu projeto DevOps e selecione o projeto DevOps que você criou.

  2. Selecione Criar Pipelines e clique em Criar pipeline de build, informe o nome e a descrição e clique em Criar.

    T4_2

  3. Clique em Adicionar estágio e selecione Build Gerenciado.

    T4_2

    T4_2

  4. No Repositório de código principal, selecione seu repositório do OCI para go-login.

    T4_4

    • Confirme seu repositório, selecione e clique em Adicionar.
  5. 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.

    T4_5

    T4_5

Seu pipeline deve ter esta aparência.

T4_5

Tarefa 5: Criar o pipeline de build DevOps para o microsserviço go

  1. Vá para a página da console do seu projeto DevOps e selecione o projeto DevOps que você criou.

  2. Selecione Criar Pipelines, clique em Criar pipeline de build, informe o nome e a descrição e clique em Criar.

    T4_2

  3. Clique em Adicionar estágio e selecione Build Gerenciado.

    T4_2

    T4_2

  4. No Repositório de código principal, selecione seu repositório do OCI para go-microservice.

    T4_4

    • Confirme seu repositório, selecione e clique em Adicionar.
  5. 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.

    T4_5

    T4_5

Seu pipeline deve ter esta aparência.

T4_5

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.

  1. Vá até seus segredos do vault e obtenha o OCID para cada segredo.

    T6_1

  2. Vá até os repositórios do projeto e obtenha o ssh url para go-login.

    T6_2

    • Atualize seu arquivo build_spec.yaml e substitua valores pelos segredos do OCID copiados e confirme as alterações no código.

      T6_2

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

    T6_3

    T6_3

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

    T6_4

  5. Clique na guia Criar pipeline e, em seguida, clique em Iniciar execução manual.

    T6_5

    T6_5

    • Como podemos ver, o build foi concluído com sucesso junto com o envio de imagem ao Registro do OCI.

      T6_5

  6. Vá para o OCI Container Registry e verifique se há uma imagem lá.

    T6_5

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.

T7_0

  1. Vá para seus repositórios do OCI e obtenha o ssh url para seu repositório de go-microservice.

    T7_1

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

    T7_2

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

    T7_2

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

    T7_3

    T7_3

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.

  1. Vá até seus segredos do vault e obtenha o OCID para cada segredo.

    T6_1

  2. Vá para os repositórios do projeto e obtenha o url ssh para go-login.

    T6_2

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

    T6_2

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

    T8_3

    T8_3

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

    T6_4

  5. Clique na guia Criar pipeline e, em seguida, clique em Iniciar execução manual.

    T8_5

    T8_5

    • Como podemos ver, o build foi concluído com sucesso junto com o envio de imagem ao Registro do OCI.

      T8_5

  6. Vá para o OCI Container Registry e verifique se há uma imagem lá.

    T8_5

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.

  1. Obtenha o texto simples TOKEN e o nome de usuário do Registro do OCI que você armazenou no vault.

    T9_1

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

      T9_2

      T9_2

    • Agora, vamos verificar se os serviços de entrada são bons, deve ser assim.

      kubectl get svc -n ingress-nginx
      

      T9_2

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

  3. Vá para sua console, selecione Balanceadores de carga em Rede e selecione o balanceador de carga recém-criado.

    T9_3

  4. Clique para atualizar a SHAPE e marque a caixa de seleção Usar um Balanceador de Carga Flexível.

    T9_4

Tarefa 10: Criar um novo ambiente OCI DevOps

Para poder implantar seus aplicativos, precisamos criar o ambiente.

  1. Selecione seu projeto DevOps, clique em Ambientes e, em seguida, clique em Criar ambiente.

    T10_1

    T10_1

Tarefa 11: Implante o go-login no OCI DevOps usando gráficos Helm

  1. Vá para seu projeto Devops, clique em Pipelines de Implantação e crie um novo pipeline para go-login.

    T11_1

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

    T11_2

  3. Crie um trigger no pipeline de build para iniciar a implantação automaticamente após a conclusão do build.

    1. Vá para o pipeline de build de go-login em seu projeto Devops e clique em Adicionar estágio.

    2. Selecione Implantação do trigger, clique em Selecionar pipeline de implantação e selecione go-login-deploy.

      T11_3

  4. Clique em Iniciar execução manual para testar o pipeline.

    T11_4

    T11_4

  5. Na página Projeto de DevOps, clique em Implantações para verificar o status da implantação em execução.

    T11_5

Tarefa 12: Verificar sua implantação de entrada

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

      T12_1

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

      T12_1

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

    T12_1

Tarefa 13: Implantar o microsserviço go para Devops do OCI usando gráficos Helm

  1. Vá para seu projeto Devops, clique em Pipelines de Implantação e crie um novo pipeline para go-microservice.

    T13_1

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

    T13_2

  3. Crie um trigger no pipeline de build para iniciar a implantação automaticamente após a conclusão do build.

    1. Vá para o pipeline de build do microsserviço de go em seu projeto DevOps e clique em Adicionar estágio.

    2. Selecione Disponibilizar trigger, depois clique em Selecionar pipeline de implantação e selecione go-microservice-deploy.

    T13_3

    T13_3

  4. Clique em Iniciar execução manual para testar o pipeline.

    T13_4

    T13_4

  5. Na página Projeto de DevOps, clique em Implantações para verificar o status da implantação em execução.

    T11_5

Tarefa 14: Verificar a implantação do microsserviço go

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

      T14_1

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

      T14_1

Agora você pode chamar o serviço go-microservice.

curl curl http://go-microservice.superocilab.com

T14_1

Próxima Etapa

Para ir para o próximo tutorial nesta programação de estudo, clique aqui.

Aquisições

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.