Prévia do material em texto
https://gamma.app/?utm_source=made-with-gamma INTEGRANTES Guilherme Mesquita de Carvalho 01613629 Kaleo Abreu Macie 01618187 Adyel silva laurindo dos santos 01240287 Luiz Henrique Benicio Ribeiro 01649691 Carlos Diego dos Santos Borges 01597598 Graziele Silva de Oliveira 01632441 Davi Bandeira Tavares 01612958 Pedro Lucas Barbosa Siqueira 01620306 Lindon Jhonson Gomes Assunção 01626960 Evandro Montesuma Filho 01608339 Francisco Matheus de Sousa França 01589182 Thiago Duarte de Almeida 01598813 Renan de Freitas Testa 01613396 https://gamma.app/?utm_source=made-with-gamma Sumário 1. DockerKubernetes __________________________________________________________________ 3 2. Capítulo 1: O Que é Docker e Por Que Usá-lo? ___________________________________________4 2.1 Características do Docker ____________________________________________________________5 3. Capítulo 2: Como o Docker Funciona? _________________________________________________6 4. Capítulo 3: Instalando o Docker no Seu Computador ____________________________________7 5. Capítulo 4: Criando Seu Primeiro Contêiner ____________________________________________8 6. Capítulo 5: O Que é Kubernetes e Por Que Usá-lo? ______________________________________9 6.1 Características do Kubernetes _______________________________________________________10 7. Capítulo 6: Componentes Básicos do Kubernetes ______________________________________11 8. Capítulo 7: Como Funciona o Kubernetes _____________________________________________12 9. Capítulo 8: Instalando e Configurando o Kubernetes Localmente _______________________13 10. Capítulo 9: Entendendo Serviços e Exposição de Aplicações no Kubernetes _____________14 11. Conclusão ________________________________________________________________________15 https://gamma.app/?utm_source=made-with-gamma Docker e Kubernetes: Nos últimos anos, o desenvolvimento e a implantação de aplicações mudaram drasticamente com a adoção de contêineres e ferramentas de orquestração. Isso se deve à crescente complexidade das aplicações modernas, que exigem ambientes de execução confiáveis, escaláveis e portáveis. Tecnologias como Docker e Kubernetes surgiram como pilares dessa nova era, facilitando o processo de criar, distribuir e gerenciar aplicações em diversos ambientes. O Docker é uma plataforma que permite empacotar aplicativos e todas as suas dependências em contêineres. Com isso, desenvolvedores podem garantir que seus aplicativos rodem de forma consistente em qualquer ambiente, desde o desenvolvimento local até servidores em produção. Docker trouxe um enorme avanço ao tornar a criação e o gerenciamento de contêineres algo simples e eficiente, eliminando a famosa frase "mas funciona na minha máquina!". No entanto, quando se trata de gerenciar dezenas, centenas ou até milhares de contêineres, a complexidade aumenta. É aqui que entra o Kubernetes (ou K8s), uma plataforma de orquestração de contêineres. Kubernetes foi projetado para automatizar a implantação, o escalonamento e a operação contínua de contêineres. Ele gerencia clusters de máquinas e garante que seus aplicativos estejam sempre disponíveis, escalando conforme necessário e se recuperando de falhas automaticamente. Em resumo, enquanto o Docker se concentra na criação e execução de contêineres individuais, o Kubernetes se encarrega de coordenar e gerenciar contêineres em grande escala. Juntos, Docker e Kubernetes formam uma dupla poderosa, permitindo que equipes de desenvolvimento e operações entreguem software de forma mais ágil, confiável e escalável. Neste e-book, exploraremos como essas duas tecnologias funcionam, suas principais características e como utilizá-las para otimizar o ciclo de vida de suas aplicações. https://gamma.app/?utm_source=made-with-gamma Capítulo 1: O Que é Docker e Por Que Usá-lo? Docker é uma ferramenta que ajuda a criar e gerenciar aplicativos de maneira mais fácil e eficiente. Imagine que você tenha um programa que quer rodar no seu computador, mas ele precisa de várias coisas para funcionar: um sistema operacional específico, algumas bibliotecas e configurações. Se faltar algo, o programa não vai funcionar como deveria. Com o Docker, você empacota tudo o que seu aplicativo precisa em um “contêiner”. Esse contêiner funciona como uma caixinha que inclui todas as dependências, bibliotecas e configurações. Isso significa que, não importa onde você rode o contêiner (no seu computador, no servidor da empresa ou na nuvem), ele vai funcionar da mesma maneira. Por Que Usar Docker? Consistência: O aplicativo funciona do mesmo jeito em qualquer lugar. Isolamento: Cada contêiner é independente e não interfere em outros programas. Facilidade de Compartilhamento: Você pode enviar um contêiner para outra pessoa e ele vai rodar exatamente como no seu ambiente. https://gamma.app/?utm_source=made-with-gamma Características do Docker Portabilidade:o Contêineres Docker podem ser executados em qualquer sistema que tenha o Docker instalado, seja no seu computador pessoal, em servidores da empresa ou na nuvem. Isso elimina problemas de compatibilidade e facilita a migração entre diferentes ambientes. Isolamento:o Cada contêiner é executado de forma isolada, com seu próprio sistema de arquivos, rede e processo. Isso evita que problemas em um contêiner afetem outros contêineres ou o sistema host. Consistência:o As imagens Docker garantem que o aplicativo e suas dependências sejam empacotados juntos, mantendo a consistência entre ambientes de desenvolvimento, teste e produção. Eficiência de Recursos:o Ao contrário das máquinas virtuais (VMs), que exigem um sistema operacional completo, os contêineres compartilham o kernel do host, o que reduz o uso de memória e CPU, permitindo maior densidade de aplicativos no mesmo hardware. Velocidade:o Contêineres iniciam e param rapidamente, possibilitando testes e desenvolvimentos mais ágeis em comparação com VMs. Isso também facilita o escalonamento de serviços conforme a demanda. Escalabilidade:o Docker permite que você crie aplicativos com arquitetura de microserviços, onde cada serviço roda em um contêiner separado. Isso facilita o escalonamento independente de cada parte do aplicativo. Facilidade de Compartilhamento e Distribuição:o O Docker Hub e outros registries facilitam o compartilhamento e distribuição de imagens Docker, permitindo que desenvolvedores publiquem e baixem imagens prontas para uso. Suporte a Multi-Plataforma:o Docker pode ser executado em vários sistemas operacionais, como Windows, Linux e macOS, aumentando sua versatilidade no desenvolvimento e na implantação de aplicações. https://gamma.app/?utm_source=made-with-gamma Capítulo 2: Como o Docker Funciona? O Docker funciona criando contêineres que isolam os aplicativos. Esses contêineres compartilham o mesmo sistema operacional, mas mantêm cada aplicação separada uma da outra. Para criar um contêiner, você precisa de uma “imagem”. A imagem é um modelo que define o que vai dentro do contêiner. Pense nela como uma receita que especifica o sistema operacional, as bibliotecas e o aplicativo em si. Por exemplo, se você quer rodar um site com Python, sua imagem pode incluir o Python e as bibliotecas necessárias. Depois de criar essa imagem, você pode gerar quantos contêineres quiser a partir dela. Imagens: São os “modelos” que você usa para criar contêineres. Contêineres: São as instâncias rodando a partir das imagens. Dockerfile: Um arquivo de texto que descreve como construir a imagem (quais passos seguir para configurar o contêiner). https://gamma.app/?utm_source=made-with-gamma Capítulo 3: Instalando o Docker no Seu Computador Instalar o Docker é fácil e pode ser feito na maioria dos sistemas operacionais como Windows, macOS e Linux. Passo a Passo para Instalação: Baixe o Docker Desktop: Acesse docker.com e faça o download do Docker Desktop.1. Instale: Siga as instruções de instalação.2. Verifique a Instalação: Abra o terminal (Prompt de Comando no Windows ou Terminal no macOS/Linux) e digite: 3. docker --version Se aparecer a versão do Docker, significa que tudo está funcionando. https://gamma.app/?utm_source=made-with-gamma Capítulo 4: Criando Seu Primeiro Contêiner Depois de instalar o Docker, é hora de criar seu primeiro contêiner! Passos para Criar um Contêiner: Abra o terminal e digite:1. docker run hello-world Isso vai baixar uma pequena imagem chamada “hello- world” e criar um contêiner que simplesmente mostra uma mensagem. Se você viu a mensagem “Hello from Docker!”, isso significa que seu contêiner foi criado e executado com sucesso. 1. Entendendo o Que Aconteceu: Quando você digitou o comando docker run hello-world , o Docker procurou essa imagem no seu computador. Como não encontrou, ele baixou a imagem do Docker Hub (um repositório online de imagens Docker) e, em seguida, criou um contêiner a partir dela. https://gamma.app/?utm_source=made-with-gamma Capítulo 5: O Que é Kubernetes e Por Que Usá-lo? Kubernetes (também chamado de K8s) é uma plataforma de orquestração de contêineres. Mas o que isso significa? Imagine que você tem vários contêineres rodando um site, um banco de dados e outros serviços. Você precisa garantir que todos esses contêineres funcionem bem juntos, se comuniquem e sejam gerenciados de forma automática. Kubernetes faz exatamente isso! Ele ajuda a organizar, gerenciar e escalar todos esses contêineres como se fossem uma única aplicação. Com o Kubernetes, você pode garantir que seus contêineres sempre estejam rodando corretamente e que o aplicativo continue funcionando mesmo se algum contêiner falhar. Por Que Usar Kubernetes? Automatização: Ele cuida da implantação e gestão dos contêineres automaticamente. Escalonamento: Aumenta ou diminui o número de contêineres com base no tráfego e no uso de recursos. Autocura: Se um contêiner falhar, o Kubernetes substitui automaticamente por um novo. Balanceamento de Carga: Distribui as solicitações entre os contêineres para garantir que nenhum fique sobrecarregado. Em resumo, Kubernetes facilita a vida de quem precisa gerenciar muitos contêineres, garantindo que tudo funcione de forma eficiente e automatizada. https://gamma.app/?utm_source=made-with-gamma Características do Kubernetes Orquestração Automatizada:O Kubernetes automatiza o gerenciamento de contêineres, garantindo que eles sejam distribuídos de maneira eficiente entre os nós, reiniciados em caso de falhas e removidos quando não forem mais necessários. 1. Escalonamento Horizontal:O Permite aumentar ou diminuir o número de contêineres (pods) automaticamente, com base no uso de CPU, memória ou outros parâmetros. Isso garante que o sistema se adapte às variações de carga, mantendo o desempenho ideal. 2. Autocorreção:O Se um pod falhar ou for removido, o Kubernetes cria automaticamente novos pods para substituí-los, garantindo alta disponibilidade e estabilidade do aplicativo. 3. Gerenciamento de Configurações e Segredos:O Kubernetes permite gerenciar configurações sensíveis, como senhas e chaves de API, por meio de recursos como ConfigMaps e Secrets, separando dados sensíveis dos contêineres e facilitando a atualização. 4. Balanceamento de Carga e Descoberta de Serviços:O Distribui as requisições entre os pods de forma equilibrada e eficiente, e oferece serviços de descoberta que permitem que contêineres se comuniquem facilmente entre si. 5. Desenvolvimento e Testes Locais com Minikube:O Com ferramentas como Minikube, é possível simular um cluster Kubernetes no seu próprio computador, facilitando o desenvolvimento e testes antes da implantação em ambientes de produção. 6. Atualizações e Reversões Automatizadas:O Kubernetes permite atualizar aplicações de forma gradual e controlada (rollouts) e, se necessário, reverter rapidamente para versões anteriores sem afetar o ambiente de produção. 7. Suporte a Vários Tipos de Armazenamento:O Kubernetes suporta diversos sistemas de armazenamento, como volumes locais, NFS, sistemas em nuvem (AWS, GCP, Azure) e mais, garantindo flexibilidade no uso de dados persistentes para contêineres. 8. Arquitetura de Microserviços:O Facilita a implantação de aplicações complexas usando uma arquitetura de microserviços, onde cada parte do sistema pode ser gerenciada e escalada independentemente. 9. https://gamma.app/?utm_source=made-with-gamma Capítulo 6: Componentes Básicos do Kubernetes Antes de mergulharmos nas funcionalidades, vamos entender os principais componentes do Kubernetes. Pensar no Kubernetes como uma “caixa de ferramentas” ajuda a visualizar como ele funciona. Aqui estão os principais itens dessa caixa: Cluster: Um conjunto de máquinas (físicas ou virtuais) que o Kubernetes gerencia. Cada cluster é formado por vários nós (nodes). 1. Nó (Node): Uma máquina dentro do cluster que pode executar contêineres. Existem dois tipos de nós: 2. Nó Mestre (Master Node): Responsável por gerenciar o cluster e decidir onde rodar cada contêiner. Nó de Trabalho (Worker Node): Executa os contêineres que fazem parte da sua aplicação. Pod: É a menor unidade do Kubernetes. Um pod pode conter um ou mais contêineres que compartilham o mesmo ambiente de rede e armazenamento. Normalmente, um pod contém apenas um contêiner, mas se dois contêineres precisarem trabalhar juntos (por exemplo, um servidor e um cache), eles podem ser colocados no mesmo pod. 3. Serviço (Service): Um ponto de acesso para os pods, permitindo que outras partes da aplicação se conectem a eles. Mesmo se um pod for substituído, o serviço mantém um endereço fixo para acesso. 4. Namespace: Um mecanismo que separa grupos de recursos no cluster. Ideal para organizar diferentes ambientes, como desenvolvimento, teste e produção, dentro do mesmo cluster. 5. https://gamma.app/?utm_source=made-with-gamma Capítulo 7: Como Funciona o Kubernetes? O Kubernetes funciona como um maestro que controla um conjunto de contêineres. Ele usa uma arquitetura baseada em clusters, onde cada cluster é composto por nós que executam pods com contêineres. Entendendo o Processo: Planejamento e Implantação:o Você cria um plano (chamado de “manifesto”) que descreve como os contêineres devem ser implantados. Esse plano é um arquivo no formato YAML (uma linguagem de marcação legível para humanos). 1. Distribuição dos Contêineres:O Kubernetes analisa o manifesto e decide onde cada contêiner será executado no cluster. Ele escolhe o melhor nó disponível, levando em conta o uso de recursos, como CPU e memória. 2. Monitoramento e Autocorreção:o Depois de implantar os contêineres, o Kubernetes monitora constantemente cada um. Se um pod falhar ou for removido, ele cria um novo automaticamente para substituí-lo. 3. Escalonamento:o Com base na carga de trabalho, o Kubernetes pode aumentar ou diminuir o número de pods para atender à demanda. Se seu site receber mais visitantes, por exemplo, ele pode criar mais contêineres para suportar o aumento de tráfego. 4. O Que Acontece se Um Contêiner Cair? Se um contêiner falhar ou for removido, o Kubernetes substitui automaticamente por um novo contêiner. Isso garante que sua aplicação continue funcionando sem interrupções. https://gamma.app/?utm_source=made-with-gamma Capítulo 8: Instalando e Configurando o Kubernetes Localmente Para aprender a usar o Kubernetes, você pode começar instalando-o localmente no seu computador. Uma das formas mais fáceis de fazer isso é usando o Minikube, uma ferramenta que cria um cluster Kubernetes em uma máquina local. Instalando o Minikube: Instale o Minikube e o kubectl (a linha de comando do Kubernetes):1. Acesse Minikube Install e siga as instruções de instalação para o seu sistema operacional. Inicie um cluster local: 2. Após a instalação, abra o terminal e digite: minikube start Isso criaráum cluster Kubernetes local no seu computador. 3. Verifique se o cluster está rodando, Digite: kubectl get nodes Se aparecer um nó com o status “Ready”, o cluster está pronto para uso. 4. Implante seu primeiro aplicativo: Vamos usar um exemplo básico para ver como o Kubernetes funciona. No terminal, digite: kubectl create deployment hello-world --image=gcr.io/google-samples/hello-app:1.0 Isso criará um contêiner simples chamado “hello-world”. 5. Verifique o aplicativo: Para ver os pods rodando, digite: kubectl get pods Pronto! Você já tem um aplicativo rodando no Kubernetes localmente. A partir daqui, podemos explorar como criar serviços, expor aplicações e escalar contêineres. https://gamma.app/?utm_source=made-with-gamma Como o Kubernetes Funciona? 1 Orquestração Gerencia a implantação, escalonamento, atualização e comunicação entre contêineres. 2 Automação Automatiza a criação e a configuração de clusters Kubernetes. 3 Resiliência Oferece tolerância a falhas, garantindo a alta disponibilidade do aplicativo. 4 Escalabilidade Aumenta ou diminui os recursos do aplicativo com base na demanda. 5 Gerenciamento Simplifica o gerenciamento de aplicações complexas com pods, serviços e recursos. https://gamma.app/?utm_source=made-with-gamma Conclusão Docker e Kubernetes mudaram completamente a maneira como desenvolvemos, implantamos e gerenciamos aplicações. Docker facilita a criação de contêineres que encapsulam aplicativos e suas dependências, garantindo que eles funcionem da mesma maneira em diferentes ambientes. O Docker torna o processo de desenvolvimento e distribuição de software mais simples, oferecendo portabilidade e eficiência. Mas quando o assunto é gerenciar e escalar aplicações com dezenas ou até centenas de contêineres, a complexidade aumenta. É aí que o Kubernetes entra como uma solução essencial. Ele automatiza a orquestração de contêineres, cuidando da implantação, escalonamento e manutenção dos serviços, garantindo alta disponibilidade e estabilidade do sistema. Com recursos como autocorreção, balanceamento de carga e escalonamento horizontal, o Kubernetes se destaca por oferecer um controle centralizado e eficiente dos contêineres. Juntos, Docker e Kubernetes formam uma combinação poderosa que oferece agilidade, consistência e flexibilidade para equipes de desenvolvimento e operações. Docker facilita a criação e execução de contêineres, enquanto Kubernetes gerencia e coordena esses contêineres em grande escala, permitindo que empresas implantem aplicativos complexos com rapidez e confiabilidade. Essas tecnologias se tornaram essenciais para empresas que buscam construir, entregar e manter aplicações modernas em ambientes dinâmicos e distribuídos. https://gamma.app/?utm_source=made-with-gamma