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.
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.
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?
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.
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.
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.
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.
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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.