Introduction
Udacity propose un cours gratuit sur Docker, les microservices et Kubernetes (en anglais). Tout est très bien décrit, y compris les commandes mais cela se base (naturellement) sur Google Container Engine (GKE).
Disposant déjà d’une souscription Azure et Azure proposant également une offre managée sur Kubernetes : Azure Container Service (AKS).
Azure disposant également d’un Registry privé (Azure Container Registry), ce sera l’occasion de l’utiliser!
Le tutorial fait également largement usage de Google Cloud Shell. Azure dispose également d’un shell: Azure Cloud Shell. Il est même proposé "en plein écran" depuis peu et propose un raccourci vers bash ou PowerShell. Il dispose de nombreuses fonctionnalités et language par défaut.
L’Azure Cloud Shell permet une persistance a un espace de stockage en étant lié à un Storage Account. Ce sera donc parfait pour créer une image, la publier et autre.
La suite de cet article présente par leçon, étape par étape les adaptations
Lesson 1: Introduction to Microservices
Etape 5: Get the Source Code
Je fais l’hypothèse que vous avez une souscription Azure et que vous avez démarré un Bash dans Azure Cloud Shell.
Sous Windows, utilisez Ctrl+Insert pour copier and Shift+Insert pour coller. |
Go étant déjà installé, rien à faire ici:
$ go version
go version go1.7 linux/amd64
Donc, hormis l’installation de Go, vous pouvez procéder comme indiqué et extraire directement le code source:
$ echo "export GOPATH=~/go" >> ~/.bashrc
$ source ~/.bashrc
$ mkdir -p $GOPATH/src/github.com/udacity
$ git clone https://github.com/udacity/ud615
$ cd ud615/app/
Etape 6: Build And Interact With Monolith
La compilation se passe comme un charge mais pour tester l’application, cela devient légèrement plus rusé.
Pour exécuter le programme monolith, j’utilise le port 10081 au lieu de 81 car la commande sudo n’est pas disponible.
Pour ouvrir une "deuxième console", ouvrez un nouvel onglet dans votre navigateur sur le Cloud Shell. |
./bin/monolith -http :10080 -health :10081
Les tests à base de curl
s’exécute corretement.
Pour tuer le programme, il suffira de le ramener en avant-plan (commande fg
puis Ctrl+C).
Etape 9: Refactor To MSA
Pas de difficultés ici. Les commandes passent (compilations et tests).
Lesson 2: Building the Containers with Docker
Etape 3: Installing Apps With Native OS Tools
Les festivités commencent… Le "démarrage rapide" donne en réalité toutes les indications. Dans les grosses mailles:
-
Choisir sa souscription (
az account list
puisaz account set --subscription my-subscription-name
) -
Créer un resource group (unité de base dans Azure)
-
Créer la VM (configuration de base)
-
Se connecter à la VM
Ce qui donne:
az group create --name rg-udacity-test --location westeurope az vm create -n ubuntu -g rg-udacity-test --image UbuntuLTS --generate-ssh-keys ssh username@ipaddress
Ne pas oublier d’éteindre la VM pour éviter d’exploser le forfait! |
Pour connaitre l’adresse IP de la VM: az vm list-ip-addresses -g rg-udacity-test -n ubuntu --output table
|
Une fois connecté, les autres commandes ne changent pas:
sudo apt-get update sudo apt-get install nginx nginx -v ...
Etape 7 : Intalling Images With Docker
Pas de spécificité.
Etape 8 : Running Images With Docker
Pas de spécificité.
Etape 9 : Talking To Docker Instances
Pas de spécificité.
Etape 11 : Create An Image
Pas de spécificité.
Etape 12 : Create docker images for the remaining microservices - auth and hello
Pas de spécificité.
Etape 14 : Push Images
Nous allons ici utilisé l’Azure Container Registry.
az group create --name rg-common-docker --location westeurope az acr create --resource-group rg-common-docker --name <acrName> --sku Basic
La commande va retourner une structure. Bien noter la ligne:
"loginServer": "<acrLoginServer>"
Sur la VM Ubuntu, installer Azure CLI 2.0 en suivant la procédure:
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ wheezy main" | \ sudo tee /etc/apt/sources.list.d/azure-cli.list sudo apt-key adv --keyserver packages.microsoft.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893 sudo apt-get install apt-transport-https sudo apt-get update && sudo apt-get install azure-cli
Puis se logguer sur Azure puis l’ACR avant de publier l’image
sudo az login sudo az acr login --name <acrName>
La commande de publication ('push') doit être adapté:
docker tag monolith:1.0.0 <acrLoginServer>/example-monolith:1.0.0 docker push <acrLoginServer>/example-monolith:1.0.0
On peut ensuite vérifier le travail:
$ sudo az acr repository list --name <acrName> --output table
Result
----------------
example-auth
example-hello
example-monolith
A ce stade, il est possible d’arrêter la VM: az vm deallocate -g rg-udacity-test -n ubuntu
|
Un peu de nettoyage
Comme d’habitude, ne pas oublier de nettoyer. Le plus simple: supprimer le resource group.
az group delete --name rg-udacity-test