Ir para o conteúdo principal

Instanciar objetos no Cluster Nacional utilizando o Kubernetes

Nesta atividade iremos explorar algumas possibilidades utilizando o Kubernetes para instanciar objetos no Cluster Nacional.

Iremos utilizar alguns conceitos mencionados anteriormente para demonstrar em um ambiente real, como podemos subir pods, deployments e services…

Como exemplo iremos subir uma aplicação web utilizando deployments, services e demais configurações,  de forma que a mesma fique acessível externamente.

Também iremos demonstrar como o Kubernetes pode auxiliar no processo de atualização de versão, sem que a aplicação fique inacessível.

Diagrama- web-app-fundo branco.png

Para o acesso ao Namespace iremos utilizar o seguinte comando :

ssh -i .ssh/{USER} {USER}@xx.xx.xx.xx -p xx

 Os arquivos que se encontram nos diretórios dos namespaces Não devem ser alterados!

Parte-01

1- Subindo nosso Primeiro Pod no Cluster Nacional 

Navegue até o diretório  wtestbeds-2025 .

cd wtestbeds-2024 

As etapas foram estruturadas em partes 01 , 02 e 03

Navegue até o dir parte-01 para darmos  inicio as primeiras atividades.

cd parte-01

Temos 3 arquivos : pod-v1.yaml, deployment-v1.yaml,service-v1.yaml

Utilize o comando cat para visualizar o arquivo pod-v1.yaml

 

cat pod-v1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: simple-api
  labels:
    app: simple-api
spec:
  containers:
  - name: simple-api
    image: gustavoleitao/simple-api:1.0.0
    ports:
    - containerPort: 3000

A aplicação que iremos executar trata-se de um:

2- Subindo nosso primeiro deployment no Cluster Nacional

Utilize o comando cat para visualizar o arquivo deployment-v1.yaml

 

cat deployment-v1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: simple-api
  labels:
    app: simple-api
spec:
  replicas: 2
  selector:
    matchLabels:
      app: simple-api
  template:
    metadata:
      name: simple-api
      labels:
        app: simple-api
    spec:
      containers:
      - name: simple-api
        image: gustavoleitao/simple-api:1.0.0
        ports:
        - containerPort: 3000

Para criamos o nosso primeiro deployment utilizamos o comando abaixo:

kubectl apply -f deployment-v1.yaml

Observe que o deployment foi criado corretamente:

kubectl get pods

Para uma descrição mais detalhada utilize:

kubectl get pods -o wide

 

 

 

 

 

Para criamos o nosso primeiro pod utilizamos o comando abaixo:

kubectl apply -f pod-v1.yaml

Observe que o pod foi criado corretamente:

kubectl get pods

Para uma descrição mais detalhada utilize:

kubectl get pods -o wide

Digite o comando abaixo para deletarmos o pod que criamos:

kubectl delete -f  pod-v1.yaml

3- Subindo nosso primeiro Service no Cluster Nacional

Agora que o nosso deployment foi criado vamos criar um serviço para que possamos acessar a aplicação web.

Untitled.png

Vamos criar um service do tipo NodePort , veja o arquivo service-v1.yaml:

apiVersion: v1
kind: Service
metadata:
  name: simple-api
  labels:
    app: simple-api
spec:
  type: NodePort
  ports:
  - port: 3000
    targetPort: 3000
    nodePort: 300xx
  selector:
    app: simple-api

Para criamos o nosso primeiro service utilizamos o comando abaixo:

 

Kubectl apply -f service-v1.yaml
Kubectl get service

#Parte-02

1- xxxxx  utilizando objetos do tipo deployment.

Utilizaremos a mesma imagem, porém, com algumas  atualizações:

Navegue até o dir parte-02 para darmos continuidade as atividades

 

cd parte-02

Agora vamos atualizar a versão da aplicação utilizando o arquivo deployment-v2.yaml

cat deployment-v2.yaml

Observe o arquivo abaixo:

 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: simple-api
  labels:
    app: simple-api
spec:
  replicas: 2
  selector:
    matchLabels:
      app: simple-api
  template:
    metadata:
      name: simple-api
      labels:
        app: simple-api
    spec:
      containers:
      - name: simple-api
        image: gustavoleitao/simple-api:1.0.2
        ports:
        - containerPort: 3000

Atualizarmos a nossa aplicação utilizando o comando abaixo, aplicando as novas configurações:

 

Kubectl apply -f deployment-v2.yaml

Observe que o pod foi criado corretamente:

 

kubectl get pods

Para uma descrição mais detalhada utilize:

kubectl get pods -o wide

Para observarmos a criação dos pods podemos utilizar o seguinte comando:

watch ' kubectl get pod -o wide