Configurare Checkmk in Kubernetes è facile grazie alla recente introduzione del registro dei container Checkmk e dei manifesti di esempio per la distribuzione. Seguitemi nel percorso che vi condurrà a una semplice distribuzione e aggiornamento di Checkmk con un solo clic.
Distribuiremo Checkmk Enterprise Edition in un cluster Kubernetes vanilla con la versione 1.18. I passaggi per la distribuzione di Checkmk Raw Edition sono simili e si possono anche saltare alcuni passaggi, poiché non è necessario impostare il pull secret per ottenere l'immagine del container dal registro.
Prerequisiti: disporre di un volume persistente per Checkmk per memorizzare i dati.
Esonero di responsabilità:
L'esecuzione di Checkmk in Kubernetes non è ufficialmente supportata! Questo articolo del blog illustra solo ciò che è possibile fare ed è stato testato solo con Vanilla Kubernetes 1.18. Si consiglia di separare l'infrastruttura di monitoraggio da quella di produzione, come dice un detto tedesco: non monitorare l'albero dal ramo...
1. Scaricare i manifesti
Per prima cosa, si possono ottenere i manifesti dal nostro repository GitHub, scaricandoli singolarmente o clonando il repository.
Dovreste ritrovarvi con tutti i file in una cartella come questa:
Consiglio di avere i manifesti di Kubernetes in un Git e di seguire l'approccio GitOps quando si tratta di gestire il cluster.
2. Adattare i manifesti
Iniziamo a preparare i manifesti per il successivo deploy di Checkmk. Ci concentreremo solo sui manifesti che sarà sicuramente necessario adattare.
Tuttavia, alla fine di questo articolo, descriverò la funzione di ogni manifesto.
Ingress: Rendere disponibile l'interfaccia utente di Checkmk
Affinché l'interfaccia utente di Checkmk sia accessibile dall'esterno, è necessario configurare un ingress. A seconda di come è impostato il cluster, questo potrebbe variare.
Modificare il file checkmk-server_ingress.yaml
Per la mia situazione, ho modificato la riga 9 in
- host: checkmk.10.199.31.20.nip.io
Se non si dispone di una configurazione di ingress, è sufficiente eliminare questo file. Checkmk sarà accessibile tramite NodePort.
Segreto: estrazione delle immagini di Checkmk dal Registro di sistema
Se si utilizza la Raw Edition, si può saltare questo passaggio.
Successivamente, occorre impostare il segreto di estrazione, in modo da poter prelevare l'immagine Checkmk dal repository ufficiale del contenitore. Per questo è necessario un abbonamento a Checkmk. Si possono usare le credenziali di download, che si usano anche per scaricare Checkmk in generale.
Usare il seguente comando per creare un segreto, che servirà per prelevare l'immagine.
kubectl create secret docker-registry regcred --docker-server=registry.checkmk.com --docker-username=<your-name> --docker-password=<your-pword>
Il segreto può essere recuperato con
kubectl get secret regcred --output=yaml
Utilizzare la stringa da .dockerconfigjson e aggiungere il testo checkmk-server_secret-pull-credentials.yaml alla riga 11.
Queste sono le modifiche minime che dovrete apportare. Ora è possibile distribuire Checkmk.
3. Distribuzione di Checkmk in Kubernetes
Per questo, è sufficiente eseguire il seguente comando nella cartella con i manifesti.
kubectl apply -f .
Si può poi verificare se il pod Checkmk è stato generato con successo usando
kubectl get pods -n checkmk
Ecco fatto. Andate all'URL che avete configurato e potete accedere con le credenziali che avete appena configurato (o meno). L'impostazione predefinita è cmkadmin // cmk
Per monitorare il vostro cluster Kubernetes, ora potete semplicemente seguire le istruzioni contenute nei nostri documenti.
4. Opzionale: Gli altri manifesti
Ci si potrebbe chiedere a cosa servano gli altri manifesti. Uno importante è checkmk-server_deployment.yaml.
È possibile specificare l'immagine da utilizzare per Checkmk dal seguente elenco di immagini disponibili.
Attualmente check-mk-enterprise:2.0.0-latest restituisce l'ultima build giornaliera della versione 2.0.0, che non è testata da noi per la stabilità. In futuro modificheremo questa impostazione in modo che questo tag restituisca l'ultima release patchata della versione 2.0.0.
È anche possibile impostare dei limiti, cosa che non raccomandiamo in Checkmk, poiché a seconda del carico di monitoraggio questo può aumentare, soprattutto per quanto riguarda la memoria.
Se non si dispone di un volume persistente nel cluster, si possono usare le righe commentate qui sotto. In questo modo, tuttavia, si perderanno la configurazione e i dati di monitoraggio in caso di arresto anomalo.
Ecco una breve spiegazione degli altri manifesti.
- 00-namespace.yaml: Crea lo spazio dei nomi checkmk. Inizia con 00 in modo che venga eseguito per primo. Modificarlo solo se si vuole eseguire Checkmk in un altro spazio dei nomi. In tal caso, sarà necessario modificare anche tutti gli altri manifesti.
- checkmk-monitoring_rbac.yaml: Crea un ServiceAccount, un ClusterRole e un ClusterRoleBinding, necessari per il monitoraggio di Kubernetes tramite l'API Kubernetes. Idealmente, non modificarlo.
- checkmk-server_configmap.yaml: Qui è possibile modificare il nome del sito Checkmk.
- checkmk-server_network-policy.yaml: È necessario se si dispone di una politica di rete nel cluster.
- checkmk-server_persistent-volume-claim.yaml: Si potrebbe voler cambiare lo storageClassName e lo storage.
- checkmk-server_secret-site-credentials.yaml: Imposta la password predefinita per il login al sito Checkmk. Modificarla in base alle proprie esigenze utilizzando il commento nel file.
- checkmk-server_service.yaml: Consente di raggiungere il sito Checkmk utilizzando una porta su qualsiasi nodo attualmente funzionante, nel caso in cui non si disponga di un ingresso. Per trovare la porta, usare
kubectl get svc -n checkmk
È possibile utilizzare la porta per accedere a Checkmk (dovrebbe indicare qualcosa come 80:31859/TCP).
Divertitevi a provare Checkmk in Kubernetes. È un modo eccellente per provare anche i rami di sviluppo di Checkmk per testare nuove funzionalità, in quanto è possibile creare e distruggere rapidamente le istanze.
Se avete idee o commenti, contattateci. Inviateci anche richieste di pull se avete idee di miglioramento. Kubernetes sta cambiando rapidamente, quindi è molto probabile che i manifesti non funzionino per la vostra versione. Contattateci anche in questo caso.
Buon monitoraggio!