Participe da Maratona Behind the Code! A competição de programação que mais te desafia! Inscreva-se aqui

Integre um pipeline CI/CD em um cluster Kubernetes com Slack

À medida que as empresas transferem as cargas de trabalho para a nuvem, a transparência e a visibilidade nas equipes de desenvolvimento e operações (DevOps) tornam-se verdadeiramente importantes. O verdadeiro poder da plataforma de mensagens Slack é ajudar as equipes a colaborar e coordenar seu trabalho independentemente de onde estejam, seja no escritório, em casa ou em qualquer lugar no mundo. Este tutorial mostra como configurar um conjunto de ferramentas de serviços da IBM Cloud que use uma pilha de integração contínua e entrega contínua (CI/CD) para manter e implementar aplicativos em execução em um cluster Kubernetes. Em seguida, ele mostra como é possível aprimorar a experiência de colaboração dentro da equipe de DevOps ao integrar o conjunto de ferramentas com a plataforma Slack para que o canal do Slack receba notificações sobre atividades de implementação.

Pré-requisitos

As ferramentas a seguir são necessárias para concluir as etapas neste tutorial:

Tempo estimado

Você levará menos de uma hora para concluir este tutorial.

Etapas

  1. Bifurque e clone o repositório do GitHub
  2. Crie um cluster Kubernetes
  3. Crie o registro do contêiner
  4. Configure um conjunto de ferramentas
  5. Verifique se o aplicativo está em execução
  6. Ative a API Slack
  7. Integre o aplicativo Slack com seu conjunto de ferramentas
  8. Altere o conjunto de ferramentas e verifique as atualizações no Slack

Etapa 1. Bifurque e clone o repositório do GitHub

  1. Abra o repositório do GitHub que contém a amostra de código para este tutorial.
  2. Clique em Fork na barra de menus para copiar o repositório para sua conta do GitHub. Você usará a URL do repositório bifurcado na Etapa 4.
  3. Abra o terminal e altere o diretório usando o comando cd downloads (ou qualquer outro diretório em que deseja clonar o projeto).
  4. Execute o comando git clone https://github.com/IBM/CICD-Kubernetes-Slack.git.
  5. Passe para a pasta clonada e execute o comando npm install para instalar as dependências.
  6. Execute o comando node app.js para verificar se o aplicativo está sendo executado com sucesso no seu dispositivo local.

Atenção: O projeto contém os arquivos do Dockerfile e de implementação que você usará nas próximas etapas. Por isso, examine os arquivos. Este tutorial não explica como escrever os dois arquivos.

Etapa 2. Crie um cluster Kubernetes

  1. Entre na sua conta da IBM Cloud e navegue até a página Kubernetes Cluster.
  2. Crie um cluster Kubernetes. Caso precise de assistência, consulte as etapas na documentação Começar a usar o IBM Cloud Kubernetes Service.

    Captura de tela da guia Create na página Kubernetes Cluster da IBM Cloud

O cluster Kubernetes pode demorar de 10 a 15 minutos para ser provisionado.

Etapa 3. Crie o registro do contêiner

  1. Acesse a página Container Registry na IBM Cloud.
  2. Clique no botão Create.
  3. Na caixa suspensa Location, selecione a região geograficamente mais próxima a você.
  4. Clique na guia Namespaces.
  5. Clique em Create.
  6. No painel Create namespace, insira um nome exclusivo para seu registro no campo Name.
  7. Clique em Create.

Atenção: é possível pular essa etapa e integrar diretamente o registro do contêiner na Etapa 4. No entanto, isso poderá causar um erro se o nome do registro não for exclusivo.

Etapa 4. Configure um conjunto de ferramentas

Os conjuntos de ferramentas oferecem um conjunto integrado de ferramentas para desenvolver, implementar e gerenciar seus aplicativos. Criando um conjunto de ferramentas na IBM Cloud, é possível desenvolver e implementar um aplicativo de forma segura em um cluster Kubernetes gerenciado pelo IBM Cloud Kubernetes Service. O conjunto de ferramentas inclui o Vulnerability Advisor para fornecer um contêiner seguro.

Depois que você criar o conjunto de ferramentas nesta etapa e transferir as alterações para seu repositório, o pipeline de entrega desenvolverá e implementará o código automaticamente. Saiba mais sobre como criar conjuntos de ferramentas na IBM Cloud.

Realize estas tarefas:

  1. Acesse o painel Create a Toolchain na IBM Cloud.
  2. Muitos conjuntos de ferramentas prontos para o uso estão disponíveis no painel. Selecione Develop a Kubernetes app.
  3. Insira o nome desejado no campo Toolchain Name.
  4. No campo Select Region, escolha o mesmo local escolhido na Etapa 3.
  5. No campo Select a source provider, escolha Git Repos and Issue Tracking.
  6. Na seção Tool Integrations, no campo Source repository URL, insira a URL do repositório bifurcado que você criou na Etapa 1.
  7. Clique na guia Delivery Pipeline.
  8. No campo App name, insira mypipeline.
  9. No campo IBM Cloud API key, clique no botão New.
  10. Na janela Create a new API key with full access, selecione OK.
  11. Nos campos Container registry region e Cluster region, selecione a região onde criou seus serviços antes.
  12. Clique no botão Create.
  13. Depois que a caixa de status Delivery Pipeline indicar que a configuração foi concluída com sucesso, clique nela para abrir a página de status Delivery Pipeline.

    Captura de tela da página de status Delivery Pipeline

    A captura de tela da página Delivery Pipeline mostra as três fases do pipeline:

    • Build: se existir um arquivo manifest.yml na pasta raiz, ele será usado para determinar qual buildpack deve ser utilizado.
    • Containerize: essa fase procura o Dockerfile na sua pasta raiz, cria um registro de contêiner depois que a imagem é desenvolvida com sucesso e implementa a imagem no registro. Ela também procura vulnerabilidades na imagem. Se houver, as imagens com um grande número de advertências não serão implementadas.
    • Deploy: essa fase verifica a prontidão do cluster e a existência do namespace, configura o namespace do cluster, atualiza o arquivo de manifesto deployment.yml e concede acesso ao registro de imagem privado.

Atenção: a imagem da captura de tela mostra uma advertência porque não ativamos o certificado SSL.

Etapa 5. Verifique se o aplicativo está em execução

  1. Na fase Deploy, clique em View logs and history.
  2. Selecione Deploy to Kubernetes.
  3. Role a tela até o final dos logs, até alcançar VIEW THE APPLICATION AT: seguido por uma URL.
  4. Abra seu navegador e execute a URL para verificar se o aplicativo está em execução.

    Captura de tela da tela ADMIN LOGIN do aplicativo

Agora, você verificará se os serviços estão em execução no seu cluster Kubernetes.

  1. Acesse Resource list na IBM Cloud.
  2. Expanda Cluster e clique no serviço de cluster Kubernetes que você criou na Etapa 2.
  3. Na página do serviço de cluster, selecione Kubernetes dashboard na barra de menus.
  4. No painel lateral de Kubernetes dashboard, clique em Namespaces.
  5. Selecione default na lista Namespaces.
  6. Verifique os serviços em execução como hello-app.

Etapa 6. Ative a API Slack

Caso ainda não tenha uma conta do Slack, crie uma antes de iniciar as tarefas a seguir para ativar a API Slack.

  1. No seu navegador, acesse https://api.slack.com/apps.
  2. Clique em Create an App.
  3. Na janela Create a Slack App, insira IBM Toolchain no campo App Name.
  4. Na lista suspensa Development Slack Workspace, selecione o espaço de trabalho que você identificou ou criou para cumprir os pré-requisitos para este tutorial.
  5. Clique em Create App. Depois que seu aplicativo for criado, você será redirecionado para a página de configurações do novo aplicativo.
  6. Selecione Incoming Webhooks.
  7. Ajuste Activate Incoming Webhooks como On.
  8. Clique em Add New Webhook to Workspace.
  9. Na lista, escolha um canal em que deseja que o aplicativo publique notificações.
  10. Clique em Allow.
  11. Na página Incoming Webhooks, haverá uma nova entrada dentro da seção Webhook URL para o canal selecionado. Clique no botão Copy para salvar a URL para uma tarefa futura.

Etapa 7. Integre o aplicativo Slack com seu conjunto de ferramentas

Agora que seu aplicativo Slack foi configurado, é possível integrá-lo com seu conjunto de ferramentas na IBM Cloud.

  1. Acesse o painel Toolchains na IBM Cloud.
  2. Na lista Location, escolha a região onde você criou seu conjunto de ferramentas na Etapa 4.
  3. Selecione seu conjunto de ferramentas na lista.
  4. Na página de visão geral do conjunto de ferramentas, clique no botão Add tool.
  5. Digite Slack na caixa de pesquisa e clique na opção de integração Slack que será exibida.
  6. Na página Configure Slack, cole no campo Slack webhook a URL do webhook que você copiou no final da Etapa 6.
  7. No campo Slack channel, insira o nome do canal que você selecionou na Etapa 6 para a publicação de notificações.
  8. No campo Slack team name, insira o nome da sua equipe Slack. (Para encontrar o nome da equipe, abra o espaço de trabalho do Slack, expanda o nome do espaço de trabalho localizado no painel lateral e copie a palavra ou frase que aparece antes de .slack.com.)
  9. Clique no botão Create Integration. A página de visão geral do seu conjunto de ferramentas passará a exibir sua integração do Slack dentro de uma seção Culture do pipeline.

    Captura de tela da página de visão geral do conjunto de ferramentas atualizada

  10. Abra seu espaço de trabalho do Slack. Dentro do canal configurado, haverá uma mensagem declarando que seu serviço Slack foi associado ao seu conjunto de ferramentas.

Etapa 8. Altere o conjunto de ferramentas e verifique as atualizações no Slack

  1. Na página de visão geral do conjunto de ferramentas, clique na caixa de status Delivery Pipeline para abrir a página de status Delivery Pipeline.
  2. Na fase Deploy, clique no ícone Run Stage.
  3. A fase começará a ser executada. Mensagens de verificação aparecerão no canal do seu espaço de trabalho do Slack. Em um cenário de mundo real, todos na sua equipe teriam uma melhor visualização das alterações do projeto por meio desses tipos de mensagens automatizadas de implementação.

    Captura de tela das atualizações da fase Deploy aparecendo no canal do Slack

Conclusão

Neste tutorial, você aprendeu a trabalhar com conjuntos de ferramentas para gerenciar aplicativos em execução em um cluster Kubernetes, com fases automatizadas que substituem a interação manual das equipes de desenvolvimento e operações. Além disso, o tutorial demonstrou como a plataforma Slack pode aprimorar a colaboração de DevOps, integrando-o com um conjunto de ferramentas da IBM Cloud para verificar as execuções realizadas por uma função específica. As equipes poderiam usar conjuntos de ferramentas de DevOps para estratégias com várias fases, como parte de suas melhores práticas. Por exemplo, antes de implementar uma carga de trabalho completa em um cluster Kubernetes de produção, ela poderia ser implementada na fase do ambiente de teste, sem afetar o ambiente de produção em caso de falhas.