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
Disporre di un cluster che rispetti i prerequisiti tecnici del software.
Connettersi al repository Helm:
helm registry login harbor.cyberwatch.frInserire 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.
Creare e poi modificare il file di configurazione
values.ymlÈ necessario conservare il file
values.ymlin 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.ymlnella 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: singleConfigurare 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: changemeConfigurare il campo
global.storageClass, che consente di definire il tipo di storage utilizzato daiVolumeClaimsper conservare i dati persistentiPer impostazione predefinita, il chart Helm configura l’applicazione in modo che i dati vengano salvati sulla macchina che esegue il container, utilizzando
VolumeClaimsdi tipohostPath. Questo comportamento è adatto solo se il cluster Kubernetes è composto da un unico nodo. Su un cluster Kubernetes con più nodi, Cyberwatch consiglia di utilizzare unaStorageClass:global: # storageClass:Elencare le
storageClassdisponibili sul cluster:kubectl get scRimuovere il commento dal campo
global.storageClasse assegnargli come valore il nome di una dellestorageClassdisponibili 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.
Configurare il campo
nginx.resolverRecuperare l’IP del DNS resolver
kube-dns:kubectl -n kube-system get svc kube-dnsAssegnare l’indirizzo IP del resolver DNS del cluster Kubernetes al campo
nginx.resolver.Esempio:
nginx: resolver: 10.3.0.10
Configurare l’ingress
È possibile configurare uno o più ingress nel campo
ingress.hosts. Ogni ingress deve avere unhostnameunivoco e uningressClassName. LeIngressClassdisponibili sul cluster possono essere elencate tramite il comando seguente:kubectl get ingressclassesAssegnare il valore selezionato al campo
ingressClassNamee il nome di dominio che accetterà le richieste al campohostname.Esempio:
ingress: enabled: true hosts: - hostname: cyberwatch.example.com ingressClassName: nginx tls: enabled: trueL’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.
Disattivare il container
thirdPartiesimpostando il parametrothirdParties.enabledsufalse:thirdParties: enabled: falseConfigurare 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)" EOFConfigurare il nome che il nodo Cyberwatch assumerà nell’applicazione tramite il parametro
node.namenode: name: cyberwatch-node-name type: singleCreare il namespace cyberwatch sul cluster:
kubectl create namespace cyberwatchDistribuire il chart Helm:
helm -n cyberwatch install cyberwatch oci://harbor.cyberwatch.fr/cbw-on-premise/cyberwatch-chart -f values.ymlLa distribuzione del chart Helm terrà conto delle configurazioni del file
values.ymlper configurare l’applicazione.Verificare lo stato dei pod:
kubectl -n cyberwatch get podsQuando 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.