Deployando Com Helm Chart
Para procurar chart, utilize o repositório padrão https://artifacthub.io/. Por exemplo vamos instalar o ingress controller do nginx.
Sempre observe se o repositório é o oficial, a quantidade de estrelas, se é um repo que sofre atualizações, etc.
Entrando nesse chart https://artifacthub.io/packages/helm/nginx/nginx-ingress e lendo a documentação observamos que temos dois métodos de instalação. Podemos clonar o projeto que gerou o chart, para que possamos baseado neste chart gerar um subchart (um chart dependente de outro) ou podemos somente seguir o fluxo e adicionar o repositório. Vamos somente fazer o básico e adicionar o repositório com os comandos que ele mesmo mostrou.
# nginx-stable é o nome que vamos dar ao repo, mas poderia ser qualquer outro
helm repo add nginx-stable https://helm.nginx.com/stable
# É necessário atualizar para que helm tenha conhecimento dos charts disponíveis incluindo o novo repo
helm repo update
Antes de instalar podemos observar que nesse repo temos vários chart publicados.
❯ helm search repo nginx
NAME CHART VERSION APP VERSION DESCRIPTION
nginx-stable/nginx-appprotect-dos-arbitrator 0.1.0 1.1.0 NGINX App Protect Dos arbitrator
nginx-stable/nginx-devportal 1.3.1 1.3.1 A Helm chart for Kubernetes
# Olha ele aqui
nginx-stable/nginx-ingress 0.15.2 2.4.2 NGINX Ingress Controller
nginx-stable/nginx-service-mesh 0.6.0 1.6.0 NGINX Service Mesh
nginx-stable/nms 1.0.0 1.0.0 A chart for installing the NGINX Management Suite
nginx-stable/nms-acm 1.3.1 1.3.1 A Helm chart for Kubernetes
nginx-stable/nms-hybrid 2.6.0 2.6.0 A Helm chart for Kubernetes
Se olharmos a documentação do chart veremos que a instalação referencia esse mesmo chart. O nome do repo é nginx-stable e o chart é o nginx-ingress dentro deste repo.
Se executarmos a instalação com o método abaixo, estaremos utilizando os valores já disponíveis no arquivo Values.yaml do próprio chart.
helm install my-release nginx-stable/nginx-ingress
Você pode analisar o Values.yaml na própria página do projeto. Todo projeto tem um Values.yaml que pode ser alterado para ajustes mais finos de acordo com os seus interesses.
Em alguns projetos está e outros não está habilitado, mas com o comando do
helm show
podemos ver esses valores default.
helm show values nginx-stable/nginx-ingress > ./resources/Values.yaml
De uma olhada nesse arquivo e veja o que poderíamos ajustar.
Para instalar o chart apontando um arquivo de Values.yaml personalizado podemos utilizar o -f.
helm install nginx-ingress nginx-stable/nginx-ingress -f ./resources/Values.yaml
#NAME: nginx-ingress
#LAST DEPLOYED: Mon Dec 26 01:20:59 2022
#NAMESPACE: default
#STATUS: deployed
#REVISION: 1
#TEST SUITE: None
#NOTES:
#The NGINX Ingress Controller has been installed.
Também poderíamos mudar somente um parâmetro no arquivo dos valores default somente referenciando a chave e o valor usando o --set.
Por exemplo vamos alterar de deployment para daemonset. A parte abaixo é um corte do Values.yaml, mostrando o que poderíamos alterar.
## The kind of the Ingress Controller installation - deployment or daemonset.
kind: deployment
Já que não estamos instalando, podemos fazer somente um upgrade. Observe que a revisão vai subir, pois já é a segunda vez que estamos aplicando. Ele faz isso para poder fazer o rollback caso necessário.
helm upgrade nginx-ingress --set kind=daemonset nginx-stable/nginx-ingress
#Release "nginx-ingress" has been upgraded. Happy Helming!
#NAME: nginx-ingress
#LAST DEPLOYED: Mon Dec 26 01:25:48 2022
#NAMESPACE: default
#STATUS: deployed
#REVISION: 2
#TEST SUITE: None
#NOTES:
#The NGINX Ingress Controller has been installed.
Deletar também é muito simples.
helm uninstall #nginx-ingress
#release "nginx-ingress" uninstalled
Como não definimos um namespace anteriormente na instalação acabou sendo instalado no namespace default. Vamos aplicar novamente passando o namespace desejado.
# --create-namespace irá criar caso não exista o --namespace passado
helm install nginx-ingress nginx-stable/nginx-ingress --values ./resources/Values.yaml --create-namespace --namespace nginx-ingress
#NAME: nginx-ingress
#LAST DEPLOYED: Mon Dec 26 01:54:55 2022
#NAMESPACE: nginx-ingress
#STATUS: deployed
#REVISION: 1
#TEST SUITE: None
#NOTES:
#The NGINX Ingress Controller has been installed.
É sempre bom ter o Values.yaml definido para o que foi aplicado e futuramente usar gitops para controle.
Para verificar o que temos criado com o helm.
helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
nginx-ingress nginx-ingress 1 2022-12-26 02:06:02.518055414 -0300 -03 deployed nginx-ingress-0.15.2 2.4.2