Em meu artigo anterior, mergulhei no fascinante mundo dos microsserviços - Microservice Architecture Patterns Part 1: Decomposition Patterns . Este foi o início da minha série abrangente de artigos sobre microsserviços e seus padrões.
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 AWS, Docker, Kubernetes, Ansible, Git, Apache Maven e Jenkins . Então, vamos começar esta jornada!
Clique no botão Crie uma conta AWS .
Acesse //console.aws.amazon.com/console/home. Clique no botão Entrar .
Escolha EC2 Virtual Server clicando em EC2 Service .
Clique no botão Iniciar instância .
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” .
Vá para a seção "Imagens de aplicativos e sistema operacional (imagem de máquina Amazon)" .
Para jogar GRATUITAMENTE com o servidor virtual:
Vá para a seção “Tipo de instância” .
Para jogar GRATUITAMENTE com o servidor virtual:
Selecione um tipo com a tag qualificada para nível gratuito na seção Tipo de instância .
Para mim é t2.micro (Família: t2 1cCPU 1 GiB Memory Geração atual:true) .
Vá para a seção “Configurar armazenamento” .
Para jogar GRATUITAMENTE com o servidor virtual:
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 .
Vá para a seção “Configurações de rede” .
Por padrão, seu servidor virtual é acessível via ( Tipo - SSH, Protocolo - TCP, Porta - 22 ). Se precisar de tipos de conexão adicionais, adicione-os adicionando regras adicionais de grupo de segurança de entrada.
Vá para a seção “Par de chaves (Login)” .
Se você ainda não criou o “par de chaves” :
Inicie a instância do EC2 Virtual Server clicando no botão “Iniciar instância” .
Então você deve ir para a seção “Instâncias” clicando no botão “Ver todas as instâncias” .
Agora você pode ver que sua instância do servidor virtual AWS EC2 está em execução.
Siga as instruções do [Módulo 1]: seção Servidor virtual AWS EC2 deste tutorial para concluir esta etapa e criar uma instância de servidor virtual EC2 com o nome JenkinsServer.
Não se esqueça de adicionar uma configuração de grupo de segurança. Ele permite que Jenkins e SSH funcionem nas portas 8080 e 22, respectivamente.
Use o nome “JenkinsServer” para distinguir sua instância do EC2 Virtual Server.
Crie o grupo de segurança “CI_CD_Pipeline” e “CI_CD_Pipeline_Key_Pair“ para uma nova instância “JenkinsServer” AWS EC2. Você pode reutilizá-los posteriormente no artigo.
Acesse a página inicial do Console AWS → Painel do Console de Gerenciamento EC2 → Instâncias.
Então você deve escolher JenkinsServer e clicar no botão “Conectar” .
Então você verá esta página da web. Você deve clicar novamente no botão “Conectar” .
sudo wget -O /etc/yum.repos.d/jenkins.repo //pkg.jenkins.io/redhat-stable/jenkins.repo
Agora o Jenkins foi baixado.
Para importar a chave Jenkins precisamos copiar o comando “sudo rpm..” e executá-lo.
sudo rpm --import //pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
Desta forma, o gerenciador de pacotes “rpm” 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.
Para executar o Jenkins, precisamos instalar o Java em nossa instância de servidor virtual EC2.
Para instalar o Java , use este comando.
sudo amazon-linux-extras install java-openjdk11 -y
Verifique se o Java foi instalado corretamente usando este comando:
java -version
Para executar o Jenkins, você precisa instalar o fontconfig em nossa instância de servidor virtual EC2.
Use este comando. sudo yum install fontconfig java-11-openjdk -y
sudo yum install jenkins -y
sudo systemctl start jenkins
sudo systemctl status jenkins
//<your-ec2-ip>:8080
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
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 descrição do 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
sudo yum install git -y
git --version
Agora o Git está funcionando bem na instância do EC2 Virtual Server.
Clique no botão “Gerenciar Jenkins” e depois clique no botão “Gerenciar Plugins” .
Clique no botão “Plugins disponíveis” .
Encontre a caixa de pesquisa do plugin Github .
Selecione o plug-in do Github .
Selecione o plug-in do Github . E então clique no botão “Instalar sem reiniciar” .
Em seguida, na página principal, você precisa clicar no botão “Gerenciar Jenkins” e a seguir clicar no botão “Configuração global da ferramenta” .
Em seguida, clique nos botões “Aplicar” e “Salvar” **.**
Basta copiar e colar na entrada “ URL do repositório” . Em seguida, clique nos botões “Aplicar” e “Salvar” para finalizar a integração do Git com o pipeline.
cd /var/lib/jenkins/workspace/{your pipeline name}
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.
Para baixar o Apache Maven vá para o diretório “/opt” .
cd /opt
sudo wget //dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz
sudo tar -xvzf apache-maven-*.tar.gz
cd ~
Edite o arquivo .bash_profile usando este comando.
vi .bash_profile
Adicione variáveis JAVA_HOME e M2_HOME.
Atribua o caminho para JDK11 para JAVA_HOME e o caminho para o diretório maven para a variável M2_HOME .
sudo find / -name java
Como usar o VIM
source .bash_profile
Para verificar $PATH , use este comando.
echo $PATH
Para verificar o Apache Maven , use este comando.
mvn -v
Para conseguir isso, siga estas etapas:
E então clique no botão “Voltar para a página inicial” .
Para fazer isso, siga estas etapas:
Em seguida, vá para a seção “Maven” . Clique no botão “Adicionar Maven” . Desmarque “Instalar automaticamente”.
Em seguida, adicione o nome e o caminho MAVEN_HOME .
Clique nos botões “Aplicar” e “Salvar” .
Aqui, você concluiu a configuração do plugin Apache Maven Jenkins.
Para integrar o Apache Maven ao pipeline, você precisa seguir estas etapas:
Por fim, você deve clicar nos botões “Aplicar” e “Salvar” para finalizar a integração do Apache Maven com o pipeline.
cd /var/lib/jenkins/workspace/{your pipeline name}/target
Use as instruções da seção “ Iniciar uma instância do servidor virtual AWS EC2” 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.
sudo chown ansible-admin:ansible-admin /opt/docker
sudo mkdir /opt/docker
sudo yum install docker -y
Você precisa adicionar o usuário atual “ansible-admin” ao grupo Docker no servidor virtual EC2 “AnsibleServer” para conceder privilégios de administrador ao Docker.
sudo usermod -a -G docker ansible-admin
id ansible-admin
sudo systemctl start docker
sudo systemctl status docker
Se você usou o projeto “Hello” que foi oferecido no módulo “ [Módulo 3]: Git e Github” , então você não precisa criar um novo Dockerfile, pois este repositório do projeto já contém Dockerfile.
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" ]
sudo touch Dockerfile
vim Dockerfile
O Dockerfile está pronto para uso.
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 "AnsibleServer" . É importante observar que essa transferência será ainda mais automatizada através do pipeline.
Ao concluir esta etapa, você estará pronto para testar seu Dockerfile junto com o ambiente Docker que configurou.
docker login
Com isso, você concluiu o processo de login no Docker e agora está pronto para prosseguir com os testes.
docker build -t hello:latest .
docker tag hello:latest zufarexplainedit/hello:latest
docker push zufarexplainedit/hello:latest
Siga as instruções do [Módulo 1]: seção Servidor virtual AWS EC2 deste tutorial para concluir esta etapa e criar uma instância de servidor virtual EC2 para Ansible.
Não se esqueça de adicionar uma configuração de grupo de segurança. Ele permite que Ansible e SSH funcionem nas portas 8080 e 22, respectivamente.
Use o nome “AnsibleServer” para distinguir sua instância do EC2 Virtual Server.
Você pode reutilizar o grupo de segurança “CI_CD_Pipeline” e “CI_CD_Pipeline_Key_Pair“ para uma nova instância EC2 “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” .
sudo vi /etc/hostname
Substitua este nome de host por “ansible-server”. Em seguida, reinicie-o.
sudo init 6
Agora vamos adicionar um novo usuário ansible-admin à instância do servidor virtual AWS EC2.
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 “ansible-admin ALL=(ALL) ALL” a este arquivo sudoers .
Além disso, você precisa editar o arquivo /etc/ssh/sshd_config para ativar o PasswordAuthentication.
sudo vi /etc/ssh/sshd_config
sudo service sshd reload
sudo su - ansible-admin
ssh-keygen
Agora você pode instalar o Ansible em sua instância de servidor virtual EC2 “AnsibleServer” .
Vamos fazê-lo.
sudo amazon-linux-extras install ansible2
ansible --version
Como o Ansible está instalado em sua instância de servidor virtual EC2 “AnsibleServer” , você pode configurar o Jenkins para integrá-lo ao Ansible. Você precisa instalar o plugin “Publish over SSH” 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 o Kubernetes está instalado.
Vá para “Painel” → “ Gerenciar Jenkins” → “Configurar Sistema” → “Plugins disponíveis” .
Em seguida, digite “Publicar por SSH“ na caixa de pesquisa.
Clique no botão “Instalar sem reiniciar” . Aguarde o final do processo de download.
Para fazer isso, siga estas etapas:
Vá para “Painel“ → “Gerenciar Jenkins” → “Configurar Sistema” → “Publicar via SSH” .
Em seguida, clique nos botões “Aplicar” e “Salvar” .
Aqui você concluiu a configuração do plugin Jenkins “Publicar sobre SSH” .
Vá para a pasta “/opt” na instância do AnsibleServer EC2.
cd /opt
Crie uma nova pasta “docker” lá.
sudo mkdir docker
Dê privilégios a esta pasta “docker” .
sudo chown ansible-admin:ansible-admin docker
Agora, verifique os privilégios da pasta “docker” executando este comando.
ll
Você pode ver que a pasta “docker” pode ser acessada pelo usuário “ansible-admin” .
Agora que o plugin Github “Publish over SSH” 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 “ JenkinsServer” para “AnsibleServidor” .
Bem, para integrar o plugin “Publish over SSH” do Github ao pipeline, você precisa seguir estas etapas:
Por fim, você deve clicar nos botões “Aplicar” e “Salvar” para finalizar a integração do plugin “Publicar sobre SSH” com o pipeline.
Agora você pode usar seu pipeline atualizado para transferir um artefato jar do projeto de “ JenkinsServer” para “AnsibleServer” . 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 “AnsibleServer” . Você pode verificar se o pipeline funciona bem.
Basta usar este comando.
cd /opt/docker
hosts
para uma lista de endereços IP ou nomes de host./etc/ansible/hosts
.
Ao editar /etc/ansible/hosts
, você pode gerenciar facilmente grupos de hosts sem precisar escrever seus endereços IP sempre que executar um playbook.
sudo ifconfig
sudo vi /etc/ansible/hosts
sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}
sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected]
Agora você pode ver “Número de chaves adicionadas: 1” . Isso significa que a instalação da autenticação SSH sem senha foi concluída com êxito.
touch hello-app.yml
hello-app.yml
recém-criado. Abra-o para edição com este comando. vi hello-app.yml
--- - 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.
cd /opt/docker
sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml
Agora que o plugin “Publish over SSH” 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 “ JenkinsServer” para “AnsibleServer” e, em seguida, construa uma nova imagem Docker a partir do seu projeto e, em seguida, envie esta imagem Docker para o Dockerhub.
Para alcançá-lo, você precisa seguir estas etapas:
Por fim, clique nos botões “Aplicar” e “Salvar” para finalizar as tarefas de integração do Ansible Docker com o pipeline.
Agora você pode testar seu pipeline atualizado para transferir perfeitamente um artefato jar do projeto de “ JenkinsServer” para “AnsibleServer”, 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 “Construir agora” . Como resultado, você verá um resultado de trabalho bem-sucedido no histórico de construção.
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 .
Use as instruções da seção “ Iniciar uma instância do servidor virtual AWS EC2” deste tutorial para concluir esta etapa.
Não se esqueça de adicionar uma configuração de grupo de segurança. Ele permite que todas as ferramentas e SSH funcionem nas portas 8080 e 22, respectivamente.
Use o nome “K8sServer” para distinguir sua instância do EC2 Virtual Server.
Você pode reutilizar o grupo de segurança “CI_CD_Pipeline” e “CI_CD_Pipeline_Key_Pair“ para uma nova instância EC2 “K8sServer” .
sudo vi /etc/hostname
Substitua este nome de host por “kubernetes-server” e reinicie-o.
sudo init 6
Use este comando para verificar a versão da AWS .
aws --version
Se você puder ver a versão aws-cli/1.18 , deverá baixar a versão mais recente.
Copie e cole o comando curl .
curl "//awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
Aguarde o início do processo de download.
unzip awscliv2.zip
sudo ./aws/install
aws --version
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.
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 AWS → Documentação → Amazon EKS → Guia do usuário → Instalando ou atualizando kubectl → Linux .
curl -O //s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin
kubectl version --output=yaml
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.
curl --silent --location "//github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
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.
Vá para Painel IAM → Funções .
Clique no botão “Criar função” na página da web de funções do IAM .
Em seguida, escolha “serviço AWS”, “EC2”. E clique no botão “Avançar” .
Em seguida, encontre “AmazonEC2FullAccess” , “AmazonEC2FullAccess“ , “IAMFullAccess“ , “AWSCloudFormationFullAccess“ na caixa de pesquisa e clique no botão “Adicionar permissões” .
E então clique no botão “Avançar” .
Em seguida, digite “Eksctl_Role” na entrada “Nome da função” .
E clique no botão “Criar função” .
Acesse a página da web da instância AWS EC2. Escolha “KuberbetesServer”. Em seguida, clique em “Ações” → “Segurança” → “Modificar função IAM”.
Escolha “Eksctl_Role” e clique no botão “Atualizar função IAM” .
Agora sua função IAM está conectada ao seu “EKS_Server” e à ferramenta eksctl.
Um cluster Amazon EKS (Elastic Kubernetes Service) é 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.
Para conseguir isso, siga estas etapas:
eksctl create cluster --name cluster-name \ --region region-name \ --node-type instance-type \ --nodes-min 2 \ --nodes-max 2 \ --zones <AZ-1>,<AZ-2>
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 "criando" na página da web do AWS CloudFormation.
Além disso, você pode verificar o status de criação bem-sucedida do cluster EKS na página da web do AWS CloudFormation.
Um 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.
touch hello-app-deployment.yaml
vi 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
Um 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.
touch hello-app-service.yaml
vi hello-app-service.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.
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.
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. Para remover todos os recursos associados ao cluster especificado do Amazon EKS criado com eksctl
, incluindo nós de trabalho, componentes de rede e outros recursos, você pode usar o comando a seguir.
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.
Agora vamos adicionar um novo usuário ansible-admin à instância do servidor virtual AWS EC2 “KubernetesServer” .
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 “ansible-admin ALL=(ALL) ALL” a este arquivo sudoers .
Além disso, você precisa editar o arquivo /etc/ssh/sshd_config para ativar o PasswordAuthentication.
sudo vi /etc/ssh/sshd_config
sudo service sshd reload
sudo su - ansible-admin
Você está planejando gerenciar servidores remotos, como a instância de servidor virtual K8s EC2, mais adiante neste artigo. É por isso que você precisa configurar chaves SSH.
ssh-keygen
sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}
sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected]
Agora você pode ver “Número de chaves adicionadas: 1” . Isso significa que a instalação da autenticação SSH sem senha foi concluída com êxito.
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”.
sudo ifconfig
sudo vi /etc/ansible/hosts
touch kubernetes-hello-app.yml
hello-app.yml
recém-criado. Abra-o para edição com este comando. vi kubernetes-hello-app.yml
--- - 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.
sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml
Zufar Sunagatov é um experiente engenheiro de software sênior apaixonado por projetar sistemas de software modernos.