Kubernetes na nuvem da Oracle! De graça!?

Sim, você não leu errado! Um cluster pra chamar de seu, de graça pra sempre.

Conheci a Oracle Cloud Infrastructure em julho de 2021, sem muito conhecimento de kubernetes (trabalho com docker há tempos, mas kubernetes não tinha conhecimento sólido, no máximo alguns cursos explicando alguns conceitos e eu ainda não entendia bem como tudo se encaixava.). Portanto, achei mais interessante, subir uma única instancia com todo o recurso que era disponibilizado no modelo de serviços de nuvem Uso Livre (Always Free). Para quem quiser conhecer mais, segue o link oficial: https://www.oracle.com/br/cloud/free/

Até que… O @Badtux_, Jeferson Fernando da LINUXtips fez um vídeo onde falava sobre um dia inteiro de cursos e a possibilidade de certificação e um monte de coisa interessante, num sábado. Algo interessante é que fora mencionado a possibilidade de gerar uma nova conta até mesmo pra quem já tivesse uma, isso fazia muito sentido para o meu contexto.

Tenho um filho pequeno em casa, precisei negociar o tempo com a esposa, no trabalho eu estava de segunda a segunda resolvendo problemas e num dia que eu poderia estar livre, já estava arrumando mais coisas para fazer.

Chegou o dia, assisti de ponta a ponta, junto de alguns conhecidos os quais a gente ia conversando sobre os conteúdos. Houveram algumas dificuldades, criação da conta bugou, mas depois resolveram (não sei exatamente os valores mas chutando foram umas 10 mil contas gratuitas para sem criadas em alguns poucos dias então é perfeitamente aceitável, visto que estamos falando de algo sem custo algum).

Com algumas semanas tendo passado, comecei a testar um projeto que foi mencionado durante o sábado, o ampernetacle que prometia subir um cluster kubernetes, usando apenas os serviços de Uso Livre da nuvem da oracle. Logo no início quando as dificuldades surgiram, achei mais interessante fazer a prova da certificação.

Passado esse momento, comecei a pegar o ampernetacle novamente e deixá-lo bem funcional para os meus testes que já fiz e para os que virão =)

Seguindo o manual feito pelo autor do projeto, precisaremos de uma conta na OCI (utilizar região ashburn-1 foi algo mencionado pelos instrutores da Oracle que participaram do evento, as regiões no Brasil costumam falhar por falta de recurso para instanciar os nós), instalar o kubernetes no computador local para ter o kubeadm, kubelet e kubectl, o terraform e o OCI CLI. Na sequencia a parte de configuração das credenciais da OCI e ai sim, baixar o projeto e executar os comandos terraform para subir o cluster kubernetes limpo, sem nada em execução.

Ok, mas e agora? Tenho um cluster mas não tenho nada? Como posso testar isso e saber que realmente subiu o cluster? É, o cluster sobe uma infraestrutura básica para receber as aplicações, então precisamos por aplicações no cluster, porém, podemos executar alguns comandos que garantem que o cluster está online.

kubectl get nodes

Outros comandos que podem ser úteis para ver como está o cluster

kubectl get nodes -o wide
kubectl get pods --all-namespaces

Sabendo que o cluster funciona, o autor do projeto menciona algumas ressalvas. Caso fosse criado um serviço usando LoadBalancer este não iria funcionar, e como solução ele menciona o uso de NodePort e, não há um controlador para entrada de dados (ingress controller) e também não possui algo para o armazenamento de dados.

Para cada um desses problemas, encontrei uma solução.

Para o LoadBalancer e a entrada de dados funcionarem encontrei a solução MetalLB e o NGINX Ingress Controller possui suporte a este.

E para o armazenamento de dados, utilizei o Longhorn.

 

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.2.3/deploy/longhorn.yaml

Também adicionei o cert-manager para ter um gerador de ssl automático.

Seguem os manifestos que apliquei no cluster.

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/metallb.yaml
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yaml

E aqui segue um exemplo de um nginx, no fim desse exemplo você deve ter acesso ao dominio configurado e um ssl registrado automaticamente para o email configurado

Aplique no cluster cada arquivo com:

kubectl apply -f arquivo.yaml

config.yaml

deployment.yaml

Neste caso não utilizamos o Longhorn, mas você pode testar utilizando este exemplo da documentação oficial, basta inserir na spec do pvc: storageClassName: longhorn.

Comments are Disabled