Helm redefiniu recursos para um estado bom conhecido

Helm redefiniu recursos para um estado bom conhecido

Estamos começando a gerenciar recursos do Kubernetes com Helm e temos alguns usuários que estão acostumados a gerenciar recursos com kubectl edit. Gostaríamos que o Helm higienizasse os recursos implantados sempre que for executado, trazendo-os de volta a um estado bom.

Observei que isso helm upgradenão substitui meus ConfigMaps. Em vez disso, ele mescla atributos entre o ConfigMap implantado e o modelo Helm, fornecendo partes do meu ConfigMap modelado e partes do modelo editado manualmente. Se não houve alterações no modelo Helm ConfigMap, o Helm faznãoredefinir qualquer parte do meu ConfigMap implantado de volta para um estado válido.

Como posso instruir o Helm a sempre redefinir todo o meu recurso do Kubernetes para as versões modeladas pelo Helm?

Responder1

Este não é um objetivo de design do Helm e continua não sendo. Não é da competência do Helm manipular objetos que não foram criados pelo Helm ou desconsiderar alterações fora de banda em objetos sob seu "controle" - esse é um recurso que torna o Helm compatível com outros sistemas que podem alterar manifestos, e torna o Helm seguro para uso. Lembre-se de que é um sistema de renderização YAML, não um sistema de gerenciamento de configuração como Puppet ou SaltStack. Ele não "aplica" configurações.

Se desejar realizar o comportamento descrito, você pode excluir os objetos em questão antes de recriá-los com o Helm. Você pode usar namespaces do Kubernetes para fazer isso de maneira confiável, fornecendo a cada gráfico seu próprio namespace e excluindo o namespace antes da instalação do gráfico como uma forma de "reinicialização total".

Ou evite que os usuários que estão acostumados a editar manifestos kubectlfaçam isso e, em vez disso, direcione-os para inserir essas alterações em gráficos ou valores. Não parece razoável descartar suas alterações se elas precisarem ser feitas - é exatamente por isso que o Helm realiza operações de mesclagem de três vias em manifestos, para começar. Entendo o desejo de persistir a configuração em um único ponto de orquestração, mas não espere conseguir isso sem usar um único ponto de orquestração.

Esse problema surge consistentemente ao aplicar práticas de orquestração de nível superior a equipes que estão acostumadas com métodos de orquestração de nível inferior e não está de forma alguma restrito conceitualmente ao Helm. Helm é bom em lidar com a situação normalmente, executando operações de mesclagem, mas resulta em uma confusão funcional de metodologias de orquestração (pelo menos não quebra as coisas ou simplesmente falha). Comece não fazendo bagunça ou restringindo a bagunça a um ambiente de rascunho e colocando-a em gráficos do Helm para produção.

informação relacionada