Helm
Helm é a ferramenta de gerenciamento de pacotes preferida para Kubernetes. Os charts do Helm fornecem uma sintaxe de template para documentos de manifesto YAML do Kubernetes. Com o Helm, podemos criar implantações configuráveis em vez de apenas usar arquivos estáticos. Para mais informações sobre como criar seu próprio catálogo de implantações, consulte a documentação em https://helm.sh/docs/intro/quickstart/..
O RKE2 não requer nenhuma configuração especial para ser usado com as ferramentas de linha de comando do Helm. Apenas certifique-se de que você configurou corretamente seu kubeconfig conforme a seção sobre acesso ao cluster. O RKE2 inclui algumas funcionalidades extras para facilitar ainda mais a implantação de manifestos de recursos Kubernetes tradicionais e Helm Charts com o rancher/helm-release CRD.
Implantação Automática de Manifestos e Helm Charts
Quaisquer manifestos Kubernetes encontrados em /var/lib/rancher/rke2/server/manifests serão automaticamente implantados no RKE2 de maneira semelhante a kubectl apply, tanto na inicialização quanto quando o arquivo for alterado no disco. Excluir arquivos deste diretório não excluirá os recursos correspondentes do cluster.
Manifestos implantados dessa maneira são gerenciados como recursos personalizados de AddOn e podem ser visualizados executando kubectl get addon -A. Por padrão, você encontrará AddOns para componentes empacotados, como CoreDNS, Nginx-Ingress e Metrics Server. Os AddOns são criados automaticamente pelo controlador de implantação e são nomeados com base no nome do arquivo no diretório de manifestos.
Também é possível implantar Helm charts como AddOns. O RKE2 inclui um Controlador Helm que gerencia Helm charts usando uma Definição de Recurso Personalizado (CRD) HelmChart.
Requisitos de Nomeação de Arquivos
O nome de arquivo AddOn para cada arquivo no diretório de manifestos é derivado do nome base do arquivo.
Certifique-se de que todos os arquivos dentro do diretório de manifestos (ou dentro de quaisquer subdiretórios) tenham nomes que sejam únicos e que atendam às restrições de nomenclatura de objetos do Kubernetes. Deve-se também ter cuidado para não entrar em conflito com nomes utilizados pelos componentes padrão empacotados do RKE2, mesmo que esses componentes estejam desativados.
Um exemplo de um erro que seria relatado se o nome do arquivo contiver sublinhados:
`Failed to process config: failed to process /var/lib/rancher/rke2/server/manifests/example_manifest.yaml:
Addon.k3s.cattle.io "example_manifest" is invalid: metadata.name: Invalid value: "example_manifest":
a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')`
Desabilitando AddOns
Os AddOns para os componentes empacotados listados acima, além dos AddOns para quaisquer manifestos adicionais colocados no diretório de manifestos, podem ser desabilitados com a flag --disable. AddOns desabilitados são desinstalados ativamente do cluster, e os arquivos de origem são excluídos do diretório de manifestos.
Por exemplo, para impedir que o CoreDNS seja instalado em um novo cluster, ou para desinstalá-lo e remover o manifesto de um cluster existente, você pode iniciar o RKE2 com disable: rke2-coredns no arquivo de configuração. Vários itens podem ser desabilitados em uma lista aninhada.
# /etc/rancher/rke2/config.yaml
disable:
- rke2-coredns
- rke2-metrics-server
Usando o Helm CRD
A definição do recurso HelmChart captura a maioria das opções que você normalmente passaria para a ferramenta de linha de comando helm. Aqui está um exemplo de como você pode implantar o Grafana a partir do repositório de charts padrão, substituindo alguns dos valores padrão do chart. Observe que o recurso HelmChart em si está no namespace kube-system, mas os recursos do Chart serão implantados no namespace monitoring.
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: grafana
namespace: kube-system
spec:
chart: stable/grafana
targetNamespace: monitoring
set:
adminPassword: "NotVerySafePassword"
valuesContent: |-
image:
tag: master
env:
GF_EXPLORE_ENABLED: true
adminUser: admin
sidecar:
datasources:
enabled: true
Um exemplo de implantação de um Chart a partir de um repositório privado com autenticação:
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
namespace: kube-system
name: example-app
spec:
targetNamespace: example-space
createNamespace: true
version: v1.2.3
chart: example-app
repo: https://secure-repo.example.com
authSecret:
name: example-repo-auth
repoCAConfigMap:
name: example-repo-ca
valuesContent: |-
image:
tag: v1.2.2
---
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: example-repo-auth
type: kubernetes.io/basic-auth
stringData:
username: user
password: pass
---
apiVersion: v1
kind: ConfigMap
metadata:
namespace: kube-system
name: example-repo-ca
data:
ca.crt: |-
-----BEGIN CERTIFICATE-----
<YOUR CERTIFICATE>
-----END CERTIFICATE-----
Definições de Campo HelmChart
| Campo | Default | Descrição | Equivalente de Argumento / Flag do Helm |
|---|---|---|---|
metadata.name |
nome do Chart |
NOME |
|
spec.chart |
Nome do Chart no repositório ou URL HTTPS completa para o arquivo do Chart (.tgz) |
CHART |
|
spec.targetNamespace |
default |
namespace de destino do Chart |
|
spec.createNamespace |
falso |
Criar namespace de destino se não estiver presente |
|
spec.version |
Versão do Chart (ao instalar a partir do repositório) |
|
|
spec.repo |
URL do repositório do Chart |
|
|
spec.repoCA |
Verifique os certificados dos servidores habilitados para HTTPS usando este conjunto CA. Deve ser uma string contendo um ou mais Certificados CA codificados em PEM. |
|
|
spec.repoCAConfigMap |
Referência a um ConfigMap contendo Certificados CA que devem ser confiáveis pelo Helm. Pode ser usado junto com ou em vez de |
|
|
spec.helmVersion |
v3 |
Versão do Helm a ser usada ( |
|
spec.bootstrap |
Falso |
Defina como Verdadeiro se este Chart for necessário para inicializar o cluster (Cloud Controller Manager, etc) |
|
spec.set |
Substitua os valores padrão simples do Chart. Esses têm precedência sobre as opções definidas via valuesContent. |
|
|
spec.jobImage |
Especifique a imagem a ser usada ao instalar o Chart. Ex.: rancher/klipper-helm:v0.3.0 . |
||
spec.backOffLimit |
1000 |
Especifique o número de tentativas antes de considerar um trabalho como falhado. |
|
spec.timeout |
300s |
Tempo limite para operações do Helm, como uma string de duração ( |
|
spec.failurePolicy |
reinstalar |
Defina para |
|
spec.authSecret |
Referência ao Secret do tipo |
||
spec.authPassCredentials |
falso |
Passe credenciais de autenticação básica para todos os domínios. |
|
spec.dockerRegistrySecret |
Referência ao Secret do tipo |
||
spec.valuesContent |
Substitua os valores padrão complexos do Chart via conteúdo de arquivo YAML |
|
|
spec.chartContent |
Arquivo do Chart (.tgz) codificado em Base64 - substitui spec.chart |
CHART |
Personalizando Componentes Empacotados com HelmChartConfig
Para permitir a substituição de valores para componentes empacotados que são implantados como HelmCharts (como Canal, CoreDNS, Nginx-Ingress, etc.), o RKE2 suporta a personalização de implantações por meio de um recurso HelmChartConfig. O recurso HelmChartConfig deve corresponder ao nome e ao namespace de seu correspondente HelmChart e suporta o fornecimento de valuesContent adicionais, que são passados para o comando helm como um arquivo de valores adicional.
|
Os valores |
Por exemplo, para personalizar a configuração do CoreDNS empacotado, você pode criar um arquivo chamado /var/lib/rancher/rke2/server/manifests/rke2-coredns-config.yaml e preenchê-lo com o seguinte conteúdo:
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-coredns
namespace: kube-system
spec:
valuesContent: |-
image: coredns/coredns
imageTag: v1.7.1
Você pode encontrar todos os Helm charts empacotados, incluindo sua documentação e os valores padrão, no repositório de charts RKE2.