Cet article part du principe que vous connaissez un peu Rancher et que vous utilisez son interface.
Nous allons faire un focus sur des fonctionnalités principales de Rancher au travers de l’API.
Pour se faire, nous procédons à un petit rappel des principaux niveaux logiques et physiques qu’utilise Rancher :
- Container : (physique) Processus isolé dans un conteneur.
- Service : (logique) Contient un ou plusieurs Containers (scaling) qui se basent sur la même image Docker.
- Stack : (logique) Contient les Services. La Stack est une entité logique qui sert à grouper des Services et ne contient aucune option.
- Host : (physique) Héberge les Containers liés aux Services/Stacks.
- Environnement : (logique) Contient les Hosts, considéré comme un cluster/ferme de serveurs.
Voici ce que donnent les niveaux logiques/physiques sur un cluster Rancher de 2 serveurs :
Pour mieux vous repérer avec les différents noms qu’utilise Rancher et son API, on peut y associer des noms plus usuels (Linux, Projet, AWS) :
Rancher UI | Rancher API | Mode Linux | Mode Projet | Mode AWS |
Container | Containers | Processus | Lambda Function | |
Service | Services | Composant | Auto Scaling Group | |
Stack | Stacks | Application | Placement Group | |
Host | Hosts | Serveur | Serveur | Instance |
Environment | Projects | VPC |
Remarquez que l’Environment de l’interface Rancher est appelé Projects dans l’API Rancher
Prise en main de l’API Rancher
Version de Rancher : 1.6.10
Ce n’est pas la toute dernière version, mais l’API de Rancher 1.x n’a pas beaucoup changé depuis.
Estimons, à titre d’exemple, que le service Rancher est accessible à l’adresse try.rancher.com sur le port 80.
Détails de l’API Rancher
Présentation de l’API
L’API rancher est déclarée sur 2 instances (versions) :
- v1 : http://try.rancher.com/v1
- v2-beta : http://try.rancher.com/v2-beta
Les 2 versions apportent le même niveau de détail sur l’arborescence de base, mais la v2-beta apportera plus de précisions dans la profondeur de l’arborescence. Exemple: lister les conteneurs des services de la stack qui s’appelle ‘toto’.
Les API répondent en format JSON, facilement maniable avec des scripts (python, etc…).
Utilisation de l’API
Vous remarquerez en utilisant l’API qu’elle vous guide dans vos moindres gestes (ou presque). Vous pourrez effectuer des actions directement sur l’API, car oui l’API permet de cliquer sur les boutons pour ajouter ou modifier les entités.
Nous allons essayer de créer une API Key avec l’API Rancher.
Direction l’URL https://try.rancher.com/v2-beta/apikeys
Dans la partie droite, vous allez apercevoir des boutons. Ils vous serviront à naviguer, filtrer et lancer des ordres à l’API.
Nous allons cliquer sur le bouton “+ Create” pour créer l’entité (ici) API Key.
Une popup s’affiche avec les éléments à renseigner. Des astérisques (*) vont vous guider sur le caractère indispensables des champs.
En cliquant sur “Show Request“, nous allons apercevoir les détails de la requête.
On aperçoit la requête qu’il va lancer à l’API, les entêtes et le contenu (pratique non ?). Et en plus, l’API nous fournit la commande cURL associée (puissant non ?). Maintenant cliquons sur “Send Request”.
Fantastique ! J’ai lancé ma commande API depuis mon navigateur =)
On sait lire la Request et son contenu, la Response et son contenu… plus d’excuses pour ne pas travailler avec l’API Rancher !
Vérifions quand même si notre objet a bien été créé…
HTTP/1.1 201
Vous ne savez plus à quoi correspond le code retour ? Liste des Codes HTTP.
HTTP Response Code 201 = Created
Yes, ça marche !!
Ayez le réflexe de regarder la Response Code. “C’est logique…” vous allez me dire, mais parfois on se focalise sur le fait que ça fonctionne et on zappe le résultat de la commande… certains se reconnaitront 😉
Tout à coup, ça devient facile de travailler avec les APIs.
Dans un prochain article, nous procéderons à la création d’un environnement complet avec l’API Rancher. Nous créerons un projet très simple qui permettra de mettre en évidence les actions coté API Rancher.