Introdução
O Kubernetes fornece namespaces como uma forma de isolar cargas de trabalho e recursos em um cluster. Neste laboratório, você aprenderá como usar namespaces para isolar cargas de trabalho e recursos. Você criará um namespace, implantará uma aplicação web simples no namespace e verificará se a aplicação web está isolada dos outros recursos no cluster.
Iniciar o Cluster Minikube
Antes de criar recursos, você precisa de um cluster Kubernetes em execução. Minikube é um ambiente Kubernetes leve que roda em sua máquina local.
Navegue para o seu diretório de trabalho:
Abra o terminal e navegue até a pasta do projeto padrão:
cd /home/labex/projectInicie o Minikube:
Inicie o Minikube para inicializar um cluster Kubernetes:
minikube start- Este comando configura um cluster Kubernetes de nó único em sua máquina local.
- O Minikube pode levar alguns minutos para iniciar, dependendo do desempenho do seu sistema.
Verifique se o Minikube está em execução:
Verifique o status do cluster Minikube:
minikube status- Procure por componentes como
kubeleteapiserverlistados comoRunning. - Se o cluster não estiver em execução, execute novamente
minikube start.
- Procure por componentes como
Se você encontrar problemas ao iniciar o Minikube. Use minikube delete para redefinir o ambiente, se necessário.
Criar um Namespace
Nesta etapa, você criará um namespace chamado webapp para isolar a aplicação web dos outros recursos no cluster.
Crie um arquivo chamado namespace.yaml com o seguinte conteúdo:
apiVersion: v1
kind: Namespace
metadata:
name: webapp
Aplique o namespace ao seu cluster com o seguinte comando:
kubectl apply -f namespace.yaml
Verifique se o namespace foi criado com o seguinte comando:
kubectl get namespaces
Você deve ver o namespace webapp na lista de namespaces.
Implantar uma Aplicação Web
Nesta etapa, você implantará uma aplicação web simples no namespace webapp.
Crie um arquivo chamado web-app.yaml com o seguinte conteúdo:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
namespace: webapp
spec:
replicas: 1
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Este arquivo cria um Deployment com uma réplica de um container que executa a versão mais recente do servidor web Nginx.
Aplique o Deployment ao seu cluster com o seguinte comando:
kubectl apply -f web-app.yaml
Verifique se a aplicação web está em execução no namespace webapp com o seguinte comando:
kubectl get pods -n webapp
Você deve ver o pod web-app na lista de pods em execução no namespace webapp.
Expor a Aplicação Web
Nesta etapa, você irá expor a aplicação web ao mundo exterior usando um Kubernetes Service.
Crie um arquivo chamado web-app-service.yaml com o seguinte conteúdo:
apiVersion: v1
kind: Service
metadata:
name: web-app
namespace: webapp
spec:
selector:
app: web-app
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP
Este arquivo cria um Service que expõe a aplicação web ao cluster usando um ClusterIP.
Aplique o Service ao seu cluster com o seguinte comando:
kubectl apply -f web-app-service.yaml
Verifique se o Service está em execução no namespace webapp com o seguinte comando:
kubectl get services -n webapp
Você deve ver o serviço web-app na lista de serviços em execução no namespace webapp.
Verificar o Isolamento do Namespace
Nesta etapa, você irá verificar se a aplicação web está isolada dos outros recursos no cluster.
Crie um arquivo chamado other-app.yaml com o seguinte conteúdo:
apiVersion: apps/v1
kind: Deployment
metadata:
name: other
spec:
replicas: 1
selector:
matchLabels:
app: other
template:
metadata:
labels:
app: other
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
Neste arquivo, você está criando outro Deployment chamado other no namespace padrão que executa um container com a imagem nginx.
Aplique o Deployment ao seu cluster com o seguinte comando:
kubectl apply -f other-app.yaml
Verifique se o Deployment está em execução no namespace padrão com o seguinte comando:
kubectl get pods | grep other
Você deve ver o pod other na lista de pods em execução no namespace padrão.
Verificando Acesso entre Namespaces
Primeiramente, encontre o nome do pod que está executando sua aplicação, executando o seguinte comando:
kubectl get pods -l app=other
Você deve ver o pod other. Anote o nome do pod.
Em seguida, execute o seguinte comando para abrir uma sessão de shell no container que está executando sua aplicação:
kubectl exec -it pod-name -- /bin/sh
Substitua pelo nome do pod que você anotou anteriormente.
Uma vez na sessão de shell, execute o seguinte comando para acessar o Deployment web-app:
curl web-app.webapp
Você deve ver a resposta HTML do servidor web Nginx.
Resumo
Neste laboratório, você aprendeu como usar namespaces para isolar cargas de trabalho e recursos em um cluster Kubernetes. Você criou um namespace, implantou uma aplicação web simples no namespace, expôs a aplicação web ao mundo exterior usando um Kubernetes Service e verificou que a aplicação web está isolada dos outros recursos no cluster.


