MicroK8s - Helm3 et CouchDB

Publié le 21 décembre 2021

Sommaire

Installation de Helm3

Par défaut Micro-K8s vient avec très peu d’add-on activé.

Si nous allons sur cette page, nous verrons qu’il est très simple d’activer/désactiver un module et nous aurons la liste des add-ons disponibles : https://microk8s.io/docs/addons

Installation de l’add-on Helm3

Activation du module : microk8s enable helm3

'Micro K8s info'

Nous notons qu’avec la commande : microk8s status nous pouvons voir le status des add-ons actifs, dont helm3 :

'Micro K8s info'

Installation de CouchDB via Helm3

Pré-requis

Soit nous allons sur le site de Helm pour trouver les informations dont nous avons besoin à propos de CouchDB, soit nous allons directement sur le site de CouchDB :

Sur l’ArtifactHub, nous trouvons des informations un peu plus complète, nous utiliserons celui-ci pour référence.

Etant donné que Helm est packagé via Microk8s, les commandes helm deviendront microk8s helm3.

La première étape, on ajoute le repository :

microk8s helm3 repo add couchdb https://apache.github.io/couchdb-helm

'Micro K8s Add repo'

Déploiement du cluster

Ensuite nous devons générer un uuid, j’utilise la commande uuidgen (nous installons cet utilitaire avec le package uuid-runtime comme ceci : sudo apt install uuid-runtime ou sinon il est déjà présent sur la VM microk8s).

Pour plus de faciliter, nous l’exporterons dans une variable :

export COUCHDB_UUID=`uuidgen`

Puis nous lançons la commande suivante :

sudo microk8s helm3 install \
  my-couchdb-server \
  --set couchdbConfig.couchdb.uuid=$COUCHDB_UUID \
  couchdb/couchdb

Etant donné que j’étais dans la vm de Micro-K8s, j’ai du corriger la commande initiale en rajoutant sudo, sinon nous avions cette erreur :

'Micro K8s Add repo'

Une fois corrigé, nous installons notre chart :

'Micro K8s Couchdb deploy'

Nous pouvons vérifier notre déploiement simplement avec kubectl get pods

'Micro K8s Check deployment'

Nous constatons que par défaut, nous avons 3 replicas de notre déploiement.

Nous notons également que je n’ai pas mis de namespace, il utilise le namespace par défaut : “default”.

Vérification du bon fonctionnement

Maintenant, si l’on souhaite accéder au cluster CouchDB, il faut rendre les ressources accessibles, la méthode la plus rapide, ce serait de faire un port-forward, comme ceci :

microk8s kubectl port-forward statefulset/my-couchdb-server-couchdb 15984:5984

A noter que le port par défaut de CouchDB est le 5984.

Je déploie le port-forward sur le Statefulset, car le chart Helm déploie un StatefulSet.

'Micro K8s Port Forward with address'

Néanmoins, par défaut, il expose sa route sur sa loopback, on corrige donc avec le paramètre --address :

microk8s kubectl port-forward statefulset/my-couchdb-server-couchdb 15984:5984 --address 0.0.0.0

'Micro K8s Port Forward with address'

Et nous avons désormais accès à notre cluster CouchDB :

'Micro K8s Web Access'

Accès à l’interface d’administration Fauxton

Le cluster peut s’administrer avec CouchDB Fauxton, qui est une interface web incluse avec le cluster.

Il faut aller sur l’URL : http://your_ip_addr:15984/_utils/

'Micro K8s Fauxton'

Et là, il nous faut des identifiants … !

microk8s kubectl get secret my-couchdb-server-couchdb -o yaml

Dans la documentation du Helm chart, nous constatons qu’il y a 2 paramètres : adminUsername et adminPassword.

Le adminPassword est “auto-generated”, donc il faut aller le chercher.

Dans le template Helm, nous voyons qu’il déploie une ressource de type Secret, allons regarder les secrets de la plateforme avec microk8s kubectl get secrets :

'Micro K8s Get secrets'

Nous constatons plusieurs Secrets pour CouchDB, prenons le premier, et essayons d’en récupérer des informations avec cette commande : microk8s kubectl get secret my-couchdb-server-couchdb -o yaml

'Micro K8s Port Forward with address'

Nous voyons dans la partie data, nos 2 clés/valeurs.

Mais celles-ci sont en base64, il faut en prendre le contenu, et le décoder avec l’utilitaire base64 comme ceci : echo 'YWRtaW4=' | base64 --decode, ici pour le username, qui est … admin !

Et voilà, nous pouvons nous identifier sur l’interface :

'Micro K8s Fauxton'

Sur cette interface, nous pouvons créer nos bases de données, gérer la réplication, interroger ces bases, etc.

Récapitulatif des liens