Instalación
Breadcrumbs

Manual despliegue k8s

Recomendaciones

Control de versiones

Para garantizar un control efectivo de las versiones y cambios de los configmaps, es crucial el uso de repositorios Git como parte del flujo de trabajo.

Es recomendable que todo aquel que use este kit disponga de un repositorio o herramienta que permita trazar los cambios en el tiempo para garantizar la integridad del trabajo y la recuperación ante cambios no deseados.

Introducción a Kubernetes

Kubernetes Documentation 

Best practices

Aparte de esta recomendación se pueden encontrar varias buenas prácticas en el uso de Kubernetes.

Prácticas Recomendadas de Configuración | Kubernetes

Despliegue de Anjana

Requisitos

Conectividad requerida

El kit descargará todos los recursos necesarios desde el repositorio central de Anjana Data por protocolo HTTPS y puerto 443 contra el servidor releases.anjanadata.com, por lo que será necesario tener conectividad desde los servidores/cluster a provisionar con dicho servicio.

Necesario solicitar acceso y credenciales en .

Preparación de entorno

A partir de 25.k1, se incluye un script de preparación que acondicionará la máquina de despliegues destinada a la ejecución del kit k8s con los siguientes recursos:

  • Descarga del kit de la versión indicada en el propio script.

  • Instalación de paquetes y dependencias necesarios para la ejecución.

El script puede obtenerse aquí: anjana.sh

Una vez descargado, es necesario que se situe dentro de la máquina a plataformar. Puede accionarse usando el siguiente comando:

chmod +x anjana.sh

./anjana.sh

El script de plataformado requerirá la siguiente información:

https://lh7-rt.googleusercontent.com/docsz/AD_4nXeaNzjYEdKdu8wTqDg3K7WaqQRdO-ipBlGxnT18k2TtRFmJq1AQx3cbvmEH1k6RxY0zw2TL9Uj5UrfGGdLoDzHs83k6b_Maxo-NePYMcfZCdDkBOqKdYDLZ5i_N-kYwM0_kCYFJ?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXd3R0CrlTJMZyOLy0pQ-pqZHcNJViUHLO-FfyMvfl1TsAKjCNSBpOJly-xumwIG2bc-tYFqPIFgSTGlKZWQQpX1XuAvZarN4mKvnTU-zcXT_7BvgEWDd6t4GPUlzNa9TID6FUOwZA?key=gPEPRy7b_xrKqo7fTi0a6Q
  • Modo de instalación, nuevo entorno o entorno de Anjana existente.

  • Credenciales, solicitadas previamente a .

  • Versión, por defecto la más reciente correspondiente al script de plataformado.

  • Tipo de cluster, por defecto OnPrem, para un server personalizado o local.

  • Tipo de conexión, por defecto usando un kubeconfig existente.

  • Contextos disponibles, se listan todos los disponibles en el kubeconfig aportado para elegir dónde se desplegará Anjana. Necesario para comprobar la conexión al cluster y establecerlo por defecto para la instalación de Anjana.

Ajustes requeridos

⚠️IMPORTANTE: Desde 25.1 un certificado es requerido y uno autofirmado con duración de 1 año es creado de forma automática durante el aprovisionamiento del entorno. La renovación debe ser realizada de forma manual como se explicará más adelante en este documento.

Adicionalmente, para el acceso a los frontales, la asignación de un dominio personalizado y otras funciones de enrutamiento a todos los frontales disponibles en este kit, la configuración de un Balanceador delante del cluster es requerido, con su propia gestión de certificados.


El kit ya viene preconfigurado para desplegar Anjana según los ajustes recomendados, será necesario realizar ajustes en las cadenas de conexión y la licencia siguiendo estas pautas:

  • Cadenas de conexión: es necesario ajustar las conexiones de todas las persistencias que vayan a ser externalizados. Por defecto el kit está preparado para trabajar con los statefulsets de las persistencias en local.

    Para estos casos, será necesario sustituir los valores que se pueden encontrar en el fichero all-secrets.yaml, ubicado en la carpeta anjana-secrets de la ruta donde se haya instalado.

    ⚠️IMPORTANTE: los valores deben estar codificados en base64 o el despliegue no funcionará.

  • Licencia: de igual manera se pueden editar las cadenas de conexión, en este caso la licencia es necesaria para el funcionamiento de la plataforma y se puede encontrar en el mismo fichero all-secrets.yaml.
    ⚠️IMPORTANTE:los valores deben estar codificados en base64 o el despliegue no funcionará.

  • Persistencias: las persistencias que no sean cloud (MinIO y PostgreSQL) necesitarán un almacenamiento persistente. Por defecto están configuradas para usar un punto de montaje ubicado en la ruta /opt/data del host donde se encuentre el cluster, siendo configurable, como se puede ver en el ejemplo de PostgreSQL.

    Existen más tipos de volúmenes persistidos para MinIO y PostgreSQL, como se muestra a continuación:

    ✅RECOMENDADO: enormemente el uso de persistencias cloud para MinIO y PostgreSQL, como sus variantes S3 y RDS en AWS.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXcdZ05oEQoodVQ861MXtCcV4lCiHIHiQwgIicwZlUWgybvQrs2fjCCh09v9JKmgi6FN69dBL_1ZTN_7OhK65ytV-92VmwPsRUUylj3Je9105kxKccYDaQRWK15V2amqc6K0FgyAqg?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXfoMTArzWFJVuE5DgfopLrKKCvoywOzt4tG-ohyaqifSBuIvkKZoYR_jWC0RniP4lqBI2qxBnPFfQyvS7iBFKoX0YBuOv-YXvcF_1vbaojOwj0Nznm0Hv6eeEkcK9jVzUMvy_T4?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXceZ5p6h7E8rfZx0AhdhIBqAmDr92MSrenLbIXFJC1AlHT7xgEmopwttPxoPJ4mpeHolNUlSlT670OLiqBbDexmkcnygfeid0sk3VV-AJkVS_pAwOpJ6b0vXlVMektm1bRlGDU8XA?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXf-qLQ_LQ20Pw8C7FAOBf4KB8676W43NTO7UZTOz2QNqfN3mRPgKg0yTkeKd-ykfyaAuCA5THpgWjO7151JKc4dt2-5bqmKXkA3bLojHzVFj-U9ebIDNsQ1WQMYe80LZRjEb4XYGg?key=gPEPRy7b_xrKqo7fTi0a6Q

Para conocer todas las opciones ajustables disponibles, se puede consultar el Anexo - Funcionalidad avanzada.

Instalación de Anjana

Después de haber tenido en cuenta lo mencionado en el apartado de Requisitos, habrá que revisar si es necesario realizar ajustes adicionales teniendo en cuenta los Anexos Funcionalidad avanzada o Casos de Uso.

Una vez completado, se lanzará el siguiente comando:

Para instalar Anjana sin datos de ejemplo:

anjana-deploy

Una vez finalizada la instalación se podrá acceder a los frontales de Anjana Data mediante el dominio configurado:

example.anjanadata.org(:443)/

example.anjanadata.org:444/configpanel

Actualización y mantenimiento del kit

Requisitos

Conectividad requerida

Se da por hecho que se cuenta con la misma conectividad mencionada anteriormente en el apartado de Conectividad requerida de la sección Despliegue de Anjana.

Actualización de kit K8s

⚠️IMPORTANTE: Hay numerosos cambios bloqueantes para esta versión, se recomienda reconstruir la infraestructura y realizar una instalación limpia del producto en esta versión migrando los datos.

En caso contrario, para actualizaciones desde 23.1 o actualizaciones de kits dentro de la versión 25.k1 se seguirán los siguientes pasos:

Ejecución del script de plataformado

(25.k1x y anteriores)

El script de plataformado incorpora una opción para desplegar sobre un entorno existente, lo que permite realizar las siguientes acciones:

  • Actualización de paquetes kubectl.

  • Instalación de paquetes y dependencias necesarios para la ejecución.

  • Respaldo del kit existente, para su borrado y descarga del actualizado.

El script de plataformado requerirá la siguiente información:

https://lh7-rt.googleusercontent.com/docsz/AD_4nXcXROZw7-riztdQ3hIDkd06jav2Nce5HMNptWzFDBEjq3wl29ZwJVm_4jGjXR1E4_1coUVR4Hop35xNSkWVH7tBrQDdkWPza58cRBGGVfMj36_GsvNuNYQh4JEKqJmUQjVDB7jBxQ?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXfdnKDkXGWMLDwytBLJbJarvURXc3k2iZywBP7u1ADV9oYYwUPYGij2zIGwFh4jr6fgmSh2ShnEHKrwskGyMFwQclIUX85FnicotbGTQcnYKtXdJ1QiiXv3szXsS_h3ljnoVbS-ng?key=gPEPRy7b_xrKqo7fTi0a6Q
  • Modo de instalación, nuevo entorno o entorno de Anjana existente.

  • Mensaje informativo de los cambios y requisitos previos, para confirmar que se continúa con el proceso.

  • Credenciales, solicitadas previamente a .

  • Versión, por defecto la más reciente correspondiente al script de plataformado.

  • Tipo de cluster, por defecto OnPrem, para un server personalizado o local.

  • Tipo de conexión, por defecto usando un kubeconfig existente.

  • Contextos disponibles, se listan todos los disponibles en el kubeconfig aportado para elegir dónde se desplegará Anjana. Necesario para comprobar la conexión al cluster y establecerlo por defecto para la instalación de Anjana.

⚠️IMPORTANTE: Desde 25.1 un certificado es requerido y uno autofirmado con duración de 1 año es creado de forma automática durante el aprovisionamiento del entorno. La renovación debe ser realizada de forma manual como se explicará más adelante en este documento.

Adicionalmente, para el acceso a los frontales, la asignación de un dominio personalizado y otras funciones de enrutamiento a todos los frontales disponibles en este kit, la configuración de un Balanceador delante del cluster es requerido, con su propia gestión de certificados.

Tras la finalización del script, unos comandos de ayuda serán mostrados para continuar con la operación de actualización a 25.1.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXfaww5Hyhtce3uFtrVveyTFwszEKKlJCxCccHDwbNC1JDK9jL5z9zXGwkB9ME2N5Vp02YvE5uH5Lmy03oQ3OBB06DipI53c3qdJyy2WtZLchR4VJIVgWot5BQM6CgkCWPWjB90QWg?key=gPEPRy7b_xrKqo7fTi0a6Q

Ajustes de inventario requeridos

Será necesario revisar el apartado Ajustes requeridos de la sección Despliegue de Anjana para encontrar los pasos faltantes que se ajusten lo mejor posible al entorno existente.

Migración de configuración

(25.1x y anteriores)

Debido al gran cambio estructural tanto del kit como del producto, este upgrade no puede ser incremental o parcial.

Por este motivo será necesario migrar las personalizaciones de la configuración anterior del kit a la nueva instalación teniendo en cuenta los siguientes puntos a revisar.

En todos:

  • Centralizar todos los secrets posibles de sus respectivas configuraciones al all-secret.yaml

En hosts.yml:

  • Credenciales de conexión para instancias.

  • IPs y/o dominios pertenecientes las instancias del entorno.

En anjanaui (antes portal):

  • Ajustes de seguridad de apache2

  • Ajustes y entradas de whitelist

  • Proxies u otros ajustes personalizados

En configuraciones:

  • Credenciales en plugins.

  • Personalizaciones en config de core y plugins.

  • Personalizaciones en statefulsets de core y plugins.

  • Personalizaciones en config de apache2.

🛈NOTA: Se desaconsejan las personalizaciones fuera de las opciones administradas por el kit que no sean estrictamente necesarias para la configuración y deployments/statefulsets del core de Anjana así como sus frontales (apache2).

Actualización y mantenimiento de Anjana

Actualización de Anjana

La actualización de Anjana puede llevarse a cabo lanzando el mismo comando de despliegue:

anjana-deploy

Las versiones se siguen manejando de forma individual en cada deployment/statefulset como se venía haciendo y se muestra a continuación:

https://lh7-rt.googleusercontent.com/docsz/AD_4nXdHbeDJkhVBhMqcqFU0ARKb9pf8O1ivUbhuUNU_Dpx8ggRTK8OS6AlUQxFvef0SPe75z4FIW-gHvi9fOPe1S1M-Tyb7cvQ68MZqUnhsTEyKhD4rQMocXxF4m9djPP99xi7SMsh1?key=gPEPRy7b_xrKqo7fTi0a6Q

Mantenimiento de Anjana

Despliegue de deployments y statefulsets

Es posible personalizar qué deployments y statefulsets quieren desplegarse, gracias a los aliases desplegados por el script de plataformado de forma más o menos específica.

Para ello, se pueden lanzar los siguientes comandos:

Core:

anjana-core

anjana-core <microservicio>.yaml



Plugins:

Para desplegar los plugins será necesario ajustar previamente los secrets que correspondan a los plugins que se quieran desplegar, ya que esos secrets contienen las cadenas de conexión que se van a utilizar.

Para ellos se acceder a la ruta /opt/anjana-k8s/anjana-secrets, que podrá variar según la ruta de instalación que se haya elegido, y dentro, editar los secrets correspondientes:

https://lh7-rt.googleusercontent.com/docsz/AD_4nXeXnOTfH5g6fn_QsNIuR3vybcEZh8kfQsXBKR-BauMrhJkEKJ6zSoNt6OfpIz6JAml6jD1LH1ZGPjZ-srP_j5-yvSF8YXFS9wc1-sWZbBQrMoXdqedbK9B92Wg1pnI3gOe2utc5Sg?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXe5IEPBF7O4UzKA4gbjA2UUMjrPU5AINKAfAJLXGdUflEy9IXa4AV_iBpv6RNPWwL_QeHldy2qwwfCLk3KdMJcB-lUSUSZYm824nKozAHxlnY17pAwrPfRsB1gAAaPE7kvjKvBrTA?key=gPEPRy7b_xrKqo7fTi0a6Q

⚠️IMPORTANTE: los valores necesitan estar codificados en base64.

Una vez ajustados los secrets necesarios, se lanza el siguiente comando, que también despliega las configuraciones y los secrets nuevamente:

anjana-plugins

anjana-plugins <plugin>.yaml

Persistencias:

anjana-persistences

anjana-persistences <persistence>.yaml


Configuración

Es posible actualizar y/o desplegar la configuración de los microservicios así cuando se realicen cambios y sea necesario.

Para el despliegue de configuraciones de microservicios y plugins se lanza el siguiente comando:

anjana-config

Comprobación del estado

Se ha incluido la posibilidad de comprobar el estado de salud de todos los microservicios, persistencias y plugins incluidos en el entorno.

Para ello es necesario lanzar el tag:

anjana-status

https://lh7-rt.googleusercontent.com/docsz/AD_4nXfbiyJHEbzFxdlfXsVw6BAFkIp45844MamTmNmIbVeSM92KgrYtRMk4_625XayeDDb49evyD9bPnOOeEnyAsuhoKJkRnuCkl_upPXS-lyHWvAsrcZRy_cK5yMSRauEB7IPHBBdZ1Q?key=gPEPRy7b_xrKqo7fTi0a6Q

✅RECOMENDADO: para encontrar rápidamente el punto de error de la aplicación. Para buscar de forma más concisa, será necesario consultar los logs del microservicio, plugin o persistencia afectados.

Exportación de logs de microservicios

Es posible exportar los logs de los microservicios de Anjana a la carpeta de cada nodo del backend, por defecto /opt/anjana-logs/<pod microservicio>.log.

✅RECOMENDADO: para proveer logs al equipo de soporte.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXdAQGqC30bUh-Ik62U7UMyKwbSnS0vZ2Zdxu3JvWJZhckZvVHMX_EcUV7rxs5lEajNQJ_eETNeilb-XOKYTjIjsarkuRqxnx1fFBSgmL1VcETDzfAO2Fxnv-2mk_1lqL70Y-hkJ4Q?key=gPEPRy7b_xrKqo7fTi0a6Q

Para la exportación habría que ejecutar:

anjana-export-logs <pod microservicio>

Por defecto se exportan los últimos 5 días pero es configurable con argumentos adicionales:

anjana-export-logs <pod microservicio> --since=2h --tail=2000

Desinstalación

La desinstalación en el kit de kubernetes se puede llevar acabo de dos formas con los comandos a continuación.

Borrado de deployments y statefulsets:

anjana-delete

Borrado de namespace completo:

anjana-delete-ns