Desplegament d’un node satèl·lit de Cyberwatch en un clúster Kubernetes existent

Aquesta pàgina descriu els passos que cal seguir per desplegar un node satèl·lit de Cyberwatch en un clúster Kubernetes existent. Aquest procediment pressuposa que l’usuari té uns coneixements bàsics de l’orquestrador Kubernetes i de Helm.

Procediment de desplegament

  1. Disposeu d’un node mestre de Cyberwatch configurat per permetre la connexió d’un node satèl·lit i tingueu accés SSH a aquest node mestre

    Si el node mestre utilitza bases de dades externes, aquestes bases de dades han de ser accessibles des del clúster Kubernetes.

  2. Disposeu d’un clúster que compleixi els requisits tècnics del programari.

  3. Connecteu-vos al repositori de Helm:

    helm registry login harbor.cyberwatch.fr
    

    Completeu el nom d’usuari afegint-hi el prefix cbw$ i, després, introduïu la contrasenya.

  4. Creeu i, després, editeu el fitxer de configuració values.yml

    Cal conservar el fitxer values.yml de manera segura. El fitxer és necessari per actualitzar les imatges Docker o per actualitzar el chart de Helm.

    Els passos següents serveixen per crear un fitxer de configuració mínim que permet desplegar el satèl·lit de Cyberwatch.

    Aquest és un exemple de fitxer values.yml en la seva configuració mínima:

    global:
      pki:
        root_ca: cbw-root-ca-cert
      image:
        registryCredentials:
          - name: cyberwatch-credentials
            registry: harbor.cyberwatch.fr/cbw-on-premise
            username: "changeme"
            password: "changeme"
    
    node:
      name: cyberwatch-node-name
      type: satellite
    
    nginx:
      resolver: "changeme"
    
    ingress:
      enabled: true
      hosts:
        - hostname: cyberwatch.example.com
          ingressClassName: nginx
          tls:
            enabled: true
    
    thirdParties:
      enabled: false
    
    database:
      external: true
      host: "changeme"
      password: "changeme"
      root_password: "changeme"
    
    redis:
      external: true
      host: "changeme"
      password: "changeme"
    
    containerScanner:
      container_scanner_api_key: "changeme:changeme"
    
    key:
      base: "changeme"
      credential: "changeme"
    
  5. Configureu l’accés al registre dels contenidors. El nom d’usuari i la contrasenya són els mateixos que els que s’utilitzen per connectar-se al repositori de Helm

    global:
      image:
        registryCredentials:
          - name: cyberwatch-credentials
            registry: harbor.cyberwatch.fr/cbw-on-premise
            username: "changeme"
            password: "changeme"
    
  6. Configureu el nom que tindrà el node satèl·lit de Cyberwatch a l’aplicació amb el paràmetre node.name:

    node:
      name: cyberwatch-node-name
      type: satellite
    
  7. Configureu el camp nginx.resolver

    1. Obteniu l’adreça IP del resolutor DNS kube-dns:

      kubectl -n kube-system get svc kube-dns
      
    2. Assigneu l’adreça IP del resolutor DNS del clúster Kubernetes al camp nginx.resolver

      Exemple:

      nginx:
        resolver: 10.3.0.10
      
  8. Configureu l’ingress

    1. Podeu configurar un o diversos ingress al camp ingress.hosts. Cada ingress ha de tenir un hostname únic i un ingressClassName. Podeu llistar les IngressClass disponibles al clúster amb l’ordre següent:

      kubectl get ingressclasses
      
    2. Assigneu el valor seleccionat al camp ingressClassName i el nom de domini que acceptarà les sol·licituds al camp hostname.

      Exemple:

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

      L’adreça IP que correspon al nom de domini ha de ser la de l’equilibrador de càrrega del clúster.

    Si cal, trobareu més informació als comentaris del fitxer de configuració per defecte del chart de Helm.

  9. Configureu l’accés a les bases de dades i a l’aplicació Cyberwatch

    1. Indiqueu les adreces IP de connexió a les bases de dades als camps database.host i redis.host:

      database:
        external: true
        host: "changeme"
      
      redis:
        external: true
        host: "changeme"
      
    2. Connecteu-vos per SSH al node mestre i mostreu les contrasenyes:

      sudo cyberwatch show-secrets
      
      MYSQL_ROOT_PASSWORD=...
      MYSQL_PASSWORD=...
      REDIS_PASSWORD=...
      SECRET_KEY_BASE=...
      SECRET_KEY_CREDENTIAL=...
      
    3. Indiqueu les contrasenyes de les bases de dades obtingudes als camps corresponents:

      database:
        external: true
        host: "changeme"
        password: "MYSQL_PASSWORD"
        root_password: "MYSQL_ROOT_PASSWORD"
      
      redis:
        external: true
        host: "changeme"
        password: "REDIS_PASSWORD"
      
    4. Indiqueu les credencials de connexió a l’aplicació Cyberwatch:

      key:
        base: "SECRET_KEY_BASE"
        credential: "SECRET_KEY_CREDENTIAL"
      
  10. Desactiveu l’ús del contenidor thirdParties definint els paràmetres següents:

    thirdParties:
      enabled: false
    
  11. Genereu la credencial per al pod container-scanner:

    cat <<-EOF
    containerScanner:
      container_scanner_api_key: "$(openssl rand -hex 16):$(openssl rand -hex 16)"
    EOF
    
  12. Creeu l’espai de noms cyberwatch al clúster:

    kubectl create namespace cyberwatch
    
  13. Configureu el certificat arrel que permet connectar-se a l’aplicació Cyberwatch

    1. Connecteu-vos per SSH al node mestre i mostreu el certificat arrel:

      sudo cyberwatch show-root-cert
      
    2. Deseu el certificat arrel en un fitxer anomenat ./cbw-root-ca-cert.pem:

      cat <<EOF > ./cbw-root-ca-cert.pem
      -----BEGIN CERTIFICATE-----
      ...
      -----END CERTIFICATE-----
      EOF
      
    3. Importeu el certificat com a secret al clúster Kubernetes:

      kubectl -n cyberwatch create secret generic cbw-root-ca-cert --from-file=./cbw-root-ca-cert.pem
      
  14. Desplegueu el chart de Helm:

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

    El desplegament del chart de Helm té en compte la configuració del fitxer values.yml per configurar l’aplicació.

  15. Comproveu l’estat dels pods:

    kubectl -n cyberwatch get pods
    
  16. Quan tots els pods estiguin en execució, inicieu la sessió a la interfície web del node mestre per comprovar l’enllaç amb el node satèl·lit. També podeu comprovar que sidekiq es comunica correctament amb el node mestre:

    kubectl -n cyberwatch logs $(kubectl -n cyberwatch get pods -l app=sidekiq  -o jsonpath='{.items[*].metadata.name}')
    

(Opcional) Obtenir el fitxer de configuració per defecte del chart de Helm

La documentació anterior indica els passos que cal seguir per crear una configuració mínima de Cyberwatch.

Podeu obtenir el fitxer de configuració per defecte del chart de Helm de Cyberwatch per disposar d’un fitxer complet que indica quins valors per defecte es poden modificar.

Es recomana utilitzar aquest fitxer si voleu apartar-vos de la configuració mínima que proposa aquesta documentació, per exemple per configurar un certificat TLS.

Per obtenir el fitxer de configuració per defecte del chart de Helm:

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

Després, podeu modificar aquest fitxer segons les vostres necessitats i tornar a desplegar el chart de Helm a partir d’aquesta configuració nova.