Como rodar um cluster Kubernetes local
Introdução
Olá pessoal tudo bem?
Decidi contribuir aqui na comunidade um pouquinho com meus conhecimentos.
Enquanto não tomo coragem para produzir vídeos educativos no Youtube (hoje só no TikTok) vou escrevendo alguns artigos aqui para contribuir com a comunidade.
Tenho experiência com a tecnologia Kubernetes e vejo que os canais de tecnologia brasileiros abordam tanto esse tecnologia incrível.
Vou dar uma introdução ao Kubernetes em outro artigo. Hoje, estou focado em te ensinar como subir um cluster local de maneira rápida e prática para você brincar com a tecnologia
Repositório com o Código
Meu repo para esse artigo pode ser encontrado aqui: https://github.com/estevaofay/minikube
Instalando o minikube
O minikube é um utilitátio que consegue subir um cluster Kubernetes (vou usar bastante a sigla K8s) dentro de um container no seu computador.
Ou seja, como pré-requisito, preciso que você tenha docker instalado na sua máquina.
Como estamos falando de kubernetes, eu assumo que você tenha o kubectl
também instalado
Site oficial: https://minikube.sigs.k8s.io/docs/start/
A melhor forma de instalar na minha opinião é:
- Windows -> usando Chocolatey
- MacOS -> usando Homebrew
- Linux -> Instalando o binário (ou debian package se for mais fácil)
Como estou usando MacOS vou seguir os passos a seguir:
$ brew install minikube
Verificando uma instalação bem sucedida
$ minikube version
> minikube version: v1.25.2
> commit: 362d5fdc0a3dbee389b3d3f1034e8023e72bd3a7
Criando um cluster local
O que me faz gostar muito do minikube é a facilidade de criar e destruir um cluster local
$ minikube start
Você pode passar muitas flags para esse comando, providenciando mais ou menos recursos para o minikube criar o seu cluster, e uma série de outras configs (como a versão do kube-api do seu cluster) mas só com isso já é suficiente para mim 99% dos casos.
O minikube quando terminar de criar o cluster vai adicionar as credenciais ao seu ~/.kube/config
(arquivo com as credenciais k8s que vc tem configurado)
Verificando o minikube nos contextos
$ kubectl config get-contexts
> CURRENT NAME CLUSTER AUTHINFO NAMESPACE
> * minikube minikube minikube default
Rodando uma aplicação
Recomendo sempre trabalhar de forma declarativa com K8s, entretando para esse tutorial seria legal vermos uma aplicação rodando para ver se tudo está funcionando.
Podemos fazer isso com uma pod nginx com o seguinte comando:
$ kubectl run nginx --image=nginx --namespace default
> pod/nginx created
Verificando a aplicação criada
$ kubectl get pod --namespace default
> NAME READY STATUS RESTARTS AGE
> nginx 1/1 Running 0 69s
Uma pod simples assim não faz muita coisa, mas já ajuda a entender como funciona um cluster k8s.
Um último comandinho legal é para ensinar você a pegar os logs do dessa pod.
$ kubectl logs nginx --namespace default --follow
> 2022/05/17 16:26:17 [notice] 1#1: using the "epoll" event method
> 2022/05/17 16:26:17 [notice] 1#1: nginx/1.21.6
> 2022/05/17 16:26:17 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
> ...
Agora é hora de experimentar e brincar com seu cluster local
Divirta-se, aplique manifestos helm, faça um ingress, trabalhe com services e teste tudo local antes de ir para PROD 😄
A ideia é que você sempre faça alterações locais antes de levar isso para um cluster da empresa
Deletando o cluster
Para deletar é tão simples quanto para criar. Somente precisamos de:
$ minikube delete
> 🔥 Deleting "minikube" in docker ...
> 🔥 Deleting container "minikube" ...
> 🔥 Removing /Users/$USER/.minikube/machines/minikube ...
> 💀 Removed all traces of the "minikube" cluster.
Verificando que o cluster foi deletado
Só rodar aquele comando dos contexts. Ele deveria retornar vazio
$ kubectl config get-contexts
> CURRENT NAME CLUSTER AUTHINFO NAMESPACE
É isso galera, espero que gostem. Tenho gosto por ensinar e venho fazendo isso na minha empresa/no TikTok. Um dia espero fazer um colab com o @filipedeschamps, seja por vídeo ou seja pelos trabalhos incríveis que vocês estão liderando na comunidade open-source.
Se vocês gostarem vou fazer uma série de artigos para vocês aprenderem comigo como usar K8s para criar uma plataforma que escala para milhões de requisições/usuários.
Um abraço!