Distribuzione di Cyberwatch su un cluster Kubernetes esistente

Questa pagina descrive i passaggi da seguire per distribuire Cyberwatch su un cluster Kubernetes esistente. Questa procedura presuppone che l’utente disponga di una conoscenza di base dell’orchestratore Kubernetes e di Helm.

Procedura di distribuzione

  1. Disporre di un cluster che rispetti i prerequisiti tecnici del software.

  2. Connettersi al repository Helm:

    helm registry login harbor.cyberwatch.fr
    

    Inserire il nome utente anteponendo il prefisso cbw$, quindi fornire la password.

    Queste credenziali sono quelle della licenza Cyberwatch; se non se ne dispone, contattare support@cyberwatch.com.

  3. Creare e poi modificare il file di configurazione values.yml

    È necessario conservare il file values.yml in modo sicuro. Il file è richiesto per l’aggiornamento delle immagini Docker o per aggiornare il chart Helm.

    I passaggi illustrati di seguito hanno lo scopo di predisporre un file di configurazione minimo che consenta la distribuzione dell’applicazione Cyberwatch.

    Ecco un esempio di file values.yml nella sua configurazione minima:

    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"
    
    key:
      base: "changeme"
      credential: "changeme"
    
    node:
      name: cyberwatch-node-name
      type: single
    
  4. Configurare l’accesso al registry dei container. La coppia nome utente/password è analoga a quella utilizzata per connettersi al repository Helm

    global:
      image:
        registryCredentials:
          - name: cyberwatch-credentials
            registry: harbor.cyberwatch.fr/cbw-on-premise
            username: changeme
            password: changeme
    
  5. Configurare il campo global.storageClass, che consente di definire il tipo di storage utilizzato dai VolumeClaims per conservare i dati persistenti

    Per impostazione predefinita, il chart Helm configura l’applicazione in modo che i dati vengano salvati sulla macchina che esegue il container, utilizzando VolumeClaims di tipo hostPath. Questo comportamento è adatto solo se il cluster Kubernetes è composto da un unico nodo. Su un cluster Kubernetes con più nodi, Cyberwatch consiglia di utilizzare una StorageClass:

    global:
      # storageClass:
    
    1. Elencare le storageClass disponibili sul cluster:

      kubectl get sc
      
    2. Rimuovere il commento dal campo global.storageClass e assegnargli come valore il nome di una delle storageClass disponibili sul cluster.

      Ad esempio:

      global:
        storageClass: csi-cinder-classic
      

    Se necessario, ulteriori informazioni sono disponibili nei commenti del file di configurazione predefinito del chart Helm.

  6. Configurare il campo nginx.resolver

    1. Recuperare l’IP del DNS resolver kube-dns:

      kubectl -n kube-system get svc kube-dns
      
    2. Assegnare l’indirizzo IP del resolver DNS del cluster Kubernetes al campo nginx.resolver.

      Esempio:

      nginx:
        resolver: 10.3.0.10
      
  7. Configurare l’ingress

    1. È possibile configurare uno o più ingress nel campo ingress.hosts. Ogni ingress deve avere un hostname univoco e un ingressClassName. Le IngressClass disponibili sul cluster possono essere elencate tramite il comando seguente:

      kubectl get ingressclasses
      
    2. Assegnare il valore selezionato al campo ingressClassName e il nome di dominio che accetterà le richieste al campo hostname.

      Esempio:

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

      L’indirizzo IP corrispondente al nome di dominio deve essere quello del load balancer del cluster.

    Se necessario, ulteriori informazioni sono disponibili nei commenti del file di configurazione predefinito del chart Helm.

  8. Disattivare il container thirdParties impostando il parametro thirdParties.enabled su false:

    thirdParties:
      enabled: false
    
  9. Configurare le password dell’applicazione, del database e di redis

    Tutti i secret possono essere generati con il comando seguente:

    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)"
    
    kibana:
      kibana_password: "$(openssl rand -hex 16)"
    
    key:
      base: "$(openssl rand -hex 64)"
      credential: "$(openssl rand -hex 64)"
    EOF
    
  10. Configurare il nome che il nodo Cyberwatch assumerà nell’applicazione tramite il parametro node.name

    node:
      name: cyberwatch-node-name
      type: single
    
  11. Creare il namespace cyberwatch sul cluster:

     kubectl create namespace cyberwatch
    
  12. Distribuire il chart Helm:

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

    La distribuzione del chart Helm terrà conto delle configurazioni del file values.yml per configurare l’applicazione.

  13. Verificare lo stato dei pod:

    kubectl -n cyberwatch get pods
    
  14. Quando tutti i pod sono in esecuzione, accedere all’interfaccia web in HTTPS tramite la voce DNS e registrare l’utente Amministratore dall’interfaccia web

L’accesso all’istanza Cyberwatch tramite l’indirizzo IP restituirà un errore 404. È necessario utilizzare il nome di dominio definito in precedenza.

(Facoltativo) Recuperare il file di configurazione predefinito del chart Helm

La documentazione precedente indica i passaggi da seguire per predisporre una configurazione minima di Cyberwatch.

È possibile recuperare il file di configurazione predefinito del chart Helm di Cyberwatch, per disporre di un file completo che indica quali valori predefiniti sono modificabili.

Si consiglia di utilizzare questo file per discostarsi dalla configurazione minima proposta in questa documentazione, ad esempio per la configurazione di un certificato TLS.

Per recuperare il file di configurazione predefinito del chart Helm:

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

Questo file può quindi essere modificato in base alle esigenze e il chart Helm ridistribuito a partire da questa nuova configurazione.