UltraFluid Modeler BETA2, le logiciel de modélisation Open-Source.

UltraFluid Modeler (UFM) est cours de développement mais il est disponible en daily build au téléchargement ent BETA 2 sur www.buildonthemetal.com.

Le code est disponible comme en Open-Source mais non compilable pour des raisons commerciales suite à sa finalisation. Les fichiers volontairement manquants sont les ressources graphiques (forms, icons, bitmap, menu, etc). L’accès au code source est sur Github.

Le logiciel permet de faire des diagrammes et de la visualisation. Par défaut, il est possible de faire des diagrammes simples avec des gabarits simples ou bien des diagrammes d’Infrastructure ou bien des diagrammes de Développement.

Le logiciel est le compagnon idéal des Architectes IT. Dans sa version BETA2, le logiciel est limité à 50 gabarits par application. Cela vous permet de tester et vous enregistrer pour la future date de lancement. Le produit sera disponible en plusieurs versions.

Exemple de modélisation de classes comme en UML

Le logiciel est un mix de Visio et PowerPoint et aussi simple à utiliser.

Exemple de diagramme plus visuel avec des gabarits

Si vous voulez faire partie du programme BETA User et Insider, inscrivez vous sur www.buildonthemetal.com.

Infeeny recrute des consultant(e)s Modern Apps et Azure !

Infeeny est l’ancien Gold Partner MC-NEXT

Infeeny, une société du groupe Econocom est un nouveau pure-player Microsoft. Vous voulez travailler dans des grands comptes sur des projets innovants, rejoignez-nous ! Nos consultants sont formés, éduqués, suivis, coachés via des events internes ou chez Microsoft. Ils passent des certifications. La formation et le coaching sont nos engagements les plus précieux. Nous faisons des articles technique pour Programmez via le partenariat avec la communauté technique des NET Azure Rangers, nous organisons des évents internes, nous sommes sur les salons avec Microsoft via les “Ask the Expert” via le programme MVP. Nous bénéficions du référencement Econocom dans le CAC40. Cela fait une énorme différence avec les autres pure-players qui sont des PMEs pour la plupart… Faites la différence entres les différents acteurs, choissiez le dynamisme de Infeeny.

En tant que leader technique NET, j’évolue dans un monde ou le Cloud Azure a une part prépondérante. Nous utilisons les technologies comme NET/NET Core, AKS (kubernetes), Docker, API Managament, Cognitive Services, Windows, Linux, SQL Server, SharePoint, Office 365, etc.

Venez tenter l’aventure ! Tentez votre chance

Vos contacts :

  • Pascale TOSTAIN (pascale.tostain@infeeny.com) – Recrutement
  • Michel HUBERT (michel.hubert@infeeny.com) – Direction Technique

Certification AZ-900 offerte en cette période

Pour ceux qui voudraient passer une certification Azure – à savoir la plus simple qui soit, la AZ-900 – Microsoft organise des sessions de “formation” gratuites de deux demi-journées, et offre des vouchers (codes pour passage gratuit de la certification) à l’issue de ces formations.

Inscriptions ici:

https://azure.microsoft.com/en-ca/community/events/?query=Microsoft+Azure+Training+Day%3A+Fundamentals

Il n’est pas précisé combien de temps cette “offre spéciale” durera. En temps normal, la certification est payante.

Vu sur le blog de Vlad Catrinescu:

UltraFluid Modeler BETA 2

UltraFluid Modeler est en BETA 2. Le soft est fait en C++ 64 bit Release et utilise le C++ Rest SDK de Microsoft pour le support JSON.

Vous pouvez le downloader ici: www.buildonthemetal.com

Rappel des diverses fonctionnalités:

  • Copy, Cut, Paste
  • Sélection simple, intuitive, de la première ligne, que les lignes, que des éléments
  • Ajout d’une image
  • Ajout d’un shape générique (rectangle, ellipse, étoire, flèche diverse, etc)
  • Ajout d’une zone de texte
  • Ajout d’un gabarit de Infrastructure (server AD, server Database, server Web, desktop, etc)
  • Ajout d’un gabarit de Dev (class, interface, enum, component, comment, package, etc)
  • Ajout d’un gabarit Diagram
  • Ajout d’un élément PLnning Task, Month ou Text
  • Modification des propriétés texte (police, taille, taille +, taille -, bold, italic, underline, strikethrough, fill, color)
  • Affichage des panneaux Solution, Class, Properties
  • Suppression d’un élément
  • Import de code C++ est dessin d’un gabarit par fichier
  • Dump des objets dans le panneau Debug
  • Module File Explorer : liste les fichiers et répertoires sous forme de gabarits
  • Ajoute un connecteur (flèche) entre deux gabarits
  • Déconnect un connecteur
  • Sélectionne un élément à partir d’une combo (nom de l’élément)
  • Augmente/Diminue la taille d’un élément par deux
  • Modifie la couleur de remplissage
  • Modifie la couleur de ligne
  • Modifie la largeur de ligne
  • Modifie la couleur de page
  • Zoom In/out
  • Sélection d’un zoom custom
  • Alignement du text gauche, centré, droite
  • Alignement des gabarits à gauche, à droie, au dessus, en dessous en fonction du premier sélectionné
  • Déplacement devant top, derrière -, devant +, derrière au fond
  • Sélection d’un élement pour le déplacer
  • Redimentionnement d’un élément
  • Group/Ungroup des éléments
  • Modification des propriétés dans la Property Grid
  • Load/Save de documents
  • Import/Export des documents au format JSON
  • Export des documents au format PNG

UltraFluid Modeler – Introduction

En 2011, j’étais en mission à la Banque de France dans un service d’Architecture Technique nommé SATIS. Nous faisions des dossiers d’Architecture pour les nouvelles applications pour qu’elles passent en commission pour obtenir ou ou non une ligne budgétaire dans la banque.

Nous faisons des diagrammes dans Visio et c’était moche. Il y avait des carrés, des gabarits serveurs, des images, des traits partout et c’était horrible. Chacun faisiat à sa sauce. Moi j’ai opté pour PowerPoint des fois pour faire, via les Office Shared Components, du dessin de carrés (items) avec du texte reliés à d’autre éléments. Il y avait du texte pour les flux, les numéros de port et les protocoles. Mes diagrammes n’étaient pas les plus moche.

En 2012, le service se donne l’ambition d’être pilote sur un logiciel d’Architecture d’Entreprise : ARIS IT Designer. Ce logiciel propose de faire de la modélisation et de stocker les diagrammes en base de données et possède un module de requétage pour savoir quels sont les diagrammes qui possèdent tel ou tel gabarit avec des propriétés. Exemple: je veux connaitre toutes les application qui ont de l’Oracle 8 ou du Windows Server 2003 R2 pour les mettre à jour. Je suis moteur pour faire pilote du programme. Je rencontre les gens du projet (code interne MATUR – modèle d’architecture technique et d’urbanisation de mémoire…). On me donne accès à l’outil. C’est visuellement dégueulasse : du Java… Par contre, il y a des modèles de gabarit, des modèles et des processus précablés, de la méthodologie. cela se sent et se voit. Tout est customsable et finalement en l’analysant, c’est un logiciel graphique sur lequel chaque élément peut se voir affecté des propriétés customs.

Mon collègue de l’époque, Jean-Nöel me dit: “Pic, tu me ferais ça en C++, fast & Fluid et on le propose à la BdF ?”

J’ai commencé par dessiner des gabarits simples (ligne, carré, ellipse, flèche, etc) puis des images. Ensuite, j’y ai introduit descgabarits images prédéfinies comme ceux des documents Microsoft Visio avec leur gabarits serveurs, database, web server, desktop, laptop, etc. Pui j’ai ajouté des gabarits comme en UML comme les classes, interfaces, enumérations, components, packages, comments… La, ça prend forme. J’ai ensuite ajouté la possibilité de modifier la couleurs de remplissage ou non, la couleur de contour ou non. Ensuite, j’ai ajouté la possibilité de modifier le texte des éléments (taille, police, bold, italic, underline, align left, center, right). Tout cela, ce sont des propriétés par défaut d’un gabarit. Un gabarit peut être déssiné, retaillé, déplacé, groupé, supprimé et connecté via une flèche avec un autre gabarit. Il peut passer devant, derrière, ou un cran en avant, un cran en arrière. Tout est accessible depuis un Ribbon au look Office 2020.

Une fonctionnalité est aussi utile. Elle permet de stocker du texte (comme dans Notepad) derrière un gabarit (Propriété Code) via l’onglet (Excel like en bas de la page). C’est une propriété d’un gabarit. J’ai un module qui importe des fichiers sur disk qet qui dump le contenu des fichiers dans la propriété Code. C’est bien pour aspirer les fichiers de code et faire un audit.

Une autre fonctionnalité et la posibilité de visualiser les fichiers et répertoires sur dique et de les explorer. C’est la fonctionnalité Folders.

Voilà, je suis prêt. Ou presque. OK, on est en 2020.

http://www.netazurerangers-fr.com/

Le produit est disponible en version limitée sur le site.

Utiliser Tekton avec Azure Kubernetes Service pour créer des pipelines CI/CD – Partie 1

Comprendre les tâches Tekton

Introduction

En développement logiciel, un pipeline consiste en un processus automatisé qui contribue aux phases de construction, de test et de déploiement du code. L’automatisation permet de réduire les erreurs humaines et d’avoir des processus constants et reproductibles dans le temps.

Pour ce faire, les entreprises ont adopté l’intégration et la livraison continues pour automatiser le cycle de vie des applications. Pour désigner cela, on parle couramment de pipelines ou workflows CI (Continuous Integration) /CD (Continuous Delivery).

Les outils disponibles pour supporter les pipelines CI/CD existent depuis déjà bon nombre d’années mais avec l’évolution des infrastructures et particulièrement l’expansion de Kubernetes dans les entreprises, de nouveaux outils natifs Kubernetes sont apparus comme par exemple Jenkins X et Tekton. C’est d’ailleurs sur Tekton, également nommé Tekton Pipelines, que porte cet article.

Ainsi, nous allons voir dans cet article comment utiliser Tekton dans un cluster Kubernetes instancié avec Azure Kubernetes Service pour créer des pipelines CI/CD.

Sources GitHub

Les sources des exemples utilisés dans cet article sont disponibles sous le dépôt GitHub accessible depuis cette URL : https://github.com/cderue/tekton-aks-part-one

Présentation de Tekton

Tekton est un framework Open Source prévu pour s’intégrer nativement avec Kubernetes et supporter la création de pipelines CI/CD en utilisant un modèle déclaratif. Initié par Google, ce projet est hébergé par la CDF (Continuous Delivery Foundation) et a pour vocation de moderniser les approches CI/CD en proposant des standards industriels pour les phases de compilation, de test, de déploiement et autres avec divers fournisseurs cloud ou sur site en faisant abstraction de la mise en œuvre sous-jacente.

Qu’est-ce qu’un pipeline Tekton ?

Un pipeline Tekton est un ensemble d’objets Kubernetes qui forment un pipeline CI/CD dont les briques élémentaires constitutives sont portées par des conteneurs. Pour pouvoir créer ces objets dans Kubernetes, Tekton fournit à Kubernetes des extensions CRD (Custom Resource Definition).

Pour créer un pipeline Tekton, les objets Kubernetes nécessaires sont déclarées à l’aide de fichiers au format YAML dont le contenu pourrait par exemple ressembler au contenu montré ci-dessous :

Source: https://github.com/openshift/pipelines-tutorial

Ces fichiers YAML peuvent  ainsi être facilement gérés dans un système de contrôle de source. Cette approche nouvelle pour décrire des pipelines à l’aide d’instructions écrites dans des fichiers est qualifiée dans la littérature informatique de pipeline-as-code

Un pipeline Tekton permet de créer un pipeline CI/CD simple ou complexe en se basant sur les 5 concepts majeurs fournis sous forme de CRD et listés ci-dessous :

  • Task : permet de définir un ensemble d’étapes comme par exemple compiler du code, exécuter des tests, construire des images Docker, etc.
  • TaskRun : permet de lancer une tâche unique donnée en référence.
  • Pipeline : permet de définir un ensemble de tâches qui composent un pipeline
  • PipelineResources : permet de définir un objet d’entrée (comme un dépôt Git par exemple) ou de sortie (comme une image Docker) nécessaire à un pipeline.
  • PipelineRun: permet de procéder à l’exécution d’un pipeline. Cette ressource précise le pipeline a exécuter et les ressources (PipelineResources) nécessaires en entrée et en sortie.

Créer un cluster Azure Kubernetes Service

Pour pouvoir présenter les premières fonctionnalités de Tekton, nous allons au préalable créer un cluster Kubernetes en utilisant Azure Kubernetes Service (AKS). AKS permet de créer un cluster Kubernetes managé dans le cloud Microsoft Azure.

Il est important de noter ici que Tekton est agnostique de la plateforme et peut s’installer sur un cluster Kubernetes dans AWS, Google Cloud, IBM Cloud ou autre fournisseur cloud et même on-premise.

Pour pouvoir fonctionner, Tekton nécessite un cluster avec Kubernetes 1.15 ou une version supérieure.

Pour créer un cluster avec AKS , il est possible d’utiliser le portail Azure (www.portal.azure.com) ou la ligne de commande.

Très brièvement, l’exemple de ligne de commande ci-dessous montre comment créer un nouveau cluster AKS avec Kubernetes 1.15  :

az aks create --resource-group myResourceGroup --name myAKSCluster --kubernetes-version 1.15 --node-count 1 --enable-addons monitoring --generate-ssh-keys

Installer Tekton et Tekton Pipelines CLI

Pour installer Tekton sur le cluster AKS créé dans le paragraphe précédent, il suffit d’exécuter la commande suivante depuis un terminal avec la ligne de commande Kubernetes :

kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml

Pour vérifier que Tekton est installé, il suffit d’exécuter la commande suivante depuis un terminal :

kubectl get pods --namespace tekton-pipelines

Le terminal affiche la sortie ci-dessous :

NAME                                          READY  STATUS  RESTARTS  AGE
tekton-pipelines-controller-65459f5b4d-59nlg  1/1    Running   0       67m
tekton-pipelines-webhook-84d67645d-pr94p      1/1    Running   0       67m

Ensuite, il est nécessaire d’installer la ligne de commande Tekton (Tekton Pipelines CLI) qui permet d’interagir avec Tekton afin d’obtenir des informations sur les pipelines déployés. Tekton Pipelines CLI est disponible pour les systèmes d’exploitation courants (Windows, MacOS et Linux). La procédure d’installation de Tekton Pipelines CLI en fonction du système d’exploitation est disponible depuis cette URL : https://github.com/tektoncd/cli

Créer une première tâche

Nous allons maintenant créer un première tâche Tekton. Pour ce faire, nous allons créer une tâche simple qui affiche « Hello World » depuis un conteneur Linux qui supporte les commandes PowerShell. L’image utilisée pour ce conteneur est disponible depuis le dépôt officiel Docker Hub de Microsoft.

Dans notre exemple, cette tâche Tekton est déclarée dans un fichier nommé task.yaml situé à la racine des sources Github fournies avec cet article. Le contenu de ce fichier est montré ci-dessous :

La version de l’API utilisée est v1alpha1 car c’est la version implémentée dans la version 0.11 installée lors de l’écriture de cet article. La version v1beta1 existe pour les versions de Tekton ultérieures à la version 0.11.

Voici quelques explications sur le contenu du fichier task.yaml :

  • L’attribut kind détermine le type d’objet à créer, ici un objet de type Task.
  • L’attribut metadata/name définit le nom de la tâche. Ici la tâche se nomme powershell-helloworld-task.
  • L’attribut spec/steps décrit les différentes étapes de la tâche. Ici une seule étape nommée helloworld spécifie l’image à prendre pour créer le conteneur Docker qui exécutera la tâche. Les attributs command et args permettent de lancer la commande PowerShell qui affichera le texte « Hello World ».

Pour créer la tâche dans Kubernetes, il suffit de lancer la commande suivante depuis un terminal avec la ligne de commande Kubernetes :

kubectl apply -f task.yaml

Le terminal affiche la sortie ci-dessous :

task.tekton.dev/powershell-helloworld-task created

Attention ici car la création d’une tâche n’entraîne pas son exécution. Le prochain paragraphe montre comment procéder au lancement d’une tâche.

Exécuter une tâche

Une fois la tâche créée, il peut-être pertinent d’exécuter cette tâche de manière isolée sans avoir à exécuter tout le pipeline qui inclut cette tâche. Pour ce faire, nous allons déclarer un nouvel objet de type TaskRun.

Le fichier nommé task-run.yaml situé à la racine des sources Github fournies avec cet article contient la déclaration nécessaire pour créer un objet de type TaskRun . Ce fichier est montré ci-dessous :

Voici quelques explications sur le contenu du fichier task.yaml :

  • L’attribut kind détermine le type d’objet à créer, ici un objet de type TaskRun.
  • L’attribut metadata/name définit le nom de l’objet
  • L’attribut spec/taskRef permet de définir la tâche à exécuter en renseignant son nom. Ici la tâche powershell-helloworld-task  créée précédemment est donnée en référence.

Il ne reste plus désormais qu’à lancer la tâche en exécutant la commande suivante depuis un terminal  avec la ligne de commande Kubernetes :

kubectl apply -f task-run.yaml

Le terminal affiche la sortie ci-dessous :

taskrun.tekton.dev/powershell-helloworld-task-run created

Pour vérifier que la tâche powershell-helloworld-task s’est exécutée avec succès, il suffit de saisir la commande ci-dessous depuis un terminal :

tkn taskrun describe powershell-helloworld-task-run

Dans cet exemple, la ligne de commande Tekton est utilisée pour afficher le statut de la tâche . Si cette tâche créée s’est terminée correctement, le terminal doit afficher le type de sortie montrée ci-dessous :

Conclusion

Dans cette première partie d’une série d’articles consacrés à Tekton, nous avons vu que Tekton permet de définir et d’exécuter de manière simple des tâches qui lorsque nous les assembleront plus tard dans d’autres exemples formeront des pipelines CI/CD plus ou moins complexes.

L’installation de Tekton sur Kubernetes se révèle particulièrement triviale par rapport à l’installation d’outils traditionnels de CI/CD plus complexes à mettre en œuvre en particulier dans Kubernetes.

Dans la seconde partie de cette série, nous verrons comment créer un premier pipeline Tekton pour supporter toutes les phases du cycle de vie d’une application.

Pour aller plus loin