Discusión sobre k8s en una red privada

Estoy intentando configurar Discourse para mi organización en Kubernetes. Sin embargo, me enfrento a algunos problemas.
Cuando intento desplegar la imagen de arranque en Kubernetes, intenta realizar acciones como
git pull pups y git pull discourse, lo cual no funciona ya que estoy en una red privada sin acceso a Internet y, como resultado, el contenedor no se inicia. ¿Hay alguna manera de omitir esas partes para poder realizar el despliegue?

¿Estás seguro de que estás implementando una imagen ya generada? Parece que has subido la imagen incorrecta a tu registro.

¿Ah sí? Estoy usando la imagen creada por ./launcher bootstrap app

¿Entonces estás diciendo que la imagen final bootstrap no debería tener dependencias de ese tipo?

No, no las tendrá. Después del arranque, habrá una imagen local_discourse/app. Esa es la que necesitas subir al registro y usar en otros lugares.

5 Me gusta

Una última duda: parece que estaba subiendo la imagen incorrecta, mi error. Entonces, después de subir la imagen correcta, ¿puedo cambiar las variables de entorno durante la implementación en k8s? ¿Como DISCOURSE_DB_HOST, etc.? ¡Porque tengo un clúster de PostgreSQL y un clúster de Redis por separado!

Eso le ha pasado a todos. No te preocupes, es un error muy común. Por eso te lo pregunté :stuck_out_tongue:

Bueno, es complicado.

Aunque puedes sobrescribirlos fácilmente, simplemente añadiendo las variables de entorno necesarias al ejecutar el contenedor, durante el arranque ejecutamos las migraciones. Si intentas apuntar la imagen a una base de datos diferente después de haber arrancado, el esquema de la base de datos quedará completamente incorrecto. Hacer esto te metería directamente en el territorio de la #instalación-no-soportada.

2 Me gusta

Así que ya tengo una instancia de Discourse en ejecución, pero está en hardware dedicado. Quiero moverla a Kubernetes y conectarla a la misma base de datos que usaba la instancia en hardware.

O, si es posible, ¿puedo volver a ejecutar el bootstrap con DISCOURSE_DB_HOST y DISCOURSE_DB_NAME apuntando a la misma base de datos que usa la instalación bare metal?

1 me gusta

¡Eso debería funcionar!

Es posible que desees detener el contenedor de Discourse actual conectado a la base de datos mientras realizas esto, ya que las migraciones podrían hacer que se comporte de manera errónea.

3 Me gusta

Si creo una nueva base de datos vacía y la inicio desde cero, ¿es posible migrar los datos a través de la interfaz (usando la interfaz de la instancia antigua de Discourse y la nueva), por ejemplo, mediante /admin/backups? Quiero evitar corromper la base de datos antigua, ya que está siendo utilizada por muchos usuarios.

No puedes migrar desde la UX.

Consulta Presentación de la migración posterior al despliegue. Esto te permite migrar la base de datos de manera que funcione tanto para el contenedor antiguo como para el nuevo, y luego realizar las migraciones finales después del despliegue.

1 me gusta

Bueno, intenté lo que dijiste (subí la imagen de arranque), pero parece que sigo obteniendo el mismo error.

fatal: unable to access 'https://github.com/discourse/pups.git/': Failed to connect to github.com port 443: Connection timed out

Estoy en una red privada, por lo que no puedo acceder a github.com.

@pfaffman @Falco ¿esto es esperado? Esto lo estoy ejecutando en k8s

Eso significa que volviste a subir la imagen incorrecta.

Cambiaría el archivo interno /etc/hosts para imitar los recursos que deseas… y luego agregaría lo necesario.

Aún más fácil… instala un módem/router con conexión 4G / SIM. Haz que la red reconozca ese dispositivo como el router predeterminado de tu red interna… conecta… realiza el trabajo… desconecta.

Es bastante sencillo.

Saludos

Keith John Hutchison - Ceiteach Seán Mac Úistin
Bringing Data to Life Pty. Ltd. (BD2L)

Esta vez parece que estoy bastante seguro :sweat_smile: ¿Existe alguna posibilidad de que algo esté fallando durante
./launcher bootstrap app?

Además, incluso intenté usar la imagen actual de Discourse que se está ejecutando en hardware dedicado y que aloja nuestro sitio web actual de Discourse, y la usé en k8s, y eso también falla con el mismo error que el anterior.

Incluso en mi máquina local, cuando ejecuto

docker run local_discourse/app

sin conexión a internet, parece que obtengo el error mencionado anteriormente.