Prérequis
Cluster k8s
Il faut évidémment un cluster, qu'il soit en local ou sur le cloud cette installation devrait marcher.
Helm
Afin d'installer apache superset sur kubernetes, il nous faut d'abord installer la chart Helm. La chart Helm est un gestionnaire de paquets pour k8s, c'est donc un ensemble de fichiers qui permettent d'installer des applications sur k8s.
Pour installer Helm, vous pouvez vous rendre sur la page Installer Helm.
Installation
Une fois que Helm est installé, il ne reste qu'à installer la Chart superset, pour cela :
helm repo add superset https://apache.github.io/superset
Pour vérifier que l'installation s'est effectuée correctement, taper :
helm search repo superset
Après avoir installé le repo, il reste à installer l'application, pour cela plusieurs façons :
- Installation de base sans modifications
- Installation avec un fichier .yaml modifié
- Installation dans un namespace
Ici, la première option n'est pas conseillée car il faut rajouter une clé open ssl pour que l'application marche.
Il faudra donc télécharger un fichier yaml et modifié des paramètres.
Fichier my-values
Pour superset, le fichier yaml à modifier est disponible sur la page github de superset.
Le plus simple est de télécharger le fichier et de l'ouvrir dans un éditeur tel que Visual Studio Code.
Ce fichier .yaml est très long et certaines parties nécessites d'être modifiées ou même ont besoin d'un rajout de lignes.
Ci-dessous, les lignes les plus importantes a rajouté/modifié.
Premièrement, rajouter une clé ssl, pour cela, allez à la ligne configOverride et mettre une clé ssl :
configOverrides:
secret: |
SECRET_KEY = 'uQ2wbOU1/YV0E7QRf1mXrdxByD3dLZvPAbTpXjJSZzpHPGbBelATbItP'
Pour créer votre propre clé :
openssl rand -base64 42
Pour ajouter un ingress controller (traefik) et l'exposition de l'application sur internet en https :
Traefik sur k8s
Après ces modifications, exporter ce fichier dans le master de votre cluster sous le nom de "my-values.yaml" puis faire la commande :
helm upgrade --install --values my-values.yaml superset superset/superset
Si vous voulez faire l'installation dans un namesapce :
kubectl create namespace mynamespace
helm upgrade --install --values my-values.yaml superset superset/superset -n mynamespace
Après quelques temps, la console devrait vous retourner une réponse finissant par un port forwarding qui sert à tester si l'application marche bien, ci-dessous un exemple en local.
kubectl port-forward service/superset 8088:8088 --namespace default
Si votre installation est faite avec un cluster sur le cloud, il faudra faire un ingress.
Si l'application marche bien, il possible ensuite d'arreter le port-forwarding de plutôt mettre en place un service atteignable depuis une ip externe, ou un ingress-controler ou bien un loadBalancer.
Supprimer superset
Dans un namespace
kubect delete namespace mynamespace
Attention, cette commande supprimera le namespace et donc tout ce qu'il contient, ne pas faire ceci si vous voulez conserver des donneés.
Dans le namespace par default
Dans notre cas on a les pods suivant :
On s'intéressera uniquement aux pods qui sont dans l'état "running".
Pour supprimer le pod qui s'appelle "superset-X":
kubectl delete deployment superset
Pour supprimer le pod qui s'appelle "superset-worker-X":
kubectl delete deployment superset-worker
Pour supprimer le pod qui s'appelle "superset-redis-master-0":
kubectl delete statefulset.apps superset-redis-master
Suppression avancée
Il est très probable que ces supressions ne suppriment pas tout, pour avoir une vue globale de tout ce qui est installé il suffit de taper la commande suivante:
kubectl get all
dans notre exemple il reste encore ceci dans les services:
pour les supprimer voici le "pattern" de la commande :
kubectl delete [1] [2]
[1] correspond à ce qui est avant le / et le [2] à ce qui est après
exemple :
kubectl delete service superset
Cette commande supprimera le service superset. Ce pattern fonctionne avec les services mais aussi les pods les deployments etc etc
Article réalisé par Ian BELLAY