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 :

Représentation physique/logique des sections de Rancher

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.