OpenFaas est un framework sans serveur qui s'exécute sur Kubernetes. Voici comment les créateurs d’OpenFaas décrivent leur mission:

«OpenFaaS a pour mission de simplifier les fonctions serverless. Il peut être exécuté sur n’importe quel cloud grâce à l’utilisation de conteneurs Docker portables sans crainte d’être bloqué ou de devoir gérer une infrastructure complexe. ”  

Dans ce blog, je vais vous montrer comment déployer rapidement un cluster Kubernetes avec Rancher pour exécuter OpenFaas!

Préparer l'environnement de démo

Donc, avant de pouvoir exécuter OpenFaas, nous avons d’abord besoin d’un cluster Kubernetes. Le moyen le plus simple d'en construire un est d'utiliser Rancher.

Rancher fonctionne dans un conteneur Docker et il fera également tourner Kubernetes dans des conteneurs. Tout d'abord, vous devrez créer quelques machines virtuelles. J’en ai utilisé 2 sous Ubuntu 16.04 chez OVH. La première machine virtuelle fera fonctionner Rancher et le maître Kubernetes, etc., l'autre sera un worker Kubernetes.

Ne mélangez pas Rancher avec un worker de Kubernetes. Cela ne fonctionnera pas car les deux ont besoin du port 80.  Installez Ubuntu en utilisant tous les paramètres par défaut, activez ssh. J'ai donné le premier vm 4 Go de RAM, les trois travailleurs en ont deux. Une fois Ubuntu installé, j’utilise le script d’installation de docker qui se trouve ici pour installer la dernière version de Docker.

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Le cluster Kubernetes

Connectez-vous à la première machine. Installer Rancher n’est rien de plus que l’exécution d’un conteneur. Exécutez la commande suivante:

sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest

Rancher prendra un certain temps à télécharger et à démarrer. Une fois que c'est fait, ouvrez votre navigateur et accédez à l'ip de la première vm. L’interface utilisateur Rancher apparaît et vous demande de définir un nom d’utilisateur et un mot de passe.

Dans l'étape suivante, il vous demandera l'adresse du serveur, l'adresse IP est ok pour l'instant.

Il est maintenant temps de créer le cluster Kubernetes. Cliquez sur ‘Ajouter un cluster’ dans le coin supérieur droit. Choisissez ‘custom’ et entrez un nom de cluster.

add cluster...

Le reste des paramètres peuvent être laissés inchangés. Il est maintenant temps de créer le master, etcd et les workers Commencez par vérifier les cases à cocher master et etcd et copiez la commande. Exécutez cette commande sur le premier VPS qui exécute également Rancher. Attendez que ça commence.

Ensuite, assurez-vous de ne cocher que la case de l'agent de travail et copiez à nouveau la commande. Exécutez-le sur les trois autres machines virtuelles. Votre cluster est opérationnel! C'était facile, non?!

Prochaine étape: lancez OpenFaas! OpenFaas n’est pas disponible dans la bibliothèque de Rancher, nous devrons donc l’installer manuellement. Ce n'est pas difficile cependant. Nous devons d’abord installer Kubectl sur l’un des VPS. Connectez-vous à l’un des serveurs et installez kubectl en utilisant:

sudo snap install kubectl --classic

Il existe plusieurs façons de fournir la configuration de vos clusters à kubectl. J'utiliserai l'argument –kubeconfig de la ligne de commande. Pour ce faire, nous devons créer un fichier de configuration. J'en ai créé un dans mon répertoire personnel appelé rancher.conf. Allez sur Rancher, ouvrez votre cluster et cliquez sur ‘Fichier Kubeconfig’ dans le coin supérieur droit. Faites défiler la liste et cliquez sur ‘Copier dans le presse-papiers’. Collez ceci dans votre rancher.conf.  Maintenant, clonez le dépôt OpenFaas suivant et déplacez-vous vers ce répertoire en utilisant :

git clone https://github.com/openfaas/faas-netes
cd faas-netes

Déployez les fichiers yml OpenFass en utilisant: Déployez les fichiers yml OpenFass en utilisant:

sudo kubectl apply -f namespaces.yml --kubeconfig /root/rancher.conf
sudo kubectl apply -f ./yaml --kubeconfig /root/rancher.conf
configmap/alertmanager-config created
deployment.apps/alertmanager created
service/alertmanager created
deployment.apps/gateway created
service/gateway created
deployment.apps/nats created
service/nats created
configmap/prometheus-config created
deployment.apps/prometheus created
serviceaccount/openfaas-prometheus created
role.rbac.authorization.k8s.io/openfaas-prometheus created
rolebinding.rbac.authorization.k8s.io/openfaas-prometheus created
service/prometheus created
deployment.apps/queue-worker created
serviceaccount/faas-controller created

Allez dans Projets / Namespaces et vous aurez quelque chose de similaire:

Ajoutez un nouveau projet, appelez-le OpenFaas et ajoutez-lui les deux namespaces OpenFaas en utilisant les fonctions de déplacement de Rancher. Maintenant, cliquez sur le nouveau projet, vous verrez la charge de travail actuelle dans le projet:

La passerelle OpenFaas a une interface utilisateur simple mais agréable. Pour pouvoir y accéder, nous devons d’abord ajouter une entrée. Cliquez sur 'Load Balancing' puis sur 'Add Ingress'. Nommez-le "passerelle" et ajoutez un serveur cible de service. Sélectionnez passerelle en tant que service et sélectionnez son port.


Une fois l’ingress initialisée, vous devriez pouvoir cliquer sur le lien qui ressemble au mien et ouvrir l’UI OpenFaas: gateway.openfaas.ipduserver.xip.io.