🎯Raio-X do Marketing Digital: Tendências e desafios 🚀

Como usar Kubernetes na prática

Publicado em 29/05/2018

Atualizado em 03/06/2024
como usar kubernetes

Neste artigo iremos aprender como usar Kubernetes na prática, rodando uma simples aplicação WEB com Kubernetes. Será mostrado e explicado cada passo, com o objetivo de proporcionar maior conhecimento e experiência com a tecnologia.

Importante: este artigo é uma continuação do “Introdução ao Kubernetes“.

Como usar Kubernetes: primeiro objeto da aplicação – POD

No primeiro momento, depois de já ter tudo instalado em sua máquina e o diretório da aplicação criado, precisamos criar nosso objeto POD. Vamos criar o arquivo com as configurações do objeto então:

Arquivo aplicacao.yaml
apiVersion: v1   #versão da API do Kubernetes 
kind: Pod        #Tipo do objeto que será criado
metadata: 
 name: aplicacao #Nome de identificação para o objeto pod
spec:            #Características do objeto
 containers:
   - name: container-aplicacao
     image: php:5.6-apache
     ports:
       - containerPort: 80

Depois de criar o arquivo do objeto com suas especificações, precisamos rodar o comando que de fato é responsável por sua criação:

$ kubectl create -f aplicacao.yaml
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$ kubectl create -f aplicacao.yaml 
pod "aplicacao" created

Pronto, agora que temos nosso objeto POD criado, será que já podemos testar uma das funcionalidades/vantagens do Kubernetes, que é sua regeneração própria? Bom, vamos testar removendo objeto que criamos e ver se o Kubernetes consegue regenerar ele sozinho:

 $ kubectl delete pods aplicacao
 $ kubectl get pods
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$  kubectl delete pods aplicacao 
pod "aplicacao" deleted
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$  kubectl get pods 
No resources found.

Mas o que aconteceu? O Kubernetes deveria ter recriado o objeto não? Bom, acontece que até o momento foi criado apenas o objeto POD, que é um dos objetos mais básicos do kubernetes, sendo assim, ele não tem recursos suficientes para informar o Kubernetes do status de processamento da aplicação. Para que seja possível é necessário criarmos o objeto deployment, que será responsável por atualizar o Kubernetes sobre as informações de processamento.

O objeto Deployment

Arquivo deployment.yaml
 apiVersion: apps/v1beta1  
  kind: Deployment  
  metadata:  
    name: aplicacao-deployment  
  spec:  
    template:  
      metadata:  
        labels:  
        name: aplicacao-pod  
      spec:  
        containers:  
          - name: container-aplicacao  
            image: php:5.6-apache  
            ports:  
              - containerPort: 80

Com essas configurações, agora estamos colocando nosso objeto POD dentro de outro, o Deployment, que por sua vez possui mais recursos e conseguirá então, passar o estado desejado que foi configurado para nosso Kubernetes. É possível ver que o segundo spec é basicamente o spec do nosso objeto POD inicial. Agora basta rodar o comando para criar o objeto, em seguida, vamos listar ele:

$ kubectl create -f deployment.yaml 
$ kubectl get pods
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$  kubectl create -f deployment.yaml 
deployment.apps "aplicacao-deployment" created
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$  kubectl get pods 
NAME READY STATUS RESTARTS AGE
aplicacao-deployment-787789445d-77l5r 0/1 ContainerCreating 0 7s

Agora vamos ver a mágica acontecer, remova seu objeto, aguarde alguns segundos e liste novamente utilizando o comando já ensinado e veremos o seguinte resultado:

$ kubectl delete pods aplicacao-deployment-787789445d-77l5r
$ kubectl get pods
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$  kubectl delete pods aplicacao-deployment-787789445d-77l5r 
pod "aplicacao-deployment-787789445d-77l5r" deleted
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$  kubectl get pods 
NAME READY STATUS RESTARTS AGE
aplicacao-deployment-787789445d-5m6zz 1/1 Running 0 47s

Incrível não é mesmo!? Isso prova que o Kubernetes efetuou uma regeneração própria recebendo as informações de estado da aplicação. Assim que o objeto foi removido ele iniciou a criação de um novo. #kuberneteséofuturo.

Obs: Repare na tag de identificação do objeto marcada em vermelho, elas são diferentes, realmente foi criado um novo objeto no lugar do removido.

Depois de tudo isso, queremos poder acessar nossa aplicação Web, mas como fazemos? Os objetos PODs são instáveis e sofrem constantes alterações, dessa forma, não podem ser acessados. Para isso é necessária a criação de mais um objeto, o objeto service ou, em português, serviço. Ele irá funcionar como um balanceador de cargas e nos permitirá o acesso a aplicação.

O objeto Service

Arquivo servico-aplicacao.yaml
 apiVersion:  v1  
 kind:  Service  
 metadata:  
   name:  servico-aplicacao  
 spec:  
   type: LoadBalancer  
   ports:  
     - port:  80  
   selector:  
     name:  aplicacao-pod

Depois de criar o arquivo vamos rodar o famoso comando responsável por criar o objeto e em seguida rodar o comando que nos devolve a URL de acesso a aplicação:

$ kubectl create -f servico-aplicacao.yaml
$ minikube service servico-aplicacao --url
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$  kubectl create -f servico-aplicacao.yaml 
service "servico-aplicacao" created
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$  minikube service servico-aplicacao --url 
http://192.168.99.100:31866

Acessando a URL http://192.168.99.100:31866 (ou a URL que foi retornada para você) é possível perceber que o erro 403 Forbidden foi apresentado na tela (se você entende um pouco de Docker, já deve saber o motivo). Muito simples, é por que estamos usando como base a seguinte imagem php:5.6-apache, que não vem com nada no diretório html! Agora só precisamos adicionar algum arquivo no objeto deployment para testar. Para isso vamos acessar o objeto e criar um arquivo index.php com algum conteúdo:

$ kubectl exec -it aplicacao-deployment-787789445d-5m6zz bash
$ echo "<?php phpinfo(); ?>" > index.php
iago@iagomachado ~/Desktop/Arquivos/kubernetes/app$  kubectl exec -it aplicacao-deployment-787789445d-5m6zz bash
root@aplicacao-deployment-787789445d-5m6zz:/var/www/html# echo "<?php phpinfo(); ?>" > index.php

Confira se o arquivo realmente foi criado.

root@aplicacao-deployment-787789445d-5m6zz:/var/www/html# ls
index.php

Agora basta acessar sua aplicação na URL que retornou para você e pronto! Você está rodando uma aplicação Web com Kubernetes.

Conclusão: Como usar Kubernetes na Prática

Realizamos nesse artigo uma simples demonstração e funcionamento de como usar Kubernetes na prática, entretanto, suas funcionalidades se expandem muito além do que foi aqui visto, como questões de escalonamento, volumes, entre muitas outras.

Por esse motivo, caso você tenha interesse em continuar estudando sobre a tecnologia, é recomendado conferir a documentação, e se você ainda não viu, veja nosso Webinar – [Descomplicando Kubernetes].

É importante destacar também, que atualmente existem diversos cursos onlines que ensinam de uma forma mais aprofundada como usar e aproveitar os benefícios da tecnologia. Sendo assim, não pare aqui, siga em frente e aumente seus conhecimentos com Kubernetes!

E ah, fique ligado no Blog da KingHost para mais conhecimentos e dicas. 😉

O que você achou deste conteúdo?

O que você achou deste conteúdo?

Iago
Iago Machado
Amante da programação e de exercícios que envolvam raciocínio lógico. Pronto para aprender, tardio em desistir.
Iago
Iago Machado
Amante da programação e de exercícios que envolvam raciocínio lógico. Pronto para aprender, tardio em desistir.

Compartilhe esse conteúdo com alguém que possa gostar também

Receba todo mês conteúdos
incríveis como esses para
seguir evoluindo

Mensagens para você