Explicando o arquivo de deployment do Kubernetes

Um arquivo YAML de Deployment do Kubernetes descreve como implantar e atualizar um aplicativo em um cluster Kubernetes. Ele contém informações sobre o contêiner, réplicas, estratégia de implantação, recursos de computação, rede, volumes e outros aspectos da configuração do aplicativo. Abaixo, explicamos cada componente de um arquivo YAML típico de Deployment do Kubernetes.

Sobre a estrutura do arquivo de deployment do Kubernetes

Estrutura básica do arquivo YAML: o arquivo YAML é composto por uma série de pares chave-valor, onde a chave é o nome do atributo e o valor é o valor que você deseja definir para esse atributo. A estrutura básica de um arquivo YAML para criar um serviço no Kubernetes é semelhante à seguinte:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-image:latest
        ports:
        - containerPort: 80
YAML

Vamos explicar o que é cada configuração do yaml e para que serve as chaves:

apiVersion

A seção apiVersion especifica a versão da API do Kubernetes que deve ser usada para interpretar o arquivo YAML. Neste exemplo, estamos usando a versão “apps/v1”, que é a versão mais recente da API de Implantação do Kubernetes.

kind

A seção kind especifica o tipo de objeto que estamos declarando no arquivo YAML. Neste caso, estamos declarando um objeto do tipo “Deployment”.

metadata

A seção “metadata” inclui informações sobre o nome, namespace e rótulos do Deployment. O nome é o identificador exclusivo do Deployment, enquanto o namespace é o contexto no qual o Deployment é implantado. Os rótulos permitem agrupar vários recursos e aplicar configurações de rede e segurança.

Exemplo:

metadata:
  name: my-deployment
  namespace: default
  labels:
    app: my-app
YAML

name

A seção name especifica o nome do objeto sendo declarado. Neste caso, estamos declarando um Deployment chamado “my-app”.

namespace

A seção namespace especifica o nome do namespace dentro do cluster de kubernetes, neste caso de exemplo o deployment será executado dentro do namespace: default.

spec

A seção spec especifica o estado desejado do objeto sendo declarado. Neste caso, estamos especificando como o Kubernetes deve implantar e gerenciar o aplicativo.

replicas

A seção replicas especifica o número de réplicas que devem ser implantadas do aplicativo. Neste caso, estamos especificando que devem ser implantadas 3 réplicas.

Exemplo:

spec:
  replicas: 3
YAML

selector

A seção selector especifica como o Kubernetes deve selecionar os pods que fazem parte do Deployment. Neste caso, estamos usando um seletor de rótulo para selecionar os pods com o rótulo “app: my-app”.

Exemplo:

spec:
  selector:
    matchLabels:
      app: my-app
YAML

template

A seção template especifica o modelo para os pods que fazem parte do Deployment. Ele especifica as configurações para os contêineres, rótulos e outras opções importantes.

spec:
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: my-image:latest
        ports:
        - containerPort: 80
YAML

Este exemplo define um pod que usa o contêiner “my-container” com a imagem “my-image:latest” e expõe a porta 80.

labels

A seção labels especifica os rótulos que devem ser aplicados aos pods que fazem parte do Deployment. Neste caso, estamos usando o rótulo “app: my-app”.

containers

A seção containers especifica as configurações para os contêineres que fazem parte do Deployment. Neste caso, estamos especificando o nome e a imagem do contêiner, bem como a porta que ele deve expor.

name

A seção name especifica o nome do contêiner que estamos implantando. Neste caso, estamos usando o nome “my-app”.

image

A seção image especifica a imagem do contêiner que deve ser usada para implantar o aplicativo. Neste caso, estamos usando a imagem “my-image:latest”.

ports

A seção ports especifica as portas que o contêiner deve expor. Neste caso, estamos expondo a porta 80.

Links

Mauricio Lima
Mauricio Lima

Bacharel em Ciência da Computação, profissional dedicado ao desenvolvimento de software e entusiasta da tecnologia.

Artigos: 65