Sem resumo de edição
Sem resumo de edição
Linha 42: Linha 42:
Docker é uma plataforma que facilita a criação, o gerenciamento e a distribuição de aplicativos dentro de contêineres, que são unidades leves, portáteis e isoladas do sistema. Aqui estão alguns dos fundamentos de Docker:
Docker é uma plataforma que facilita a criação, o gerenciamento e a distribuição de aplicativos dentro de contêineres, que são unidades leves, portáteis e isoladas do sistema. Aqui estão alguns dos fundamentos de Docker:


1. *Contêineres*
1. Contêineres
   - **Isolamento:** Contêineres permitem que aplicações e suas dependências sejam empacotadas juntas, garantindo que funcionem de forma consistente em qualquer ambiente.
   - **Isolamento:** Contêineres permitem que aplicações e suas dependências sejam empacotadas juntas, garantindo que funcionem de forma consistente em qualquer ambiente.
   - **Portabilidade:** Contêineres podem ser executados em qualquer sistema que suporte Docker, seja no ambiente de desenvolvimento, testes ou produção.
   - **Portabilidade:** Contêineres podem ser executados em qualquer sistema que suporte Docker, seja no ambiente de desenvolvimento, testes ou produção.
   - **Eficiência:** Contêineres compartilham o kernel do sistema operacional, o que os torna mais leves e rápidos de iniciar comparado às máquinas virtuais.
   - **Eficiência:** Contêineres compartilham o kernel do sistema operacional, o que os torna mais leves e rápidos de iniciar comparado às máquinas virtuais.


2. **Imagens Docker**
2. Imagens Docker
   - **Definição:** Uma imagem Docker é um modelo de somente leitura que contém tudo o que uma aplicação precisa para rodar, incluindo o código, as bibliotecas, o sistema de arquivos, etc.
   - **Definição:** Uma imagem Docker é um modelo de somente leitura que contém tudo o que uma aplicação precisa para rodar, incluindo o código, as bibliotecas, o sistema de arquivos, etc.
   - **Dockerfile:** Arquivo que contém as instruções para construir uma imagem. Cada comando no Dockerfile cria uma nova camada na imagem.
   - **Dockerfile:** Arquivo que contém as instruções para construir uma imagem. Cada comando no Dockerfile cria uma nova camada na imagem.
   - **Versionamento:** Imagens podem ser versionadas, facilitando o rastreamento de mudanças e a reprodutibilidade.
   - **Versionamento:** Imagens podem ser versionadas, facilitando o rastreamento de mudanças e a reprodutibilidade.


3. **Registro de Imagens**
3. Registro de Imagens
   - **Docker Hub:** O repositório padrão onde as imagens Docker podem ser armazenadas, compartilhadas e distribuídas. Existem também registries privados.
   - **Docker Hub:** O repositório padrão onde as imagens Docker podem ser armazenadas, compartilhadas e distribuídas. Existem também registries privados.
   - **Push e Pull:** Você pode enviar (push) suas imagens para um registro ou baixar (pull) imagens públicas ou privadas para usar em seus contêineres.
   - **Push e Pull:** Você pode enviar (push) suas imagens para um registro ou baixar (pull) imagens públicas ou privadas para usar em seus contêineres.


4. **Docker Engine**
4. Docker Engine
   - **Daemon:** O processo que gerencia os contêineres, lida com a criação e remoção deles, entre outras funções.
   - **Daemon:** O processo que gerencia os contêineres, lida com a criação e remoção deles, entre outras funções.
   - **CLI (Command-Line Interface):** A interface de linha de comando onde você executa comandos Docker, como `docker run`, `docker build`, `docker pull`, etc.
   - **CLI (Command-Line Interface):** A interface de linha de comando onde você executa comandos Docker, como `docker run`, `docker build`, `docker pull`, etc.


5. **Volumes**
5. Volumes
   - **Persistência de Dados:** Volumes permitem que dados sejam armazenados fora dos contêineres, garantindo que os dados persistam mesmo que o contêiner seja removido.
   - **Persistência de Dados:** Volumes permitem que dados sejam armazenados fora dos contêineres, garantindo que os dados persistam mesmo que o contêiner seja removido.
   - **Compartilhamento de Dados:** Volumes podem ser compartilhados entre vários contêineres, permitindo que eles acessem e modifiquem os mesmos dados.
   - **Compartilhamento de Dados:** Volumes podem ser compartilhados entre vários contêineres, permitindo que eles acessem e modifiquem os mesmos dados.


6. **Networking**
6. Networking
   - **Bridge Network:** É a configuração de rede padrão onde os contêineres em um único host podem se comunicar entre si.
   - **Bridge Network:** É a configuração de rede padrão onde os contêineres em um único host podem se comunicar entre si.
   - **Host Network:** Usa a rede do host diretamente, sem isolamento de rede.
   - **Host Network:** Usa a rede do host diretamente, sem isolamento de rede.
   - **Overlay Network:** Permite que contêineres em diferentes hosts se comuniquem entre si, geralmente usada em clusters Docker Swarm.
   - **Overlay Network:** Permite que contêineres em diferentes hosts se comuniquem entre si, geralmente usada em clusters Docker Swarm.


7. **Orquestração**
7. Orquestração
   - **Docker Compose:** Ferramenta para definir e executar aplicativos multi-contêiner. Usa um arquivo YAML (`docker-compose.yml`) para configurar os serviços.
   - **Docker Compose:** Ferramenta para definir e executar aplicativos multi-contêiner. Usa um arquivo YAML (`docker-compose.yml`) para configurar os serviços.
   - **Docker Swarm:** Ferramenta de orquestração integrada ao Docker que permite a criação e gerenciamento de clusters de contêineres.
   - **Docker Swarm:** Ferramenta de orquestração integrada ao Docker que permite a criação e gerenciamento de clusters de contêineres.


Esses fundamentos fornecem uma base sólida para começar a usar o Docker em ambientes de desenvolvimento e produção.
Esses fundamentos fornecem uma base sólida para começar a usar o Docker em ambientes de desenvolvimento e produção.

Edição das 12h38min de 30 de agosto de 2024

1. Fundamentos de Kubernetes

Kubernetes Concepts: Architecture, Pods, ReplicaSets, Deployments, Node Port Service, Cluster IP Service, External Name Service, Ingress Service, Ingress SSL, Ingress & External DNS, kubetcl - Imperative, Declarative with YAML, Secrets, Init containers, Probes, Request & limits, Namespaces, Limit Range, Resource Quota, Storage Classes, Persistent Volumes, Pvc, Load Balancers, Annotations, Canary Deployments, HPA, VPA, DaemonSets, Fluentd for logs, ConfigMaps.


Aws Services Integration with EKS


DevOps: Aws CodeCommit, Aws CodeBuild e Aws CodePipeline


Microservices: Service Discovery, Distributed Tracing e Canary Deployments


Kubernetes - Imperative & Declarative


Imperative: kubectl, pod, replicaset, deployment, service


Declarative: Yaml & kubectl, pod, replicaset, deployment, service


Install Aws cli Install kubectl cli Install eksctl cli


2. Criação de um cluster usando Amazon Elastic Kubernetes Service (Amazon EKS)

Aws Eks cluster: Um cluster do Amazon ECS é um agrupamento lógico de tarefas ou serviços. Além de tarefas e serviços, um cluster consiste nos recursos a seguir: A capacidade da infraestrutura, que pode ser uma combinação de qualquer uma das seguintes: Instâncias do Amazon EC2 na nuvem da AWS.

Amazon Elastic Kubernetes Service: A maneira mais confiável de iniciar, executar e escalar o Kubernetes (https://aws.amazon.com/pt/eks/)

Create EKS Cluster using eksctl: https://github.com/pahud/amazon-eks-workshop/blob/master/00-getting-started/create-eks-with-eksctl.md

Create & Associate IAM OIDC Provider for our EKS Cluster: https://github.com/aws/amazon-eks-pod-identity-webhook/issues/23

3. Fundamentos de Docker

Docker é uma plataforma que facilita a criação, o gerenciamento e a distribuição de aplicativos dentro de contêineres, que são unidades leves, portáteis e isoladas do sistema. Aqui estão alguns dos fundamentos de Docker:

1. Contêineres

  - **Isolamento:** Contêineres permitem que aplicações e suas dependências sejam empacotadas juntas, garantindo que funcionem de forma consistente em qualquer ambiente.
  - **Portabilidade:** Contêineres podem ser executados em qualquer sistema que suporte Docker, seja no ambiente de desenvolvimento, testes ou produção.
  - **Eficiência:** Contêineres compartilham o kernel do sistema operacional, o que os torna mais leves e rápidos de iniciar comparado às máquinas virtuais.

2. Imagens Docker

  - **Definição:** Uma imagem Docker é um modelo de somente leitura que contém tudo o que uma aplicação precisa para rodar, incluindo o código, as bibliotecas, o sistema de arquivos, etc.
  - **Dockerfile:** Arquivo que contém as instruções para construir uma imagem. Cada comando no Dockerfile cria uma nova camada na imagem.
  - **Versionamento:** Imagens podem ser versionadas, facilitando o rastreamento de mudanças e a reprodutibilidade.

3. Registro de Imagens

  - **Docker Hub:** O repositório padrão onde as imagens Docker podem ser armazenadas, compartilhadas e distribuídas. Existem também registries privados.
  - **Push e Pull:** Você pode enviar (push) suas imagens para um registro ou baixar (pull) imagens públicas ou privadas para usar em seus contêineres.

4. Docker Engine

  - **Daemon:** O processo que gerencia os contêineres, lida com a criação e remoção deles, entre outras funções.
  - **CLI (Command-Line Interface):** A interface de linha de comando onde você executa comandos Docker, como `docker run`, `docker build`, `docker pull`, etc.

5. Volumes

  - **Persistência de Dados:** Volumes permitem que dados sejam armazenados fora dos contêineres, garantindo que os dados persistam mesmo que o contêiner seja removido.
  - **Compartilhamento de Dados:** Volumes podem ser compartilhados entre vários contêineres, permitindo que eles acessem e modifiquem os mesmos dados.

6. Networking

  - **Bridge Network:** É a configuração de rede padrão onde os contêineres em um único host podem se comunicar entre si.
  - **Host Network:** Usa a rede do host diretamente, sem isolamento de rede.
  - **Overlay Network:** Permite que contêineres em diferentes hosts se comuniquem entre si, geralmente usada em clusters Docker Swarm.

7. Orquestração

  - **Docker Compose:** Ferramenta para definir e executar aplicativos multi-contêiner. Usa um arquivo YAML (`docker-compose.yml`) para configurar os serviços.
  - **Docker Swarm:** Ferramenta de orquestração integrada ao Docker que permite a criação e gerenciamento de clusters de contêineres.

Esses fundamentos fornecem uma base sólida para começar a usar o Docker em ambientes de desenvolvimento e produção.