Cómo entrar al infierno por Helm, pero agarra una pajita

- Los hipsters cansados ​​dicen la verdad.

A todos (es decir, a mí) nos encanta arrastrar todo lo nuevo y brillante a la producción para finalmente reemplazar algunos problemas con otros. Esta historia está dedicada a nosotros (es decir, a mí).

Para comprender y perdonar el texto adicional, necesitará un conocimiento superficial de cómo trabajar con Kubernetes a nivel de usuario y algunos rumores sobre Helm .

Primero hagamos un resumen y luego que alguien se ocupe de esto. Imagine por un momento que somos una especie de Colón en el mundo de los batidos, scooters eléctricos y Kubernetes. Nuestra gente se está aglomerando en la anciana superpoblada de Europa en uno de sus pequeños estados interminables, desplegando despliegues con kronjob diariamente para el crujido de los quadrocopters. Pero los astrónomos ya han encontrado una explicación para la curvatura sospechosa del horizonte. Y justo ahora existe la sensación de que somos la Van elegida de nuestro tiempo. (Pero nadie preguntó). Y en algún lugar, más allá del océano semicircular, ¡el camino más corto a la India! Interminables espacios abiertos, libertad de la carga de la rutina y muchas especias aromáticas gratuitas. ¡Solo necesita traer a nuestra gente allí y, finalmente, liberarlos! Extender los océanos frente a nosotros es demasiado incluso para tal magnificencia como somos. Por lo tanto, debes construir barcos, empacar en ellos nuestros despliegues, kronjob y otros demonios, elevar servicios en lugar de velas y dirigirte directamente hacia la luz allí. Para dirigir necesitas un timón, es decir, Helm. El es un casco. Un casco definitivamente sería útil, si supiéramos de antemano lo que nos espera por delante. Pero solo hay un timón. Construir barcos no es fácil, por lo que necesitamos ayuda, por así decirlo, pero nuestra gente siempre está ocupada con algo muy inútil. Por lo tanto, es necesario, por así decirlo, y como siempre. Estamos comenzando lentamente, construyendo un pequeño bote, remando a la India, viendo las vastas extensiones con nuestros propios ojos, tomando una especia, nadando de regreso, mostrándose a la gente. A la gente le gusta, bendicen nuestros esfuerzos. Luego preparamos un gran resultado, ordenamos las configuraciones, construimos muchos barcos ya. La gente está en forma, interesada. Mostramos, contamos, iluminamos, prometemos, prometemos, prometemos ... Cuantos más barcos, más interés. Alguien se une, ayuda. Para que todo esto no permanezca inactivo, nadamos en la puesta en escena cerca, todavía no hay especias, es imposible vivir allí, pero a los turistas les gusta. Y ahora, después de semanas / meses / mejores años / mangas, ¡EL MAYOR DÍA ha llegado! Es hora de lanzar la flotilla y conquistar la preciada terra incógnita. Con temor en el alma, nuestra gente navega hacia la India, y allí, Estados Unidos, nos volvimos locos. Y todo parece muy similar, pero esto es un presentimiento ... Nuestra gente, por supuesto, inmediatamente lo prueba (jaja, de todos modos no les importa), comienzan a desarrollar el territorio, las casas allí, el repollo, se están desplegando todo tipo de servicios. Pero aquí y allá, algo desaparece periódicamente, como a través de la tierra. Ese piso desaparecerá, el coco no dará a luz. Y murmuramos con un zumbido creciente " espera, espera, aún no estoy listo, dame solo un día ..." Y entonces entrecerramos los ojos cuidadosamente, y allí, en frente, detrás de cada arbusto, los indios aparecen de repente con hachas de guerra y se ven así ... cruelmente o algo así ... Y un escalofrío atraviesa el ganglio interno. Y la gente está: - “¿Qué hay allí? ¿Dónde está mi piso? Y estamos: - “¡Mi gente! No es que te haya engañado durante 40 años, y nadie te enterrará de nuevo, por supuesto, pero ahora, con urgencia, ¡¡¡NECESITAMOS CONSTRUIR UNA FRECUENCIA !!!!!! Y ellos son: - "Ah, bueno, por supuesto, como siempre otra vez".

Así es como me sentí cuando transfirí un cierto número de servicios en producción de Kubernetes puro a Helm, y luego me topé con él .

Bueno, al final, la paja salvadora prometida. Primero, la versión ligera, pero con una explicación de las tonterías anteriores. Aquí hay un escenario de demostración:

  1. Digamos que estoy expandiendo el gráfico para el proyecto: 1.5. Por primera vez con Helm, y antes de eso solo era Kubernetes.
  2. Luego descubro que hay un error en el lanzamiento, pero en la versión 1.4 no lo era. Y deberíamos retroceder, pero para ella y Helm tampoco había una tabla. Por lo tanto, decido hacerlo a la antigua usanza: kubectl set image deployment/project project=registry.project.com/project:1.4 --record . Para esto y para un paquete de otros servicios que se implementaron juntos.
  3. Luego resulta que el error, por así decirlo, no estaba en este servicio, sino en el vecino, y todo está bien con esto y debe devolver 1.5. Ahora, si llama a helm upgrade --install , habrá una gran sorpresa ( más detalles ): la imagen seguirá siendo de 1.4, y las etiquetas - de 1.5. Y Helm muestra que todo está bien, en realidad hay 1.5 implementados e incluso se reiniciaron los pods (CI-build es verde).

¿Cómo evitar esto? Si realiza algún cambio en cualquier recurso K8 controlado por Helm con comandos de kubectl puro en la parte superior de la Carta de Helm desplegada, también debe cancelar estos cambios con los comandos de kubectl. Helm puede desplegar un nuevo gráfico. Pero compara el nuevo gráfico con el anterior, pero no con el estado actual de los recursos. Y si editó la imagen, entonces la versión futura de Chart probablemente contendrá otra imagen y todo estará bien. Pero si editó una variable de entorno, o comienza argumentos, o algo más, entonces la nueva versión de Chart probablemente no difiera de la anterior. Y sus cambios manuales permanecerán en su lugar después de la actualización.

Y para empezar, una versión pesada de las pajitas de ahorro para aquellos que no pueden estar de acuerdo con la imprevisibilidad del estado.

Las nuevas tecnologías son la fuente de nuevas penas.

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


All Articles