Como entrar no Inferno por causa do Helm, mas pegue um canudo

- Os descolados cansados ​​dizem a verdade.

Todos nós (ou seja, eu) adoramos arrastar tudo novo e brilhante para a produção, a fim de finalmente substituir alguns problemas por outros. Essa história é dedicada a nós (ou seja, a mim).

Para entender e perdoar o restante do texto, você precisará de um conhecimento superficial de como trabalhar com o Kubernetes no nível do usuário e de alguns rumores sobre o Helm .

Vamos abstrair primeiro e depois deixar alguém lidar com isso. Imagine por um momento que somos uma espécie de Columbus no mundo dos smoothies, scooters elétricos e Kubernetes. Nosso pessoal se aglomera na velha mulher superpovoada da Europa em um de seus pequenos estados intermináveis, implantando implantações com o kronjob diariamente para a crise dos quadrocopters. Mas os astrônomos já encontraram uma explicação para a suspeita curvatura do horizonte. E há um sentimento de que somos a própria Van Escolhida de nosso tempo. (Mas ninguém perguntou.) E em algum lugar além do oceano semicircular - o caminho mais curto para a Índia! Espaços abertos sem fim, liberdade do fardo da rotina e muitas especiarias perfumadas gratuitas. Você só precisa trazer nosso pessoal para lá e, finalmente, libertá-lo! Espalhar os oceanos à nossa frente é demais, mesmo para a magnificência que somos. Portanto, você precisa construir navios, embalar neles nossas implantações, emprego de kron e outros demônios, elevar serviços em vez de velas e dirigir direto para a luz lá. Para dirigir, você precisa de um leme, ou seja, Leme. Ele é um capacete. Um capacete seria definitivamente útil, se soubéssemos antecipadamente o que nos espera pela frente. Mas existe apenas um leme. Construir navios não é fácil, por isso precisamos de ajuda, por assim dizer, mas nosso pessoal está sempre ocupado com algo muito inútil. Portanto, é necessário, por assim dizer, e como sempre. Estamos começando lentamente, construindo um pequeno barco, remando para a Índia, vendo as vastas extensões com nossos próprios olhos, tomando uma especiaria, nadando de volta, mostrando às pessoas. Pessoas assim, abençoam nossos esforços. Em seguida, preparamos um ótimo resultado, ordenamos as configurações, construímos muitos navios. As pessoas estão em forma, interessadas. Mostramos, dizemos, esclarecemos, prometemos, prometemos, prometemos ... Quanto mais navios - mais interesse. Alguém se junta, ajuda. Para que tudo isso não fique ocioso, nadamos nas encostas próximas, ainda não há especiarias lá, é impossível morar lá, mas os turistas gostam disso. E agora, depois de semanas / meses / melhores anos / mangas, ele, naquele dia, chegou! É hora de liberar a flotilha e conquistar a terra incógnita. Com apreensão na alma, nosso povo está navegando para a Índia e lá, na América, ficamos loucos. E tudo parece muito parecido, mas isso é um palpite ... É claro que nosso pessoal imediatamente experimenta (haha, na verdade eles não se importam), eles começam a desenvolver o território, casas lá, repolho, todos os tipos de serviços estão sendo implantados. Mas aqui e ali, algo desaparece periodicamente, como se através da terra. Esse andar desaparecerá, o coco não dará à luz. E murmuramos com um zumbido crescente " espere, espere, ainda não estou pronta, me dê apenas um dia ..." E assim, apertamos os olhos com cuidado, e ali, na frente, atrás de cada arbusto, os índios aparecem de repente com machados e ficam assim ... indelicados ou algo assim ... E um calafrio percorre o meio do gânglio. E as pessoas são: - “O que há lá? Onde fica o meu andar? E nós somos: - “Meu povo! Não que eu esteja enganando você há 40 anos, e ninguém o enterrará de volta, é claro, mas agora, urgentemente, *****, PRECISAMOS CONSTRUIR UMA FREQUÊNCIA !!!!!! ” E eles são: - "Ah, claro, como sempre de novo."

Foi assim que me senti quando transferi um certo número de serviços em produção do Kubernetes puro para o Helm e, em seguida, deparei com ele .

Bem, no final, o prometido canudo de salvação. Primeiro, a versão light, mas com uma explicação do absurdo acima. Aqui está um cenário de demonstração:

  1. Digamos que estou expandindo o gráfico para o projeto: 1.5. Pela primeira vez com Helm, e antes disso era apenas Kubernetes.
  2. Então eu descobri que há um bug no lançamento, mas na versão 1.4 não havia. E deveríamos reverter, mas para ela e Helm também não havia gráfico. Portanto, decido fazê-lo da maneira antiga: kubectl set image deployment/project project=registry.project.com/project:1.4 --record . Para isso e para um pacote de outros serviços que foram implantados juntos.
  3. Acontece que o erro, por assim dizer, não estava neste serviço, mas no vizinho, e está tudo bem com isso e você precisa retornar 1,5. Agora, se você chamar a helm upgrade --install , haverá uma grande surpresa ( mais detalhes ): a imagem ainda será da 1.4 e os rótulos - da 1.5. E Helm mostra que está tudo bem, na verdade 1,5 são implantados lá e até os pods foram reiniciados (a criação de CI é verde).

Como evitar isso? Se você fizer alguma alteração em qualquer recurso do K8s controlado pelo Helm com comandos puros do kubectl na parte superior do Helm Chart implantado, também deverá cancelar essas alterações com os comandos do kubectl. Helm pode implantar um novo gráfico. Mas ele compara o novo gráfico com o anterior, mas não com o estado atual dos recursos. E se você editou a imagem, a versão futura do Chart provavelmente conterá outra imagem e tudo ficará bem. Mas se você editou uma variável de ambiente, ou iniciou argumentos, ou qualquer outra coisa, a nova versão do Chart provavelmente não difere da anterior. E suas alterações manuais permanecerão em vigor após a atualização.

E, para começar, uma versão pesada dos canudos de salvação para aqueles que não conseguem concordar com essa imprevisibilidade do estado.

Novas tecnologias são a fonte de novas tristezas.

Source: https://habr.com/ru/post/pt426243/


All Articles