Déploiement d’un nœud satellite Cyberwatch sur un cluster Kubernetes existant
Cette page décrit les étapes à suivre pour déployer un nœud satellite Cyberwatch sur un cluster Kubernetes existant. Cette procédure suppose que l’utilisateur dispose d’une connaissance basique de l’orchestrateur Kubernetes et de Helm.
Procédure de déploiement
Disposer d’un nœud maitre Cyberwatch configuré pour permettre la connexion d’un nœud satellite et avoir un accès SSH à ce nœud maitre
Dans le cas où le nœud maitre utilise des bases de données externes. Ces bases de données doivent être accessibles au cluster Kubernetes.
Posséder un cluster respectant les prérequis techniques du logiciel.
Se connecter au dépôt Helm :
helm registry login harbor.cyberwatch.frCompléter le nom de l’utilisateur en le préfixant par
cbw$, puis fournir le mot de passe.Créer puis éditer le fichier de configuration
values.ymlIl est nécessaire de conserver le fichier
values.ymlde manière sécurisée. Le fichier est requis pour la mise à jour des images Docker ou encore pour mettre à jour le chart Helm.Les étapes présentées ci-dessous visent à mettre en place un fichier de configuration minimal permettant le déploiement du satellite Cyberwatch.
Voici un exemple de fichier
values.ymldans sa configuration minimale :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" key: base: "changeme" credential: "changeme"Configurer l’accès au registre des conteneurs. Le couple identifiant/mot de passe est similaire à celui utilisé pour se connecter au dépôt Helm
global: image: registryCredentials: - name: cyberwatch-credentials registry: harbor.cyberwatch.fr/cbw-on-premise username: "changeme" password: "changeme"Configurer le nom que prendra le nœud satellite Cyberwatch dans l’application à l’aide du paramètre
node.name:node: name: cyberwatch-node-name type: satelliteConfigurer le champ
nginx.resolverRécupérer l’IP du DNS resolver
kube-dns:kubectl -n kube-system get svc kube-dnsAssigner l’adresse IP du résolveur DNS du cluster Kubernetes au champ
nginx.resolverExemple :
nginx: resolver: 10.3.0.10
Configurer l’ingress
Un ou plusieurs ingress peuvent être configuré dans le champs
ingress.hosts. Chaque ingress doit posséder unhostnameunique et uningressClassName. LesIngressClassdisponibles sur le cluster peuvent être listées à l’aide de la commande ci-dessous :kubectl get ingressclassesAssigner la valeur sélectionnée au champ
ingressClassNameet le nom de domaine qui acceptera les requêtes au champhostname.Exemple :
ingress: enabled: true hosts: - hostname: cyberwatch.example.com ingressClassName: nginx tls: enabled: trueL’adresse IP qui correspond au nom de domaine doit être celle du répartiteur de charge du cluster.
Si nécessaire, plus d’informations sont disponibles en commentaires du fichier de configuration par défaut du chart Helm.
Configurer les accès aux bases de données et à l’application cyberwatch
Renseigner les adresses IP de connections aux bases de données dans les champs
database.hostetredis.host:database: external: true host: "changeme" redis: external: true host: "changeme"Se connecter en SSH au nœud maitre et afficher les mots de passes :
sudo cyberwatch show-secrets MYSQL_ROOT_PASSWORD=... MYSQL_PASSWORD=... REDIS_PASSWORD=... SECRET_KEY_BASE=... SECRET_KEY_CREDENTIAL=...Renseigner les mots de passes de bases de données obtenues dans les champs correspondant :
database: external: true host: "changeme" password: "MYSQL_PASSWORD" root_password: "MYSQL_ROOT_PASSWORD" redis: external: true host: "changeme" password: "REDIS_PASSWORD"Renseigner les identifiants de connexions à l’application cyberwatch :
key: base: "SECRET_KEY_BASE" credential: "SECRET_KEY_CREDENTIAL"
Désactiver l’utilisation du conteneur
thirdPartiesen définissant les paramètres suivants :thirdParties: enabled: falseCréer le namespace cyberwatch sur le cluster :
kubectl create namespace cyberwatchConfigurer le certificat racine permettant de se connecter à l’application cyberwatch
Se connecter en SSH sur le nœud maitre et afficher le certificat racine :
sudo cyberwatch show-root-certStocker le certificat racine dans un fichier nommé
./cbw-root-ca-cert.pem:cat <<EOF > ./cbw-root-ca-cert.pem -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- EOFImporter le certificat en tant que secret sur le cluster Kubernetes :
kubectl -n cyberwatch create secret generic cbw-root-ca-cert --from-file=./cbw-root-ca-cert.pem
Générer un couple de clef SSH et l’enregistrer en tant que secret :
ssh-keygen -q -N '' -f ./id_ed25519 -t ed25519 kubectl -n cyberwatch create secret generic web-scanner-ssh-authorized-keys --from-file=authorized_keys="./id_ed25519.pub" kubectl -n cyberwatch create secret generic ssh-private-key --from-file="./id_ed25519"Déployer le chart Helm :
helm -n cyberwatch install cyberwatch oci://harbor.cyberwatch.fr/cbw-on-premise/cyberwatch-chart -f values.ymlLe déploiement du chart Helm va prendre en compte les configurations du fichier
values.ymlafin de configurer l’application.Vérifier l’état des pods :
kubectl -n cyberwatch get podsQuand tous les pods sont en cours d’exécution, se connecter à l’interface web du nœud maitre afin de constater le lien avec le nœud satellite. Il est possible également de vérifier que sidekiq communique bien avec le nœud maitre :
kubectl -n cyberwatch logs $(kubectl -n cyberwatch get pods -l app=sidekiq -o jsonpath='{.items[*].metadata.name}')
(Optionnel) Récupérer le fichier de configuration par défaut du chart Helm
La documentation ci-dessus indique les étapes à suivre afin de mettre en place une configuration minimale de Cyberwatch.
Il est possible de récupérer le fichier de configuration par défaut du chart Helm de Cyberwatch, afin de disposer d’un fichier complet indiquant quelles valeurs par défaut sont modifiables.
L’utilisation de ce fichier est recommandée si vous souhaitez dévier de la configuration minimale proposée dans cette documentation, notamment pour la mise en place d’un certificat TLS par exemple.
Pour récupérer le fichier de configuration par défaut du chart Helm :
helm show values oci://harbor.cyberwatch.fr/cbw-on-premise/cyberwatch-chart > values.yml
Ce fichier peut ensuite être modifié selon vos besoins, et le chart Helm redéployé à partir de cette nouvelle configuration.