Distribuzione di un nodo satellite Cyberwatch su un cluster Kubernetes esistente
Questa pagina descrive i passaggi da seguire per distribuire un nodo satellite 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 nodo master Cyberwatch configurato per consentire la connessione di un nodo satellite e avere un accesso SSH a tale nodo master
Nel caso in cui il nodo master utilizzi database esterni, questi database devono essere accessibili dal cluster Kubernetes.
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.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 del satellite Cyberwatch.
Ecco un esempio di file
values.ymlnella sua configurazione minima: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"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"Configurare il nome che il nodo satellite Cyberwatch assumerà nell’applicazione tramite il parametro
node.name:node: name: cyberwatch-node-name type: satelliteConfigurare 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.resolverEsempio:
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.
Configurare gli accessi ai database e all’applicazione Cyberwatch
Inserire gli indirizzi IP di connessione ai database nei campi
database.hosteredis.host:database: external: true host: "changeme" redis: external: true host: "changeme"Connettersi in SSH al nodo master e visualizzare le password:
sudo cyberwatch show-secrets MYSQL_ROOT_PASSWORD=... MYSQL_PASSWORD=... REDIS_PASSWORD=... SECRET_KEY_BASE=... SECRET_KEY_CREDENTIAL=...Inserire le password dei database ottenute nei campi corrispondenti:
database: external: true host: "changeme" password: "MYSQL_PASSWORD" root_password: "MYSQL_ROOT_PASSWORD" redis: external: true host: "changeme" password: "REDIS_PASSWORD"Inserire le credenziali di connessione all’applicazione Cyberwatch:
key: base: "SECRET_KEY_BASE" credential: "SECRET_KEY_CREDENTIAL"
Disattivare l’utilizzo del container
thirdPartiesdefinendo i parametri seguenti:thirdParties: enabled: falseGenerare le credenziali per il pod container-scanner:
cat <<-EOF containerScanner: container_scanner_api_key: "$(openssl rand -hex 16):$(openssl rand -hex 16)" EOFCreare il namespace cyberwatch sul cluster:
kubectl create namespace cyberwatchConfigurare il certificato root che consente di connettersi all’applicazione Cyberwatch
Connettersi in SSH al nodo master e visualizzare il certificato root:
sudo cyberwatch show-root-certSalvare il certificato root in un file denominato
./cbw-root-ca-cert.pem:cat <<EOF > ./cbw-root-ca-cert.pem -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- EOFImportare il certificato come secret sul cluster Kubernetes:
kubectl -n cyberwatch create secret generic cbw-root-ca-cert --from-file=./cbw-root-ca-cert.pem
Distribuire 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 del nodo master per verificare il collegamento con il nodo satellite. È inoltre possibile verificare che sidekiq comunichi correttamente con il nodo master:
kubectl -n cyberwatch logs $(kubectl -n cyberwatch get pods -l app=sidekiq -o jsonpath='{.items[*].metadata.name}')
(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 se si desidera 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.