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.
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
cd WTESTBEDS-2025
As etapas foram estruturadas em partes 01 , 02 e 03
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.
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 .
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