Despliegue de Cyberwatch en un cluster Kubernetes existente

Esta pagina describe los pasos a seguir para desplegar Cyberwatch en un cluster Kubernetes existente. Este procedimiento supone que el usuario dispone de conocimientos básicos del orquestador Kubernetes y de Helm.

Procedimiento de despliegue

  1. Tener un cluster que cumpla con los requisitos técnicos del software.

  2. Conectarse al repositorio Helm:

    helm registry login harbor.cyberwatch.fr
    

    Complete el nombre de usuario prefijandolo con cbw$, luego proporcione la contraseña.

    Estas credenciales son las de su licencia Cyberwatch. Si no las tiene, contacte con support@cyberwatch.com.

  3. Crear y luego editar el archivo de configuración values.yml

    Es necesario conservar el archivo values.yml de forma segura. El archivo es necesario para actualizar las imágenes Docker o actualizar el chart Helm.

    Los pasos presentados a continuación apuntan a crear un archivo de configuración mínimo que permita el despliegue de la aplicación Cyberwatch.

    A continuación, un ejemplo de archivo values.yml en su configuración mínima:

    global:
      # storageClass:
    
      image:
        registryCredentials:
          - name: cyberwatch-credentials
            registry: harbor.cyberwatch.fr/cbw-on-premise
            username: changeme
            password: changeme
    
    nginx:
      resolver: changeme
    
    ingress:
      enabled: true
      hosts:
        - hostname: cyberwatch.example.com
          ingressClassName: nginx
          tls:
            enabled: true
    
    thirdParties:
      enabled: false
    
    database:
      password: "changeme"
      root_password: "changeme"
    
    redis:
      password: "changeme"
    
    containerScanner:
      container_scanner_api_key: "changeme:changeme"
    
    webScanner:
      web_scanner_api_key: "changeme:changeme"
    
    key:
      base: "changeme"
      credential: "changeme"
    
    node:
      name: cyberwatch-node-name
      type: single
    
  4. Configurar el acceso al registro de contenedores. El par usuario/contraseña es similar al usado para conectarse al repositorio Helm

    global:
      image:
        registryCredentials:
          - name: cyberwatch-credentials
            registry: harbor.cyberwatch.fr/cbw-on-premise
            username: changeme
            password: changeme
    
  5. Configurar el campo global.storageClass permite definir el tipo de almacenamiento usado por los VolumeClaims para conservar los datos persistentes

    Por defecto, el chart Helm configura la aplicación para que los datos se guarden en la maquina que ejecuta el contenedor usando VolumeClaims de tipo hostPath. Este comportamiento solo es adecuado si el cluster Kubernetes esta compuesto por un solo nodo. En un cluster Kubernetes de varios nodos, Cyberwatch recomienda usar un StorageClass:

    global:
      # storageClass:
    
    1. Listar los storageClass disponibles en el cluster:

      kubectl get sc
      
    2. Descomentar el campo global.storageClass y asignarle como valor el nombre de uno de los storageClass disponibles en el cluster.

      Por ejemplo:

      global:
        storageClass: csi-cinder-classic
      

    Si es necesario, hay mas información disponible en los comentarios del archivo de configuración por defecto del chart Helm.

  6. Configurar el campo nginx.resolver

    1. obtener la IP del resolvedor DNS kube-dns:

      kubectl -n kube-system get svc kube-dns
      
    2. Asignar la dirección IP del resolvedor DNS del cluster Kubernetes al campo nginx.resolver.

      Ejemplo:

      nginx:
        resolver: 10.3.0.10
      
  7. Configurar el ingress

    1. Se pueden configurar uno o varios ingress en el campo ingress.hosts. Cada ingress debe tener un hostname único y un ingressClassName. Las IngressClass disponibles en el cluster pueden listarse usando el comando siguiente:

      kubectl get ingressclasses
      
    2. Asignar el valor seleccionado al campo ingressClassName y el nombre de dominio que aceptara las solicitudes al campo hostname.

      Ejemplo:

      ingress:
        enabled: true
        hosts:
          - hostname: cyberwatch.example.com
            ingressClassName: nginx
            tls:
            enabled: true
      

      La dirección IP que corresponde al nombre de dominio debe ser la del balanceador de carga del cluster.

    Si es necesario, hay mas información disponible en los comentarios del archivo de configuración por defecto del chart Helm.

  8. Desactivar el contenedor thirdParties configurando el parámetro thirdParties.enabled en false:

    thirdParties:
      enabled: false
    
  9. Configurar las contraseñas de la aplicación, de la base de datos y de redis

    El conjunto de secretos puede generarse con el siguiente comando:

    cat <<-EOF
    database:
      password: "$(openssl rand -hex 16)"
      root_password: "$(openssl rand -hex 16)"
    
    redis:
      password: "$(openssl rand -hex 16)"
    
    containerScanner:
      container_scanner_api_key: "$(openssl rand -hex 16):$(openssl rand -hex 16)"
    
    webScanner:
      web_scanner_api_key: "$(openssl rand -hex 16):$(openssl rand -hex 16)"
    
    key:
      base: "$(openssl rand -hex 64)"
      credential: "$(openssl rand -hex 64)"
    EOF
    
  10. Configurar el nombre que tomara el nodo Cyberwatch en la aplicación con el parámetro node.name

    node:
      name: cyberwatch-node-name
      type: single
    
  11. Crear el namespace cyberwatch en el cluster:

     kubectl create namespace cyberwatch
    
  12. Generar un par de claves SSH y registrarlas como un secreto:

     ssh-keygen -q -N '' -f ./id_ed25519 -t ed25519
     kubectl -n cyberwatch create secret generic web-scanner-ssh-authorized-keys --from-file=authorized_keys="./id_ed25519.pub"
     kubectl -n cyberwatch create secret generic ssh-private-key --from-file="./id_ed25519"
    
  13. Desplegar el chart Helm:

    helm -n cyberwatch install cyberwatch oci://harbor.cyberwatch.fr/cbw-on-premise/cyberwatch-chart -f values.yml
    

    El despliegue del chart Helm tomara en cuenta las configuraciones del archivo values.yml para configurar la aplicación.

  14. Verificar el estado de los pods:

    kubectl -n cyberwatch get pods
    
  15. Cuando todos los pods estén en ejecución, conectarse a la interfaz web en HTTPS desde la entrada DNS y registrar el usuario Administrador desde la interfaz web

Acceder a la instancia Cyberwatch mediante la dirección IP devolverá un error 404. Es necesario usar el nombre de dominio definido arriba.

(Opcional) Recuperar el archivo de configuración por defecto del chart Helm

La documentación anterior indica los pasos a seguir para configurar una version mínima de Cyberwatch.

Es posible recuperar el archivo de configuración por defecto del chart Helm de Cyberwatch, para disponer de un archivo completo que indica que valores por defecto son modificables.

El uso de este archivo se recomienda si desea desviarse de la configuración mínima propuesta en esta documentación, por ejemplo para configurar un certificado TLS.

Para recuperar el archivo de configuración por defecto del chart Helm:

helm show values oci://harbor.cyberwatch.fr/cbw-on-premise/cyberwatch-chart > values.yml

Este archivo puede modificarse según sus necesidades y el chart Helm redeplegarse a partir de esta nueva configuración.


Volver arriba

English Français Español