Déploiement de Cyberwatch sur un cluster Kubernetes existant
Cette page décrit les étapes à suivre pour déployer 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
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.Ces identifiants sont ceux de votre licence Cyberwatch, si vous n’en disposez pas merci de vous rapprocher de support@cyberwatch.com.
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 de l’application Cyberwatch.
Voici un exemple de fichier
values.ymldans sa configuration minimale :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" key: base: "changeme" credential: "changeme" node: name: cyberwatch-node-name type: singleConfigurer 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: changemeConfigurer le champ
global.storageClasspermet de définir le type de stockage utilisé par lesVolumeClaimsafin de conserver les données persistantesPar défaut, le chart Helm configure l’application pour que les données soient sauvegardées sur la machine qui exécute le conteneur en utilisant des
VolumeClaimsde typehostPath. Ce comportement n’est adapté que si le cluster Kubernetes n’est composé que d’un seul nœud. Sur un cluster Kubernetes de plusieurs nœuds, Cyberwatch recommande d’utiliser unStorageClass:global: # storageClass:Lister les
storageClassdisponibles sur le cluster :kubectl get scDé-commenter le champ
global.storageClasset lui assigner comme valeur le nom d’un desstorageClassdisponibles sur le cluster.Par exemple :
global: storageClass: csi-cinder-classic
Si nécessaire, plus d’informations sont disponibles en commentaires du fichier de configuration par défaut du chart Helm.
Configurer 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.resolver.Exemple :
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.
Désactiver le conteneur
thirdPartiesen définissant le paramètrethirdParties.enabledàfalse:thirdParties: enabled: falseConfigurer les mots de passe de l’application, de la base de données et de redis
L’ensemble des secrets peut être généré avec la commande suivante :
cat <<-EOF database: password: "$(openssl rand -hex 16)" root_password: "$(openssl rand -hex 16)" redis: password: "$(openssl rand -hex 16)" key: base: "$(openssl rand -hex 64)" credential: "$(openssl rand -hex 64)" EOFConfigurer le nom que prendra le nœud Cyberwatch dans l’application à l’aide du paramètre
node.namenode: name: cyberwatch-node-name type: singleCréer le namespace cyberwatch sur le cluster :
kubectl create namespace cyberwatchGé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 en HTTPS à partir de l’entrée DNS et enregistrer l’utilisateur Administrateur depuis l’interface web
Le fait d’accéder à l’instance Cyberwatch via l’adresse IP renverra une erreur 404. Il est nécessaire d’utiliser le nom de domaine défini plus haut.
(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.