Alura > Cursos de DevOps > Cursos de Containers > Conteúdos de Containers > Primeiras aulas do curso Kubernetes: criando e gerenciando charts com o Helm

Kubernetes: criando e gerenciando charts com o Helm

Explorando o Helm - Apresentação

Olá! Boas-vindas a este curso de Helm na Alura, com o Leonardo Sartorello.

Audiodescrição: Leonardo é um homem branco, com barba e cabelos castanhos e olhos azuis. Ele veste uma camiseta preta. Atrás dele, há uma parede iluminada com luzes em tom de azul e vermelho, além de uma estante com objetos diversos, dentre eles, uma letra "A" decorativa na fonte do logotipo da Alura.

Para quem é este curso?

Este curso é para você que deseja entender o que é o Helm e como ele pode ajudar a gerenciar as configurações das aplicações do Kubernetes. Sempre, claro, entendendo e utilizando das boas práticas dele e como ele consegue reaproveitar os códigos utilizando o Helm.

O que vamos aprender?

Você vai entender o que é o Helm e como ele vai se integrar dentro do Kubernetes. Vamos também entender como funcionam os templates e os charts. E tudo isso criando nosso próprio chart para realizar o deploy de uma aplicação utilizando o Helm.

E qual vai ser essa aplicação? É a aplicação do Alura Foods, um projeto em microsserviços em Java dividido em quatro microsserviços e contando com um banco de dados do MySQL.

Então, aproveite todos os recursos da plataforma porque além dos vídeos, temos as atividades, o apoio do fórum e da comunidade do Discord. Então, vamos estudar?

Explorando o Helm - Ambiente e aplicação

Neste curso, vamos trabalhar com o Helm, um complemento dentro do Kubernetes. Para isso, precisaremos de um cluster do Kubernetes. Portanto, utilizaremos o Minikube para iniciar esse cluster

Se você não tiver o Minikube, basta ir na atividade "Preparando Ambiente", onde haverá um passo a passo de como instalá-lo no seu sistema operacional, seja Windows, Linux ou Mac.

Iniciando o minikube

Vamos lá! Como vamos iniciar o Minikube? Estamos no Visual Studio Code, com o terminal aberto. Vamos executar o comando minikube start e vamos passar alguns parâmetros a mais, devido ao tamanho da nossa aplicação. Começando com --memory=6G, porque vamos liberar para o Minikube o uso de 6 gigas de memória.

Além disso, para torná-lo um pouco mais rápido, vamos passar o --cpus. Vamos dar o igual, e liberar 4 núcleos para o Minikube poder utilizar. Isso vai acelerá-lo, permitindo que ele inicie mais coisas.

minikube start --memory=6G --cpus=4

Então, vamos iniciar o Minikube pressionando "Enter". Enquanto ele está iniciando, vamos dar uma olhada nessa aplicação. Qual é essa aplicação que vamos iniciar? É a mesma aplicação que fizemos da última vez nesta formação de Kubernetes. É uma aplicação em microservices (micro-serviços), com 4 partes: o Gateway, o serviço de pagamentos, de pedidos, e o Server, que vai controlar esses microsserviços.

São 4 microsserviços feitos em Java. Vamos colocar várias réplicas deles, para eles poderem ter redundância, e não ter nenhum tipo de problema na hora de iniciar esses serviços.

Essa aplicação também vai precisar de um banco de dados do MySQL, e algumas configurações a mais. Quais configurações são essas? Vamos entrar na pasta "k8s", que já estará disponível para você, junto com a aplicação.

Dentro da pasta "k8s", já temos todos os arquivos de configuração do Kubernetes necessários para ele iniciar. Isso é uma mão na roda para nós, já está tudo pronto.

Vamos modificar esses arquivos, utilizando o Helm, que vai nos ajudar a controlar e reutilizar esses arquivos e torná-los reutilizáveis para outras aplicações. Ou até, para essa aplicação, caso queiramos mudar alguma configuração dela, de uma forma um pouco mais simples.

Instalando o Helm

Vamos abrir o navegador e buscar por "Helm" no Google. O primeiro link que aparece como resultado é a documentação do Helm. É o helm.sh, que já cai direto no "Installing Helm", instalando o Helm.

Vamos clicar nesse link. A página do Helm está disponível também em português. Para trocar o idioma, clicamos no menu suspenso no canto superior direito do site, onde está a palavra "English" por padrão e mudamos para "Português". E ele vai passar um passo a passo de como podemos instalar o Helm.

Importante: Temos formas diferentes de instalar o Helm.

Podemos instalar através dos releases dos binários. O que é uma opção, mas não recomendamos. Porque toda vez que tiver uma atualização, temos que fazê-la manualmente.

Podemos instalar a partir de scripts. O Helm já disponibiliza um script para podermos utilizar. Também não é muito interessante, porque temos que fazer a atualização manualmente. Não tem atualização automática.

Além disso, não é seguro simplesmente baixar um script da internet e executá-lo. É bom sempre abrir, entender o que ele faz, ver se ele é confiável. E depois fazer a execução.

Então, como podemos fazer para evitar esses problemas? Para ter a atualização automática, não precisar ficar mexendo com scripts, nada disso. Através do gerenciador de pacote.

No macOS, usamos o Homebrew, com o seguinte comando:

brew install helm

No Windows, o Chocolatey ou o Winget, com um dos comandos abaixo:

// Comando Chocolatey
choco install kubernetes-helm

// Comando Winget
winget install Helm.Helm

E no Ubuntu, vamos usar o Apt:

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

Ele já dá para nós todos os comandos. Vamos copiá-los e voltar para o Visual Studio Code. Vamos colar todos os comandos e pressionar o "Enter". Colocar a senha de sudo que ele vai pedir. E esperar ele instalar o Helm.

É uma instalação de pacote, como qualquer outra que fazemos. Então, é um processo que vai levar um tempo. Mas, ele vai terminar para nós. E vamos poder começar a explorar o Helm. Ver tudo o que ele pode fazer. Tudo o que ele vai nos ajudar neste curso.

Explorando o Helm - O que é o Helm

Agora que já temos o Helm instalado em nossa máquina, vamos explorar o que essa nova ferramenta nos permite fazer dentro do Kubernetes em termos de gerenciamento de configurações e aplicações de forma geral. Vamos começar a explorar os usos do Helm e, principalmente, as partes dele chamadas de Helm Charts e o que elas podem fazer por nós.

A melhor maneira de pensar nos Helm Charts dentro do Helm é como se fosse o Dockerfile (arquivo Docker) de uma aplicação, porém dentro do Kubernetes e, claro, também dadas as devidas proporções.

Vamos abrir a página da documentação do Helm no navegador, para descobrir onde podemos adquirir esses Helm Charts e depois ver como podemos criar nosso próprio Helm Chart.

Estamos na página de instalação. No menu superior, temos as opções "Início", "Docs" e "Charts". Vamos clicar em "Charts" e uma nova guia será aberta, onde há uma barra de busca para pesquisarmos os charts.

Ele vai abrir o Artifact Hub, que é semelhante ao Docker Hub, onde podemos começar a pesquisar por pacotes. Vamos pesquisar, por exemplo, pelo "MySQL", pois nossa aplicação vai precisar dele.

Ao fazer a busca, ele vai mostrar o pacote MySQL, feito pela Bitnami, e ele tem 170 estrelas, 170 pessoas acham que esse pacote é muito bom. Se olharmos o próximo, MySQL, feito pelo pessoal do Helm, ele só tem 11 estrelas. Isso porque a última atualização dele foi 3 anos atrás, então ele está um pouco defasado. E quanto mais descemos, encontramos pacotes com cada vez menos estrelas.

Dica: escolha o pacote que tem mais estrelas, é mais certo de que ele é um pacote estável, com bastante gente utilizando. Então, a quantidade de bugs que ele tem tende a ser menor.

Vamos escolher o MySQL do Bitnami e vamos ver como ele funciona. No lado direito, já temos o botão de "Install". Vamos clicar nele e ver os passos que precisamos percorrer. Dentro do Helm v3, que é a versão mais atual que temos instalada, precisamos adicionar o repositório e depois instalar o chart.

Vamos copiar o comando para adicionar o repositório do Bitnami e colar o repositório no terminal do Visual Studio Code.

helm repo add bitnami https://charts.bitnami.com/bitnami

Vamos esperar, porque ele vai ter que pegar todas as informações desse repositório, trazer para a nossa máquina, baixar todo o índice e aí ele vai adicionar o repositório. Ao fim do processo, a seguinte mensagem é exibida no terminal:

"bitnami" has been added to your repositories

Qual é a próxima parte? Instalar nosso Helm Chart. Vamos copiar o comando de instalação, trazer para o Visual Studio Code, e vamos deixar ele instalar esse Helm Chart.

helm install my-mysql bitnami/mysql --version 11.1.16

Estamos usando o comando helm install. Logo em seguida, vem o nome que vamos dar para esse chart de instalação. Então, no nosso caso, o nome foi my-mysql, aí vamos passar qual repositório estamos utilizando, é o repositório do Bitnami do projeto do MySQL. Por fim, consta a versão do nosso chart.

Assim que ele conseguir fazer, ele vai trazer para você um resumo do que aconteceu. Qual o nome que foi instalado, quando foi feito o deploy, qual o namespace, qual o status, semelhante à mensagem a seguir:

1.7
NAME: my-mysql
LAST DEPLOYED: Wed Jul  3 13:14:26 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 11.1.7
APP VERSION: 8.4.1

Acabamos de instalar o MySQL. O MySQL vai criar algumas coisas para nós: serviço, nome de usuário, a senha ele vai criar automaticamente.

No caso da senha, ele vai dar um comando para nós. Então, para as credenciais de administrador, temos root como o nome de usuário, e a senha está passando como uma variável de ambiente.

Execute the following to get the administrator credentials:

    echo Username: root
    MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default my-mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d)

Mas podemos só copiar o valor dentro dos parênteses, colar e executar no nosso terminal para ver a nossa saída. Podemos pegar a senha, através do comando, vamos executar o kubectl get secret, ele vai pegar a senha e vai jogar a senha no nosso terminal. Ele exibe no terminal a senha que criou automaticamente para o nosso MySQL.

Então, já conseguimos instalar aplicações, dentro do Kubernetes, usando o Helm. De forma muito mais rápida do que criar os arquivos de configuração manualmente.

Mas fica a dúvida: e se quisermos modificar algum desses parâmetros? Temos como fazer isso? Temos. Dentro do Artifact Hub, na página do pacote MySQL da Bitnami, temos, na parte inferior da página, dos pacotes, o subtítulo "Parameters" (Parâmetros).

Nesse tópico, temos "Global Parameter" (Parâmetro Global), com várias opções diferentes, e os "Common parameters" (Parâmetros Comuns). Por exemplo, se quisermos definir o usuário e a senha do MySQL, temos o "MySQL Common Parameters", ou os parâmetros comuns do MySQL.

Temos, por exemplo, auth, que é a parte de autorização, auth.rootPassword, a senha do root, auth.createDatabase, para criarmos um banco de dados, auth.username, auth.password, e assim por diante. Então, temos vários parâmetros que podemos alterar.

Mas, vamos nos concentrar em passar a nossa aplicação para o Helm Chart. Vamos entrar nessa parte de parâmetros mais adiante. Então, vamos começar o nosso Helm Chart para a nossa aplicação.

Sobre o curso Kubernetes: criando e gerenciando charts com o Helm

O curso Kubernetes: criando e gerenciando charts com o Helm possui 103 minutos de vídeos, em um total de 45 atividades. Gostou? Conheça nossos outros cursos de Containers em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Containers acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas