Olá!
Entendo a sua dúvida sobre a necessidade de repetir as especificações dos containers no arquivo de Deployment, mesmo já tendo definido anteriormente no arquivo do Pod. Vamos esclarecer isso!
O Deployment no Kubernetes é um recurso que gerencia a criação e atualização de uma coleção de Pods. Ele oferece funcionalidades adicionais como controle de versionamento, rollback e escalabilidade automática, que não são possíveis apenas com a definição de Pods.
Quando você cria um Deployment, você está definindo um "modelo" para os Pods que ele gerencia. Isso inclui especificar o container, a imagem, as portas, entre outras configurações. É por isso que você precisa repetir essas informações no arquivo de Deployment. O Deployment usa essas especificações para criar e gerenciar os Pods conforme necessário.
Aqui está um exemplo para ilustrar:
Arquivo do Pod (portal-noticias.yaml
)
apiVersion: v1
kind: Pod
metadata:
name: portal-noticias
spec:
containers:
- name: portal-noticias-container
image: aluracursos/portal-noticias:1
ports:
- containerPort: 80
Arquivo do Deployment (portal-noticias-deployment.yaml
)
apiVersion: apps/v1
kind: Deployment
metadata:
name: portal-noticias-deployment
spec:
replicas: 3
selector:
matchLabels:
app: portal-noticias
template:
metadata:
labels:
app: portal-noticias
spec:
containers:
- name: portal-noticias-container
image: aluracursos/portal-noticias:1
ports:
- containerPort: 80
No exemplo acima, o Deployment portal-noticias-deployment.yaml
define a mesma configuração de container que o Pod portal-noticias.yaml
, mas com a adição de funcionalidades de gerenciamento como réplicas e seletor de labels.
Portanto, mesmo que pareça repetitivo, essa estrutura é necessária para que o Kubernetes possa fornecer as funcionalidades avançadas que o Deployment oferece.
Espero ter ajudado e bons estudos!