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.

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.