Pular para o conteúdo
Closeup of developer hands typing code on keyboard while looking at computer screens

Como instalar sua primeira app no MicroK8s

Escrito por Maicon Gerardi

É conhecido que quando falamos sobre infraestrutura de microsserviços ou de sistemas distribuídos de alta performance, escalabilidade e alta disponibilidade, logo pensamos no Kubernetes para essa função. Geralmente, quando o desenvolvedor back ou front entra em um time com um projeto ou alguns projetos entregues, essa infraestrutura já foi criada e ele não participa da instalação e configuração da ferramenta. Isso dificulta para que esse profissional conheça essa parte “operacional” do fluxo e ele limita-se à utilização e deploy nessa infraestrutura.

Mas e se o desenvolvedor quer configurar do zero o Kubernetes? Para isso, existem algumas soluções de configuração fácil de um ambiente Kubernetes. Existem algumas soluções no mercado como o minikube, k3s, kind e microk8s e cada uma com as suas especificidades, conforme tabela abaixo:

Referência.

Com essas informações, a ideia deste artigo é orientar a instalação e o primeiro deploy de uma aplicação na ferramenta Microk8s. Para isso vamos utilizar o sistema operacional Linux.

 

O que é MicroK8s?

O MicroK8s, como o próprio nome diz, é um “micro” cluster do Kubernetes (saiba mais sobre o Kubernetes), ou seja, ele é utilizado como um cluster mínimo para subir componentes conteinerizados em produção. Esse sistema é de código aberto e fornece as principais funcionalidades do Kubernetes em um único nó, ou até mesmo um cluster de produção e de alta disponibilidade.

Ele também reduz os recursos, podendo ser utilizado para:

– transformar o Kubernetes em uma ferramenta de desenvolvimento leve
– disponibilizar o Kubernetes para uso em ambientes mínimos, como o GitHub CI
– adaptar o Kubernetes para aplicativos IoT de pequenos dispositivos

 

Instalação

Pré-requisitos:

– Instalação da ferramenta snapd.

1. Instalação do microk8s com o comando

$ sudo snap install microk8s --classic
microk8s (1.26/stable) v1.26.1 from Canonical✓ installed

2. Junte-se ao grupo

O MicroK8s cria um grupo para permitir o uso contínuo de comandos que exigem privilégio de administrador. Para adicionar seu usuário atual ao grupo e obter acesso ao diretório de cache .kube, execute os dois comandos a seguir:

sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
#Você também precisará entrar novamente na sessão para que a atualização do grupo ocorra:
su - $USER

3. Iniciando e Parando o MicroK8s

a. O MicroK8s continuará em execução até que você decida interrompê-lo. Você pode parar e iniciar o MicroK8s com estes comandos simples:

microk8s stop

b. interromperá o MicroK8s e seus serviços. Você pode começar novamente a qualquer momento executando:

microk8s start

4. Verifique o estado

O MicroK8s possui um comando integrado para exibir seu status. Durante a instalação, você pode usar o –wait-ready sinalizador para aguardar a inicialização dos serviços do Kubernetes:

microk8s status --wait-ready

5. Acessar o Kubernetes

O MicroK8s inclui sua própria versão kubectl para acessar o Kubernetes. Use-o para executar comandos para monitorar e controlar seu Kubernetes. Por exemplo, para visualizar seu nó:

microk8s kubectl get nodes
#ou para ver os serviços em execução:
microk8s kubectl get services

Observe que, se você deixar o MicroK8s em execução, ele será reiniciado automaticamente após uma reinicialização. Se você não quiser que isso aconteça, simplesmente lembre-se de executar microk8s stop antes de desligar.

 

Utilizando Complementos

O próprio microk8s fornece alguns complementos para serem utilizados juntamente com ele, para habilitar esses componentes basta usar o comando

# exemplo para habilitar complementos
microk8s enable dashboard dns registry istio
# para mais infos
microk8s enable --help
# para desabilitar
microk8s disable <nome complemento>

Veja a listagem completa dos complementos.

 

Construindo ou inserindo uma imagem

Agora que seu microk8s está configurado da forma correta, basta fazer o deploy da sua imagem baixar um cointaner de um registry.
Existem alguns jeitos para colocar uma imagem dentro do microk8s, são eles:
– Usando imagens locais
– Utilizando um registry público
– Usando um registry privado
– Usando um registry integrado
Neste artigo iremos abordar como utilizar imagens locais sem um registry, para isso vamo usar o seguinte Dockerfile de exemplo:

FROM nginx

Após criar esse docker file, basta executar o comando:

docker build . -t mynginx:local

Isso gerará uma imagem nova chamada mynginx:local.
Após a construção da imagem, podemos recuperar essa imagem e transferir ao microk8s, para tal, precisamos extrair a imagem do docker e criar um arquivo .tar, com o seguinte comando:

docker save mynginx > myimage.tar

Fazendo isso, ele gerará um arquivo myimage.tar que iremos transfierir com o comando ctr image import para o microk8s, confome abaixo:

microk8s ctr image import myimage.tar

PS: lembre de sempre fazer os comandos na mesma pasta para ele achar o arquivo.
Dessa forma, podemos então verificar se a imagem está de fato no microk8s:

microk8s ctr images ls

Implantando a Nossa App

Agora que conseguimos instalar e colocar a nossa app dentro do microk8s, chegou a hora de fazer o deploy dessa app.
Para isso, primeiro verificamos com o comando ctr images ls para checar se nossa imagem está lá:

microk8s ctr images ls

Após isso, vamos utilizar o comando apply -f para implantar um Deployment (para dúvidas consulte a documentação do kubernetes). Criamos o arquivo my-deploy.yml conforme conteúdo abaixo:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: mynginx:local
        imagePullPolicy: Never
        ports:
        - containerPort: 80

Execute o comando:

microk8s kubectl apply -f my-deploy.yml

Pronto, o microk8s implantará sua imagem conforme a especificação do arquivo yml criado.
Para verificar se ela realmente está no ar utilize kubectl get deployments

 

Conclusão

Para os desenvolvedores iniciantes, o microk8s acaba sendo uma opção interessante para o aprendizado devido à sua fácil configuração e utilização. Isso comparado com os seus concorrentes como o minikube. A documentação da plataforma também é bem rica e a comunidade de desenvolvedores da plataforma costuma responder os issues abertos.

Referências:
MicroK8s
Bellsoft