layout: true --- class: center, middle, slide .title-smaller[Vates VMS une stack de virtualisation à l'heure du DevOps et du cloud-native ?] (et une alternative à VMware !)
Nathanaël Hannebert & Cyrille Gandon
.seventy[DevOps chez Vates] --- ## 🧙 Qui sommes-nous ? - Nathanaël Hannebert - DevOps chez Vates - Passionné de logiciels libres depuis longtemps - [m] [@nathanael:isidorus.fr](https://matrix.to/#/@nathanael:isidorus.fr) - [linkedin.com/in/nathanaël](https://www.linkedin.com/in/nathana%C3%ABl/) - Cyrille Gandon - Freelance DevOps chez Vates - *"Touche à tout"* - [linkedin.com/in/cyrille-gandon](https://www.linkedin.com/in/cyrille-gandon/) --- # Plan - Vates une entreprise de Grenoble - Une stack de virtualization - Vates DevOps Tools - Roadmap ??? Nath: --- ## 🪐 Vates - Entreprise 100% française fondée à Grenoble (en 2012) https://vates.tech - Vates America Corp. - Vates Italia - Éditeur logiciel spécialisé dans la virtualisation Open Source - Effectif : ~110 ETP > **Cœur de métier : notre expertise sur notre stack et les services liés à celle-ci** Pas uniquement du support : expertise d'architecture, maîtrise complète de la plateforme… .center[] ??? Cyrille: 2014: première version commerciale de XOA 2018: XCP-ng (suite à un changement d'orientation open-source de Citrix hypervisor) 2020: XCP-ng rejoint la Linux Foundation 2024: croissance importante suite au rachat de VMWare par Broadcom --- ## 🪐 Vates Un acteur reconnu : - Dans les 2 acteurs EU dans le "Top 20 keys players" mondial > Gartner Market Virtualization Guide 2022/2023/2024 - Investi dans la fourniture d'un stack de virtu 100% européenne (du hardware jusqu'au software par dessus via nos partenaires) - Éditeur 100% indépendant (y compris sur la technologie) afin de délivrer notre expertise y compris dans un contexte mondial « compliqué » ??? Cyrille: --- ## 🚀 Notre stack de virtualisation - Agnostique et flexible : toute machine x86 avec tout type de stockage - Priorité à la sécurité et à l'isolation (+ mises à jour sécu mensuelles) - Facile à installer, déployer, utiliser et mettre à jour - Stack intégrée : de l'hyperviseur jusqu'à l'orchestration et aux sauvegardes - Utilisation traditionnelle ou Cloud-native (IaC…) - Migration à chaud de VMWare à Vates VMS intégrée ??? Nath: --- .cols[ .seventyrow[ ## 🪐 Vates VMS .subtitle[Virtualization & Management Stack] **100% intégré** .smaller[ - Plateforme ➡️ XCP-ng/XO Lite - Orchestrateur ➡️ Xen Orchestra - Backup/DR ➡️ Xen Orchestra - Hyperconvergence ➡️ XOSTOR ] **UI simplifiée** .smaller[ - Xen Orchestra - XO Lite ] **Moderne & ouvert** .smaller[ - API complète - IaC (Terraform/Packer…) - 100% Open Source ] ] .thirtyrow[  ] ] ??? Nath: --- ## 🪞 Vates Stack vs VMware : de nombreuses similarités .center[] --- ## DevOps Tools .center[Intégrer XCP-ng et Xen Orchestra avec les outils quotidiens, *cloud-natives*, Kubernetes et plus 🚀] .center[] ??? Cyrille: équipe fin d'année dernière dev outil DevOps autour de XO proposer approche plus "cloud-native" de la stack de virtu tjrs open-source et ouvert à la communauté --- .cols[ .seventyrows[ ## API Rest - API Rest by the Xen Orchestra team - OpenAPI/Swagger - *"API First"* - Utilisée pour le nouveau front XO6 - Fondation pour les intégrations 🪨 - Typescript/TSOA/Doc générée depuis le code ] .thirtyrows[ .right[] ] ] ??? Cyrille: TSOA= Typescript controller and models as single source of truth --- ## Packer Plugin for XCP-ng .center[] - Automatiser la création de templates (ou images) de VM - S'intègre dans des pipelines de CI/CD ??? Nath: --- ## Templates Hub - Hub de templates (images) - Prêts à être utilisés - Support de cloud-init .cols[ .fiftyrows[  ] .fiftyrows[] ] ??? Nath: --- ## Terraform & OpenTofu Provider Terraform (ou OpenTofu) pour Xen Orchestra - Terraform est massivement utilisé pour l'infra-as-code - Provider pour intégrer notre stack de virtualisation dans les infra-as-code existantes - Déploiement rapide et massif de VM - Cloudinit et Cloudbase-init (Windows) .center[] - Provider aussi comptabile avec OpenTofu ! .center[] ??? Cyrille: --- ## Pulumi Provider Pulumi pour Xen Orchestra - Infra-as-code dans le language de son choix - Javacript et Typescript - Python - .NET/C# - YAML - Go .center[] ??? Cyrille: wrapper sur le provider Terraform initié par Desy (équivalent CERN) puis repris par Vates --- ## Go SDK - Un SDK utilisé en interne pour nos providers Terraform/OpenTofu, Pulumi, CCM... - Disponible pour construire au-dessus de Vates VMS .center[] ??? Nath: --- ## Powershell - Un module PowerShell pour piloter l'infra - S'intègre dans des scripts PowerShell existants `New-XoVmSnapshot -VmUuid "12345678-abcd-1234-abcd-1234567890ab" -SnapshotName "Before Update"` - Support le pipelining `Get-XoVm | Where-Object { $_.Name -like "*Test*" } | Stop-XoVm` `Get-XoVm -PowerState Running | Where-Object { $_.Memory -gt 4GB } | Suspend-XoVm` ??? Nath: --- .cols[ .fourty[ ## Kubernetes ### Kubernetes recipe - Un formulaire simple - Basé sur MicroK8S de Canonical - Haute disponibilité - XO CCM - Configuration de MicroK8s ] .sixty[ .center[] ] ] ??? Cyrille: Distro supporté par Canonical, acteur reconnu Minimal, CNCF-certified distribution Mises à jour de sécurité automatiques et mises à jour simplifiées Adapté des petits clusters aux grands clusters en production avec HA --- ## Kubernetes ### Kubernetes recipe  ```shell debian@cp-1:~$ microk8s status microk8s is running high-availability: yes datastore master nodes: 10.1.5.28:19001 10.1.4.248:19001 10.1.5.29:19001 datastore standby nodes: none addons: enabled: dns # (core) CoreDNS ha-cluster # (core) Configure high availability on the current node helm # (core) Helm - the package manager for Kubernetes helm3 # (core) Helm 3 - the package manager for Kubernetes rbac # (core) Role-Based Access Control for authorisation ``` --- ## Kubernetes ### CCM - CCM : *Cloud controller manager* - Correspondance entre Vates VMS et les nodes Kubernetes - Kubernetes node label `topology.kubernetes.io/region` --> Pool Xen Orchestra - Kubernetes node label `topology.kubernetes.io/zone` --> XCP-ng hôte (machine physique) - Kubernetes node label `node.kubernetes.io/instance-type` --> Dérivé de la configuration vCPU-RAM - Permet d'uiliser les pods `affinity` et `anti-affinity` ??? Cyrille: composant du control plane Le CCM vous permet de lier votre cluster à l'API de votre fournisseur de cloud, --- ## Kubernetes ### CCM ``` apiVersion: v1 kind: Node metadata: labels: # Type generated base on CPU and RAM node.kubernetes.io/instance-type: 2VCPU-1GB # Xen Orchestra Pool ID of the node VM Host topology.kubernetes.io/region: 3679fe1a-d058-4055-b800-d30e1bd2af48 # Xen Orchestra ID of the node VM Host topology.kubernetes.io/zone: 3d6764fe-dc88-42bf-9147-c87d54a73f21 # Additional labels based on Xen Orchestra data (beta) topology.k8s.xenorchestra/host_id: 3d6764fe-dc88-42bf-9147-c87d54a73f21 topology.k8s.xenorchestra/pool_id: 3679fe1a-d058-4055-b800-d30e1bd2af48 vm.k8s.xenorchestra/name_label: cgn-microk8s-recipe---Control-Plane ... name: worker-1 spec: ... # providerID - magic string: # xeorchestra://{Pool ID}/{VM ID} providerID: xeorchestra://3679fe1a-d058-4055-b800-d30e1bd2af48/8f0d32f8-3ce5-487f-9793-431bab66c115 ``` ??? Cyrille: --- ## Kubernetes ### CSI Provider - CSI : *Container Storage Interface* - Met à disposition du stockage persistent dans Kubernetes - Intégration entre Kubernetes (PV) et le stockage disponible pour les VMs (VDI) ??? Nath: montre volonté effective de Vates de supporter Kubernetes de manière intégré dans l'écosystème --- ## Roadmap - Kubermatic : partenariat et provider officiel - Rancher : provider pour Xen Orchestra - Talos et Omni : faciliter le déploiement de Talos Kubernetes (WIP) - Kubernetes ClusterAPI : Provider pour Xen Orchestra - Karpenter : Provider pour Xen Orchestra - Terraformer : Provider pour Xen Orchestra - Intégration d'une WebUI dans XO6 (Headlamp ?) ??? Nath: Le provider Cluster API utiliser des API Kubernetes-style et des patterns pour automatiser la gestion du cycle de vie des clusters. Il offre la possibilité de provisionner et d’administrer des clusters Kubernetes sur Vates VMS comme n’importe quelle ressource Kubernetes—de façon déclarative et à grande échelle. Karpenter lance ou ajuste automatiquement les nodes nécessaires pour gérer les applications de votre cluster, et permet d'optimiser l'usage du matériel. --- ## Questions ? - Qui connaissait XCP-ng ? Xen Orchestra ? Vates ? - Qui veut tester ? - Libre & OpenSource, https://github.com/vatesfr - Migration à chaud depuis VMWare - Support pro disponible, même pendant un essai, https://vates.tech - Forum & Serveur Discord (ou IRC, Matrix) communautaires ## ☝️ Au fait… https://vates.tech/careers ---