âïž Resumo do artigo:
- Cliente â DNS/Host â IP pĂșblico (LB do ingress-nginx) -> Pod do ingress-nginx (Nginx) â Ingress (host + path).
- Ingress decide quem recebe (host + path) e fala com Service. -> Service (ClusterIP:port, L4) â Endpoints (PodIP:targetPort).
- Service seleciona Pods por labels e encaminha para PodIP:targetPort. -> Pod (containers compartilham o mesmo IP, portas diferentes).
- Pod = mesmo IP para todos os containers; o que muda Ă© a porta.
đą O que Ă© um Pod:
Menor unidade implantĂĄvel, pode ter 1 ou mais containers.
- Containers do mesmo Pod compartilham:
- Network namespace â mesmo IP (o Pod IP), localhost comum
- Volumes (se montados).
IMPORTANTE: VocĂȘ nĂŁo cria Pod âpuroâ na produção: cria um Deployment, que cria ReplicaSet, que cria Pods.
đ§ Por que usar Namespaces?
- Isolam nomes: api1 em dev e api1 em prod.
- Controlam acesso (RBAC), quotas, polĂticas de rede.
- Ciclo de vida: deletar o namespace remove tudo.
đ§Ș Exemplo prĂĄtico: duas APIs no mesmo Pod (api3a + api3b):
1) Deployment (um Pod com 2 containers, portas 8080 e 8081):
apiVersion: apps/v1
kind: Deployment
metadata:
name: api3
namespace: prod
spec:
replicas: 1
selector:
matchLabels: { app: api3 }
template:
metadata:
labels:
app: api3
svc-api3a: "true" # ajuda os Services a âenxergarâ este Pod
svc-api3b: "true"
spec:
containers:
- name: api3a image: https://suaiamgem ports: [{ name: http-api3a, containerPort: 8080 }] env: [{ name: ASPNETCORE_URLS, value: http://+:8080 }] readinessProbe: { httpGet: { path: "/", port: 8080 }, initialDelaySeconds: 5, periodSeconds: 10 } livenessProbe: { httpGet: { path: "/", port: 8080 }, initialDelaySeconds: 10, periodSeconds: 20 }
- name: api3b image: https://suaimagem ports: [{ name: http-api3b, containerPort: 8081 }] env: [{ name: ASPNETCORE_URLS, value: http://+:8081 }] readinessProbe: { httpGet: { path: "/", port: 8081 }, initialDelaySeconds: 5, periodSeconds: 10 } livenessProbe: { httpGet: { path: "/", port: 8081 }, initialDelaySeconds: 10, periodSeconds: 20 } âïž - Por quĂȘ duas portas?
- Containers do mesmo Pod compartilham IP, entĂŁo precisam portas diferentes.
CONTINUAĂĂO NO PRĂXIMO POST...
Top comments (0)