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 ,services, ConfigMap...

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-2025

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.yml, deployment.yml, service.yml

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

cat pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: wtestbeds
  labels:
    app: wtestbeds
spec:
  containers:
  - name: wtestbeds
    image: nginx:latest

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.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wtestbeds
  labels:
    app: wtestbeds
spec:
  replicas: 5
  selector:
    matchLabels:
      app: wtestbeds
  template:
    metadata:
      name: wtestbeds
      labels:
        app: wtestbeds
    spec:
      containers:
      - name: wtestbeds
        image: nginx:latest

Para criamos o nosso primeiro deployment utilizamos o comando abaixo:

kubectl apply -f deployment.yml

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.yml

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.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: svc-wtestbeds
  labels:
    app: svc-wtestbeds
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: xxxxx
  selector:
    app: wtestbeds

Para criamos o nosso primeiro service utilizamos o comando abaixo:

Kubectl apply -f service.yml
Kubectl get service

#Parte-02

1- Configurando o NGINX utilizando objetos do tipo deployment.

Utilizaremos a mesma aplicação, porém, faremos algumas  atualizações no Deployment .

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

cd parte-02

Observe que dentro da pasta temos temos os seguintes arquivos:

comands.txr , deployment.yml, homepage.html, nginx.config


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