Instalación
Breadcrumbs

Avanzado k8s

Este Anexo abarcará toda la información sobre las posibles configuraciones y utilidades no cubiertas en la pestaña principal del documento.

All-secrets.yaml explicado

En el kit se incluye un archivo, all-secrets.yml, en el cual se contienen algunas variables y opciones editables para facilitar la gestión técnica del entorno. A continuación se detallan las funciones disponibles:

Cadenas de conexión

Se ha incluido configuración por defecto para facilitar su uso y reducir el número de modificaciones necesarias para que el entorno funcione.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXeoyGyR-lPhVjdAlgQUV2HKaqF6LKBbx5AFvtgAzKhQiqaIJafbumiQJPD8w8Lj2fU3ugez0jCx4cowpsyHKqUosDNHITEkrP0byTikYReqchEMo6fxXjuuRLGNlLsHa9z83ZQ?key=gPEPRy7b_xrKqo7fTi0a6Q
  • anjana.domain: permite establecer el dominio de acceso a la instancia de Anjana. ⚠️IMPORTANTE: este parámetro actualmente está controlado de forma automática. Se genera un certificado autofirmado wildcard con los parámetros necesarios para el funcionamiento del entorno. ❌NO RECOMENDADO: alterar el valor por defecto, el entorno dejará de funcionar si no se tienen conocimientos avanzados de kubernetes.

Persistences.s3 permite la edición de las credenciales y personalizaciones necesarias para el despliegue de MinIO o la conexión a la tecnología S3 elegida.

  • persistences.s3.type: permite alternar entre MinIO y AWS S3 como servicio de almacenamiento de buckets.

  • persistences.s3.access_key y persistences.s3.secret_key: credenciales de acceso a la tecnología. Valores por defecto provistos, pueden ser alterados.

  • persistences.s3.url: url de conexión a la tecnología S3. SOLO MinIO.

  • persistences.s3.region: región cloud donde ubicar los buckets. SOLO AWS S3.

  • persistences.s3.buckets: buckets de operaciones de Anjana. Valores por defecto, no se incluyen las propiedades en el fichero provisto. ✅RECOMENDADO: dejar los valores por defecto.

Persistences.bbdd permite la edición de las credenciales y personalizaciones necesarias para el despliegue de PostgreSQL o la conexión con RDS.

  • persistences.bbdd.url: url de conexión a la BBDD.

  • persistences.bbdd.user y persistences.bbdd.pass: credenciales de acceso a la BBDD. Valores 

Persistences.solr permite la edición de los parámetros de conexión para el motor de indexación.

  • persistences.solr.url: url de conexión al indexador.

Configuración de licencia

Este apartado permite configurar la licencia para el entorno a desplegar. La licencia es requerida para que el entorno funcione.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXeUhsr__etDggBK2H14SfMbXIFm67RPsKjQi94iLri3w8-qXLDfZziNQDp-4n0X2vkbuQEwn7OoWpd3sujNcwnbvrCXlhRVTzrNgF2zzl8XHUlVdVANQGDK9-q3TxHUJAK2IQwD?key=gPEPRy7b_xrKqo7fTi0a6Q
  • anjana.license.xxx: permite indicar los parámetros de la licencia de Anjana para habilitar el uso del producto. Necesario solicitarla en .

Plataforma de métricas de gobierno

Actualmente viene todo preconfigurado para funcionar. Las variables a continuación permiten seleccionar las credenciales de acceso al frontal de Grafana.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXePU6wA_UCnpRAOJ5leJttH6dcnK4yt_y274bgGOUAK3lc44T968m9yIm-6-z0AWeS1m13StRf02PQSsnbGQ-ryxuJ5DMGWE72XCPFjywj_850l8KE-65rhjRB2MN_fFUG3pmkI6w?key=gPEPRy7b_xrKqo7fTi0a6Q
  • extras.grafana.user y extras.grafana.pass: permiten establecer el usuario de acceso a la interfaz de Grafana alojada en el :3000. Por defecto, esta utilidad no se despliega por defecto, pudiendo ser desplegada junto a sus dashboards con el comando anjana-grafana.


Plataformado de instancias

Alias de kubeclt anjana

Para un manejo más sencillo del kit y toda su funcionalidad se configura por defecto un archivo con  aliases que transforman los comandos usuales de kubeclt en un sencillo anjana seguido de parámetros como -status o -deploy con subargumentos. La lista completa puede encontrarse en la pestaña Cheatsheets.

Para restablecer o configurar el alias, será necesario lanzar estos comandos:

Para Ubuntu:

touch ~/.anjana-aliases
cat > ~/.anjana-aliases <<'EOF'
# Anjana Kubernetes Kit Functions
anjana-ns() {
    kubectl get ns anjana-data >/dev/null 2>&1 || kubectl create ns anjana-data >/dev/null 2>&1
    kubectl config set-context --current --namespace=anjana-data
}

anjana-deploy() { /opt/anjana-k8s/anjana.sh deploy; }
anjana-core() { /opt/anjana-k8s/anjana.sh core "$@"; }
anjana-persistences() { /opt/anjana-k8s/anjana.sh persistences "$@"; }
anjana-config() { /opt/anjana-k8s/anjana.sh config "$@"; }
anjana-plugins() { /opt/anjana-k8s/anjana.sh plugins "$@"; }
anjana-delete() { /opt/anjana-k8s/anjana.sh delete; }
anjana-delete-ns() { /opt/anjana-k8s/anjana.sh delete-ns; }
anjana-status() { /opt/anjana-k8s/anjana.sh status; }
anjana-describe() { /opt/anjana-k8s/anjana.sh logs "$@"; }
anjana-logs() { /opt/anjana-k8s/anjana.sh logs "$@"; }
anjana-export-logs() { /opt/anjana-k8s/anjana.sh export-logs "$@"; }
anjana-shell() { /opt/anjana-k8s/anjana.sh shell "$@"; }
anjana-grafana() { /opt/anjana-k8s/anjana.sh grafana; }
anjana-admin() { /opt/anjana-k8s/anjana.sh admin; }
anjana-credentials() { /opt/anjana-k8s/anjana.sh generate-credentials; }
anjana-keystore() { /opt/anjana-k8s/anjana.sh generate-keystore; }
EOF


Para RedHat:

touch /etc/profile.d/anjana.sh
cat > /etc/profile.d/anjana.sh <<'EOF'
# Anjana Kubernetes Kit Functions
anjana-ns() {
    kubectl get ns anjana-data >/dev/null 2>&1 || kubectl create ns anjana-data >/dev/null 2>&1
    kubectl config set-context --current --namespace=anjana-data
}

anjana-deploy() { /opt/anjana-k8s/anjana.sh deploy; }
anjana-core() { /opt/anjana-k8s/anjana.sh core "$@"; }
anjana-persistences() { /opt/anjana-k8s/anjana.sh persistences "$@"; }
anjana-config() { /opt/anjana-k8s/anjana.sh config "$@"; }
anjana-plugins() { /opt/anjana-k8s/anjana.sh plugins "$@"; }
anjana-delete() { /opt/anjana-k8s/anjana.sh delete; }
anjana-delete-ns() { /opt/anjana-k8s/anjana.sh delete-ns; }
anjana-status() { /opt/anjana-k8s/anjana.sh status; }
anjana-describe() { /opt/anjana-k8s/anjana.sh logs "$@"; }
anjana-logs() { /opt/anjana-k8s/anjana.sh logs "$@"; }
anjana-export-logs() { /opt/anjana-k8s/anjana.sh export-logs "$@"; }
anjana-shell() { /opt/anjana-k8s/anjana.sh shell "$@"; }
anjana-grafana() { /opt/anjana-k8s/anjana.sh grafana; }
anjana-admin() { /opt/anjana-k8s/anjana.sh admin; }
anjana-credentials() { /opt/anjana-k8s/anjana.sh generate-credentials; }
anjana-keystore() { /opt/anjana-k8s/anjana.sh generate-keystore; }
EOF


🛈NOTA: Hay que tener en cuenta que la ruta hacia el kit de k8s variará según el entorno, será necesario ajustar según la necesidad.

Integraciones cloud

El kit ofrece compatibilidad y funcionalidades con ciertos proveedores cloud, que se detallan a continuación.

Buckets en AWS S3

Para poder usar buckets alojados en AWS S3 con el kit, es necesario ajustar el fichero all-secrets.yaml, para apuntar a los buckets disponibles en una región de AWS. La propiedad persistences.s3.url no será necesaria en este caso.

⚠️IMPORTANTE: este es solo un ejemplo, los valores necesitan estar codificados en base64.

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

También será necesario ajustar los parámetros mostrados en las capturas a continuación para los frontales anjana-ui y portuno-ui:

https://lh7-rt.googleusercontent.com/docsz/AD_4nXftmsIOinMkNEeJyr9GlWgDI4xXP8L9tM3stjm25_xFUZZYNZiT4lYueED-jSCoyHymP6tGm4LlvgDiJB54WWPZtjJ-qhd74orsNesNjFwXmhJ9u79oRm3um6S_-LreR6JeyA1azQ?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXfzvIQdebVJ0hSy_M6MoWw_aw-W1hBjr8Kd1LRLNA8VgcSysGv0CGfGgvoUCRRwidODNszUrg9xHYrh-KseqENP-wCyxBiJWFQvR1h6PWhntxXXEtC0iqsmYaAaf04xOuQaN1p0LQ?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXcfu_sCM-z3lSOID0Tkn4pj301tazsW59YGk3ZLNN26Hj5HhUyERD2egn0sRCxwHg8nVstoW7y9XLqodlZCFJ55J464ccv2buEMyHgmSYQ-af9Yecq7lZdQE4gUlkaW-CJVjxme?key=gPEPRy7b_xrKqo7fTi0a6Q

Una vez ajustados ambos, ya se podrá proceder a desplegar Anjana con normalidad.

PostgreSQL en RDS

A diferencia de AWS S3, el kit soporta directamente RDS dada la naturaleza de la cadena de conexión, siendo solo necesario modificar la url, así como el puerto y base de datos contenidos, en caso de ser necesarios, junto a las credenciales, tal como se muestra:

⚠️IMPORTANTE: este es solo un ejemplo, los valores necesitan estar codificados en base64.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXcJIfaVoRYia7cEVT7tmbc59GE8xJOQIS4XYH4YNW2cyKsEymsvec0NhyUMsmhXWugQ808C55KGt3_iQyPhZTD5-kVVFtnUCF0sgJBg8k-MfOKPLuvz484KbKxbM6e3g34DrWSw?key=gPEPRy7b_xrKqo7fTi0a6Q

Una vez ajustados ambos, ya se podrá proceder a desplegar Anjana con normalidad.


Gestión de versiones

Las versiones se siguen manejando de forma individual en cada deployment/statefulset como se venía haciendo y se muestra a continuación, siendo necesaria la modificación manual del valor en cada uno de los deployments/statefulsets que se quiera actualizar.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXeoXX0U42Fc6C3fgMhHIy5DNLQl4C40bQcnF7LNx6kZNMmvYRhBxWQ-PVIjhbRffCa6atOs8aM_MUnm555gI1XszJ4w25e90Ret0YmGnA2s5IENr0iov5GQpeQahW-ooNxaFCMi6Q?key=gPEPRy7b_xrKqo7fTi0a6Q

Gestión de la seguridad en Anjana

Gestión y renovación de certificado

⚠️IMPORTANTE: Desde 25.1 el certificado es requerido, tanto para el acceso como para la comunicación segura entre microservicios.

En este kit se genera un certificado autofirmado que se despliega automáticamente a todos los microservicios y software de terceros involucrado en el entorno, como las persistencias, para que el entorno funcione correctamente.

El primer certificado que se genera tiene un año de duración de forma predeterminada, después de eso, será necesario renovarlo manualmente.

Los comandos de Anjana anjana-core, anjana-persistences, anjana-config y anjana-plugins realizan las tareas de regeneración del almacén de certificados durante su ejecución, en caso de estar por debajo de los 30 días de validez, se renovará automáticamente otro año más.

En caso de querer lanzar manualmente la regeneración del keystore y la renovación de los certificados en caso de estar expirados, se puede usar el comando:

anjana-keystore

Seguridad en Apache2

En este kit no se incluyen utilidades para securizar las dos instancias de apache2 desplegadas, anjana-ui y portuno-ui, como modsecurity, modevasive, whitelist, etc…

✅RECOMENDADO: securizar los frontales mediante un proxy, balanceador, WAF o la combinación de varios de ellos para proteger el acceso a Anjana.


Utilidades

Panel de administración de kubernetes

En el kit se incluye el despliegue automático de kubernetes-dashboard mencionado en esta documentación oficial Deploy and Access the Kubernetes Dashboard.

Este dashboard permite la fácil gestión y escalabilidad del entorno. Su despliegue viene integrado al usar el comando anjana-deploy.

Para acceder al portal de administración es necesario lanzar el siguiente comando:

anjana-admin

El comando abrirá un port-forwarding del pod que contiene el dashboard al localhost:8443, desde el cual se podrá acceder al mismo, así como generar un token de acceso temporal con permisos de administrador sobre el namespace anjana-data.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXeTHTKWZ7y_j7ubFyWArQ-8H4Vcj7qT_qR8QYvpqL3V1ydwf4i1K2UGbUF89llO9wiVCYrGs4SKaLw57Olrw6QHLjc72qVHlNb5SZW3JGroFZ9ha-jRzz58sblxGfwHr0Hyd4pdYw?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXd0qkSXAyJigmmn_zNz-pMC-mvVXJVCTa97RpgXm1vkLKIDvYzptcSE-S7kKWoZtu33xZBy4yQMS8no5Ps8k8jKDT0sz4HQqBmkv8--Y1Z_Iboy3R9PZIO3rCGY3G8fVVQxTJQg?key=gPEPRy7b_xrKqo7fTi0a6Q

Extras

Métricas de Gobierno

Adicionalmente, se ha incluido en el kit el software Grafana, el cual permite desplegar paneles para la visualización de las métricas relacionadas con el gobierno de los datos en Anjana.

El software viene acompañado de un dashboard de ejemplo.

Grafana no se despliega por defecto con el resto de la solución, para desplegar Grafana y sus dashboard será necesario lanzar el siguiente comando:

anjana-grafana

En caso de querer modificar el dashboard por defecto o querer añadir más, será necesario acceder a la carpeta que contiene Grafana y los dashboards en la ruta /opt/anjana-k8s/anjana-dashboards y añadir archivos .yaml con configmaps, tantos como dashboards se quieran añadir.

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

🛈NOTA: la ruta puede no coincidir y dependerá de la ubicación que se haya seleccionado.

A continuación, después de tener el nuevo dashboard, será necesario montar el dashboard dentro de Grafana, por lo que se editará el statefulset de Grafana para añadir un nuevo volumen y un nuevo punto de montaje.

https://lh7-rt.googleusercontent.com/docsz/AD_4nXctABSWRl1Dpp1y2knutf9ODtjkhsb3g44CDxUDmp_WLjyP1-fx442CkB0cGCp34PXxMV-qwTb_IF6YCZIRzG822HwKFBN-nWcs-hUAJ8VOX8SidIxE1eQi3lt2Wl9eBgvqdQLVGw?key=gPEPRy7b_xrKqo7fTi0a6Q
https://lh7-rt.googleusercontent.com/docsz/AD_4nXetfHlyFZkHngMtTyM5_yHGqeXd73KJ7BW8QSb-lZCQ9L9tFc5-W-ImujfuQL_Gz_y6SxmSa1w3L8qBcB210STlhtlAi125WQft0RRUNXLYa_y2N8uJhNmCAa6vsXt57sKIaHJklA?key=gPEPRy7b_xrKqo7fTi0a6Q

Para actualizar los dashboards en Grafana, se volverá a lanzar:

anjana-grafana