apiVersion: apps/v1 # Obrigatorio, versão da API do Kubernetes que contém esse recursos
kind: Deployment  # Tipo de objeto a ser criado
metadata:
  name: pod-info-deployment # Nome do deployment
  labels: # Labels a serem aplicados, podem ter quaisquer nomes e valores
    role: pod-info
spec: # contém as especificações do deployment pod, como os containers que irão rodar, quantidade de pods, etc..
  selector: # Indica como o Deployment vai saber quais pods gerenciar
    matchLabels: # Busca pods por labels
      app: pod-info # Pods que tenham o label app = getting-started
  replicas: 2 #roda duas replicas da pod
  template: # Template da pod que será criada 
    metadata: 
      labels: # Labels. Devem ser iguais à MATCH EXPRESSION acima
        app: pod-info
    spec:
      containers: # Lista de containers da POD 
        - name: web # Nome do container dentro da POD
          image: stefanprodan/podinfo  # Imagem do Docker que será utilizado
          ports: # portas que a POD expões para o cluster. Essa porta não é acessível fora do cluster
            - name: web # Nome da porta
              containerPort: 9898 # PORTA
              protocol: TCP # Tipo de protocolo (TCP ou UDP)
          resources: # Recursos que a POD usa (CPU, memória, etc...)
            limits: # Limite máximo de recursos
              cpu: 500m # 500 milis cpus (meia CPU) é o limite máximo que este container pode usar
              memory: 200Mi # 200 MB de memória é o  o limite máximo que este container pode usar
            requests: # limite mínimo que o container precisa
              cpu: 100m # 100 milis cpis (0,1 CPU) é o mínimo que este container precisa ter reservado 
              memory: 100Mi # 100 MB de memória é o mínimimo que este container precisa ter reservado 