Implantando o helm package no ArtifactHub

Por vezes ter um ambiente kubernetes com uso de Helm packages é uma alterantiva interessante para melhor controle de implantações. Utilize esse artigo, Como criar um helm package hello world, caso não saiba em detalhes como criar um helm package do zero. Já, para seguir Implantando o helm package no ArtifactHub é fundamental que se tenha instalado o helm. Caso não tenha, consulte como instalar o helm no kubernetes.

Após a criação do helm package é necessário fazer a publicação em algum servidor web para arquivos estáticos. Para o exemplo vamos utilizar o próprio GitHub pages dada sua praticidade.

Criando o package em tar.gz

Contudo, após a geração do helm package é necessário empacotá-lo num tar.gz. Portanto isso significa que na prática o pacote é efetivamente o arquivo tar.gz que fica exposto para consumo dos clientes helm. Assim, para a produção desse arquivo basta usar a linha de comando a seguir, apontando para a pasta onde se encontam os yamls chart.yaml, values.yaml e os demais. Por fim a pasta indicada deve ter o arquivo tar.gz.

helm package pasta-da-minha-aplicacao/

Publicando no GIT

A publicação no github é apenas uma das estratégias possíveis para exposição de um site estático. No uso prático é possível escolher colocar a aplicação em qualquer servidor web, como no nginx por exemplo, num AWS S3 ou outros.

Posteriormente o github pages exigirá que exista um branch específico para armazenar as páginas do site. Além disso tenha em mente que o arquivo index.yaml é fundamental para o funcionamento do package. Ele carregará informações relevantes para que o helm entenda que se trata de um pacote válido. O exemplo a seguir cria o arquivo yaml para consumo.

helm repo index nome-do-pacote-helm --url https://anselming.github.io/nome-da-minha-aplicacao/

# ---------- Veja um exemplo de arquivo index.yaml gerado ----------
# apiVersion: v1
# entries:
#   kube-wordpress-mysql:
#   - apiVersion: v2
#     appVersion: 0.0.1-alpha
#     created: "2022-09-18T17:42:34.4331878-03:00"
#     description: Helm Chart for WordPress installation on MySQL database
#     digest: a5f7e8d940f25d3c63623e872b28c79b7d13b2cb7c870f4df53fe8e9dcb2df77
#     name: kube-wordpress-mysql
#     type: application
#     urls:
#     - https://anselming.github.io/kube-wordpress-mysql/kube-wordpress-mysql-0.1.0.tgz
#     version: 0.1.0
# generated: "2022-09-18T17:42:34.4325519-03:00"

Após a solução ter os seus arquivos mais fundamentais (como o tar.gz e o index.yaml), envie-os para o seu repositório github. Utilize os seguintes comandos:

git checkout -b gh-pages
git add .
git commit -m "Publicar o tar-gz do helm package"
git push origin gh-pages

Expondo a solução pelo github pages

Após todos os processos anteriores terem sido realizados é importante verificar se tudo está ok. Entre nas configurações no seu repositório git e vá em ‘Pages’. Veja se a configuração de branch está apontando para gh-pages, se sim clique no botão ‘Visit site’ com pouco acima.

Apenas uma página básica com o readme deve aparecer, mas se você acrescentar index.yaml a url o manifesto deverá aparecer na tela para consulta.

Testando tudo diretamente no meu helm

Primeiramente deve-se configurar o helm para ler o repositório criado. Logo após será possível efetivamente instalar a solução: O script a seguir garantirá esse funcionamento.

# Adicionando o repositório na lista de repositórios
helm repo add nome-do-repositorio https://<seu-repo>.github.io/nome-da-minha-aplicacao/

# O repositório helm deve aparecer na listagem
helm repo list       

# Criando um namespace para o kubernetes
kubectl create ns meu-namespace

# Instalando o release no kubernetes através do helm no namespace definido
helm install nome-do-repositorio/nome-da-minha-aplicacao --generate-name -n meu-namespace

# O release deve aparecer na lista
helm list -n meu-namespace      

Implantando o helm package no ArtifactHub: Atualizando para apontar para o GIT

Ademais o momento é de configurar o seu Artifacthub: Essa é uma das tarefas mais simples de todo o artigo. Vá em configurações, repositórios: adicione um novo. Para o cenário vamos adicionar um helm chart. Adicione os dados solicitados: nome, display name, url e estará quase pronto.

Após fazer isso o ArtifactHub fará um processamento em cima do repositório e um scan de segurança. Somente após a primeira rodada dessas tarefas é que o repositório ficará disponível através da ferramenta.

Tela que exibe o estado de um repositório novo
Tela de repositório após disponibilizado pelo Artifacthub

Thiago Anselme
Thiago Anselme - Gerente de TI - Arquiteto de Soluções

Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.

Deixe um comentário