Service Fabric est une plateforme qui offre une solution simple au développement de conteneurs et microservices et à la gestion de leur cycle de vie et pouvant fonctionner sur Linux ou Windows. Il semble donc tout naturel de ne pas être contraint à utiliser Visual Studio pour créer, compiler et déployer des applications sur un cluster Service Fabric.

Visual Studio Code ou VS Code est un éditeur de code extensible développé par Microsoft pour Windows, Linux et OS X. Son fonctionnement "par extensions" permet d'enrichir simplement les fonctionnalités qu'il propose.

Vous avez découvert dans un post précédent comment disposer d'un cluster Service Fabric de test, gratuit et en quelques clics. Je vous présente maintenant comment vous passer de Visual Studio en utilisant l'outil multi-plateformes: VS Code et ses extensions pour créer vos premiers microservices sur Service Fabric.

 

Extension VS Code

Il y a à peine quelques jours, une nouvelle extension VS Code à été publiée sur le marketplace et comme à son habitude Microsoft a rendu le code source de ce projet disponible sur github. L'auteur principal de cette extension est un stagiaire (Peter Pogorski) qui a découvert Service Fabric et TypeScript sur ce projet alors félicitations à lui!

VS Code extension for C#

 

Features

A ce jour, l'extension permet de :

  • Créer des applications Service Fabric Applications (Java, C#, Container, Guest Executables)
  • Compiler des applications Java et C#
  • Déployer des applications sur le cluster local
  • Publier des applications sur un cluster distant
  • Supprimer des applications sur un cluster (distant ou local)
  • Débugger des applications Java et C# (uniquement sur Linux)

L'upgrade des applications n'est pas encore disponible mais doit être dans les tuyaux, sinon je vous rappelle que le projet est opensourcé sur Github ;)

 

Installation

Pour utiliser cette extension il vous faut quelques prérequis :

L'extension Service Fabric utilise l'outil Yeoman et des générateurs pour les différents types de projets. Pour installer Yeoman et ces générateurs, utilisez les commandes suivantes :

npm install -g yo

npm install -g generator-azuresfjava

npm install -g generator-azuresfcsharp

npm install -g generator-azuresfcontainer

npm install -g generator-azuresfguest

 

Si vous souhaitez créer et compiler des applications C#, il vous sera également demandé d'instaler l'extension associée disponible ici ou directement depuis Visual Studio Code.

VS Code extension for C#

Pour publier vos applications depuis Windows, vous devrez également installer l'extension Powershell.

VS Code extension for C#

Une fois tous ces prérequis remplis, vous pourrez passer aux choses sérieuses en installant l'extension Service Fabric de Microsoft.

VS Code extension for C#VS Code extension for C#

 

Commandes

Pour créer votre première application il vous faut créer un dossier/workspace et ouvrir l'invite de commandes (Ctrl+Shift+P), puis saisir la commande suivante:

Service Fabric: Create Aplication

Vous serez alors invité à choisir le type d'application (azuresfcsharp par exemple), le nom de votre application, de votre service et le type de service comme vous le feriez depuis Visual Studio classique.

Vous pourrez ensuite compiler votre application via l'invite de commandes:

Service Fabric: Build Application

 

Déploiement

Vous pourrez enfin déployer votre application sur votre cluster local:

Service Fabric: Deploy Application

 

Concernant le déploiement sur un cluster distant, vous n'aurez qu'à remplir le fichier Cloud.json en y inscrivant l'url et le port de votre cluster ainsi que les thumbprint de certificats en cas de connexion à un cluster sécurisé.

{
"ConnectionIPOrURL": "yourcluster.westus.cloudapp.azure.com",
"ConnectionPort": "19000",
"ClientKey": "",
"ClientCert": "",
"ServerCertThumbprint": "DDF58FC0816A400F77998D166AC68D7448EFF5FB",
"ClientCertThumbprint": "DDF58FC0816A400F77998D166AC68D7448EFF5FB"
}

 

D'ailleurs, il existe un bug sur Windows qui empêche la connexion via Powershell aux clusters sécurisés.

Je vous invite donc dans le terminal Powershell à taper vous même les commandes de connexion et de déploiement.

Si vous utiliser un cluster gratuit "Party cluster" présenté dans un article précédent, vous pourrez taper les commandes suivantes par exemple:

Import-PfxCertificate -FilePath .\party-cluster-xxxxx-client-cert.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString pfxpassword -AsPlainText -Force)
$cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -eq "cn=yourcluster.westus.cloudapp.azure.com"}
Connect-ServiceFabricCluster -ConnectionEndpoint 'yourcluster.westus.cloudapp.azure.com:19000' -KeepAliveIntervalInSec 10 -X509Credential -ServerCertThumbprint $cert.Thumbprint -FindType 'FindByThumbprint' -FindValue $cert.Thumbprint -StoreLocation 'CurrentUser' -StoreName 'My' -Verbose

./votreApp\install.ps1

 

Pour information, j'ai effectué une Pull Request sur le repo concernant le déploiement depuis Windows qui vient d'être validée. Le bugfix devrait donc être disponible dans la prochaine version de l'extension sur le marketplace.

 

Je vous souhaite une bonne installation et vive l'open-source !!!

Pour débuter avec les micro-services, Service Fabric est une plateforme qui offre une solution simple au développement de conteneurs et microservices et à la gestion de leur cycle de vie.

Pour tester Service Fabric il vous est possible d'installer le SDK sous Windows, de développer vos services et de les déployer sur un cluster local de développement. Vous pourrez ensuite déployer ces mêmes microservices sur un cluster dédié sur un Windows Server à vous ou sur le Cloud d'Azure assez simplement.

Mais que faire quand vous n'avez pas de machine Windows Server sous la main et que vous ne souhaitez pas payer l'hébergement d'un Cluster sur Azure, uniquement pour faire quelques tests? Party Cluster est là pour répondre à ce besoin !

Party Cluster est une solution proposée par Microsoft pour obtenir gratuitement l'accès à un cluster de développement avec 3 noeuds pour une durée limitée.

 

Demande d'accès à un cluster

Pour obtenir votre accès à un cluster gratuit, il faut vous rendre sur https://try.servicefabric.azure.com/ et cliquer sur un des boutons pour vous connecter via OAuth. A ce jour, seuls les comptes GitHub et Facebbok sont éligibles.

après vous être connecté, vous pourrez choisir de créer un cluster de type Windows ou Linux selon vos préférences.

Une fois que vous aurez choisi le type de cluster, vous obtiendrez l'accès à un cluster pour une durée limitée d'une heure. Ce délai expiré, vous ne pourrez plus vous connecter ni déployer sur le cluster. Heureusement cette opération pourra être répétée autant que vous le voudrez, vous laissant ainsi libre de faire autant de tests que vous le souhaiterez.

 

Connexion au cluster

Pour vous connecter vous n'aurez qu'à télécharger le certificat PFX et suivre les indications fournies dans le lien affiché.

Vous devrez notamment installer le certificat via la commande powershell

Import-PfxCertificate -FilePath .\party-cluster-817263629-client-cert.pfx -CertStoreLocation Cert:\CurrentUser\My

Lorsque vous jouerez cette commande, le thumbprint du certificat sera affiché de cette manière:

Pensez à le noter car il vous sera nécessaire pour le déploiement et cela vous évitera de le chercher dans les détails des certificats.

Si toutefois, vous n'aviez pas noté le thumbprint, vous pourrez toujours le récupérer via le Manager de Certificat (command certmgr).

 

Déploiement sur le cluster

 Pour déployer vos services sur le cluster de test via Visual Studio, il vous faudra établir la connexion avec celui-ci, en spécifiant l'URL, le port ainsi que le certificat à utiliser.

Pour cela ouvrez le fichier Cloud.xml dans le dossier PublishProfiles et renseignez les informations de votre cluster:

<ClusterConnectionParameters

  ConnectionEndpoint="zwin7qzdrzff.westus.cloudapp.azure.com:19000"

  X509Credential="true"

  ServerCertThumbprint="B945ADF09C59ACD6553D04043FFCFE7B88F9363A"

  FindType="FindByThumbprint"

  FindValue="B945ADF09C59ACD6553D04043FFCFE7B88F9363A"

  StoreLocation="CurrentUser"

  StoreName="My" />

 

Parmi les informations à saisir, il y aura le ConnectionEndpoint fourni sur la page de Party Cluster ainsi que ServerCertThumbprint  et  FindValue qui correspondent tous les deux au thumbprint du certificat installé via Powershell.

 

Dès lors, vous pourrez publier vos services en faisant un clic-droit > Publish sur votre projet d'application et vous devriez voir votre connexion au cluster validée:

 

Il ne vous reste plus qu'à coder vos microservices et à tester leur comportement sur le cluster de test !