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