DataSunrise está patrocinando AWS re:Invent 2024 en Las Vegas, por favor visítenos en el stand #2158 de DataSunrise

Ejecutando DataSunrise en Kubernetes Usando el Chart de Helm

Ejecutando DataSunrise en Kubernetes Usando el Chart de Helm

El despliegue de aplicaciones en Kubernetes puede ser complejo, requiriendo un conocimiento detallado de sus diversos componentes y sus funciones. Helm simplifica este proceso, haciendo que la implementación en Kubernetes sea directa y manejable. En lugar de crear y mantener manualmente múltiples manifiestos YAML para cada objeto de Kubernetes, Helm consolida todo en un solo paquete que se puede desplegar fácilmente en tu clúster de Kubernetes. Esto reduce significativamente el tiempo y la complejidad involucrados en la gestión de aplicaciones en Kubernetes.

DataSunrise ha creado un Chart de Helm para facilitar la instalación y operación de DataSunrise en Kubernetes. Helm agiliza la gestión de aplicaciones en Kubernetes, simplificando y unificando el proceso de despliegue para DataSunrise. Con Helm, puedes instalar y actualizar DataSunrise fácilmente según sea necesario en cualquiera de tus entornos de Kubernetes, incluyendo proveedores de nube como AWS EKS, Azure AKS y Google Cloud GKE. El chart soporta múltiples casos de uso basados en los valores proporcionados.

Las características clave del Chart de Helm de DataSunrise incluyen funcionalidad de proxy, donde se usa un proxy en cada nodo y Kubernetes gestiona el balanceo de carga entre ellos. También soporta el escalado automático, utilizando un poderoso Descubrimiento de Datos Sensibles para agregar automáticamente nuevos pods al clúster durante cargas máximas. Adicionalmente, el Chart de Helm puede ser instalado fácilmente a través de la aplicación Artifact Hub, simplificando el despliegue y gestión de DataSunrise en Kubernetes.

Prerrequisitos

Nuestro chart de Helm funciona tanto con Kubernetes vanilla como con servicios de Kubernetes gestionados, tales como EKS de AWS, AKS de Azure y GKE de Google Cloud. Para este artículo, utilizaremos EKS de AWS para demostrar los pasos a seguir.

Necesitaremos tener los siguientes componentes en nuestro entorno. También puedes encontrar los comandos utilizados para instalar los componentes necesarios en la siguiente sección.

  1. Crear un clúster EKS y pods en tu AWS.
  2. Helm 3.6+
  3. Kubernetes 1.21+ – Esta es la versión más temprana de Kubernetes probada. Es posible que este chart funcione con versiones anteriores.
  4. Bases de datos externas para cargas de trabajo de producción y modo HA

¿Por qué necesitamos bases de datos externas en modo HA?

DataSunrise utiliza dos tipos clave de bases de datos para almacenar sus datos operacionales: la Base de Datos de Auditoría y la Base de Datos de Diccionario. Para asegurar alta disponibilidad y escalabilidad, DataSunrise puede configurarse en múltiples servidores. Al desplegar DataSunrise en una configuración multi-servidor, se utiliza una base de datos PostgreSQL, MySQL/MariaDB o MS SQL Server para almacenar los datos comunes de Diccionario y Auditoría.

La Base de Datos de Auditoría en DataSunrise es esencial para almacenar registros detallados de todas las actividades monitorizadas de la base de datos, incluyendo consultas SQL, acciones de usuarios y eventos de seguridad. Esta base de datos proporciona una pista de auditoría comprensiva y facilita el monitoreo de seguridad al detectar actividades sospechosas. DataSunrise soporta PostgreSQL, MySQL, MariaDB y MS SQL Server para la Base de Datos de Auditoría. Es crucial asignar suficiente almacenamiento y gestionar políticas de retención para manejar el crecimiento potencialmente significativo de los datos de auditoría.

La Base de Datos de Diccionario contiene la configuración y los metadatos necesarios para operar DataSunrise, como información sobre instancias de bases de datos, reglas de seguridad, reglas de auditoría y roles de usuario. Asegura que DataSunrise pueda funcionar sin problemas al mantener todos los datos de configuración requeridos. Al igual que la Base de Datos de Auditoría, DataSunrise soporta PostgreSQL, MySQL, MariaDB y MS SQL Server para la Base de Datos de Diccionario. Esta base de datos debe ser altamente disponible y asegurada con contraseñas fuertes porque es vital para la operación ininterrumpida de DataSunrise.

Para más información sobre las instrucciones para preparar las bases de datos externas para ser utilizadas como bases de datos de auditoría y configuración, por favor consulta el Capítulo 4 de la Guía del Administrador: Configuración MultiServidor (modo de Alta Disponibilidad). Al usar bases de datos externas tanto para las bases de datos de Auditoría como de Diccionario, DataSunrise puede proporcionar una alta disponibilidad robusta, asegurando una operación continua y un monitoreo de seguridad consistente en tu entorno de base de datos.

Imagen 1. Estructura de Despliegue de DataSunrise en K8S con Chart de Helm

Cómo preparar el clúster EKS de AWS

Paso – 1: Después de que el clúster EKS y el nodo donde deseas instalar Datasunrise estén listos para usarse, instala:

  • kubectl: Interactúa directamente con clústeres Kubernetes, esencial para la gestión del clúster y las aplicaciones.
  • Helm: Gestiona aplicaciones Kubernetes a través de charts, simplificando despliegues y actualizaciones.
  • AWS CLI: Gestiona recursos de AWS, útil para automatizar tareas de AWS e integrar servicios.

#kubectl

  1. curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
  2. chmod +x ./kubectl
  3. sudo mv ./kubectl /usr/local/bin/kubectl

#helm

  1. curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

#awscli

  1. curl “https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip” -o “awscliv2.zip”
  2. unzip awscliv2.zip
  3. sudo ./aws/install

Paso – 2: Ahora podemos configurar credenciales en awscli:

Ejecuta este comando: aws configure

Después de ejecutarlo, se te pedirá que ingreses tu AWS Access Key ID, AWS Secret Access Key, nombre de región por defecto y el formato de salida preferido.

AWS Access Key ID [None]: ************

AWS Secret Access Key [None]: ************

Default Region name [None]: us-east-2

Paso – 3: A continuación, configura tu kubectl para interactuar con el clúster EKS especificado en la región dada. Después de actualizar kubeconfig, verifica la actualización comprobando el estado de los pods en el espacio de nombres kube-system.

  1. aws eks update-kubeconfig –region –name
  2. kubectl get pods -n kube-system -l k8s-app=aws-node -o wide

Instalación de Datasunrise usando HELM

Paso – 1: Descarga el archivo values.yaml del chart de HELM manualmente desde https://artifacthub.io/packages/helm/datasunrise/datasunrise o instala el chart de HELM usando el comando:

  1. helm repo add datasunrise https://www.datasunrise.com/helm-chart
  2. helm install my-datasunrise datasunrise/datasunrise –version 1.2.14
  3. Imagen 2. Instalación del Paquete Helm de Datasunrise

    La estructura del directorio debería ser la siguiente:

    my-chart/

    ├── Chart.yaml

    ├── charts/

    ├── templates/

    ├── values.yaml

  4. Abre y edita el archivo values.yaml. Edita los siguientes valores:
    • enVars – para configurar las propiedades de tu base de datos de diccionario y auditoría.
    • Cambia el tipo de uiService de ClusterIp a LoadBalancer.
    • Habilita el ingreso (ingress).

Es crucial usar contraseñas fuertes en la configuración de tu aplicación. Una contraseña fuerte debe tener más de 8-12 caracteres e incluir una combinación de letras mayúsculas y minúsculas, dígitos y caracteres especiales. Por ejemplo, P@ssw0rd#2024!. La demostración del uso del AWS Secret Manager también se describe en el siguiente subartículo.

apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
  name: aws-secrets
  namespace: default #Cambia a tu espacio de nombres preferido
spec:
  provider: aws
  secretObjects:
  - secretName: k8s-secret
    type: Opaque
    data: 
    - objectName: db_password
      key: password_for_ds
  parameters:
    objects:
      - objectName: arn:aws:secretmanager:us-east-1:xxxxxx:secret:MySecret
        objectType: secretmanager
        jmesPath:
          - path: password_for_ds
          objectAlias: db_password
envVars##
envVars: {}
  # Ejemplos:
  # - name: DICTIONARY_TYPE
  #   value: "postgresql"
  #
  # - name: DICTIONARY_PASS
  #   valueFrom:
  #     secretKeyRef:
  #       name: db-secret
  #       key: password
 
  - name: DICTIONARY_TYPE
    value: "postgresql" 
  - name: DICTIONARY_HOST
    value: "your_dictionary_host" 
  - name: DICTIONARY_PORT
    value: "5432" 
  - name: DICTIONARY_DB_NAME
    value: "dictionarydb" 
  - name: DICTIONARY_LOGIN
    value: "postgres" 
  - name: DICTIONARY_PASS
    valueFrom:
        secretKeyRef:
            name: k8s-secret
            key: password_for_ds
  - name: AUDIT_TYPE
    value: "postgresql" 
  - name: AUDIT_HOST
    value: "your_audit_host" 
  - name: AUDIT_PORT
    value: "5432" 
  - name: AUDIT_DB_NAME
    value: "auditdb" 
  - name: AUDIT_LOGIN
    value: "postgres" 
  - name: AUDIT_PASS
    valueFrom:
        secretKeyRef:
            name: k8s-secret
            key: password_for_ds 
uiService:
  type: LoadBalancer
  port: 11000
  annotations: {}
ingress:
  enabled: true
  className: “”

Nota: Si tu pod se congela en el estado “Pending”, deshabilita el volumen:

localSettingsPersistentVolume:
  ## Si 'true', entonces se creará/usará la solicitud de volumen persistente.
  ## Si 'false', entonces se usará emptyDir.
  enabled: false

Paso – 2: Para conectarse a la interfaz web de Datasunrise, necesitamos configurar ingreso:

helm upgrade –install ingress-nginx ingress-nginx –repo https://kubernetes.github.io/ingress-nginx –namespace ingress-nginx –create-namespace

Este comando extrae el chart ingress-nginx del repositorio especificado y lo instala en el espacio de nombres ingress-nginx, creando el espacio de nombres si todavía no existe. Esta configuración te permitirá gestionar el acceso externo a tus servicios de DataSunrise a través de recursos de Ingreso de Kubernetes.

Luego, necesitamos establecer el host para tu Ingreso. Para encontrar el enlace del balanceador de carga, navega al tablero de tu clúster EKS de AWS. Luego, dirígete a “Recursos” -> “Servicio y red” -> “Servicio” -> “ingress-nginx-controller”, y copia la URL del LoadBalancer. Una vez que tengas la URL, úsala para establecer el campo host (“-host”) en tu configuración de Ingreso.

Imagen 3. Cómo encontrar el enlace del balanceador de carga en AWS EKS (1)

Imagen 4. Cómo encontrar el enlace del balanceador de carga en AWS EKS (2)

ingress:
  enabled: false
  className: "nginx"
  ## Se necesitan algunas anotaciones adicionales para el ingreso.
  ## Si usas nginx, las anotaciones necesarias ya están presentes a continuación.
  ## Si usas un ingreso diferente, necesitas encontrar anotaciones similares para tu clase.
  ## se necesitan anotaciones de backend HTTPS y 'sticky session'.
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/affinity-mode: "persistent"
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  hosts:
    - host: #inserta tu URL del balanceador de carga aquí
      paths:
        - path: /
          pathType: ImplementationSpecific

Paso – 3: Después de configurar el host, puedes instalar DataSunrise usando Helm. Asegúrate de estar en el directorio que contiene el script del chart de Helm. Luego, ejecuta el siguiente comando:

“helm install ds .”

Para seguir el estado de la instalación, utiliza el siguiente comando:

“kubectl get pods”

Revisa los registros del pod si el pod no se está iniciando:

“kubectl logs

Paso – 4: Después de que el pod de datasunrise esté en funcionamiento, deberías poder conectarte a la interfaz web de Datasunrise con el enlace del LoadBalancer anterior. O bien, puedes verificar usando este comando: kubectl get services.

Imagen 5. Resultados de Ejemplo de ‘kubectl get services’

Imagen 6. Conectando a la Consola Web de DataSunrise

Paso – 5: Si deseas actualizar DataSunrise a una versión más reciente, debes modificar la versión especificada en el archivo values.yaml a la versión deseada. Una vez que hayas hecho los cambios necesarios, ejecuta el siguiente comando para actualizar DataSunrise: “helm upgrade ds .”

Configurar Conexión a la Base de Datos Objetivo

Cuando tu clúster de DataSunrise creado con Kubernetes y Docker esté en funcionamiento, puedes configurar las Reglas de DataSunrise para auditar, asegurar o enmascarar tus columnas sensibles de la base de datos. Consulta la sección “DataSunrise Use Cases” de la Guía del Usuario de DataSunrise.

DataSunrise interactúa con una base de datos objetivo y recibe toda la información requerida para su operación a través de una cuenta de usuario de esta base de datos (la cuenta, el nombre de usuario y la contraseña de la cual se especifican en el perfil de la base de datos objetivo en la Consola Web). Puedes usar la cuenta del administrador de la base de datos para la conexión, pero también es posible usar cualquier otra cuenta de usuario con suficientes privilegios. La sección de la guía del usuario: 5.2 Creating Database Users Required for Getting the Database’s Metadata describe las acciones necesarias para establecer una conexión

Siguiente

¿Cómo Reconocer una Brecha de Datos en una Etapa Temprana?

¿Cómo Reconocer una Brecha de Datos en una Etapa Temprana?

Más información

¿Necesita la ayuda de nuestro equipo de soporte?

Nuestros expertos estarán encantados de responder a sus preguntas.

Información general:
[email protected]
Servicio al Cliente y Soporte Técnico:
support.datasunrise.com
Consultas sobre Asociaciones y Alianzas:
[email protected]