- Indice
- Descomplicando o Kubernetes - Expert Mode
- Como usar o Laboratorio do Girus
- Provisionando um cluster EKS para testes
- Certificado
Esse treinamento foi desenhado para capacitar a pessoa estudante ou a pessoa profissional de TI a trabalhar com o Kubernetes em ambientes criticos.
O Treinamento é composto por material escrito, aulas gravadas em vídeo e aulas ao vivo. Durante o treinamento a pessoa será testada de forma prática, sendo necessário completar desafios reais para dar continuidade no treinamento.
O foco do treinamento é capacitar a pessoa para trabalhar com Kubernetes de maneira eficiente e totalmente preparada para trabalhar em ambientes críticos que utilizam containers.
DAY-01 - Entendendo o que são Containers e o Kubernetes
- DAY-1
- O quê preciso saber antes de começar?
- Inicio da aula do Day-1
- Qual a distro GNU/Linux que devo usar?
- Alguns sites que devemos visitar
- O Container Engine
- OCI - Open Container Initiative
- O Container Runtime
- O que é o Kubernetes?
- Instalando e customizando o Kubectl
- Criando um cluster Kubernetes
- Criando o cluster em sua máquina local
- Minikube
- Requisitos básicos para o Minikube
- Instalação do Minikube no GNU/Linux
- Instalação do Minikube no MacOS
- Instalação do Minikube no Microsoft Windows
- Iniciando, parando e excluindo o Minikube
- Ver detalhes sobre o cluster
- Descobrindo o endereço do Minikube
- Acessando a máquina do Minikube via SSH
- Dashboard do Minikube
- Logs do Minikube
- Remover o cluster
- Kind
- Minikube
- Criando o cluster em sua máquina local
- Primeiros passos no k8s
- Limpando tudo e indo para casa
DAY-02 - Descomplicando os Pods e Limites de Recursos
DAY-03 - Descomplicando os Deployments e Estratégias de Rollout
- DAY-3
- Inicio da aula do Day-3
- O que iremos ver hoje?
- O que é um Deployment?
- Como criar um Deployment?
- Como aplicar o Deployment?
- Como verificar os Pods que o Deployment está gerenciando?
- Como verificar o ReplicaSet que o Deployment está gerenciando?
- Como verificar os detalhes do Deployment?
- Como atualizar o Deployment?
- E qual é a estratégia de atualização padrão do Deployment?
- As estratégias de atualização do Deployment
- Removendo um Deployment
- Conclusão
DAY-04 - Descomplicando ReplicaSets, DaemonSets e as Probes do Kubernetes
DAY-05 - Criando nosso Cluster Kubernetes multi-nodes
- DAY-5
- Conteúdo do Day-5
- Inicio da aula do Day-5
- O que iremos ver hoje?
- Instalação de um cluster Kubernetes
- O que é um cluster Kubernetes?
- Formas de instalar o Kubernetes
- Criando um cluster Kubernetes com o kubeadm
- Instalando o kubeadm
- Desativando o uso do swap no sistema
- Carregando os módulos do kernel
- Configurando parâmetros do sistema
- Instalando os pacotes do Kubernetes
- Instalando o Docker e o containerd
- Configurando o containerd
- Habilitando o serviço do kubelet
- Configurando as portas
- Iniciando o cluster
- Entendendo o arquivo admin.conf
- Instalando o Weave Net
- O que é o CNI?
- Visualizando detalhes dos nodes
- A sua lição de casa
- Final do Day-5
DAY-06 - Descomplicando os Volumes no K8s
DAY-07 - Descomplicando StatefulSets e os Services no Kubernetes
DAY-08 - Descomplicando os Secrets e ConfigMaps no Kubernetes
DAY-09 - Descomplicando o Ingress
- Descomplicando o Kubernetes
- O Que é o Ingress?
- Componentes do Ingress
- Componentes Chave
- Ingress Controller
- Ingress Resources
- Annotations e Customizations
- Instalando um Nginx Ingress Controller
- Instalando o Giropops-Senhas no Cluster
- Criando um Recurso de Ingress
- O que está acontecendo com o nosso Ingress?
- Configurando um Ingress para a nossa aplicação em Flask com Redis
- Criando múltiplos Ingresses no mesmo Ingress Controller
- Componentes Chave
- Instalando um cluster EKS para os nossos testes com Ingress
- Final do Day-9
DAY-10 - Descomplicando Ingress com TLS, Labels, Annotations e o Cert-manager
DAY-11 - Descomplicando o Kube-Prometheus no EKS
DAY-12 - Descomplicando os ServiceMonitors, PodMonitors e os Alertas no Kubernetes
DAY-13 - Criando Imagens de Containers e Reduzindo Vulnerabilidades com Wolfi
- Descomplicando Containers - DAY-13
- Imagens Distroless
- A Arte da Minimização: Imagens Distroless
- Conclusão
- Docker Scout
- Escaneando as diferentes versões do giropops-senhas
- Versão 1.0 - Relatório de Vulnerabilidades - Trivy
- Alvo: giropops-senhas:1.0 (debian 13.3)
- Versão 2.0 - Relatório de Vulnerabilidades - Trivy
- Alvo: giropops-senhas:2.0 (debian 13.3)
- Versão 3.0 - Relatório de Vulnerabilidades - Trivy
- Alvo: giropops-senhas:3.0 (alpine 3.18.3)
- Versão 4.0 - Relatório de Vulnerabilidades - Trivy
- Assinatura de Imagens (Image Signing) com Cosign
DAY-14 - Descomplicando Autoscaling no Kubernetes com o HPA - Horizontal Pod Autoscaler e Metrics-Server
- Descomplicando o Kubernetes
- DAY-14
- Conteúdo do Day-14
- Introdução ao Metrics Server
- Por que o Metrics Server é importante para o HPA?
- Instalando o Metrics Server
- Criando um HPA
- Exemplos Práticos com HPA
- Autoscaling com base na utilização de CPU
- Autoscaling com base na utilização de Memória
- Configuração Avançada de HPA: Definindo Comportamento de Escalonamento
- ContainerResource
- Detalhes do Algoritmo de Escalonamento
- Configurações Avançadas e Uso Prático
- Integrando HPA com Prometheus para Métricas Customizadas
- A sua lição de casa
- Final do Day-14
DAY-15 - Descomplicando Kyverno e as policies no K8s
- Descomplicando o Kubernetes
- DAY-15: Descomplicando Kyverno e as Policies no Kubernetes
- Conteúdo do Day-15
- O que iremos ver hoje?
- Inicio do Day-15
- Introdução ao Kyverno
- Instalando o Kyverno
- Verificando a Instalação
- Criando a nossa primeira Policy
- Mais exemplos de Policies
- Final do Day-15
DAY-16 - Descomplicando Taints, Labels, Toleration e Affinity no K8s
DAY-17 - Descomplicando Network Policy e o EKS
- Descomplicando o Kubernetes
- Day-17: Descomplicando Network Policies no Kubernetes
- Conteúdo do Day-17
- O que iremos ver hoje?
- O que são Network Policies?
- Instalando um Nginx Ingress Controller
- Criando Regras de Network Policy
DAY-18 - Descomplicando o RBAC no Kubernetes
- Descomplicando o Kubernetes
- Day-18: Descomplicando RBAC e controle de acesso no Kubernetes
- Conteúdo do Day-18
- O que iremos ver hoje?
- RBAC
- O que é RBAC?
- Primeiro exemplo de RBAC
- Criando um Usuário para acesso ao cluster
- Criando um Role para o nosso usuário
- apiGroups
- Recursos
- Verbos
- Criando a Role
- Criando um RoleBinding para o nosso usuário
- Adicionando o certificado do usuário no kubeconfig
- Acessando o cluster com o novo usuário
- ClusterRole e ClusterRoleBinding
- ClusterRole e ClusterRoleBinding para o usuário admin
- Removendo o usuário
- Utilizando Tokens para Service Accounts
- Final do Day-18
Va ate o repositorio oficial do Girus CLI e siga as instrucoes.
Com a linha de comando instalada, crie o cluster usando
girus create clusterNOTA: É necessario ter Docker e kind previamente instalados
Importe um laboratorio usando
girus create lab -f lab.yamlkubectl set image deployment/girus-backend backend=linuxtips/girus-backend:0.5.0 -n girus
kubectl set image deployment/girus-frontend frontend=linuxtips/girus-frontend:0.5.0 -n girus
kubectl port-forward -n girus --address 0.0.0.0 svc/girus-frontend 8000:80Para instalar o eksctl, siga as instruções do link: https://eksctl.io/installation/
Após instalar o eksctl, crie o cluster EKS com o comando:
Note
Não esqueça de se autenticar usando aws login ou variaveis de ambiente.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
eksctl create cluster --name=eks-cluster \
--version=1.34 --region=us-east-1 \
--nodegroup-name=eks-cluster-nodegroup \
--node-type=t3.medium \
--nodes=2 --nodes-min=1 --nodes-max=3 --managed# Use este comando para provisionar nodes on-demand
eksctl create cluster -f eksctl/cluster-config.yaml
# Use este comando para provisionar nodes spot+bottlerocket (com nat)
eksctl create cluster -f eksctl/cluster-config-optmized.yaml
# Use este comando para provisionar nodes spot+bottlerocket (sem nat). Opção mais barata possivel
eksctl create cluster -f eksctl/cluster-config-no-nat.yaml
Para deletar os clusters criados, execute um dos comandos abaixo.
eksctl delete cluster -f eksctl/cluster-config.yaml --wait --disable-nodegroup-eviction
eksctl delete cluster -f eksctl/cluster-config-optimized.yaml --wait --disable-nodegroup-eviction
eksctl delete cluster -f eksctl/cluster-config-no-nat.yaml --wait --disable-nodegroup-eviction