Kuby-core: Admite versiones recientes de kubedb

Creado en 28 abr. 2021  ·  2Comentarios  ·  Fuente: getkuby/kuby-core

Desafortunadamente, la buena gente de AppsCode (los creadores de kubedb) ahora requieren que cada usuario obtenga una licencia gratuita. Si bien Kuby podría hacer algunas cosas difíciles para obtener una licencia automáticamente, eso no se siente particularmente moral (¿o tal vez incluso legal?) La única solución que se me ocurre es dirigir al usuario al sitio web de AppsCode durante la configuración del clúster y luego preguntarles por el contenido del archivo de licencia. Obviamente, eso no es ideal, pero creo que es la única opción que tenemos si queremos seguir usando kubedb con kuby (lo que creo que hacemos, es increíble).

enhancement help wanted

Todos 2 comentarios

Ok, algo de contexto adicional aquí. Resulta que la parte difícil no es obtener una licencia mediante programación (lo cual es posible, solo tenemos que solicitar a las personas un token de servidor de licencias, una dirección de correo electrónico, etc.). La parte difícil es _actualizar_ el operador kubedb y las bases de datos individuales. Desinstalar v0.12 es difícil en sí mismo porque obviamente no desea eliminar ninguna instancia de base de datos existente, pero finalmente lo hice funcionar. Afortunadamente, instalar v0.18 (la última versión en el momento de escribir este artículo) es bastante fácil con Helm... pero es muy difícil actualizar una instancia existente de Postgres o MySQL que _ya_ se está ejecutando (sin tiempo de inactividad). Estos son los pasos que (casi) tengo trabajando para Postgres:

  1. Asegúrese de que la base de datos existente esté configurada para la replicación lógica, lo que requiere un cambio en el nivel WAL (registro de escritura anticipada). Establecer el nivel de WAL requiere un reinicio de pg, por lo que la forma más fácil de hacerlo es establecer el número de réplicas en > 1 y, al mismo tiempo, decirle a kubedb que use una configuración adicional, lo que resultará en un reinicio. Desea múltiples réplicas de todos modos para que los reinicios no provoquen tiempo de inactividad.
  2. Desinstale la versión anterior del operador kubedb e instale la nueva, teniendo especial cuidado de no derribar sus instancias de base de datos existentes. Esto puede ser un poco complicado ya que k8s es bastante reacio a eliminar el CRD Postgres si todavía hay instancias de Postgres ejecutándose. Tiene sentido. Afortunadamente, hay formas de engañar a los k8 para que hagan lo que quieres.
  3. Instale una nueva instancia de postgres con WAL = lógico y cree el pub/sub necesario entre el antiguo y el nuevo para que cualquier registro en la base de datos anterior se copie en la nueva base de datos. Tenga cuidado de darle al usuario postgres una contraseña en la nueva base de datos si el usuario que usa para acceder a la base de datos desde Rails _no es_ postgres (Kuby usa root por defecto) . Esto es necesario debido a lo que creo que es un error en los scripts de inicio de kubedb. Obviamente, esta nueva base de datos debe tener un nombre diferente al anterior, lo cual es un problema. El nombre de la base de datos determina el nombre de DNS al que se conectan los rieles, que en realidad no podemos cambiar. Mmm...
  4. Implemente la aplicación Rails y apúntela de alguna manera al nuevo servicio de base de datos.
  5. Eliminar la base de datos antigua
  6. Lucro

Actualmente estoy atascado tratando de descubrir cómo apuntar fácilmente la aplicación de rieles al nuevo servicio de base de datos. La URL del servicio está esencialmente codificada y no puede cambiar dinámicamente. Además, el nuevo servicio de base de datos no puede tener el mismo nombre que el existente, por lo que tendríamos que almacenar el "correcto" en algún lugar (¿quizás una anotación en la implementación?) y consultarlo en cada ... compilación de docker porque ¿entonces es cuando reescribimos la base de datos.yml? PUAJ.

Otra solución podría ser usar algún tipo de proxy que pueda dirigir dinámicamente el tráfico a un servicio u otro, como un balanceador de carga pero por encima de los servicios.

Si bien Kuby podría hacer algunas cosas difíciles para obtener una licencia automáticamente, eso no se siente particularmente moral (¿o tal vez incluso legal?)

Tamal es un buen tipo y no creo que le importe en absoluto, siempre que exponga los detalles de lo que está sucediendo a los usuarios para que no se sorprendan cuando la licencia temporal expire a fin de mes. (? ¿Qué pasa cuando la licencia caduca, me pregunto ahora? Si significa que se detienen las copias de seguridad, eso podría ser malo; si significa que otras cosas comienzan a fallar, también podría ser malo... si significa que simplemente no puede crear nuevas bases de datos para ahora, hasta que se renueve la licencia, esto podría no ser tan malo).

Ya existe una opción para la base de datos externa, por lo que los usuarios tienen la opción de continuar con KubeDB o tomar las bases de datos en sus propias manos de otra manera, lo que francamente no es un problema difícil hoy en día a menos que no esté utilizando un proveedor de nube que admita el tipo de base de datos que necesita.

¡Gracias por el tutorial sobre lo que se necesita para actualizar! Tengo una licencia para mi KubeDB, que se otorga generosamente a Team Hephy para nuestro clúster de producción, y tengo bases de datos más antiguas que necesitan actualizaciones, que nunca se iniciaron ni alojaron desde KubeDB; Obtuve la licencia para aprender a usar las copias de seguridad de la base de datos, tengo PostgresQL y MariaDBs, tl; dr. También tengo mucho trabajo en esta área.

Ahora estoy aprendiendo cómo operar un controlador CSI de almacenamiento adecuado con mi clúster de laboratorio doméstico, y espero que esto marque una gran diferencia en la forma en que manejo las bases de datos y mejoro las propiedades de recuperación ante desastres de mi clúster de "producción". 🎉

Kuby también podría, a la larga, convertirse en un gran vector de ventas para KubeDB. ¡No sé cómo te sentirás al respecto!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

traels picture traels  ·  13Comentarios

kingdonb picture kingdonb  ·  6Comentarios

hovancik picture hovancik  ·  5Comentarios

mpontillo picture mpontillo  ·  3Comentarios

rvanlieshout picture rvanlieshout  ·  3Comentarios