Em meu artigo anterior, mergulhei no fascinante mundo dos microsserviços - . Este foi o início da minha série abrangente de artigos sobre microsserviços e seus padrões. Microservice Architecture Patterns Part 1: Decomposition Patterns Embora o passo lógico seja continuar com a Parte 2 desta série, decidi que a próxima coisa que gostaria de explorar e falar é o processo vital de entrega desses microsserviços ao usuário final de maneira integrada. Visão geral do conteúdo Motivação [Módulo 1]: Servidor Virtual AWS EC2 [Módulo 2]: Servidor Jenkins [Módulo 3]: Git e Github [Módulo 4]: Apache Maven [Módulo 5]: Docker [Módulo 6]: Ansible [Módulo 7]: Kubernetes Conclusão Sobre o autor Motivação CI/CD é uma técnica para entregar aplicativos aos clientes, conseguida adicionando automação a diferentes estágios de desenvolvimento de aplicativos. Acredito que compreender CI/CD (Integração Contínua e Implantação Contínua) pode capacitar os desenvolvedores a obter uma melhor compreensão de como os artefatos de back-end do projeto existem além dos limites do repositório do projeto. Essa compreensão também pode criar uma mudança fundamental na perspectiva do desenvolvedor. Em vez de apenas verem o seu trabalho como linhas de código, eles podem começar a abraçar o contexto mais amplo do seu projeto como um produto valioso. Neste artigo, pretendemos desmistificar o processo CI/CD através da aplicação prática. Apresentaremos um tutorial passo a passo, dividindo-o módulo por módulo, onde você construirá um pipeline de CI/CD manualmente. Para fazer isso, aproveitaremos o poder das ferramentas DevOps contemporâneas, como e . Então, vamos começar esta jornada! AWS, Docker, Kubernetes, Ansible, Git, Apache Maven Jenkins [Módulo 1]: Servidor Virtual AWS EC2 Este módulo é dedicado à criação de uma instância de servidor virtual AWS EC2. Como parte deste artigo, você configurará três instâncias EC2 para Jenkins, Ansible e Kubernetes. Por enquanto, você pode prosseguir com os próximos módulos e revisitar este módulo nas seções "[módulo 2]: Jenkins", “[módulo 6]: Ansible" e "[módulo 7]: Kubernetes". Etapa 1: crie uma conta AWS Acesse https://aws.amazon.com. Clique no botão . Crie uma conta AWS Siga as instruções na página de criação de conta. Etapa 2: faça login em sua conta AWS Acesse https://console.aws.amazon.com/console/home. Clique no botão . Entrar Insira todas as credenciais necessárias nesta página da web. Etapa 3: Encontre o servidor virtual EC2 Encontre EC2 na caixa de pesquisa. Escolha EC2 Virtual Server clicando em . EC2 Service Clique no botão . Iniciar instância Etapa 4: configurar a seção “Nome e tags” Vá para a seção . “Nome e tags” Forneça um nome para uma nova instância do servidor virtual AWS EC2 na seção . “Nome” Você também pode adicionar tags adicionais ao seu servidor virtual clicando em . “Adicionar tags adicionais” Etapa 5: configurar a seção “Imagens de aplicativo e sistema operacional (imagem de máquina Amazon)“ Vá para a seção . "Imagens de aplicativos e sistema operacional (imagem de máquina Amazon)" Para jogar com o servidor virtual: GRATUITAMENTE Selecione o sistema operacional do seu servidor virtual – . Amazon Linux Na seção , selecione uma máquina com a . Amazon Machine Image (AMI) tag qualificada para nível gratuito Etapa 6: configurar a seção “Tipo de instância” Vá para a seção . “Tipo de instância” Para jogar com o servidor virtual: GRATUITAMENTE Selecione um tipo com a na seção . tag qualificada para nível gratuito Tipo de instância Para mim é . t2.micro (Família: t2 1cCPU 1 GiB Memory Geração atual:true) Etapa 7: configurar a seção “Configurar armazenamento” Vá para a seção . “Configurar armazenamento” Para jogar com o servidor virtual: GRATUITAMENTE Não altere as configurações padrão. Os clientes qualificados para o nível gratuito podem obter . 30 GB de EBS General Purpose (SSD) ou armazenamento magnético Etapa 8: Configurar a seção “Configurações de rede“ Vá para a seção . “Configurações de rede” Você precisa configurar a segurança do seu servidor virtual. Para fazer isso, Clique no botão . “Criar grupo de segurança” Adicione o nome do seu novo grupo de segurança na seção . “Nome do grupo de segurança” Adicione uma descrição do seu novo grupo de segurança na seção . “Descrição” Por padrão, seu servidor virtual é acessível via ( ). Se precisar de tipos de conexão adicionais, adicione-os adicionando regras adicionais de grupo de segurança de entrada. Tipo - SSH, Protocolo - TCP, Porta - 22 Etapa 9: Configurar a seção “Par de chaves (login)“ Vá para a seção . “Par de chaves (Login)” Crie um novo par de chaves se ainda não o tiver criado. Se você ainda não criou : o “par de chaves” Clique no botão . “Criar novo par de chaves” Dê um nome ao seu novo par de chaves na seção . “Nome do par de chaves” Selecione o tipo de par de chaves ou . Eu escolho o tipo . RSA ED25519 RSA Selecione Formato de arquivo de chave privada. Escolha de e . Eu escolho o formato . .pem .ppk .pem Clique no botão . “Criar par de chaves” Você receberá uma janela pop-up solicitando que você baixe o arquivo da chave privada. Concorde e baixe o arquivo para o seu computador. Etapa 10: iniciar a instância do servidor virtual EC2 Inicie a instância do EC2 Virtual Server clicando no botão . “Iniciar instância” Após a conclusão do processo de criação da instância do EC2 Virtual Server, você verá o seguinte. Então você deve ir para a seção clicando no botão . “Instâncias” “Ver todas as instâncias” Agora você pode ver que sua instância do servidor virtual AWS EC2 está em execução. [Módulo 2]: Servidor Jenkins Agora, vamos configurar o JenkinsServer na instância do EC2 Virtual Server. Etapa 1: criar uma instância do servidor virtual AWS EC2 Você precisa de um servidor virtual para executar o Jenkins. Siga as instruções do deste tutorial para concluir esta etapa e criar uma instância de servidor virtual EC2 com o nome JenkinsServer. [Módulo 1]: seção Servidor virtual AWS EC2 Não se esqueça de adicionar uma configuração de grupo de segurança. Ele permite que e funcionem nas portas e respectivamente. Jenkins SSH 8080 22, Use o nome para distinguir sua instância do EC2 Virtual Server. “JenkinsServer” Crie o grupo de segurança e para uma nova instância AWS EC2. Você pode reutilizá-los posteriormente no artigo. “CI_CD_Pipeline” “CI_CD_Pipeline_Key_Pair“ “JenkinsServer” Etapa 2: conectar-se a uma instância do servidor virtual AWS EC2 Acesse → → a página inicial do Console AWS Painel do Console de Gerenciamento EC2 Instâncias. Então você deve escolher e clicar no botão . JenkinsServer “Conectar” Então você verá esta página da web. Você deve clicar novamente no botão . “Conectar” Agora você pode ver o terminal online da instância do servidor virtual EC2. Etapa 3: Baixe o repositório Jenkins Agora você precisa baixar o Jenkins em sua instância de servidor virtual EC2. Siga estas instruções: Vá para de download do Jenkins. a página Você pode ver as opções de versões estáveis (LTS) e regulares (semanais). Escolha a opção LTS. Red Hat/Fedora/Alma/Rocky/CentOS Você verá esta página da web. Copie o comando e execute-o para baixar os arquivos Jenkins do repositório Jenkins na Internet e salvá-los no local especificado em sua instância de servidor virtual EC2. “sudo get..” sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo Agora o Jenkins foi baixado. Etapa 4: importar a chave Jenkins Para finalizar a instalação do Jenkins, precisamos importar a chave Jenkins. Para importar a chave Jenkins precisamos copiar o comando e executá-lo. “sudo rpm..” sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key Desta forma, o gerenciador de pacotes pode verificar se os pacotes Jenkins que você instala são exatamente aqueles publicados pelo projeto Jenkins e se não foram adulterados ou corrompidos. “rpm” Etapa 5: instale o Java Para executar o Jenkins, precisamos instalar em nossa instância de servidor virtual EC2. o Java Para instalar , use este comando. o Java sudo amazon-linux-extras install java-openjdk11 -y Verifique se o foi instalado corretamente usando este comando: Java java -version Você verá algo assim. Etapa 6: instale o fontconfig Para executar o Jenkins, você precisa instalar em nossa instância de servidor virtual EC2. o fontconfig Use este comando. sudo yum install fontconfig java-11-openjdk -y Fontconfig é uma biblioteca projetada para fornecer configuração de fontes em todo o sistema, personalização e acesso a aplicativos. É exigido pelo Jenkins porque o Jenkins possui recursos que renderizam fontes. Etapa 7: Instale o Jenkins Nas etapas anteriores, você configurou sua instância de servidor virtual EC2 para usar um repositório Jenkins específico e, em seguida, importou a chave GPG associada a esse repositório. Agora, você precisa executar o comando que irá pesquisar todos os repositórios que conhece, incluindo o Jenkins que você adicionou, para encontrar o pacote Jenkins. Assim que encontrar o pacote Jenkins no repositório Jenkins, ele fará o download e instalará. Vamos executar este comando. sudo yum install jenkins -y Etapa 8: inicie o Jenkins Você pode iniciar o Jenkins usando este comando. sudo systemctl start jenkins Para verificar se o Jenkins está em execução, use este comando. sudo systemctl status jenkins Você verá a saída como está na imagem abaixo: Jenkins agora deve estar instalado e funcionando. Etapa 9: acesse o Jenkins Para acessar o aplicativo Jenkins, abra qualquer navegador da web e insira o endereço IP público ou nome de domínio da sua instância EC2 seguido pela porta 8080. http://<your-ec2-ip>:8080 Na primeira vez que você acessar o Jenkins, ele será bloqueado com uma senha gerada automaticamente. Você precisa exibir essa senha usando o seguinte comando. sudo cat /var/lib/jenkins/secrets/initialAdminPassword Copie esta senha, volte ao seu navegador, cole-a no campo Senha do administrador e clique em “Continuar”. Então você poderá ver esta página da web. Agora você pode usar seu servidor Jenkins. Etapa 10: Crie um novo pipeline Jenkins Agora, como o Jenkins está funcionando bem, você pode começar a criar o pipeline do Jenkins. Para criar o pipeline Jenkins você precisa criar um novo “projeto Freestyle”. Para criar um novo “projeto Freestyle” você precisa ir ao painel do Jenkins e clicar no botão . “Novo Item” Digite o nome do “projeto Freestyle” do Github (o nome do “pipeline” será usado posteriormente) e clique no botão . “OK” Em seguida, forneça a do pipeline. descrição Em seguida, clique no botão “Aplicar” e “Salvar”. Depois disso, significa que você criou a base do pipeline que será construído neste tutorial. [Módulo 3]: Git e Github Agora que o Jenkins está sendo executado na instância do servidor virtual AWS EC2, você pode configurar o Git com o pipeline. Git é um sistema de controle de versão distribuído (VCS) projetado para ajudar as equipes de software a rastrear cada modificação no código em um tipo especial de banco de dados. Se um erro for cometido, os desenvolvedores podem voltar no tempo e comparar versões anteriores do código para ajudar a corrigir o erro e, ao mesmo tempo, minimizar a interrupção para todos os membros da equipe. VCS é especialmente útil para equipes, pois as ajudam a reduzir o tempo de desenvolvimento e aumentar implantações bem-sucedidas [1]. gratuito e de código aberto DevOps O Git, como o sistema de controle de versão mais popular, nos permite extrair o código mais recente do repositório Github do seu projeto para a instância do servidor virtual EC2 onde o Jenkins está instalado. Etapa 1: instalar o Git Use este comando para instalar o Git. sudo yum install git -y Agora verifique se o Git está funcionando, usando este comando. git --version Agora o Git está funcionando bem na instância do EC2 Virtual Server. Etapa 2: abra o painel do Jenkins Como o Git está funcionando bem na instância do EC2 Virtual Server, podemos integrar o Jenkins ao Git agora. Para iniciar esta integração vamos instalar o plugin Jenkins Github. Vá para a seção do painel do Jenkins. Etapa 3: abra o gerenciador de plug-ins Jenkins Clique no botão e depois clique no botão . “Gerenciar Jenkins” “Gerenciar Plugins” Etapa 4: Encontre o plugin Github Jenkins Clique no botão . “Plugins disponíveis” Encontre a caixa de pesquisa do plugin . Github Selecione o plug-in . do Github Etapa 5: instale o plug-in Github Jenkins Selecione o plug-in . E então clique no botão . do Github “Instalar sem reiniciar” Aguarde o término do download do plugin Github. Sim! O plug-in Jenkins Github está instalado. Etapa 6: configurar o plug-in Github Jenkins Agora que o plugin GitHub Jenkins está instalado, você pode configurar este plugin para integrar Jenkins com Git finalmente. Para fazer isso você precisa retornar à página principal clicando no botão “Voltar ao topo da página”. Em seguida, na página principal, você precisa clicar no botão e a seguir clicar no botão . “Gerenciar Jenkins” “Configuração global da ferramenta” Em seguida, na página da web Global Tool Configuration, você deve ir para a seção Git. Na seção Git, você precisa configurar o Git fornecendo o nome e o caminho do Git no computador. Em seguida, clique nos botões e **.** “Aplicar” “Salvar” Aqui, você concluiu a configuração do plugin Jenkins Github. Etapa 7: Integrar o Git ao pipeline Agora, como o plugin Jenkins Github está instalado e configurado, você pode utilizá-lo em seu pipeline. Isso permitirá que o pipeline criado no módulo 2 extraia o código do projeto do repositório GitHub especificado. Bem, para integrar este plugin ao seu pipeline você precisa ir até a seção Source Code Management e escolher Git no seu pipeline. Então você precisa fornecer o URL do repositório do seu projeto. Se o repositório do seu projeto for público no Github, você não precisará fornecer credenciais. Se o repositório do projeto for privado no Github, você precisará fornecer credenciais. Você pode usar meu projeto com o próximo URL do repositório: . https://github.com/Sunagatov/Hello.git Basta copiar e colar na entrada “ . Em seguida, clique nos botões e para finalizar a integração do Git com o pipeline. URL do repositório” “Aplicar” “Salvar” Etapa 8: testar o Git integrado ao pipeline Agora você pode usar seu pipeline atualizado para extrair um projeto do Github. Para fazer isso você precisa clicar no botão **“Construir agora”**. Como resultado, você verá uma construção bem-sucedida no histórico de construção. Abra a primeira compilação do histórico de compilação. Agora você pode ver o resultado bem-sucedido do trabalho da primeira construção. Se você abrir seu terminal AWS EC2. Você pode verificar se o pipeline funciona bem. Basta usar este comando. cd /var/lib/jenkins/workspace/{your pipeline name} Dessa forma, você pode ver que seu projeto do Github foi transferido para a instância do servidor virtual AWS EC2. [Módulo 4]: Apache Maven é uma ferramenta de automação de construção e gerenciamento de projetos amplamente utilizada no desenvolvimento de software. Ele agiliza o processo de compilação, teste e empacotamento de código, gerenciando dependências do projeto e fornecendo um ciclo de vida de construção consistente. O Maven emprega arquivos de configuração baseados em XML (arquivos POM) para definir a estrutura, dependências e tarefas do projeto, permitindo que os desenvolvedores gerenciem e implantem com eficiência projetos de software complexos. Apache Maven Agora que integrou o Git ao pipeline, você pode aprimorá-lo ainda mais incorporando o Apache Maven, que permite construir, testar e empacotar seu projeto. Para fazer isso, você precisa instalar o Apache Maven na instância do servidor virtual AWS EC2 onde Jenkins e Git foram instalados. Etapa 1: Baixe o Apache Maven Para baixar o Apache Maven vá para o diretório . “/opt” cd /opt E então use este comando. sudo wget https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz Este comando irá baixar o Apache Maven oficial mais recente (verifique a versão mais recente no site oficial do Apache Maven). Para encontrar a versão oficial mais recente do Apache Maven, use o link . https://maven.apache.org/download.cgi Etapa 2: Extraia o Apache Maven do arquivo Use este comando para extrair o Apache Maven do arquivo baixado: sudo tar -xvzf apache-maven-*.tar.gz Etapa 3: adicionar JAVA_HOME e M2_HOME Vá para a pasta raiz usando este comando. cd ~ Edite o arquivo usando este comando. .bash_profile vi .bash_profile Adicione variáveis e M2_HOME. JAVA_HOME Atribua o caminho para JDK11 para e o caminho para o diretório maven para a variável . JAVA_HOME M2_HOME Para encontrar o caminho do JDK, use este comando. sudo find / -name java Como usar o VIM Para o arquivo pressione o botão do teclado para inserir os dados. editar “I” Para o arquivo pressione o botão do teclado “esc“ e digite “:w“. salvar Para do arquivo pressione o botão do teclado e digite . sair “esc” “:q” Salve as alterações. Em seguida, execute este comando para atualizar as variáveis do sistema. source .bash_profile Para verificar , use este comando. $PATH echo $PATH Para verificar , use este comando. o Apache Maven mvn -v Se você fez tudo corretamente, poderá visualizar a versão do Apache Maven. Etapa 4: instale o plug-in Apache Maven Jenkins Como o Apache Maven pode ser usado em uma instância EC2, você pode instalar o plugin Apache Maven para integrá-lo ao pipeline. Para conseguir isso, siga estas etapas: Navegue até “Painel“ → “Gerenciar Jenkins“ → “Gerenciar plug-ins“ → “Disponível”. Na caixa de pesquisa, digite . “Maven” Escolha o plugin . “Maven Integration” Aguarde o final do processo de download. E então clique no botão . “Voltar para a página inicial” Etapa 5: configurar o plug-in Apache Maven Jenkins Com a instalação bem-sucedida do plugin Apache Maven Jenkins, agora você pode utilizar este plugin dentro do pipeline que criou e atualizou nos módulos 2 e 3. Para fazer isso, siga estas etapas: Vá para “Painel“ → “Gerenciar Jenkins“ → “Global Tool Coonfiguration“ → “JDK” Clique no botão “Adicionar JDK”. Desmarque “Instalar automaticamente”. Em seguida, vá para a seção . Clique no botão . Desmarque “Maven” “Adicionar Maven” “Instalar automaticamente”. Em seguida, adicione e o caminho . o nome MAVEN_HOME Clique nos botões e . “Aplicar” “Salvar” Aqui, você concluiu a configuração do plugin Apache Maven Jenkins. Etapa 6: Integrar o Apache Maven ao pipeline Agora que o plug-in Apache Maven GitHub está instalado e configurado, você pode utilizar o Apache Maven em seu pipeline. Isso permitirá que seu pipeline que você criou no “[módulo 2]: Jenkins Server” construa o código do seu projeto para criar um artefato jar. Para integrar o Apache Maven ao pipeline, você precisa seguir estas etapas: Navegue até “Painel“ → “CI_CD_Pipeline“ → “Configurar“ → “Etapas de construção”. Clique no botão . “Adicionar etapa de construção” Escolha a opção . “Invocar destinos Maven de nível superior” Escolha como “Apache-Maven” “Versão Maven”. Adicione o comando à entrada . “pacote limpo” “Metas” Clique no botão . “Avançado“ Adicione “pom.xml” à entrada . “POM” Por fim, você deve clicar nos botões e para finalizar a integração do Apache Maven com o pipeline. “Aplicar” “Salvar” Etapa 7: teste o Apache Maven integrado ao pipeline Agora você pode usar seu pipeline atualizado para construir seu projeto no Github. Para fazer isso você precisa clicar no botão **“Construir agora”**. Como resultado, você verá um resultado de trabalho bem-sucedido no histórico de construção. Se você abrir seu terminal AWS EC2. Você pode verificar se o pipeline funciona bem. Basta usar este comando. cd /var/lib/jenkins/workspace/{your pipeline name}/target Dessa forma, você pode ver o artefato JAR, indicando a construção bem-sucedida do seu projeto no GitHub. [Módulo 5]: Docker Agora vamos criar uma nova instância EC2 com o nome "Ansible Server" onde você irá instalar o Docker e o Ansible. Etapa 1: iniciar uma instância do servidor virtual AWS EC2 Use as instruções da seção “ deste tutorial para concluir esta etapa. Não se esqueça de adicionar uma configuração de grupo de segurança. Ele permite que Docker e SSH funcionem nas portas 8080 e 22, respectivamente. Iniciar uma instância do servidor virtual AWS EC2” Etapa 2: conectar-se a uma instância do servidor virtual AWS EC2 Clique no botão “Conectar”. Agora você pode ver o terminal online da instância do EC2 Virtual Server. sudo chown ansible-admin:ansible-admin /opt/docker Etapa 3: Instale o Docker no servidor virtual Ansible EC2. Agora você precisa instalar o docker em sua instância do Ansible EC2. Para fazer isso, você precisa criar uma nova pasta docker. sudo mkdir /opt/docker Em seguida, instale o docker executando o próximo comando. sudo yum install docker -y Etapa 4: adicionar o usuário atual ao grupo Docker no servidor virtual Ansible EC2 Você precisa adicionar o usuário atual ao grupo Docker no servidor virtual EC2 para conceder privilégios de administrador ao Docker. “ansible-admin” “AnsibleServer” sudo usermod -a -G docker ansible-admin Você precisará sair e fazer login novamente para que essas alterações tenham efeito. Então você pode executar o próximo comando id ansible-admin para ver se o novo usuário do docker existe. Etapa 5: iniciar o Docker Agora que o Docker está instalado na instância do Ansible EC2, você pode iniciá-lo executando o próximo comando. sudo systemctl start docker Quando o Docker for iniciado, você pode executar o próximo comando sudo systemctl status docker para ver se o docker está ativo e em execução agora. Etapa 6: criar Dockerfile Na versão final do pipeline, o processo envolverá a criação de uma nova imagem Docker a partir do seu projeto GitHub e o envio para o Docker Hub. Para fazer isso, seu projeto GitHub deve conter um Dockerfile. Se você usou o projeto que foi oferecido no módulo “ , então você não precisa criar um novo Dockerfile, pois este repositório do projeto já contém Dockerfile. “Hello” [Módulo 3]: Git e Github” FROM eclipse-temurin:17-jre-jammy ENV HOME=/opt/app WORKDIR $HOME ADD hello-0.0.1-SNAPSHOT.jar $HOME ENTRYPOINT ["java", "-jar", "/opt/app/hello-0.0.1-SNAPSHOT.jar" ] Se você usou seu próprio repositório de projeto e ele não continha um Dockerfile, você precisará criar um novo Dockerfile. Para criar um novo Dockerfile, execute o seguinte comando, que criará o novo arquivo. sudo touch Dockerfile Em seguida, você pode preencher esse arquivo com uma sequência de comandos que descrevem como construir um ambiente de aplicativo em contêiner. Esses comandos incluem ações como copiar arquivos na imagem, instalar software, definir variáveis de ambiente e configurar o contêiner. Para preencher o Dockerfile com esses comandos, execute o seguinte comando. vim Dockerfile O Dockerfile está pronto para uso. Etapa 7: faça login no Docker Agora que seu Dockerfile está preparado para uso, copie o artefato JAR do seu projeto da instância **"JenkinsServer"**EC2 e cole-o na instância EC2 . É importante observar que essa transferência será ainda mais automatizada através do pipeline. "AnsibleServer" Ao concluir esta etapa, você estará pronto para testar seu Dockerfile junto com o ambiente Docker que configurou. Antes de começar a testar, certifique-se de se autenticar no Dockerhub. Execute o seguinte comando. docker login Este comando solicitará que você forneça suas credenciais de login do Dockerhub, incluindo seu nome de usuário e senha. Com isso, você concluiu o processo de login no e agora está pronto para prosseguir com os testes. Docker Testando o ambiente Docker e Dockerfile Etapa 8: Com seu login bem-sucedido no Dockerhub concluído, você está pronto para começar a testar o Dockerfile que preparou. Execute este comando para criar uma imagem docker. docker build -t hello:latest . A seguir, execute o comando subsequente para estabelecer uma tag que facilitará o upload da imagem para o Dockerhub: docker tag hello:latest zufarexplainedit/hello:latest Por fim, prossiga para enviar a imagem do Docker para o Dockerhub por meio da execução deste comando. docker push zufarexplainedit/hello:latest Seguindo estas etapas, navegue até sua conta Dockerhub para verificar se você consegue ver uma nova imagem ou não. Agora você deve observar que a imagem foi efetivamente adicionada. Este resultado confirma a instalação bem-sucedida do ambiente Docker e que seu Dockerfile está correto. [Módulo 6]: Ansible Agora vamos configurar o Ansible Server na instância do EC2 Virtual Server. Etapa 1: criar uma instância do servidor virtual AWS EC2 Você precisa de um servidor virtual para executar o Ansible. Siga as instruções do deste tutorial para concluir esta etapa e criar uma instância de servidor virtual EC2 para Ansible. [Módulo 1]: seção Servidor virtual AWS EC2 Não se esqueça de adicionar uma configuração de grupo de segurança. Ele permite que e funcionem nas portas e respectivamente. Ansible SSH 8080 22, Use o nome para distinguir sua instância do EC2 Virtual Server. “AnsibleServer” Você pode reutilizar o grupo de segurança e para uma nova instância EC2 . “CI_CD_Pipeline” “CI_CD_Pipeline_Key_Pair“ “AnsibleServer” Etapa 2: conectar-se a uma instância do servidor virtual AWS EC2 Acesse a página inicial do Console AWS → Painel do Console de Gerenciamento EC2 → Instâncias → AnsibleServer. Em seguida, clique no botão . “Conectar” Então você verá esta página da web. Você deve clicar novamente no botão . “Conectar” Agora você pode ver o terminal online da instância do servidor virtual EC2. Agora vamos configurar o Ansible Server na instância do servidor virtual EC2. Etapa 3: Altere o nome do host da instância do servidor virtual AWS EC2 “AnsibleServer” A primeira coisa que você precisa fazer quando deseja configurar o AnsibleServer na instância do servidor virtual EC2 é alterar seu nome de host. Vamos fazê-lo. Execute este comando para abrir o arquivo hostname: sudo vi /etc/hostname Você deverá ver algo assim: Substitua este nome de host por Em seguida, reinicie-o. “ansible-server”. sudo init 6 Etapa 4: Adicionar e configurar um novo usuário na instância do servidor virtual AWS EC2 “AnsibleServer” Agora vamos adicionar um novo usuário à instância do servidor virtual AWS EC2. ansible-admin Para fazer isso use este comando: sudo useradd ansible-admin Em seguida, defina a senha para o usuário . ansible-admin sudo passwd ansible-admin Além disso, você precisa configurar os privilégios do usuário editando o arquivo . sudoers sudo visudo Adicione a este arquivo . “ansible-admin ALL=(ALL) ALL” sudoers Além disso, você precisa editar o arquivo para ativar o PasswordAuthentication. /etc/ssh/sshd_config sudo vi /etc/ssh/sshd_config Então você precisa recarregar o serviço para confirmar essas alterações. sudo service sshd reload Como resultado da execução deste comando, você verá: Agora você pode usar este comando para evitar a adição de sudo para todos os comandos adicionais. sudo su - ansible-admin Etapa 5: gerar chave em uma instância do servidor virtual AWS EC2 Você está planejando gerenciar servidores remotos, como instâncias de servidor virtual K8s EC2, mais adiante neste artigo. É por isso que você precisa configurar chaves SSH. ssh-keygen Como resultado da execução deste comando, você verá: Agora as chaves SSH estão geradas e prontas para uso. Etapa 6: instalar o Ansible Agora você pode instalar o Ansible em sua instância de servidor virtual EC2 . “AnsibleServer” Vamos fazê-lo. Execute este comando para instalar o Ansible. sudo amazon-linux-extras install ansible2 Para verificar o Ansible, use este comando: ansible --version Como resultado da execução deste comando, você verá: Etapa 7: Instale o plugin Jenkins “Publish over SSH” na instância JenkinsServer EC2 Como o Ansible está instalado em sua instância de servidor virtual EC2 , você pode configurar o Jenkins para integrá-lo ao Ansible. Você precisa instalar o plugin para integrar o Jenkins com a instância do EC2 Virtual Server onde o Ansible está instalado e com outras instâncias do EC2 Virtual Server onde está instalado. “AnsibleServer” “Publish over SSH” o Kubernetes Vá para → “ → → . “Painel” Gerenciar Jenkins” “Configurar Sistema” “Plugins disponíveis” Em seguida, digite na caixa de pesquisa. “Publicar por SSH“ Clique no botão . Aguarde o final do processo de download. “Instalar sem reiniciar” Agora o plugin “Publish over SSH” está instalado na instância do Jenkins EC2 Virtual Server. Etapa 8: configurar o plugin “Publicar sobre SSH” do Jenkins Com a instalação bem-sucedida do plugin Apache Maven Jenkins, agora você pode utilizar este plugin dentro do pipeline que criou e atualizou nos módulos 2 e 3. Para fazer isso, siga estas etapas: Vá para → → → . “Painel“ “Gerenciar Jenkins” “Configurar Sistema” “Publicar via SSH” Insira todos os dados necessários como estão na captura de tela, incluindo nome do host, nome de usuário e chave privada (ou senha, se aplicável). Em seguida, clique nos botões e . “Aplicar” “Salvar” Aqui você concluiu a configuração do plugin Jenkins . “Publicar sobre SSH” Em seguida, clique em “Test Configuration” para validar se o plugin está funcionando corretamente. No lado esquerdo você pode ver que o status de configuração do plugin de teste é “Sucesso”. Isso significa que a configuração do plugin está correta. Etapa 9: Crie um novo diretório Docker no AnsibleServer Você precisa criar uma nova pasta na instância do AnsibleServer EC2 onde o JAR do projeto será armazenado. Este jar será usado para criar uma imagem Docker posteriormente. Vamos começar. Vá para a pasta na instância do AnsibleServer EC2. “/opt” cd /opt Crie uma nova pasta lá. “docker” sudo mkdir docker Dê privilégios a esta pasta . “docker” sudo chown ansible-admin:ansible-admin docker Agora, verifique os privilégios da pasta executando este comando. “docker” ll Você pode ver que a pasta pode ser acessada pelo usuário . “docker” “ansible-admin” do Github ao Etapa 10: Integrar o plugin “Publicar sobre SSH” pipeline Agora que o plugin Github está instalado e configurado, você pode integrá-lo ao pipeline que criou no “[módulo 2]: Jenkins Server” para transferir um artefato jar do projeto de “ para . “Publish over SSH” JenkinsServer” “AnsibleServidor” Bem, para integrar o plugin do Github ao pipeline, você precisa seguir estas etapas: “Publish over SSH” Navegue até “Dashboard“ → “CI_CD_Pipeline“ → “Configurar“ → “Ações pós-construção”. Clique no botão . “Adicionar ação pós-construção” Escolha a opção . “Enviar artefatos de construção por SSH” Adicione na entrada na seção **.** “AnsibleServer” “Nome” “Servidor SSH” Adicione na entrada na seção **.** “target/*.jar” “Arquivos de origem” “Conjunto de transferência” Adicione na entrada na seção **.** “target/” “Remove prefix” “Transfer Set” Adicione na entrada na seção **.** “//opt/docker/” “Diretório remoto” “Conjunto de transferência” Por enquanto, basta colocar uma string vazia na entrada 'Exec command' na seção 'Transfer Set'. Por fim, você deve clicar nos botões e para finalizar a integração do plugin com o pipeline. “Aplicar” “Salvar” “Publicar sobre SSH” Etapa 11: Teste o plugin Github “Publish over SSH” integrado ao pipeline Agora você pode usar seu pipeline atualizado para transferir um artefato jar do projeto de “ para . Para fazer isso você precisa clicar no botão . Como resultado, você verá um resultado de trabalho bem-sucedido no histórico de construção. JenkinsServer” “AnsibleServer” “Construir agora” Se você abrir seu terminal AWS EC2 . Você pode verificar se o pipeline funciona bem. “AnsibleServer” Basta usar este comando. cd /opt/docker Dessa forma, você pode ver o artefato JAR, indicando a construção bem-sucedida do seu projeto no GitHub. Etapa 12: configurar hosts Ansible Ao executar um manual do Ansible, você especifica os hosts nos quais ele deve ser executado. Você pode fazer isso de duas maneiras: em seu playbook, você pode definir o parâmetro para uma lista de endereços IP ou nomes de host. Especifique hosts diretamente no playbook: hosts Ansible permite que você defina uma lista de hosts em um arquivo de inventário e faça referência a esse arquivo ao executar seu playbook. O arquivo de inventário padrão é . Use um arquivo de inventário: /etc/ansible/hosts Ao editar , você pode gerenciar facilmente grupos de hosts sem precisar escrever seus endereços IP sempre que executar um playbook. /etc/ansible/hosts Vamos descobrir o host da instância AnsibleServer EC2 executando o seguinte comando. sudo ifconfig Depois de descobrir o host da instância AnsibleServer EC2, você pode adicioná-lo ao arquivo hosts Ansible executando o seguinte comando. sudo vi /etc/ansible/hosts Você também pode adicionar “[ansible]” como referência Se você estiver gerenciando um cluster de servidores e quiser aplicar um manual a todos eles, em vez de especificar o endereço IP de cada servidor no manual, basta adicionar todos os servidores a um grupo no arquivo de inventário e, em seguida, especificar o grupo no manual. a autenticação SSH sem senha para localhost para Ansible Etapa 13: configurar Ansible foi projetado para automatizar tarefas em servidores remotos. A autenticação SSH sem senha permite que o Ansible se conecte a esses servidores sem a necessidade de inserção manual de senha. Execute este comando para criar uma conexão segura do seu computador para outro computador (como aquele no endereço IP 172.31.34.41), usando a chave SSH do usuário ansible-admin. sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address} No meu caso, é assim. sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub ansible-admin@172.31.34.41 Agora você pode ver . Isso significa que a instalação da autenticação SSH sem senha foi concluída com êxito. “Número de chaves adicionadas: 1” Etapa 14: crie um novo manual do Ansible para tarefas do Docker Agora que o Ansible está configurado e pronto para uso, você pode criar um novo manual do Ansible para o seu pipeline. Este manual permitirá que o Ansible crie e envie uma nova imagem Docker para o Dockerhub. Veja como você pode fazer isso: Comece criando um novo arquivo de manual do Ansible. Basta usar este comando. touch hello-app.yml Em seguida, edite o arquivo recém-criado. Abra-o para edição com este comando. hello-app.yml vi hello-app.yml Dentro do arquivo, digite o seguinte. --- - hosts: ansible user: root tasks: - name: create docker image command: docker build -t hello:latest . args: chdir: /opt/docker - name: create tag to push image onto dockerhub command: docker tag hello:latest zufarexplainedit/hello:latest - name: push docker image onto dockerhub command: docker push zufarexplainedit/hello:latest O manual do Ansible para tarefas do Docker está pronto para uso. Etapa 13: teste o manual do Ansible com tarefas do Docker Com Ansible, Ansible playbook, AnsibleServer e JenkinsServer todos configurados corretamente, é hora de testar o playbook Ansible. Navegue até o local do seu manual do Ansible. cd /opt/docker Em seguida, execute o seguinte comando. sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml Após a conclusão, você verá o resultado da execução bem-sucedida de seu manual do Ansible. Além disso, reserve um momento para visitar sua conta Dockerhub e verifique se uma nova imagem está visível. Você deverá ver a imagem recém-adicionada. Este resultado confirma que seu manual do Ansible está correto. ao Etapa 14: Integrar tarefas do Ansible Docker pipeline Agora que o plugin do Github, Ansible e Docker estão instalados e configurados, você pode integrá-los todos no pipeline que você criou no “[módulo 2]: Jenkins Server” para transferir um artefato jar do projeto de “ para e, em seguida, construa uma nova imagem Docker a partir do seu projeto e, em seguida, envie esta imagem Docker para o Dockerhub. “Publish over SSH” JenkinsServer” “AnsibleServer” Para alcançá-lo, você precisa seguir estas etapas: Navegue até “Dashboard“ → “CI_CD_Pipeline“ → “Configurar“ → “Ações pós-compilação” → “Enviar artefatos de compilação por SSH” . Adicione o comando na entrada . “sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml” “Exec command” Por fim, clique nos botões e para finalizar as tarefas de integração do Ansible Docker com o pipeline. “Aplicar” “Salvar” ” Etapa 15: Teste o “manual Ansible com tarefas Docker integrado ao pipeline Agora você pode testar seu pipeline atualizado para transferir perfeitamente um artefato jar do projeto de “ para em seguida, construir uma nova imagem Docker de seu projeto e, em seguida, enviar essa imagem Docker para Dockerhub. Para fazer isso você precisa clicar no botão . Como resultado, você verá um resultado de trabalho bem-sucedido no histórico de construção. JenkinsServer” “AnsibleServer”, “Construir agora” Além disso, reserve um momento para visitar sua conta Dockerhub e verifique se uma nova imagem está visível. Você deverá ver a imagem recém-adicionada. Este resultado confirma que seu manual do Ansible com tarefas do Docker foi integrado com êxito ao pipeline. [Módulo 7]: Kubernetes Agora vamos configurar K8s na instância EC2. Você criará uma nova instância EC2 e instalará sua ferramenta de linha de comando kubectl para interagir ainda mais com um cluster . Kubernetes Etapa 1: iniciar uma instância do servidor virtual AWS EC2 Use as instruções da seção “ deste tutorial para concluir esta etapa. Iniciar uma instância do servidor virtual AWS EC2” Não se esqueça de adicionar uma configuração de grupo de segurança. Ele permite que e funcionem nas portas e respectivamente. todas as ferramentas SSH 8080 22, Use o nome para distinguir sua instância do EC2 Virtual Server. “K8sServer” Você pode reutilizar o grupo de segurança e para uma nova instância EC2 . “CI_CD_Pipeline” “CI_CD_Pipeline_Key_Pair“ “K8sServer” Etapa 2: conectar-se a uma instância do servidor virtual AWS EC2 Clique no botão “Conectar”. Agora você pode ver o terminal online da instância do EC2 Virtual Server. Etapa 3: Altere o nome do host da instância do servidor virtual AWS EC2 “KubernetesServer” A primeira coisa que você precisa fazer quando deseja configurar o KuberenetesServer na instância do servidor virtual EC2 é alterar seu nome de host. Vamos fazê-lo. Execute este comando para abrir o arquivo hostname: sudo vi /etc/hostname Você deveria ver algo assim. Substitua este nome de host por reinicie-o. “kubernetes-server” e sudo init 6 Seu nome de host foi alterado. Etapa 4: verifique a versão do AWS CLI Use este comando para verificar a versão . da AWS aws --version Dessa forma, você pode ver sua versão atual do aws-cli. Se você puder ver a versão , deverá baixar a versão mais recente. aws-cli/1.18 Etapa 5: atualizar AWS CLI Agora que você descobriu que tem uma versão antiga do aws-cli em sua instância EC2, você precisa atualizá-la. Para isso, vá para AWS → Documentação → AWS Command Line Interface → Guia do usuário para versão 2. Copie e cole . o comando curl Primeiro, execute este comando para baixar o awscli versão 2. curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" Aguarde o início do processo de download. Você deveria ver algo assim. Em segundo lugar, você precisa executar este comando para descompactar o arquivo awscli versão 2. unzip awscliv2.zip Terceiro, você deve executar este comando para instalar o awscli versão 2. sudo ./aws/install Em seguida, recarregue o terminal online da instância do Kubernetes EC2 Virtual Server. A seguir, use este comando para verificar a versão AWS aws --version Você pode ver que o aws cli tem aws-cli/2. Etapa 6: instalar o kubectl é uma ferramenta de linha de comando fundamental para interagir com qualquer cluster Kubernetes, independentemente da infraestrutura subjacente. Ele permite gerenciar recursos, implantar aplicativos, configurar redes, acessar logs e executar várias outras tarefas em um cluster Kubernetes. Kubectl Agora você precisa instalar a ferramenta de linha de comando kubectl para interagir ainda mais com um cluster Kubernetes. Para isso você precisa ir para → → → → ou → . AWS Documentação Amazon EKS Guia do usuário Instalando atualizando kubectl Linux Ou apenas clique no link . https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html Primeiro, execute este comando para baixar o kubectl. curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl Aguarde o processo de download. Você verá algo assim. Dê permissão ao kubectl. chmod +x kubectl Mova o kubectl para a pasta /usr/local/bin. sudo mv kubectl /usr/local/bin Verifique a versão do kubectl. kubectl version --output=yaml Etapa 7: instalar o eksctl é outra ferramenta de linha de comando adaptada especificamente para o serviço Amazon EKS. Eksctl pode ser usado para criar clusters AWS EKS, gerenciar grupos de nós e executar tarefas específicas do EKS, como integração com funções IAM e outros serviços AWS, abstraindo grande parte da configuração e gerenciamento da infraestrutura AWS. Eksctl Execute o comando para baixar o kubectl. curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp Mova eksctl para a pasta /usr/local/bin. sudo mv /tmp/eksctl /usr/local/bin Verifique a versão do eksctl. eksctl version Você deve ver a versão Etapa 8: Criar função IAM para eksctl Você precisa criar uma função IAM e anexá-la à sua instância EC2 . “KubernetesServer” Para fazer isso você precisa encontrar o EC2 na caixa de pesquisa. Escolha EC2 Virtual Server clicando no link . https://us-east-1.console.aws.amazon.com/ec2/ Vá para → . Painel IAM Funções Clique no botão na página da web de funções . “Criar função” do IAM Em seguida, escolha E clique no botão . “serviço AWS”, “EC2”. “Avançar” Em seguida, encontre , , , na caixa de pesquisa e clique no botão . “AmazonEC2FullAccess” “AmazonEC2FullAccess“ “IAMFullAccess“ “AWSCloudFormationFullAccess“ “Adicionar permissões” E então clique no botão . “Avançar” Em seguida, digite na entrada . “Eksctl_Role” “Nome da função” E clique no botão . “Criar função” A função é criada finalmente. Etapa 9: conectar a função IAM com eksctl Acesse a página da web da instância AWS EC2. Escolha Em seguida, clique em → → “KuberbetesServer”. “Ações” “Segurança” “Modificar função IAM”. Escolha e clique no botão . “Eksctl_Role” “Atualizar função IAM” Agora sua função IAM está conectada ao seu e à ferramenta eksctl. “EKS_Server” Etapa 10: Criar cluster eksctl é um ambiente Kubernetes gerenciado na AWS, automatizando tarefas complexas de infraestrutura, como configuração, escalabilidade e manutenção. É essencial porque fornece uma plataforma eficiente, segura e otimizada para AWS para implantação, gerenciamento e dimensionamento de aplicativos em contêineres, simplificando as operações e liberando os desenvolvedores para se concentrarem na codificação em vez de no gerenciamento da infraestrutura subjacente. Um cluster Amazon EKS (Elastic Kubernetes Service) Agora é hora de configurar seu cluster EKS. Para conseguir isso, siga estas etapas: Modifique o seguinte comando com suas informações específicas. eksctl create cluster --name cluster-name \ --region region-name \ --node-type instance-type \ --nodes-min 2 \ --nodes-max 2 \ --zones <AZ-1>,<AZ-2> Por exemplo, no meu caso, é assim. eksctl create cluster --name zufarexplainedit \ --region eu-north-1 \ --node-type t3.micro Execute o comando modificado e aguarde pacientemente a conclusão do processo de criação do cluster. Você notará que o status do cluster EKS é indicado como na página da web do AWS CloudFormation. "criando" O procedimento de criação do cluster normalmente leva cerca de 20 minutos. Depois de concluído, o terminal exibirá o resultado do processo. Além disso, você pode verificar o status de criação bem-sucedida na página da web do AWS CloudFormation. do cluster EKS Etapa 11: Criar arquivo yaml de implantação do Kubernetes é um script de configuração escrito no formato YAML que define como gerenciar e manter um aplicativo ou serviço específico em um cluster Kubernetes. Ele encapsula instruções para orquestrar a implantação, dimensionamento, atualização e monitoramento de contêineres que executam o aplicativo. Este arquivo inclui detalhes como imagem do contêiner, número desejado de réplicas, limites de recursos, variáveis de ambiente, configurações de rede e muito mais. Quando aplicado a um cluster Kubernetes, o arquivo YAML de implantação garante o estado desejado da aplicação, gerenciando automaticamente a criação, escalonamento e recuperação de contêineres para manter o nível desejado de disponibilidade e confiabilidade. Um arquivo YAML de implantação do Kubernetes Agora, conforme o cluster Kubernetes, eksctl e kubectl estão instalados e configurados, você pode criar um arquivo yaml de implantação do Kubernetes. Você pode fazer isso executando o seguinte comando. touch hello-app-deployment.yaml Em seguida, edite este arquivo executando o seguinte comando. vi hello-app-deployment.yaml Adicione este conteúdo ao hello-app-deployment.yaml. apiVersion: apps/v1 kind: Deployment metadata: name: zufarexplainedit-hello-app labels: app: hello-app spec: replicas: 2 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: containers: - name: hello-app image: zufarexplainedit/hello imagePullPolicy: Always ports: - containerPort: 8080 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 Agora hello-app-deployment.yaml está criado e pronto para uso. Etapa 12: Criar arquivo yaml do serviço Kubernetes é um script de configuração escrito no formato YAML que define uma abstração de rede para um conjunto de pods, permitindo que eles sejam acessados de forma consistente em um cluster Kubernetes. Este arquivo descreve como o serviço deve ser descoberto, acessado e balanceado por outros serviços ou clientes externos. Inclui especificações como tipo de serviço (ClusterIP, NodePort, LoadBalancer), números de porta, seletores para identificar pods e muito mais. Quando aplicado a um cluster Kubernetes, o arquivo YAML de serviço cria um IP virtual e uma porta que roteia o tráfego para os pods apropriados, abstraindo as alterações subjacentes do pod e fornecendo um endpoint estável para comunicação, permitindo conectividade contínua e escalonamento dinâmico. Um arquivo YAML do serviço Kubernetes À medida que o cluster Kubernetes, eksctl e kubectl são instalados e configurados, você pode criar o arquivo yaml do serviço Kubernetes. Para fazer isso, você precisa criar um arquivo yaml do serviço Kubernetes executando o seguinte comando. touch hello-app-service.yaml Em seguida, edite este arquivo executando o seguinte comando. vi hello-app-service.yaml Adicione este conteúdo ao hello-app-deployment.yaml. apiVersion: v1 kind: Service metadata: name: zufarexplainedit-hello-app-service labels: app: hello-app spec: selector: app: hello-app ports: - port: 8080 targetPort: 8080 type: LoadBalancer Agora hello-app-service.yaml está criado e pronto para uso. Etapa 13: testar o cluster Kubernetes usando kubectl Com seu cluster Kubernetes EKS instalado e configurado com sucesso, e seu serviço Kubernetes e arquivos de implantação prontos, é hora de colocar as coisas à prova usando comandos kubectl. Aplicar implantação. Use o comando a seguir para aplicar a configuração de implantação. kubectl apply -f hello-app-deployment.yaml Isso criará uma implantação com o número especificado de réplicas e uma estratégia de atualização contínua, garantindo a disponibilidade e a capacidade de gerenciamento do seu aplicativo. 2. Aplicar serviço. Em seguida, aplique a configuração do serviço. kubectl apply -f hello-app-service.yaml Isso configurará um serviço do tipo LoadBalancer, expondo sua aplicação à internet. Observe que pode demorar um pouco para que o LoadBalancer seja provisionado e adquira um endereço IP externo. Verifique o status do LoadBalancer. Monitore o status do seu serviço usando. kubectl get service zufarexplainedit-hello-app-service Quando um IP externo é atribuído, você está quase pronto para acessar seu aplicativo. Acesse seu aplicativo. Usando um navegador da web, insira o endereço IP externo atribuído seguido de :8080. Após um breve momento, a página será carregada, exibindo a mensagem “HelloWorld”. Lembre-se de que o carregamento inicial pode demorar alguns segundos. Limpando com comandos kubectl Quando precisar organizar recursos em seu ambiente Kubernetes, você pode usar os seguintes comandos kubectl para remover efetivamente implantações, pods e serviços. . 1. Exclua todas as implantações Para excluir todas as implantações, você pode usar o comando a seguir. kubectl delete deployments --all Esta ação garante que nenhuma instância de implantação ativa seja deixada em seu cluster. . 2. Exclua todos os pods Se precisar excluir todos os pods, sejam eles gerenciados por uma implantação ou não, você pode usar o comando a seguir. kubectl delete pods --all A limpeza dos pods pode ajudar a redefinir o estado do cluster ou a preparar-se para novas implantações. . 3. Exclua todos os serviços Para limpar serviços que expõem seus aplicativos à rede, você pode usar o comando a seguir. kubectl delete services --all A remoção de serviços pode envolver tempo de inatividade, portanto considere as implicações antes de prosseguir. Excluir um cluster do Amazon EKS Para remover todos os recursos associados ao cluster especificado do Amazon EKS criado com , incluindo nós de trabalho, componentes de rede e outros recursos, você pode usar o comando a seguir. eksctl eksctl delete cluster --name {your cluster name} --region {your region name} Para mim é. eksctl delete cluster --name zufarexplainedit --region eu-north-1 Certifique-se de ter certeza de interromper o cluster, pois essa ação é irreversível e resultará em perda de dados. Etapa 14: Adicionar e configurar um novo usuário na instância do servidor virtual AWS EC2 “KubernetesServer” Agora vamos adicionar um novo usuário à instância do servidor virtual AWS EC2 . ansible-admin “KubernetesServer” Para fazer isso use este comando. sudo useradd ansible-admin Em seguida, defina a senha para o usuário . ansible-admin sudo passwd ansible-admin Além disso, você precisa configurar os privilégios do usuário editando o arquivo . sudoers sudo visudo Adicione a este arquivo . “ansible-admin ALL=(ALL) ALL” sudoers Além disso, você precisa editar o arquivo para ativar o PasswordAuthentication. /etc/ssh/sshd_config sudo vi /etc/ssh/sshd_config Então você precisa recarregar o serviço para fazer essas alterações. sudo service sshd reload Como resultado da execução deste comando, você verá: Agora você pode usar este comando para evitar a adição de sudo para todos os comandos adicionais. sudo su - ansible-admin Etapa 15: gerar chave em uma instância do servidor virtual AWS EC2 Você está planejando gerenciar servidores remotos, como a instância de servidor virtual EC2, mais adiante neste artigo. É por isso que você precisa configurar chaves SSH. K8s ssh-keygen Como resultado da execução deste comando, você verá: Agora as chaves SSH estão geradas e prontas para uso. a autenticação SSH sem senha para localhost para Ansible Etapa 16: configurar Ansible foi projetado para automatizar tarefas em servidores remotos. A autenticação SSH sem senha permite que o Ansible se conecte a esses servidores sem a necessidade de inserção manual de senha. Execute este comando para criar uma conexão segura do seu computador para outro computador (como aquele no endereço IP 172.31.34.41), usando a chave SSH do usuário ansible-admin. sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address} No meu caso, é assim. sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub ansible-admin@172.31.34.41 Agora você pode ver . Isso significa que a instalação da autenticação SSH sem senha foi concluída com êxito. “Número de chaves adicionadas: 1” Etapa 17: Configurar hosts Ansible na instância AnsibleServer EC2 Ao executar um manual do Ansible, você especifica os hosts nos quais ele deve ser executado. Nesta etapa, você precisa especificar o host da instância KubernetesServer EC2. Para fazer isso você precisa repetir os mesmos passos que você passou em “ [Módulo 6]: Ansible”. Vamos descobrir o host da instância KubernetesServer EC2 executando o seguinte comando. sudo ifconfig Depois de encontrar o host da instância KubernetesServer EC2, você pode adicioná-lo ao arquivo de hosts Ansible executando o comando a seguir. sudo vi /etc/ansible/hosts Você também pode adicionar “[kubernetes]” como referência Etapa 18: crie um novo manual do Ansible para tarefas do Kubernetes Agora que o Kubernetes está configurado e pronto para uso, você pode criar um novo manual do Ansible com tarefas do Kubernetes para seu pipeline. Este manual permitirá que o Ansible execute seu aplicativo no cluster Kubernetes com comandos kubectl. Veja como você pode fazer isso: Comece criando um novo arquivo de manual do Ansible. Basta usar este comando. touch kubernetes-hello-app.yml Em seguida, edite o arquivo recém-criado. Abra-o para edição com este comando. hello-app.yml vi kubernetes-hello-app.yml Dentro do arquivo, digite o seguinte: --- - hosts: kubernetes tasks: - name: deploy regapp on kubernetes command: kubectl apply -f hello-app-deployment.yaml - name: create service for regapp command: kubectl apply -f hello-app-service.yaml - name: update deployment with new pods if image updated in docker hub command: kubectl rollout restart deployment.apps/zufarexplainedit-hello-app O manual do Ansible para tarefas do Kubernetes está pronto para uso. Etapa 19: integre um novo manual do Ansible para tarefas do Kubernetes com Jenkins Agora que o Kubernetes, o Ansible e o manual do Ansible para tarefas do Kubernetes estão configurados e prontos para uso, você pode integrá-lo ao Jenkins. Vá para JenkinsServer → Painel do Jenkins → Novo item. Crie um novo projeto Jenkins Freestyle com o nome “CD-Job”. Clique no botão “OK”. Vá para a seção “Ações pós-construção”. Clique no botão “Adicionar ação pós-construção”. Escolha a opção “Enviar artefatos de construção por SSH”. Escolha “AnsibleServer” como servidor SSH. Adicione este comando à entrada “exec command”. sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml Clique nos botões “Aplicar” e “Salvar”. Vá para o painel do Jenkins → “CI_CD_Pipeline” → Configurar → seção “Ações pós-compilação”. Clique no botão “Adicionar ação pós-construção”. Escolha a opção “Construir outros projetos”. Vá para a seção “Construir outros projetos”. Escolha a opção “Acionar somente se a compilação for estável”. Adicione “CD-Job” à entrada “Projeto para construção”. Clique nos botões “Aplicar” e “Salvar”. Agora você pode considerar que o pipeline está totalmente finalizado e pronto para uso. Etapa 20: Testando a versão final do pipeline Agora é a hora de testar a versão final do pipeline. Navegue até Jenkins → painel do Jenkins → "CI_CD_Pipeline". Clique no botão "Construir agora". Para ver os resultados, revise os logs do console de build. Você notará que o "CD-Job" foi acionado nos logs do console de construção e o status final está marcado como SUCESSO. 4 Além disso, você pode acessar o Dockerhub para confirmar a adição da nova imagem do Docker. E, finalmente, você pode acessar seu aplicativo usando um navegador da web. Insira o endereço IP externo atribuído seguido de ":8080". Após um breve momento, a página será carregada, mostrando a mensagem “HelloWorld”. Conclusão Parabéns pela configuração deste pipeline de CI/CD moderno! Você fez um trabalho incrível e é um verdadeiro herói! Obrigado por todo o seu esforço! Sobre o autor é um experiente engenheiro de software sênior apaixonado por projetar sistemas de software modernos. Zufar Sunagatov Desenvolvi sistemas distribuídos de alto desempenho usando Java, Kotlin, AWS, Docker e Kubernetes para empresas como Citi (Londres), MTS (Moscou) e outras ( ). você pode seguir o perfil de Zufar no LinkedIn para mais informações Fundou o Ice Latte, um mercado online de código aberto do zero (você pode se juntar à equipe de Zufar e contribuir com seu projeto no GitHub: ). https://github.com/Sunagatov/Online-Store Estabeleceu a comunidade ZufarExplainedIT para compartilhar seu conhecimento e experiência com outras pessoas (você pode seguir a comunidade IT Telegram de Zufar: ). https://t.me/zufarexplained Foi mentor por mais de 3.000 minutos e conduziu 60 sessões no ADPlist, nutrindo aspirantes a talentos ( ). você pode ser orientado por Zufar no ADPlist Envolveu o público como palestrante em conferências e canais de TI no YouTube, compartilhando insights valiosos (exemplos de seus vídeos no YouTube incluem: , ). “Тестовое собеседование Java разработчика #27 - Зуфар Сунагатов” “Aspiring Speakers Lunchtime Lightning Talks 28 de maio” É autor de artigos de TI altamente populares com mais de 7.000 visualizações cada (exemplos de seus artigos são: , ). “Microservice Architecture Patterns Part 1: Decomposition Patterns” “Что значит «вариативный»? Объясняем простыми словами”