Cloud & Kubernetes
Fundamentos de Docker, Kubernetes, Helm e deploys em produção.
📖 Lições
1.1 — Introdução ao Kubernetes⬜ Pendente · 15 min
O que é o Kubernetes?
O Kubernetes é uma plataforma de orquestração de contêineres que automatiza a implantação, escalamento e gestão de aplicações em contêiner.
Conceitos Fundamentais
- Pod: menor unidade executável (1+N contêineres)
- Service: expose pods com IP estático e DNS
- Deployment: manage replica sets e rolling updates
- Ingress: HTTP routing com TLS termination
- ConfigMap: configuração externa ao container
1.2 — Deploy Estático⬜ Pendente · 20 min
Padrão de Deploy no demo1
No cluster demo1 do Lab Infocepo, a estrutura padrão é:
1. ConfigMap com HTML estático
2. Deployment com container nginx:alpine
3. Service ClusterIP
4. Ingress com ingressClassName: public + cert-managerEste padrão garante TLS automático e roteamento HTTP sem necessidade de backend.
1.3 — Ingress & TLS⬜ Pendente · 15 min
TLS Automático
O cert-manager usa o ClusterIssuer letsencrypt-prod para pedir certificados Let's Encrypt automaticamente. O Ingress referencia o Secret gerado via tls.secretName.
Configuração típica no demo1:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
kubernetes.io/ingress.class: public
spec:
ingressClassName: public
tls:
- hosts:
- app.demo1.ai-dev.numerique-interieur.com
secretName: app-tls
rules:
- host: app.demo1.ai-dev.numerique-interieur.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app-svc
port:
number: 801.4 — ConfigMaps & Volumes⬜ Pendente · 15 min
ConfigMaps
Permitem separar configuração do código. Usados para ficheiros estáticos, nginx.conf e imagens.
kubectl create configmap myapp-html --from-file=index.html
kubectl create configmap nginx-config --from-file=nginx.confMount via volume no Deployment:
volumes:
- name: html
configMap:
name: myapp-html
containers:
- name: nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: true1.5 — Helm Charts⬜ Pendente · 20 min
O que é Helm?
Gerenciador de pacotes do Kubernetes — empacota aplicações com templates configuráveis.
- Chart: pacote com templates, valores, e metadata
- Release: instância de um chart instalada no cluster
- values.yaml: configurações personalizáveis
Instalar um chart:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install myapp bitnami/nginx -f values.yaml1.6 — CI/CD com GitHub⬜ Pendente · 20 min
Pipeline Automático
GitHub Actions + kubectl para deploys automáticos a cada commit em main.
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to demo1
run: |
kubectl apply -f k8s/
kubectl rollout status deployment/myappNo demo1, o pipeline é configurado via webhook no cluster.