<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OVHcloud Archives - OVHcloud Blog</title>
	<atom:link href="https://blog.ovhcloud.com/tag/ovhcloud/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ovhcloud.com/tag/ovhcloud/</link>
	<description>Innovation for Freedom</description>
	<lastBuildDate>Mon, 11 May 2026 16:14:36 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.ovhcloud.com/wp-content/uploads/2019/07/cropped-cropped-nouveau-logo-ovh-rebranding-32x32.gif</url>
	<title>OVHcloud Archives - OVHcloud Blog</title>
	<link>https://blog.ovhcloud.com/tag/ovhcloud/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Navigating OVHcloud Enterprise File Storage (EFS) with Trident CSI On Kubernetes clusters (MKS)</title>
		<link>https://blog.ovhcloud.com/navigating-ovhcloud-enterprise-file-storage-efs-with-trident-csi-on-kubernetes-clusters-mks/</link>
		
		<dc:creator><![CDATA[Aurélie Vache]]></dc:creator>
		<pubDate>Mon, 11 May 2026 12:18:46 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[Storage]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31391</guid>

					<description><![CDATA[If you find yourself in need of shared persistent storage for applications running on OVHcloud Managed Kubernetes Service (MKS), then OVHcloud Enterprise File Storage (EFS) with Trident CSI offers you a practical way to provision and manage it. This blog post explains how to create and connect OVHcloud EFS to your MKS cluster using Trident [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fnavigating-ovhcloud-enterprise-file-storage-efs-with-trident-csi-on-kubernetes-clusters-mks%2F&amp;action_name=Navigating%20OVHcloud%20Enterprise%20File%20Storage%20%28EFS%29%20with%20Trident%20CSI%20On%20Kubernetes%20clusters%20%28MKS%29&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="1024" height="1020" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-1024x1020.png" alt="" class="wp-image-31461" style="aspect-ratio:1.0039264898357345;width:426px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-1024x1020.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-300x300.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-768x765.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-70x70.png 70w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587.png 1253w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>If you find yourself in need of shared persistent storage for applications running on OVHcloud Managed Kubernetes Service (MKS), then OVHcloud Enterprise File Storage (EFS) with Trident CSI offers you a practical way to provision and manage it.</p>



<p>This blog post explains how to create and connect OVHcloud EFS to your MKS cluster using Trident CSI, so you can dynamically provision persistent storage for Kubernetes workloads.</p>



<h3 class="wp-block-heading">OVHcloud Enterprise File System (EFS)</h3>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="100" height="100" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/Enterprise-File-Storage@2x.png" alt="" class="wp-image-31410" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/Enterprise-File-Storage@2x.png 100w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/Enterprise-File-Storage@2x-70x70.png 70w" sizes="(max-width: 100px) 100vw, 100px" /></figure>



<p><a href="https://www.ovhcloud.com/fr/storage-solutions/enterprise-file-storage/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">EFS</a> is a high-performance, fully managed file storage solution powered by NetApp ONTAP in an active-active architecture. It is designed for enterprise workloads requiring high availability, predictable performance, and seamless integration with cloud-native environments.</p>



<p>The service is available in multiple regions, including Roubaix, Gravelines, Strasbourg, Limbourg, and Beauharnois, with a strong SLA of 99.99% uptime. Storage capacity ranges from 50 GB up to 29 TB.</p>



<p>EFS delivers guaranteed performance with 4,000 IOPS and 64 MB/s throughput per TiB, scaling linearly with volume size thanks to NVMe SSD infrastructure.</p>



<p>Built for modern infrastructures, <a href="https://help.ovhcloud.com/csm/en-gb-public-cloud-storage-netapp-trident-csi?id=kb_article_view&amp;sysparm_article=KB0074862" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">EFS integrates natively with Kubernetes via Trident CSI</a> (compatible with MKS) and supports ReadWriteMany (RWX) access. It operates within a single availability zone (1AZ) and provides low-latency NFS storage over OVHcloud’s secure vRack network, ensuring strong security and compliance.</p>



<h3 class="wp-block-heading">NetApp Trident CSI</h3>



<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="350" height="387" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-9.png" alt="" class="wp-image-31406" style="width:201px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-9.png 350w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-9-271x300.png 271w" sizes="(max-width: 350px) 100vw, 350px" /></figure>



<p><a href="https://github.com/netApp/trident" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Trident</a> is an open-source, fully supported storage orchestration project maintained by <a href="https://www.netapp.com/fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">NetApp</a>. It is designed to help Kubernetes applications consume persistent storage using standard interfaces such as the Container Storage Interface (<a href="https://github.com/container-storage-interface/spec/blob/master/spec.md" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">CSI</a>).</p>



<p>Trident runs directly inside Kubernetes clusters as a set of <strong>Pods</strong> and enables dynamic provisioning and management of storage for containerized workloads. It allows applications to easily access persistent storage from NetApp’s ecosystem, including ONTAP systems (like the OVHcloud EFS).</p>



<h3 class="wp-block-heading">Let&#8217;s do it!</h3>



<h4 class="wp-block-heading">EFS creation</h4>



<p>We already have a MKS cluster, in GRA11 region, running inside a private network and a subnet, with a gateway.<br>We also already have a vRack and our Public Cloud Project attached to this vRack.<br>So in this blog post we will only create a new EFS in <strong>eu-west-rbx</strong> region, attached to a vRackServices, inside the same subnet that our existing MKS cluster.</p>



<p>Here you can see the architecture of all the services:</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="554" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-1024x554.png" alt="" class="wp-image-31538" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-1024x554.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-300x162.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-768x415.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-1536x831.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-2048x1107.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>⚠️ EFS and MKS regions may differ; be aware that latency between different regions may impact your storage workloads performance. <strong>It&#8217;s highly recommended to keep your storage and compute as close as possible.</strong></p>



<p>We will deploy the EFS in <strong>eu-west-rbx</strong> instead of in <strong>eu-west-gra</strong> region to show you that it is possible.</p>



<p>To deploy the EFS, we will use the <a href="https://registry.terraform.io/modules/ovh/efs/ovh/latest" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Terraform OVHcloud EFS module</a>.</p>



<p>The module we will use can deploy all the components necessary to use EFS with a MKS cluster (like you can see in the schema).</p>



<p>But in this blog post we will assume that we already deployed:</p>



<ul class="wp-block-list">
<li>a vRack</li>



<li>a Private Network</li>



<li>a Private Subnet</li>



<li>a Gateway</li>



<li>a MKS cluster</li>
</ul>



<p>So using the Terraform module we will fill the existing resources information and ask Terraform to create:</p>



<ul class="wp-block-list">
<li>an OAuth2 credential</li>



<li>an IAM policy</li>



<li>an EFS</li>



<li>a vRack Services</li>
</ul>



<p>Let&#8217;s deploy our components with Terraform!</p>



<p>Create a <strong>provider.tf </strong>file and fill it with the information:</p>



<pre class="wp-block-code"><code class="">terraform {<br>  required_providers {<br>    ovh = {<br>      source  = "ovh/ovh"<br>      version = "&gt;= 2.12.0"<br>    }<br>    null = {<br>      source  = "hashicorp/null"<br>      version = "&gt;= 3.0.0"<br>    }<br>  }<br><br>  required_version = "&gt;= 1.7.0"<br>}<br><br>provider "ovh" {<br>}</code></pre>



<p>If you don&#8217;t define the provider information inside this file, as was shown in this example, you can instead set the environment variables with your credentials:</p>



<pre class="wp-block-code"><code class=""># OVHcloud provider needed keys<br>export OVH_ENDPOINT="ovh-eu"<br>export OVH_APPLICATION_KEY="xxx"<br>export OVH_APPLICATION_SECRET="xxx"<br>export OVH_CONSUMER_KEY="xxx"<br>export OVH_CLOUD_PROJECT_SERVICE="xxx"</code></pre>



<p>Create a <strong>variable.tf.template</strong> file and fill it with these information:</p>



<pre class="wp-block-code"><code class=""># Existing services<br>variable "service_name" {<br>  default = "$OVH_CLOUD_PROJECT_SERVICE"<br>}<br><br>variable "vrack_id" {<br>  default = "pn-1234567" #ID of your existing vRack<br>}<br><br>variable "vlan_id" {<br>  default = "666" #ID of your VLAN<br>}<br><br>variable "private_network_id" {<br>  default = "d111cb65-1234-5678-9012-dac2e93b8944" #ID of your private network<br>}<br><br>variable "private_subnet_id" {<br>  default = "d8dc2469-1234-5678-9012-1f86551d3466" #ID of your subnet<br>}<br><br>variable "vrackservices_subnet_service_range_cidr" {<br>  default = "192.168.168.248/29" #CIDR of your private network<br>}<br><br>variable "private_subnet_cidr" {<br>  default = "192.168.168.0/24" #CIDR of your subnet<br>} <br><br>variable "mks_region" {<br>  default = "GRA11" #Region of your existing MKS cluster<br>}<br><br>variable "mks_cluster_id" {<br>  default = "7c3e1e6e-1234-5678-9012-4fb5a5b145e7" #ID of your existing MKS cluster<br>}<br><br># Services to create<br><br>variable "oauth2_client_name" {<br>  default = "efs-trident-client-example"<br>}<br><br>variable "oauth2_client_description" {<br>  default = "OAuth2 client for EFS Trident integration"<br>}<br><br>variable "iam_policy_name" {<br>  default = "efs-trident-policy-example"<br>}<br><br>variable "iam_policy_description" {<br>  default = "IAM policy for EFS Trident access"<br>}<br><br>variable "vrackservices_attach_to_efs" {<br>  description = "Whether to attach the EFS service endpoint to vRack Services. Set to false before destroying."<br>  type        = bool<br>  default     = true<br>}<br><br>variable "efs_region" {<br>  default = "eu-west-rbx"<br>}<br><br>variable "efs_name" {<br>  default = "my-efs-storage"<br>}<br><br>variable "efs_plan" {<br>  default = "enterprise-file-storage-premium-1tb"<br>}</code></pre>



<p>⚠️ In the file, replace the IDs, CIDR &amp; MKS region with your existing resources information.</p>



<p>Replace the value of the <strong>OVH_CLOUD_PROJECT_SERVICE</strong> environment variable in the <strong>variables.tf</strong> file: </p>



<pre class="wp-block-code"><code class="">envsubst &lt; variables.tf.template &gt; variables.tf</code></pre>



<p>Create a <strong>efs.tf</strong> file and fill it with the information:</p>



<pre class="wp-block-code"><code class="">module "ovh_efs_trident" {<br>  source = "ovh/efs/ovh//modules/efs-trident"<br><br>  # OVH region for EFS and vRack Services<br>  region = var.efs_region<br><br>  # Public Cloud region for MKS and private network<br>  public_cloud_region = var.mks_region<br><br>  # VLAN ID must be the same for vRack Services and Public Cloud private network<br>  vlan_id = var.vlan_id<br><br>  # Set to false before destroying to detach endpoint first<br>  vrackservices_attach_to_efs = var.vrackservices_attach_to_efs<br><br>  # EFS creation<br>  storage_efs_name      = var.efs_name<br>  storage_efs_plan_code = var.efs_plan<br><br>  # --- vRack ---<br>  create_vrack       = false<br>  vrack_service_name = var.vrack_id<br><br>  # --- Cloud Project ---<br>  create_cloud_project        = false<br>  cloud_project_id            = var.service_name<br>  bind_vrack_to_cloud_project = false # Set to false if already bound<br><br>  # --- Private Network ---<br>  create_private_network      = false<br>  private_network_id = var.private_network_id<br><br>  # --- Private Subnet ---<br>  create_private_subnet      = false<br>  private_subnet_id = var.private_subnet_id<br><br>  # --- Gateway ---<br>  create_gateway = false  # Set to false only if existing network has gateway<br><br>  # --- MKS Cluster ---<br>  create_mks_cluster = false<br>  mks_cluster_id     = var.mks_cluster_id # mks-priv-gra11<br>  create_node_pool   = false # Set to false if using existing node pool<br><br>  # OAuth2 and IAM<br>  oauth2_client_name        = var.oauth2_client_name<br>  oauth2_client_description = var.oauth2_client_description<br>  iam_policy_name           = var.iam_policy_name<br>  iam_policy_description    = var.iam_policy_description<br><br>  # Network (shared between vRack Services and Public Cloud)<br>  private_network_subnet_cidr             = var.private_subnet_cidr<br>  vrackservices_subnet_service_range_cidr = var.vrackservices_subnet_service_range_cidr # EFS gets IPs here<br>}</code></pre>



<p>Create an <strong>output.tf</strong> file with the following content:</p>



<pre class="wp-block-code"><code class="">output "client_id" {<br>    value = module.ovh_efs_trident.client_id<br>}<br><br>output "client_secret" {<br>    value = module.ovh_efs_trident.client_secret<br>    sensitive = true<br>}<br><br>output "efs_id" {<br>  value       = module.ovh_efs_trident.efs_id<br>}</code></pre>



<p>The Terraform configuration is ready. Let&#8217;s init it:</p>



<pre class="wp-block-code"><code class="">terraform init</code></pre>



<p>The output should be like this:</p>



<pre class="wp-block-code"><code class="">$ terraform init<br><br>Initializing the backend...<br>Initializing modules...<br>Initializing provider plugins...<br>- Reusing previous version of hashicorp/null from the dependency lock file<br>- Reusing previous version of ovh/ovh from the dependency lock file<br>- Using previously-installed hashicorp/null v3.2.4<br>- Using previously-installed ovh/ovh v2.13.1<br><br>Terraform has been successfully initialized!<br><br>You may now begin working with Terraform. Try running "terraform plan" to see<br>any changes that are required for your infrastructure. All Terraform commands<br>should now work.<br><br>If you ever set or change modules or backend configuration for Terraform,<br>rerun this command to reinitialize your working directory. If you forget, other<br>commands will detect it and remind you to do so if necessary.</code></pre>



<p>Apply it:</p>



<pre class="wp-block-code"><code class="">terraform apply</code></pre>



<p>The output should be like this:</p>



<pre class="wp-block-code"><code class="">$ terraform apply<br><br>module.ovh_efs_trident.data.ovh_me.my_account: Reading...<br>module.ovh_efs_trident.data.ovh_cloud_project_kube.existing[0]: Reading...<br>module.ovh_efs_trident.data.ovh_cloud_project.existing[0]: Reading...<br>module.ovh_efs_trident.data.ovh_me.my_account: Read complete after 1s [id=xx12345-ovh]<br>module.ovh_efs_trident.data.ovh_cloud_project.existing[0]: Read complete after 0s<br>module.ovh_efs_trident.data.ovh_order_cart.cart: Reading...<br>module.ovh_efs_trident.data.ovh_order_cart.cart: Read complete after 0s [id=d582ab7c-1234-5678-9012-4a6e702ea4c5]<br>module.ovh_efs_trident.data.ovh_cloud_project_kube.existing[0]: Read complete after 5s [id=7c3e1e6e-1234-5678-9012-4fb5a5b145e7]<br><br>Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:<br>  + create<br><br>Terraform will perform the following actions:<br><br>  # module.ovh_efs_trident.null_resource.config_validation will be created<br>  + resource "null_resource" "config_validation" {<br>      + id = (known after apply)<br>    }<br><br>  # module.ovh_efs_trident.ovh_iam_policy.iam_policy will be created<br>  + resource "ovh_iam_policy" "iam_policy" {<br>      + allow       = [<br>          + "storageNetApp:apiovh:get",<br>          + "storageNetApp:apiovh:serviceInfos/get",<br>          + "storageNetApp:apiovh:share/accessPath/get",<br>          + "storageNetApp:apiovh:share/acl/create",<br>          + "storageNetApp:apiovh:share/acl/delete",<br>          + "storageNetApp:apiovh:share/acl/get",<br>          + "storageNetApp:apiovh:share/create",<br>          + "storageNetApp:apiovh:share/delete",<br>          + "storageNetApp:apiovh:share/edit",<br>          + "storageNetApp:apiovh:share/extend",<br>          + "storageNetApp:apiovh:share/get",<br>          + "storageNetApp:apiovh:share/revertToSnapshot",<br>          + "storageNetApp:apiovh:share/snapshot/create",<br>          + "storageNetApp:apiovh:share/snapshot/delete",<br>          + "storageNetApp:apiovh:share/snapshot/edit",<br>          + "storageNetApp:apiovh:share/snapshot/get",<br>        ]<br>      + created_at  = (known after apply)<br>      + description = "IAM policy for EFS Trident access"<br>      + id          = (known after apply)<br>      + identities  = (known after apply)<br>      + name        = "efs-trident-policy-example"<br>      + owner       = (known after apply)<br>      + read_only   = (known after apply)<br>      + resources   = (known after apply)<br>      + updated_at  = (known after apply)<br>    }<br><br>  # module.ovh_efs_trident.ovh_me_api_oauth2_client.api_oauth2_client will be created<br>  + resource "ovh_me_api_oauth2_client" "api_oauth2_client" {<br>      + client_id     = (known after apply)<br>      + client_secret = (sensitive value)<br>      + description   = "OAuth2 client for EFS Trident integration"<br>      + flow          = "CLIENT_CREDENTIALS"<br>      + id            = (known after apply)<br>      + identity      = (known after apply)<br>      + name          = "efs-trident-client-example"<br>    }<br><br>  # module.ovh_efs_trident.ovh_storage_efs.efs[0] will be created<br>  + resource "ovh_storage_efs" "efs" {<br>      + created_at        = (known after apply)<br>      + iam               = (known after apply)<br>      + id                = (known after apply)<br>      + name              = "my-efs-storage"<br>      + order             = (known after apply)<br>      + ovh_subsidiary    = "FR"<br>      + performance_level = (known after apply)<br>      + plan              = [<br>          + {<br>              + configuration = [<br>                  + {<br>                      + label = "region"<br>                      + value = "eu-west-rbx"<br>                    },<br>                  + {<br>                      + label = "network"<br>                      + value = "vrack"<br>                    },<br>                ]<br>              + duration      = "P1M"<br>              + plan_code     = "enterprise-file-storage-premium-1tb"<br>              + pricing_mode  = "default"<br>            },<br>        ]<br>      + product           = (known after apply)<br>      + quota             = (known after apply)<br>      + region            = (known after apply)<br>      + service_name      = (known after apply)<br>      + status            = (known after apply)<br>    }<br><br>  # module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0] will be created<br>  + resource "ovh_vrack_vrackservices" "vrack-vrackservices-binding" {<br>      + id             = (known after apply)<br>      + service_name   = "pn-1234567"<br>      + vrack_services = (known after apply)<br>    }<br><br>  # module.ovh_efs_trident.ovh_vrackservices.vrackservices[0] will be created<br>  + resource "ovh_vrackservices" "vrackservices" {<br>      + checksum        = (known after apply)<br>      + created_at      = (known after apply)<br>      + current_state   = (known after apply)<br>      + current_tasks   = (known after apply)<br>      + iam             = (known after apply)<br>      + id              = (known after apply)<br>      + order           = (known after apply)<br>      + ovh_subsidiary  = "FR"<br>      + plan            = [<br>          + {<br>              + configuration = [<br>                  + {<br>                      + label = "region_name"<br>                      + value = "eu-west-rbx"<br>                    },<br>                ]<br>              + duration      = "P1M"<br>              + plan_code     = "vrack-services"<br>              + pricing_mode  = "default"<br>            },<br>        ]<br>      + resource_status = (known after apply)<br>      + target_spec     = {<br>          + subnets = [<br>              + {<br>                  + cidr              = "192.168.168.0/24"<br>                  + service_endpoints = [<br>                      + {<br>                          + managed_service_urn = (known after apply)<br>                        },<br>                    ]<br>                  + service_range     = {<br>                      + cidr = "192.168.168.248/29"<br>                    }<br>                  + vlan              = 666<br>                    # (1 unchanged attribute hidden)<br>                },<br>            ]<br>        }<br>      + updated_at      = (known after apply)<br>    }<br><br>Plan: 6 to add, 0 to change, 0 to destroy.<br><br>Changes to Outputs:<br>  + client_id     = (known after apply)<br>  + client_secret = (sensitive value)<br>  + efs_id        = (known after apply)<br><br>Do you want to perform these actions?<br>  Terraform will perform the actions described above.<br>  Only 'yes' will be accepted to approve.<br><br>  Enter a value: yes<br><br>module.ovh_efs_trident.null_resource.config_validation: Creating...<br>module.ovh_efs_trident.null_resource.config_validation: Creation complete after 0s [id=8553589333890826101]<br>module.ovh_efs_trident.ovh_me_api_oauth2_client.api_oauth2_client: Creating...<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Creating...<br>module.ovh_efs_trident.ovh_me_api_oauth2_client.api_oauth2_client: Creation complete after 0s [id=EU.xxxxxxxxxxxxx]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [00m10s elapsed]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [00m20s elapsed]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [00m30s elapsed]<br>...<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [03m40s elapsed]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [03m50s elapsed]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Creation complete after 3m52s [id=c2d759de-cd63-4e28-aaab-a7599aad2ca8]<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Creating...<br>module.ovh_efs_trident.ovh_iam_policy.iam_policy: Creating...<br>module.ovh_efs_trident.ovh_iam_policy.iam_policy: Creation complete after 0s [id=a434d1a4-1234-5678-9012-cf54251eee52]<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Still creating... [00m10s elapsed]<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Still creating... [00m20s elapsed]<br>...<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Still creating... [01m20s elapsed]<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Creation complete after 1m30s [id=vrs-a00-b11-c22-d33]<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Creating...<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Still creating... [00m10s elapsed]<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Still creating... [00m20s elapsed]<br>...<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Still creating... [01m40s elapsed]<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Creation complete after 1m43s [id=vrack_pn-1234567-vrackServices_vrs-a00-b11-c22-d33]<br><br>Apply complete! Resources: 6 added, 0 changed, 0 destroyed.<br><br>Outputs:<br><br>client_id = "EU.xxxxxxxxxxxxx"<br>client_secret = &lt;sensitive&gt;<br>efs_id = "c2d759de-cd63-4e28-aaab-a7599aad2ca8"</code></pre>



<p>Save the OAuth2 credentials in environment variables:</p>



<pre class="wp-block-code"><code class="">export EFS_CLIENT_ID=$(terraform output -raw client_id)<br>export EFS_CLIENT_SECRET=$(terraform output -raw client_secret)</code></pre>



<h4 class="wp-block-heading">Trident CSI Installation</h4>



<p>Install the Trident operator in your MKS cluster:</p>



<pre class="wp-block-code"><code class="">helm repo add netapp-trident https://netapp.github.io/trident-helm-chart<br><br>helm install trident-operator netapp-trident/trident-operator \<br>  --version 100.2502.1 \<br>  --create-namespace \<br>  --namespace trident \<br>  --set tridentSilenceAutosupport=true \<br>  --set operatorImage="ovhcom/trident-operator:25.02.1-linux-amd64" \<br>  --set tridentImage="ovhcom/trident:25.02.1-linux-amd64"</code></pre>



<p>You should have a result like this:</p>



<pre class="wp-block-code"><code class="">$ helm install trident-operator netapp-trident/trident-operator \<br>  --version 100.2502.1 \<br>  --create-namespace \<br>  --namespace trident \<br>  --set tridentSilenceAutosupport=true \<br>  --set operatorImage="ovhcom/trident-operator:25.02.1-linux-amd64" \<br>  --set tridentImage="ovhcom/trident:25.02.1-linux-amd64"<br><br>NAME: trident-operator<br>LAST DEPLOYED: Tue Apr 28 14:01:19 2026<br>NAMESPACE: trident<br>STATUS: deployed<br>REVISION: 1<br>TEST SUITE: None<br>NOTES:<br>Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI<br>storage provisioner for Kubernetes.<br><br>Your release is named 'trident-operator' and is installed into the 'trident' namespace.<br>Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster.<br><br>To configure Trident to manage storage resources, you will need a copy of tridentctl, which is<br>available in pre-packaged Trident releases.  You may find all Trident releases and source code<br>online at https://github.com/NetApp/trident.<br><br>To learn more about the release, try:<br><br>  $ helm status trident-operator<br>  $ helm get all trident-operator</code></pre>



<p>Once the installation is complete, verify that all Trident <strong>pods</strong> are in <code><strong>Running</strong></code> state in the trident <strong>namespace</strong> before proceeding:</p>



<pre class="wp-block-code"><code class="">$ kubectl get pods -n trident<br><br>NAME                                  READY   STATUS    RESTARTS      AGE<br>trident-controller-5bf6c8d6f6-g95jq   6/6     Running   0             119s<br>trident-node-linux-4xtjr              2/2     Running   1 (82s ago)   119s<br>trident-node-linux-6w5ff              2/2     Running   1 (82s ago)   119s<br>trident-node-linux-r7hxp              2/2     Running   0             119s<br>trident-operator-859f59c58b-2z2ts     1/1     Running   0             2m31s</code></pre>



<h4 class="wp-block-heading">Trident Backend Creation</h4>



<p>The Trident backend connects NetApp Trident to the OVHcloud EFS service using the IAM credentials previously created.</p>



<h5 class="wp-block-heading" id="1-secret-creation">1. Secret Creation</h5>



<p>Create a Kubernetes <strong>Secret</strong> containing the connection information that allows Trident to access the OVHcloud API. Create a <strong>trident-secret.yaml.template</strong> file with the following content:</p>



<pre class="wp-block-code"><code class="">apiVersion: v1<br>kind: Secret<br>metadata:<br>  name: ovh-efs-secret<br>type: Opaque<br>stringData:<br>  clientID: "$EFS_CLIENT_ID"         # your clientId<br>  clientSecret: "$EFS_CLIENT_SECRET" # your clientSecret</code></pre>



<p>Replace the <code>clientID</code> and <code>clientSecret</code> values by the OAuth2 client we created with Terraform:</p>



<pre class="wp-block-code"><code class="">envsubst &lt; trident-secret.yaml.template &gt; trident-secret.yaml</code></pre>



<p>Apply the secret in your cluster:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f trident-secret.yaml -n trident</code></pre>



<p>Check that the secret has been correctly created:</p>



<pre class="wp-block-code"><code class="">$ kubectl get secret ovh-efs-secret -n trident<br><br>NAME             TYPE     DATA   AGE<br>ovh-efs-secret   Opaque   2      3s</code></pre>



<h5 class="wp-block-heading" id="2-trident-backend-creation">2. Trident Backend Creation</h5>



<p>Create your backend with the command below:</p>



<pre class="wp-block-code"><code class="">cat &lt;&lt;EOF | kubectl create -n trident -f -<br>apiVersion: trident.netapp.io/v1<br>kind: TridentBackendConfig<br>metadata:<br>  name: ovh-efs-rbx<br>spec:<br>  version: 1<br>  backendName: backend-ovh-efs<br>  defaults:<br>    exportRule: "192.168.168.0/24"    # CIDR of your network for NFS ACLs<br>  storageDriverName: ovh-efs<br>  clientLocation: ovh-eu<br>  location: eu-west-rbx         # Location of your EFS service<br>  serviceLevel: premium<br>  nfsMountOptions: rw,hard,rsize=65536,wsize=65536,nfsvers=3,tcp<br>  credentials:<br>    name: ovh-efs-secret<br>  volumeCreateTimeout: "60" <br>EOF</code></pre>



<p>⚠️ The <code>ovh-efs</code> storage driver must be used. Replace <code><strong>exportRule</strong></code>, <code><strong>location</strong></code>, and other parameters with values matching your environment.</p>



<p>Verify that the backend has been created correctly with the command below:</p>



<pre class="wp-block-code"><code class="">$ kubectl get TridentBackendConfig -n trident<br><br>NAME          BACKEND NAME      BACKEND UUID                           PHASE   STATUS<br>ovh-efs-rbx   backend-ovh-efs   ace12d67-70ea-44e1-abd8-20d016f7f030   Bound   Success</code></pre>



<h4 class="wp-block-heading" id="storageclass-and-usage">Use EFS in your MKS cluster</h4>



<p>This section describes how to expose Enterprise File Storage to Kubernetes workloads using Trident.</p>



<h5 class="wp-block-heading" id="1-storageclass">1. StorageClass</h5>



<p>In a <strong>sc_efs.yaml</strong> file, define a <code>StorageClass</code> to enable dynamic provisioning via the Trident CSI driver:</p>



<pre class="wp-block-code"><code class="">apiVersion: storage.k8s.io/v1<br>kind: StorageClass<br>metadata:<br>  name: ovh-efs-premium<br>provisioner: csi.trident.netapp.io<br>parameters:<br>  backendType: "ovh-efs"<br>  fsType: "nfs"<br>allowVolumeExpansion: true</code></pre>



<p>Apply the StorageClass:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f sc_efs.yaml</code></pre>



<p>Check that the StorageClass has been created:</p>



<pre class="wp-block-code"><code class="">$ kubectl get sc ovh-efs-premium<br><br>NAME              PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE<br>ovh-efs-premium   csi.trident.netapp.io   Delete          Immediate           true                   3h13m</code></pre>



<p>This <strong>StorageClass</strong> allows volumes to be provisioned on demand and expanded dynamically.</p>



<h4 class="wp-block-heading" id="2-volume-creation-pvc">2. Volume Creation (PVC)</h4>



<p>Create a <code>PersistentVolumeClaim</code> with <code>ReadWriteMany</code> (RWX) access mode. Create a <strong>pvc_efs.yaml</strong> file with this content:</p>



<pre class="wp-block-code"><code class="">apiVersion: v1<br>kind: PersistentVolumeClaim<br>metadata:<br>  name: premium-pvc-efs<br>spec:<br>  accessModes:<br>    - ReadWriteMany<br>  resources:<br>    requests:<br>      storage: 100Gi<br>  storageClassName: ovh-efs-premium</code></pre>



<p>Apply it:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f pvc_efs.yaml</code></pre>



<p>Verify that the <code><strong>PVC</strong></code> has been created with the command below:</p>



<pre class="wp-block-code"><code class="">kubectl get pvc premium-pvc-efs</code></pre>



<p>At this point, the <strong>EFS</strong> is creating a volume, attach the correct ACL to it and mount it in the PVC</p>



<p>After a little time, the output should show the PVC in <code>Bound</code> state:</p>



<pre class="wp-block-code"><code class="">$ kubectl get pvc<br><br>NAME              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      VOLUMEATTRIBUTESCLASS   AGE<br>premium-pvc-efs   Bound    pvc-faca364d-ad76-44ec-9bc9-959c0d33c515   100Gi      RWX            ovh-efs-premium   &lt;unset&gt;                 3m43s</code></pre>



<p>The volume has been created through the <strong>PVC</strong> and you can now mount it in a <strong>Pod</strong> 🎉.</p>



<h3 class="wp-block-heading">Conclusion</h3>



<p>In this blog, we’ve explained how to create an EFS and use it in a MKS cluster through Trident CSI. This will give you a flexible, production-ready approach to persistent shared storage in Kubernetes.</p>



<p>We recommend you also take a look at our <a href="https://github.com/orgs/ovh/projects/16" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Cloud Roadmap &amp; Changelog</a> for an overview of all the coming features for OVHcloud Public Cloud products.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fnavigating-ovhcloud-enterprise-file-storage-efs-with-trident-csi-on-kubernetes-clusters-mks%2F&amp;action_name=Navigating%20OVHcloud%20Enterprise%20File%20Storage%20%28EFS%29%20with%20Trident%20CSI%20On%20Kubernetes%20clusters%20%28MKS%29&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>🎙️ Tranches de Tech #28 &#8211; La dream team au complet</title>
		<link>https://blog.ovhcloud.com/tranches-de-tech-28-la-dream-team-au-complet/</link>
		
		<dc:creator><![CDATA[Stéphane Philippart]]></dc:creator>
		<pubDate>Mon, 11 May 2026 10:13:46 +0000</pubDate>
				<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Tranches de Tech]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31837</guid>

					<description><![CDATA[The Tranches de Tech team is back in full force for a new episode covering recent tech news, AI developments, developer tools, and the latest trends across cloud and open source.<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Ftranches-de-tech-28-la-dream-team-au-complet%2F&amp;action_name=%F0%9F%8E%99%EF%B8%8F%20Tranches%20de%20Tech%20%2328%20%26%238211%3B%20La%20dream%20team%20au%20complet&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="759" height="757" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond.png" alt="An avocado with a computer keyboard" class="wp-image-31036" style="width:640px" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond.png 759w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond-300x300.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond-70x70.png 70w" sizes="auto, (max-width: 759px) 100vw, 759px" /></figure>



<ul class="wp-block-list">
<li>👤 Invitée : Thierry CHANTIER
<ul class="wp-block-list">
<li>Bluesky : <a href="https://bsky.app/profile/titimoby.bsky.social" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">@titimoby</a></li>



<li>LinkedIn : <a href="https://www.linkedin.com/in/thierrychantier/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.linkedin.com/in/thierrychantier/</a></li>
</ul>
</li>



<li>🗓️ Date d&#8217;enregistrement : 30 avril 2026</li>



<li>🎧 <a href="https://smartlink.ausha.co/tranches-de-tech/tranches-de-tech-26-la-dream-team-au-complet" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Lien vers l&#8217;épisode</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h3 class="wp-block-heading">👤 Présentation de Thierry &#8211; ⏱️ 1&#8243;15s</h3>



<ul class="wp-block-list">
<li><a href="https://mixteen.org/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://mixteen.org/</a></li>



<li><a href="https://www.ingenieuses.fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.ingenieuses.fr/</a></li>



<li><a href="https://tontoncodeur.fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://tontoncodeur.fr/</a></li>



<li><a href="https://www.emaxilde.net/#reseaux" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.emaxilde.net/#reseaux</a></li>



<li><a href="https://techcafe.fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://techcafe.fr/</a></li>



<li><a href="https://lescastcodeurs.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://lescastcodeurs.com/</a></li>
</ul>



<h3 class="wp-block-heading">📰 News Techs&nbsp;</h3>



<h4 class="wp-block-heading">🤖 Intelligence Artificielle &#8211; ⏱️ 43&#8243;35s</h4>



<h5 class="wp-block-heading">Anthropic Claude Code leak</h5>



<p><a href="https://www.reddit.com/r/ClaudeAI/comments/1s9d9j9/claude_code_source_leak_megathread/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.reddit.com/r/ClaudeAI/comments/1s9d9j9/claude_code_source_leak_megathread/</a></p>



<h5 class="wp-block-heading">Qwen 3.6</h5>



<ul class="wp-block-list">
<li><a href="https://openrouter.ai/compare/qwen/qwen3.6-plus/anthropic/claude-sonnet-4.6" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://openrouter.ai/compare/qwen/qwen3.6-plus/anthropic/claude-sonnet-4.6</a></li>



<li><a href="https://rits.shanghai.nyu.edu/ai/qwen3-6-27b-a-dense-27b-model-that-beats-a-397b-moe-on-coding/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://rits.shanghai.nyu.edu/ai/qwen3-6-27b-a-dense-27b-model-that-beats-a-397b-moe-on-coding/</a></li>
</ul>



<h5 class="wp-block-heading">Quantization from the ground up</h5>



<p><a href="https://ngrok.com/blog/quantization" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://ngrok.com/blog/quantization</a></p>



<h5 class="wp-block-heading">MCP is dead. Long live the CLI</h5>



<p><a href="https://ejholmes.github.io/2026/02/28/mcp-is-dead-long-live-the-cli.html" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://ejholmes.github.io/2026/02/28/mcp-is-dead-long-live-the-cli.html</a></p>



<h4 class="wp-block-heading">👩‍💻 Développement &#8211; ⏱️ 1h07&#8243;26s</h4>



<h5 class="wp-block-heading">Thoughts on OpenAI acquiring Astral and uv/ruff/ty</h5>



<p><a href="https://simonwillison.net/2026/Mar/19/openai-acquiring-astral" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://simonwillison.net/2026/Mar/19/openai-acquiring-astral</a></p>



<h5 class="wp-block-heading">SpaceX is working with Cursor and has an option to buy the startup for $60B</h5>



<p><a href="https://techcrunch.com/2026/04/21/spacex-is-working-with-cursor-and-has-an-option-to-buy-the-startup-for-60-billion/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://techcrunch.com/2026/04/21/spacex-is-working-with-cursor-and-has-an-option-to-buy-the-startup-for-60-billion/</a></p>



<h4 class="wp-block-heading">☁️ Cloud &#8211; ⏱️ 1h15&#8243;15s</h4>



<p>OVHcloud Kubernetes Review: Europe&#8217;s Quiet Powerhouse</p>



<p><a href="https://www.eucloudcost.com/blog/ovhcloud-cluster" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.eucloudcost.com/blog/ovhcloud-cluster</a></p>



<p>Discovering the External Secrets Operator (ESO) OVHcloud provider to manage your Kubernetes secrets</p>



<p><a href="https://blog.ovhcloud.com/discover-the-external-secret-operator-eso-ovhcloud-provider-to-manage-your-kubernetes-secrets-%f0%9f%8e%89/" data-wpel-link="internal">https://blog.ovhcloud.com/discover-the-external-secret-operator-eso-ovhcloud-provider-to-manage-your-kubernetes-secrets-%f0%9f%8e%89/</a></p>



<p>Secure your Software Supply Chain with OVHcloud Managed Private Registry (MPR)</p>



<p><a href="https://blog.ovhcloud.com/secure-your-software-supply-chain-with-ovhcloud-managed-private-registry-mpr/" data-wpel-link="internal">https://blog.ovhcloud.com/secure-your-software-supply-chain-with-ovhcloud-managed-private-registry-mpr/</a></p>



<h4 class="wp-block-heading">🎤 Conférences / meetup &#8211; ⏱️ 1h21&#8243;25s</h4>



<p><a href="https://developers.events/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://developers.events/</a></p>



<h5 class="wp-block-heading">Le prochain Riviera Dev</h5>



<p><a href="https://www.rivieradev.fr" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.rivieradev.fr</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p class="has-text-align-center">💡 Retrouvez l’ensemble des autres épisodes ici : <a href="https://smartlink.ausha.co/tranches-de-tech" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://smartlink.ausha.co/tranches-de-tech</a> 💡</p>



<p></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Ftranches-de-tech-28-la-dream-team-au-complet%2F&amp;action_name=%F0%9F%8E%99%EF%B8%8F%20Tranches%20de%20Tech%20%2328%20%26%238211%3B%20La%20dream%20team%20au%20complet&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Copy.Fail (CVE-2026-31431): How to Rapidly Protect OVHcloud MKS Clusters from the Linux Kernel Zero-Day</title>
		<link>https://blog.ovhcloud.com/copy-fail-cve-2026-31431-how-to-rapidly-protect-ovhcloud-mks-clusters-from-the-linux-kernel-zero-day/</link>
		
		<dc:creator><![CDATA[Aurélie Vache]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 13:42:17 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31485</guid>

					<description><![CDATA[A newly disclosed Linux kernel zero-day, CVE-2026-31431, &#8220;Copy.Fail&#8221;, is one of the most serious privilege-escalation vulnerabilities in recent years. Discovered by Theori and publicly disclosed on April 29, 2026, Copy.Fail is a Linux kernel zero-day that roots every distribution since 2017. Unlike many local privilege-escalation flaws that depend on race conditions, kernel address leaks, or [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fcopy-fail-cve-2026-31431-how-to-rapidly-protect-ovhcloud-mks-clusters-from-the-linux-kernel-zero-day%2F&amp;action_name=Copy.Fail%20%28CVE-2026-31431%29%3A%20How%20to%20Rapidly%20Protect%20OVHcloud%20MKS%20Clusters%20from%20the%20Linux%20Kernel%20Zero-Day&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="683" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/ChatGPT-Image-30-avr.-2026-15_38_36-1024x683.png" alt="" class="wp-image-31492" style="aspect-ratio:1.4992503748125936;width:406px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/ChatGPT-Image-30-avr.-2026-15_38_36-1024x683.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/ChatGPT-Image-30-avr.-2026-15_38_36-300x200.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/ChatGPT-Image-30-avr.-2026-15_38_36-768x512.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/ChatGPT-Image-30-avr.-2026-15_38_36.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>A newly disclosed Linux kernel zero-day, <a href="https://app.opencve.io/cve/CVE-2026-31431" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">CVE-2026-31431</a>, &#8220;<strong>Copy.Fail&#8221;,</strong> is one of the most serious privilege-escalation vulnerabilities in recent years.</p>



<p>Discovered by Theori and publicly disclosed on April 29, 2026, <a href="https://copy.fail/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Copy.Fail</a> is a Linux kernel zero-day that roots every distribution since 2017. Unlike many local privilege-escalation flaws that depend on race conditions, kernel address leaks, or distribution-specific behavior, Copy.Fail is alarmingly reliable: it works consistently across mainstream Linux distributions with only a standard user account.</p>



<h3 class="wp-block-heading">Why the CVE-2026-31431 is dangerous?</h3>



<p>Copy.Fail abuses a logic flaw in the Linux kernel’s<strong> <code>algif_aead</code></strong> crypto module, introduced through a 2017 optimization. By manipulating the kernel’s AF_ALG crypto interface, an attacker can write controlled data into the Linux page cache (the in-memory representation of trusted system binaries).</p>



<p>This allows attackers to temporarily hijack binaries like <code>/usr/bin/su</code> <strong>without modifying the file on disk</strong>.</p>



<p>In practical terms:</p>



<ul class="wp-block-list">
<li>A normal user can become root</li>



<li>A compromised container can escape to the host</li>



<li>A malicious CI job can root its runner</li>



<li>Shared infrastructure becomes vulnerable across tenants</li>



<li>Disk forensics may show no file tampering because only RAM is altered</li>
</ul>



<p>This makes Copy.Fail especially dangerous for:</p>



<ul class="wp-block-list">
<li>Kubernetes clusters</li>



<li>CI/CD systems</li>



<li>Shared development environments</li>



<li>Cloud notebook platforms</li>



<li>Multi-tenant container infrastructure</li>
</ul>



<h3 class="wp-block-heading">How to patch it easily in your MKS clusters?</h3>



<p>OVHcloud is preparing patched MKS versions including the upstream kernel fix. Patched versions are expected to be available <strong>30 April 2026</strong>, at <strong>16:00 UTC+2</strong>.</p>



<p>While waiting for the next MKS release, here is a <strong>DaemonSet</strong> manifest that you can apply in your MKS clusters in order to mitigate the vulnerability.</p>



<p>Create a <strong>patch-copy-fail-cve </strong>file with the following content:</p>



<pre class="wp-block-code"><code class="">apiVersion: apps/v1<br>kind: DaemonSet<br>metadata:<br>  name: patch-copy-fail-cve<br>  labels:<br>    app: patch-copy-fail-cve<br>  namespace: default<br>spec:<br>  selector:<br>    matchLabels:<br>      app: patch-copy-fail-cve<br>  updateStrategy:<br>    type: RollingUpdate<br>    rollingUpdate:<br>      maxSurge: 0<br>      maxUnavailable: 100%<br>  template:<br>    metadata:<br>      labels:<br>        app: patch-copy-fail-cve<br>    spec:<br>      hostPID: true<br>      priorityClassName: system-node-critical<br>      volumes:<br>        - name: root-mount<br>          hostPath:<br>            path: /<br>            type: Directory<br>      initContainers:<br>        - image: mks.kubernatine.ovh/docker.io/library/busybox:1.36.1<br>          name: patch-copy-fail-cve<br>          command: ["/bin/bash", "-c"]<br>          args:<br>            - |<br>              tee /etc/modprobe.d/disable-algif-aead.conf &lt;&lt;&lt;'install algif_aead /bin/false'<br>              rmmod algif_aead 2&gt;/dev/null<br>              update-initramfs -u<br>          securityContext:<br>            privileged: true<br>            runAsUser: 0<br>          volumeMounts:<br>            - name: root-mount<br>              mountPath: /<br>      containers:<br>        - image: "mks.kubernatine.ovh/registry.k8s.io/pause:3.10.1"<br>          name: pause     </code></pre>



<p>Apply it:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f patch-copy-fail-cve.yaml</code></pre>



<p>⚠️ This mitigation has been tested on OVHcloud internal test clusters. Applying it to your own service remains under your responsibility.</p>



<p>If the vulnerability has already been exploited on your cluster, this mitigation will not remediate any pre-existing compromise.<br>The recommended remediation remains the official security release, which will be made available as soon as possible.</p>



<p>Read more about the mitigation: <a href="https://github.com/rootsecdev/cve_2026_31431#mitigation" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://github.com/rootsecdev/cve_2026_31431#mitigation</a></p>



<p></p>



<p></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fcopy-fail-cve-2026-31431-how-to-rapidly-protect-ovhcloud-mks-clusters-from-the-linux-kernel-zero-day%2F&amp;action_name=Copy.Fail%20%28CVE-2026-31431%29%3A%20How%20to%20Rapidly%20Protect%20OVHcloud%20MKS%20Clusters%20from%20the%20Linux%20Kernel%20Zero-Day&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What’s new with the OVHcloud Developer Advocate team &#8211; April 2026</title>
		<link>https://blog.ovhcloud.com/whats-new-with-the-ovhcloud-developer-advocate-team-april-2026/</link>
		
		<dc:creator><![CDATA[Stéphane Philippart]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 12:03:38 +0000</pubDate>
				<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer Advocate]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31431</guid>

					<description><![CDATA[Every month, the OVHcloud Developer Advocate team creates content, shares knowledge, and connects with the tech community. Here’s a look at what we did in April 2026. 🚀 🎙️ “Tranches de Tech” – Our monthly podcast A new episode of our French-language podcast Tranches de Tech 🥑 just dropped! 🎧 Episode 27: Tranches de Tech [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fwhats-new-with-the-ovhcloud-developer-advocate-team-april-2026%2F&amp;action_name=What%E2%80%99s%20new%20with%20the%20OVHcloud%20Developer%20Advocate%20team%20%26%238211%3B%20April%202026&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.ovhcloud.com/wp-content/uploads/2026/03/talks-1024x576.jpg" alt="An advocate giving a talk" class="wp-image-30934" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/03/talks-1024x576.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/talks-300x169.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/talks-768x432.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/talks-1536x864.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/talks.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p>Every month, the OVHcloud Developer Advocate team creates content, shares knowledge, and connects with the tech community. Here’s a look at what we did in April 2026. 🚀</p>



<h3 class="wp-block-heading">🎙️ “Tranches de Tech” – Our monthly podcast</h3>



<p>A new episode of our French-language podcast Tranches de Tech 🥑 just dropped!</p>



<h5 class="wp-block-heading">🎧 Episode 27: T<a href="https://podcast.ausha.co/tranches-de-tech/tranches-de-tech-26-poppy-au-service-des-autres" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">ranches de Tech 26 &#8211; Poppy au service des autres</a></h5>



<p>This episode of Tranches de Tech features Annabelle Koster, who shares her journey from tech recruiter to community ambassador, highlighting how she overcame impostor syndrome by actively learning and engaging with developers. She emphasizes the importance of community, conferences, and volunteering in building meaningful connections and personal growth. The discussion also explores the evolving role of AI as a productivity tool in her daily work. Ultimately, the episode underlines that, despite technological advances, human interaction, sharing, and mutual support remain at the heart of the tech ecosystem.</p>



<h3 class="wp-block-heading">📺 Live on Twitch</h3>



<p>We streamed live on&nbsp;<a href="https://www.twitch.tv/ovhcloud_com" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Twitch</a>&nbsp;this month! Here’s what we covered:<br>🎥 Rémy Vandepoel discussed with Antonin Anchisi and Aurélie Vache about our Manages Kubernetes Service (MKS) and some feedbacks about the KubeCon Europe 2026. <br>Catch the replay on&nbsp;<a href="https://www.youtube.com/watch?v=nqKDjfDxWno" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">YouTube ▶️</a>.</p>



<h3 class="wp-block-heading">🎤 Conference Talks</h3>



<p>The team hit the road (and the stage) at several conferences this month:</p>



<h5 class="wp-block-heading" id="kubecon-amsterdam---amsterdam-netherlands-">🇫🇷 <a href="https://mixitconf.org/en/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">MiXiT</a> &#8211; Lyon, France 🇫🇷</h5>



<p>Aurélie Vache gave a talk: <a href="https://mixitconf.org/2026/comprendre-kubernetes-de-maniere-visuelle" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Comprendre Kubernetes de manière visuelle</a></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="825" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-aurelie-1-1024x825.jpg" alt="" class="wp-image-31433" style="width:600px" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-aurelie-1-1024x825.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-aurelie-1-300x242.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-aurelie-1-768x619.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-aurelie-1-1536x1237.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-aurelie-1.jpg 1886w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p id="voxxed-days-zurich---zurich-switzerland-">Stéphane Philippart gave a workshop: <a href="https://mixitconf.org/en/2026/developper-avec-l-ia-et-si-c-etait-aussi-simple-qu-ajouter-une-librairie-" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Développer avec l&#8217;IA : et si c&#8217;était aussi simple qu&#8217;ajouter une librairie ?</a></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-steph-1024x576.jpg" alt="" class="wp-image-31464" style="width:640px" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-steph-1024x576.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-steph-300x169.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-steph-768x432.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-steph-1536x864.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/mixit-steph-2048x1152.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<h5 class="wp-block-heading">🇫🇷 <a href="https://www.devoxx.fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Devoxx France</a> &#8211; Paris, France 🇫🇷</h5>



<p>Aurélie Vache gave a talk: <a href="https://m.devoxx.com/events/devoxxfr2026/talks/2723/question-pour-un-cluster-kubernetes-quiz-sur-kubernetes-ses-concepts" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Question pour un cluster Kubernetes : Quiz sur Kubernetes &amp; ses concepts</a></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxxfr-aurelie-1-1-1024x768.jpg" alt="" class="wp-image-31440" style="width:640px" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxxfr-aurelie-1-1-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxxfr-aurelie-1-1-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxxfr-aurelie-1-1-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxxfr-aurelie-1-1-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxxfr-aurelie-1-1.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Stéphane Philippart gave a talk and a workshop (with Mathieu Busquet):<br> &#8211; <a href="https://m.devoxx.com/events/devoxxfr2026/talks/5586/-apprendre-notre-ia-apprendre-" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">🤖 Apprendre à notre IA à … apprendre 🧠</a><br> &#8211; <a href="https://m.devoxx.com/events/devoxxfr2026/talks/2745/dvelopper-avec-lia-et-si-ctait-aussi-simple-quajouter-une-librairie-" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Développer avec l&#8217;IA : et si c&#8217;était aussi simple qu&#8217;ajouter une librairie ?</a></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxx-mat-steph-1024x576.jpg" alt="" class="wp-image-31465" style="width:640px" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxx-mat-steph-1024x576.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxx-mat-steph-300x169.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxx-mat-steph-768x432.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxx-mat-steph-1536x864.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/devoxx-mat-steph-2048x1152.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="-community-engagement">📝 Our latest blog posts</h3>



<p>Here are the articles our team published on the OVHcloud Blog this month.</p>



<h5 class="wp-block-heading">📝 <a href="https://blog.ovhcloud.com/extract-text-from-images-with-ocr-using-python-and-ovhcloud-ai-endpoints/" data-wpel-link="internal">Extract Text from Images with OCR using Python and OVHcloud AI Endpoints</a> — by Stéphane Philippart</h5>



<p>This blog post explains how to perform OCR (Optical Character Recognition) using a vision-capable language model via AI Endpoints and Python. It shows that, instead of traditional OCR tools, developers can send images directly to a multimodal model using the OpenAI-compatible API to extract text while preserving layout. The tutorial walks through a simple Python script, including environment setup, image encoding in base64, and API calls. Overall, it highlights how modern vision LLMs simplify OCR workflows, making text extraction more flexible and easier to implement.</p>



<h5 class="wp-block-heading">📝 <a href="https://blog.ovhcloud.com/discover-the-external-secret-operator-eso-ovhcloud-provider-to-manage-your-kubernetes-secrets-%f0%9f%8e%89/" data-wpel-link="internal">Discover the External Secret Operator (ESO) OVHcloud Provider to manage your Kubernetes secrets 🎉</a> &#8211; by Aurélie Vache</h5>



<p>This blog post introduces a new provider for the External Secrets Operator (ESO) that integrates directly with OVHcloud Secret Manager, simplifying how secrets are handled in Kubernetes. It explains how ESO works by synchronizing secrets from external systems into Kubernetes and automatically updating them when changes occur. The tutorial walks through the full setup, including creating a secret in OVHcloud, configuring authentication, and deploying resources like ClusterSecretStore and ExternalSecret. Overall, the article highlights how this new provider streamlines secret management and improves integration between OVHcloud services and Kubernetes environments.</p>



<h5 class="wp-block-heading">📝 <a href="https://blog.ovhcloud.com/kubecon-cloudnativecon-europe-2026-in-amsterdam-feedback-and-highlights/" data-wpel-link="internal">KubeCon + CloudNativeCon Europe 2026 in Amsterdam: feedback and highlights</a> by Aurélie Vache and Rémy Vandepoel</h5>



<p>The post highlights KubeCon + CloudNativeCon Europe 2026 as strongly shaped by the rise of AI, pushing cloud-native toward an “AI-native” paradigm. OVHcloud emphasizes sovereign cloud principles, focusing on openness, reversibility, and performance. The event featured rich technical discussions, demos, and exchanges around Kubernetes and demanding workloads. It also underscored the importance of open-source collaboration within the CNCF ecosystem. Finally, OVHcloud’s booth and activities aimed to make these topics more accessible and tangible.</p>



<h3 class="wp-block-heading">🗓️ Coming up next</h3>



<p>Here’s a sneak peek at what’s coming next.</p>



<h5 class="wp-block-heading">🗓️ &#8211; May, 6 &amp; 7 &#8211; Devoxx UK, in London </h5>



<p>🎤 Stéphane Philippart is giving one talk (Wednesday the 6th at 6PM): <a href="https://m.devoxx.com/events/devoxxuk26/talks/5213/-dev-containers-the-ultimate-toolbox-for-developers" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">🧰 Dev Containers: the ultimate toolbox for developers?</a></p>



<h5 class="wp-block-heading">🗓️ &#8211; May, 13 &#8211; 1h PM CET &#8211; Very Tech Talk Twitch about Human Resources</h5>



<p>📺 <a href="https://www.twitch.tv/ovhcloud_com" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Twitch channel</a></p>



<h5 class="wp-block-heading">🗓️ &#8211; May, 19 &amp; 20 &#8211; Kubernetes Community Days in Helsinki</h5>



<p>🎤 Aurélie Vache is giving one talk (Wednesday the 20th at 2h30 PM): <a href="https://sessionize.com/api/v2/es08xsn7/view/GridSmart" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">The Ultimate Kubernetes Challenge: An Interactive Trivia Game on concepts, components, usage…</a></p>



<h5 class="wp-block-heading">🗓️ &#8211; May, 21 &amp; 22 &#8211; Devops days in Geneva</h5>



<p>🎤 Stéphane Philippart is giving one workshop (Thursday the 21th at 2h55 PM): <a href="https://devopsdays.org/events/2026-geneva/program" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Développer avec l&#8217;IA : et si c&#8217;était aussi simple qu&#8217;ajouter une librairie ?</a></p>



<h5 class="wp-block-heading">🗓️ New &#8220;Tranches de Tech&#8221; podcast episode</h5>



<p>🎧 All episodes are available on <a href="https://podcast.ausha.co/tranches-de-tech" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Ausha</a> and all your favorite podcast applications!</p>



<h3 class="wp-block-heading">💬 Stay in Touch</h3>



<p>Want to chat with us, share your thoughts, or just say hi? Here’s how to get in touch with the Developer Advocate team:</p>



<ul class="wp-block-list">
<li>🟣&nbsp;<strong>Discord</strong>:&nbsp;<a href="https://discord.gg/ovhcloud" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Discord server</a></li>



<li>🐦&nbsp;<strong>X / Twitter</strong>:&nbsp;<a href="https://twitter.com/OVHcloud" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">@OVHcloud</a></li>



<li>💼&nbsp;<strong>LinkedIn</strong>:&nbsp;<a href="https://www.linkedin.com/company/ovhgroup" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud LinkedIn</a></li>



<li>🐙&nbsp;<strong>GitHub</strong>:&nbsp;<a href="https://github.com/ovh" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">github.com/ovh</a></li>
</ul>



<p>See you next month! 👋</p>



<p></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fwhats-new-with-the-ovhcloud-developer-advocate-team-april-2026%2F&amp;action_name=What%E2%80%99s%20new%20with%20the%20OVHcloud%20Developer%20Advocate%20team%20%26%238211%3B%20April%202026&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>KubeCon + CloudNativeCon Europe 2026 in Amsterdam: feedback and highlights</title>
		<link>https://blog.ovhcloud.com/kubecon-cloudnativecon-europe-2026-in-amsterdam-feedback-and-highlights/</link>
		
		<dc:creator><![CDATA[Aurélie Vache&nbsp;and&nbsp;Rémy Vandepoel]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 07:00:31 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[Kubecon]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[OVHcloud Events]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31275</guid>

					<description><![CDATA[From March 23 to 26, 2026, the KubeCon + CloudNativeCon Europe took place in Amsterdam. Aurélie Vache and Rémy Vandepoel attended alongside 26 other OVHcloud employees. In this blog, they share their thoughts about this second KubeCon set in the land of tulips. KubeCon Europe 2026: the maturity milestone Back from Amsterdam, the buzz of [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fkubecon-cloudnativecon-europe-2026-in-amsterdam-feedback-and-highlights%2F&amp;action_name=KubeCon%20%2B%20CloudNativeCon%20Europe%202026%20in%20Amsterdam%3A%20feedback%20and%20highlights&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>From March 23 to 26, 2026, the <a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">KubeCon + CloudNativeCon Europe</a> took place in Amsterdam.</p>



<p>Aurélie Vache and Rémy Vandepoel attended alongside 26 other OVHcloud employees. In this blog, they share their thoughts about this second KubeCon set in the land of tulips.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQP8AIX0AAEr98-1-1024x768.jpg" alt="" class="wp-image-31279" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQP8AIX0AAEr98-1-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQP8AIX0AAEr98-1-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQP8AIX0AAEr98-1-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQP8AIX0AAEr98-1-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQP8AIX0AAEr98-1-2048x1536.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="799" height="533" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/55176825056_8ec98f339b_c.jpg" alt="" class="wp-image-31280" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/55176825056_8ec98f339b_c.jpg 799w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/55176825056_8ec98f339b_c-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/55176825056_8ec98f339b_c-768x512.jpg 768w" sizes="auto, (max-width: 799px) 100vw, 799px" /></figure>
</div>
</div>



<h3 class="wp-block-heading" id="REXKubeCon2026Amsterdam-Context">KubeCon Europe 2026: the maturity milestone</h3>



<p>Back from Amsterdam, the buzz of the RAI halls still echoes in our ears. This 2026 edition of KubeCon + CloudNativeCon Europe wasn’t just another Kubernetes conference. It marked a turning point for this event: the point of maturity. And this is evident just by looking at the numbers: 13,500 attendees for this edition! The largest attendance ever recorded!</p>



<p>While previous years were about exploration and expansion, 2026 was the year of massive industrialization, with one non-negotiable pre-requirement: digital sovereignty.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="799" height="533" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/55169871701_c147fd0dda_c.jpg" alt="" class="wp-image-31282" style="aspect-ratio:1.4990505586153107;width:678px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/55169871701_c147fd0dda_c.jpg 799w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/55169871701_c147fd0dda_c-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/55169871701_c147fd0dda_c-768x512.jpg 768w" sizes="auto, (max-width: 799px) 100vw, 799px" /></figure>



<p>Key figures from the 2026 edition:</p>



<ul class="wp-block-list">
<li>13,500+ attendees (46% first-time attendees)</li>



<li>100 countries represented</li>



<li>3,474 unique organizations/companies</li>



<li>891 sessions</li>



<li>230 projects in the CNCF landscape with 19.9 million contributors</li>
</ul>



<p><strong>CNCF Contributors by Geography (Last 12 Months)</strong></p>



<ul class="wp-block-list">
<li>Europe: <strong>38.8%</strong> of contributions (ahead of the United States)</li>



<li>United States: 36.29%</li>



<li>Germany: 9.82% (leading in Europe)</li>



<li>France: 4.68%</li>



<li>Switzerland: 2.49%</li>



<li>Strong signals for digital sovereignty, a key theme of this year’s keynotes 💪</li>
</ul>



<h3 class="wp-block-heading">Colocated events</h3>



<p>KubeCon + CloudNativeCon Europe 2026 traditionally kicks off with a full day dedicated to co-located events. This year was no exception, with an impressive lineup of 16 events, including well-known favorites such as ArgoCon, BackstageCon, CiliumCon, Platform Engineering Day, Kubernetes on Edge Day, and Observability Day.</p>



<p>Among the newcomer events, <strong>Open Sovereign Cloud Day</strong> was a stand out, as it highlighted the growing importance of cloud sovereignty in Europe.</p>



<p>During CiliumCon, we were proud to see the spotlight on our MKS Standard offer 🚀.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260323-WA00291-1024x768.jpg" alt="" class="wp-image-31283" style="width:566px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260323-WA00291-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260323-WA00291-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260323-WA00291-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260323-WA00291-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260323-WA00291.jpg 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">OVHcloud Presence</h3>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="585" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/signal-2026-03-24-10-23-27-765-1024x585.jpg" alt="" class="wp-image-31276" style="aspect-ratio:1.7504278491247434;width:618px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/signal-2026-03-24-10-23-27-765-1024x585.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/signal-2026-03-24-10-23-27-765-300x171.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/signal-2026-03-24-10-23-27-765-768x439.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/signal-2026-03-24-10-23-27-765-1536x877.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/signal-2026-03-24-10-23-27-765.jpg 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>OVHcloud had a strong presence at the event, with two different booths serving two different purposes.</p>



<p>One was located in the <em>Activation Zone</em>, designed as an interactive space to engage with attendees through a video game &#8220;Gaming Camp: Beat Cloud Villains!&#8221;<em>, </em>described as<em> &#8220;Join the fight against the villains of the cloud. Take on Hidden Cost, Jailor Stack, and Autonomous Zero, and prove yourself as a true Guardian of the Cloud.&#8221;</em></p>



<p>Players were welcomed to step into a two-player fighting game inspired by the style of <em>Street Fighter</em>, where strategy and skill are your best weapons. Winners won exclusive t-shirts.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_125635211.MP2_-1024x768.jpg" alt="" class="wp-image-31285" style="width:520px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_125635211.MP2_-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_125635211.MP2_-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_125635211.MP2_-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_125635211.MP2_-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_125635211.MP2_-2048x1536.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The second booth had a more corporate focus, highlighting OVHcloud’s broader portfolio, strategic positioning, and enterprise offerings. It provided a space for deeper conversations around demos, use cases, and cloud strategies.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_134841194.MP2_-1024x768.jpg" alt="" class="wp-image-31286" style="width:599px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_134841194.MP2_-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_134841194.MP2_-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_134841194.MP2_-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_134841194.MP2_-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_134841194.MP2_-2048x1536.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The opportunity was too good to pass up, so we took the chance to interview key players in the ecosystem, as well as customers of our solutions.</p>



<p>We conducted five interviews and had many discussions, and we can’t wait to share them with you soon!</p>



<p>Here’s a sneak peek featuring <strong>Sudeep Goswami</strong>, CEO of <strong>Traefik Labs</strong>:</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="683" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/KubeConOVH_127-1024x683.jpg" alt="" class="wp-image-31287" style="aspect-ratio:1.4992503748125936;width:450px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/KubeConOVH_127-1024x683.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/KubeConOVH_127-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/KubeConOVH_127-768x512.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/KubeConOVH_127-1536x1024.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/KubeConOVH_127-2048x1365.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>These interviews will soon be available on YouTube, so stay tuned!</p>



<h3 class="wp-block-heading">Aurélie Vache&#8217;s talk</h3>



<p>Getting accepted to KubeCon is not easy, and Aurélie, our Developer Advocate and CNCF Ambassador, rose to the challenge by once again presenting a new talk.</p>



<p><em>“The Ultimate Kubernetes Challenge: An Interactive Trivia Game”:</em></p>



<p>&#8220;<em>Kubernetes has become the de facto standard for deploying and operating containerized applications. We use it, as well as its ecosystem, on a daily basis, but do we know them as well as we think we do?</em></p>



<p><em>With a mix of quiz and live demos, come learn and/or improve your knowledge. You will discover (or rediscover) the key concepts of Kubernetes (pods, secrets, services…), internal components but also best practices.</em></p>



<p><em>In this fun and dynamic talk, come compete throughout the quiz and explore the wonderful world of Kubernetes.</em></p>



<p><em>Icing on the cake: the first will win some swags.</em>&#8220;</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA0051-1024x768.jpg" alt="" class="wp-image-31292" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA0051-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA0051-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA0051-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA0051-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA0051.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA00521-1024x768.jpg" alt="" class="wp-image-31293" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA00521-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA00521-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA00521-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA00521-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG-20260325-WA00521.jpg 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>



<p>During this talk, attendees tested their Kubernetes knowledge through an interactive quiz, with results presented via illustrated slides and live, hands-on demos.</p>



<p>Giving a talk at 5 p.m., during the final session of the second day, was an ambitious way to finish up. But thanks to the interactive format of her talk, attendees were able to enjoy testing their knowledge while discovering tips about Kubernetes and its concepts and features.</p>



<p>Three OVHcloud MKS clusters were created especially for the occasion, one with 3 nodes, one with zero nodes, and one with 3 nodes across 3 Availability Zones:</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="580" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-2026-4-15_8-20-59-1024x580.png" alt="" class="wp-image-31294" style="aspect-ratio:1.765536773898217;width:486px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-2026-4-15_8-20-59-1024x580.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-2026-4-15_8-20-59-300x170.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-2026-4-15_8-20-59-768x435.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-2026-4-15_8-20-59-1536x869.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-2026-4-15_8-20-59.png 1862w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Watch the talk here:</p>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<span class="videowrapper embed-youtube-nocookie aspect_ratio_563"><iframe loading="lazy" title="The Ultimate Kubernetes Challenge: An Interactive Trivia Game - Aurélie Vache, OVHcloud" width="1200" height="675" src="https://www.youtube-nocookie.com/embed/7LeveaxQtGs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></span> <!-- /.videowrapper -->
</div></figure>



<h3 class="wp-block-heading">Keynotes: Toward “Agent-Based” and Autonomous AI</h3>



<p>Plenary sessions at the event were dominated by a convergence of Kubernetes and Artificial Intelligence. This term, already ubiquitous in tech news, was bound to be a major focus here. Jonathan Bryce, the Executive Director of Cloud &amp; Infrastructure at the Linux Foundation and an iconic figure in the ecosystem, made a strong point by reminding the audience that while Kubernetes is everywhere (82% adoption rate), AI in production remains a major challenge.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_081828458.MP_-1024x768.jpg" alt="" class="wp-image-31295" style="width:407px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_081828458.MP_-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_081828458.MP_-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_081828458.MP_-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_081828458.MP_-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_081828458.MP_-2048x1536.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>In November, during the latest KubeCon + CoudNativeCon NA at Atlanta, the CNCF launched the &#8220;<a href="https://www.cncf.io/announcements/2025/11/11/cncf-launches-certified-kubernetes-ai-conformance-program-to-standardize-ai-workloads-on-kubernetes/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Certified Kubernetes AI Conformance Program to Standardize AI Workloads on Kubernetes</a>&#8220;.  5 months later, several companies including the OVHcloud Managed Kubernetes Services (MKS) platform, succeeded this new program with their own certified Kubernetes AI platform.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_083621436.MP_-1024x768.jpg" alt="" class="wp-image-31296" style="width:431px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_083621436.MP_-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_083621436.MP_-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_083621436.MP_-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_083621436.MP_-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260324_083621436.MP_-2048x1536.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>During the keynotes we even saw a real plane!</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="800" height="534" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/55166324614_dd452b5f68_c.jpg" alt="" class="wp-image-31297" style="aspect-ratio:1.4981024097101614;width:455px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/55166324614_dd452b5f68_c.jpg 800w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/55166324614_dd452b5f68_c-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/55166324614_dd452b5f68_c-768x513.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>And to top it off, seeing Michelin present the Top End User Award to SNCF was a real highlight for us. <em>Cocoricoooo!</em> 🇫🇷</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="682" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQyuKaWQAAn_3z-1024x682.jpg" alt="" class="wp-image-31298" style="aspect-ratio:1.501451415253588;width:514px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQyuKaWQAAn_3z-1024x682.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQyuKaWQAAn_3z-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQyuKaWQAAn_3z-768x512.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQyuKaWQAAn_3z-1536x1024.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/HEQyuKaWQAAn_3z.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="REXKubeCon2026Amsterdam-KeyTrends">Key Trends</h3>



<p>Find below the most frequently discussed technical pillars that will remain prominent in the coming months and years:</p>



<p>* <strong>Agent-based AI:</strong> The focus is shifting from training to inference. The announcement of Dapr Agents 1.0 shows that Kubernetes will now orchestrate agents capable of making real-time decisions on the infrastructure.</p>



<p>* <strong>GPU Standardization (DRA)</strong>: Thanks to NVIDIA’s widespread adoption of Dynamic Resource Allocation (DRA) drivers, GPU scheduling is becoming as simple and granular as CPU scheduling. A boon for cost optimization.</p>



<p>* <strong>Sovereignty</strong>: Sovereignty is no longer a legal concept; it is an architecture. We have seen a rise in encryption tools for data in transit and at rest (Confidential Computing) natively integrated into CNIs such as Cilium.</p>



<p>* <strong>FinOps 2.0</strong>: With 67% of AI compute dedicated to inference by the end of 2026, precise monitoring of GPU consumption via projects like Kepler has become essential for the economic viability of projects.</p>



<h3 class="wp-block-heading" id="REXKubeCon2026Amsterdam-TheGatewayAPIisbecomingthestandard">The Gateway API is becoming the standard</h3>



<p>As we announced in our blog post <em>“<a href="https://blog.ovhcloud.com/moving-beyond-ingress-why-should-ovhcloud-managed-kubernetes-service-mks-users-start-looking-at-the-gateway-api/" data-wpel-link="internal">Moving Beyond Ingress: Why should OVHcloud Managed Kubernetes Service (MKS) users start looking at the Gateway API?</a>”</em>, the ingress-nginx controller, the most widely used ingress controller, has now been archived.</p>



<p>Now, after 8 years of development, 275 released versions, and nearly 20k GitHub stars, the maintainers of the Kubernetes Gateway API introduced<a href="https://kubernetes.io/blog/2026/03/20/ingress2gateway-1-0-release/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"> <strong>ingress2gateway v1.0</strong></a>, a tool designed to simplify migration. It automatically converts Ingress resources including annotations into Gateway API resources. The recommended approach remains pragmatic: first migrate the controller while keeping existing Ingress objects, then gradually transition to the Gateway API. Attempting a full migration in a single step is considered risky and unnecessary.</p>



<p>Additionally, <a href="https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.5.0" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Gateway API version 1.5</a> represents a major milestone: five features have moved from experimental status to the Standard channel in a single release.</p>



<p>Amongst them:</p>



<ul class="wp-block-list">
<li><strong>ListenerSet</strong>: delegates TLS listener management outside of the Gateway&nbsp;</li>



<li><strong>TLSRoute</strong>: SNI-based routing in either termination or passthrough mode</li>



<li>Client certificate validation for mTLS at the ingress layer</li>



<li>Native CORS filter for HTTPRoute</li>
</ul>



<p>The Kubernetes Gateway API is now establishing itself as much more than just a successor to Ingress: it is evolving into Kubernetes’ unified network control plane.</p>



<h2 class="wp-block-heading">Favorite talk</h2>



<p>As usual, Aurélie wasn’t able to attend many talks, but among the 2-3 she did see, there was one that really had a &#8220;wow&#8221; effect on her:</p>



<p>« <a href="https://kccnceu2026.sched.com/event/2CW5p/an-immersive-and-visual-journey-into-kubernetes-networking-benoit-entzmann-feesh" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">An immersive and visual journey into kubernetes networking</a> ».</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100115641-1024x768.jpg" alt="" class="wp-image-31300" style="width:405px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100115641-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100115641-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100115641-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100115641-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100115641-2048x1536.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100805212-1024x768.jpg" alt="" class="wp-image-31301" style="width:407px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100805212-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100805212-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100805212-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100805212-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/PXL_20260326_100805212-2048x1536.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Benoit</strong>, a DevSecOps engineer at Feesh in Switzerland with extensive expertise in Kubernetes networking, created a video game using Godot with four levels: “pod-to-pod basics”, “pod-to-pod advanced”, “service mesh sidecar”, and “service mesh with ambient mode”.</p>



<p>Across these four levels, he explains Kubernetes networking in a vanilla setup, then with Cilium and Istio, all from the perspective of a TCP packet, represented as a fish.</p>



<p>Networking and I don’t exactly get along, and I’ll admit I’ve always struggled with it. Even now, although I’ve had no choice but to work with Kubernetes and service mesh, I still find it challenging. But seeing the fish swim from frontend to backend, enter a building underwater (the node), interact with an eBPF program… it really makes things more visual and intuitive.</p>



<p>On Thursday morning, after the keynote, the room with 2000 seats was packed!</p>



<p>Explaining networking by building a 3D game from scratch specifically for the occasion: hats off to you!</p>



<p>Benoit had an issue on stage, because he had built the game in 4K and it didn’t display properly on the projection screen. Luckily, about 30 seconds before showtime, the production team and he managed to fix it. He went on stage without showing any of that stress 💪.</p>



<p>Replay:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<span class="videowrapper embed-youtube-nocookie aspect_ratio_563"><iframe loading="lazy" title="An Immersive and Visual Journey Into Kubernetes Networking - Benoit Entzmann, Feesh" width="1200" height="675" src="https://www.youtube-nocookie.com/embed/Xtjpdy8OmQQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></span> <!-- /.videowrapper -->
</div></figure>



<h3 class="wp-block-heading" id="REXKubeCon2026Amsterdam-KubeConin45seconds">KubeCon in 45 seconds</h3>



<p>To keep memories of these 3-4 amazing days, we created a &#8220;KubeCon Europe 2026 in 45 seconds movie:</p>



<figure class="wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr"><a href="https://twitter.com/hashtag/KubeCon?src=hash&amp;ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">#KubeCon</a> 2026 in 45 seconds 🎥⏱️<br><br>The energy. Conversations. The community.<a href="https://twitter.com/hashtag/Sovereignty?src=hash&amp;ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">#Sovereignty</a>, <a href="https://twitter.com/hashtag/Kubernetes?src=hash&amp;ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">#Kubernetes</a> at scale, <a href="https://twitter.com/hashtag/reversibility?src=hash&amp;ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">#reversibility</a> — same themes in every conversation. That&#39;s why we show up.<br><br>Thanks for the moments you can&#39;t script 👋<a href="https://twitter.com/hashtag/CloudNativeCon?src=hash&amp;ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">#CloudNativeCon</a> <a href="https://t.co/dBinAqM04u" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">pic.twitter.com/dBinAqM04u</a></p>&mdash; OVHcloud (@OVHcloud) <a href="https://twitter.com/OVHcloud/status/2044048614977122614?ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">April 14, 2026</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<h3 class="wp-block-heading" id="REXKubeCon2026Amsterdam-Conclusion">Conclusion</h3>



<p>KubeCon Amsterdam proved once again that the strength of open source lies in its community.</p>



<p>From the halls of the RAI to the technical sessions, the excitement was palpable. We’re leaving with our heads full of ideas, but above all with the certainty that collaboration remains the key to solving the complex challenges of modern IT. This was particularly evident in the packed conference rooms and the crowded aisles of the exhibition hall.</p>



<p>One thing is certain: the future of Cloud Native is being written together, and we at OVHcloud look forward to contributing to it with you by helping you get the most out of Kubernetes through our<a href="https://www.ovhcloud.com/fr/public-cloud/kubernetes/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"> managed platform</a>. Because we’re convinced that for businesses in 2026, the challenge will no longer be how to run Kubernetes, but how to use it to innovate faster and better than the competition.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fkubecon-cloudnativecon-europe-2026-in-amsterdam-feedback-and-highlights%2F&amp;action_name=KubeCon%20%2B%20CloudNativeCon%20Europe%202026%20in%20Amsterdam%3A%20feedback%20and%20highlights&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>OVHcloud Startups: How to Accelerate Your Growth using Our Training Portal</title>
		<link>https://blog.ovhcloud.com/ovhcloud-startups-how-to-accelerate-your-growth-using-our-training-portal/</link>
		
		<dc:creator><![CDATA[Marine Watterlot]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 16:07:10 +0000</pubDate>
				<category><![CDATA[Ecosystem]]></category>
		<category><![CDATA[OVHcloud Startup Program]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[Startup Program]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31268</guid>

					<description><![CDATA[As a member of the OVHcloud Startup Program, you&#8217;re part of a vibrant community that&#8217;s driving innovation and digital transformation. To stay ahead of the curve, it&#8217;s essential to continuously update your skills, practices, and technologies. One way to do this is by leveraging the resources and support offered by the OVHcloud Partner Network. With [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fovhcloud-startups-how-to-accelerate-your-growth-using-our-training-portal%2F&amp;action_name=OVHcloud%20Startups%3A%20How%20to%20Accelerate%20Your%20Growth%20using%20Our%20Training%20Portal&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>As a member of the OVHcloud Startup Program, you&#8217;re part of a vibrant community that&#8217;s driving innovation and digital transformation. To stay ahead of the curve, it&#8217;s essential to continuously update your skills, practices, and technologies. One way to do this is by leveraging the resources and support offered by the OVHcloud Partner Network.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="540" height="320" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image.jpeg" alt="" class="wp-image-31269" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image.jpeg 540w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-300x178.jpeg 300w" sizes="auto, (max-width: 540px) 100vw, 540px" /></figure>



<h5 class="wp-block-heading"><strong>With the OVHcloud Startup Program, you can enhance your cloud expertise and accelerate your growth. How?</strong></h5>



<p>The Startup Program provides you with access to dedicated cloud resources, including technical consultation sessions with our engineers. These sessions can help you navigate the complexities of cloud infrastructure and optimize your cloud strategy.</p>



<p><strong>Now you can also get access to dedicated cloud training</strong>. As a Startup Program member, you can obtain cloud solutions certifications which will make you stand out from the crowd and, also, be better prepared to navigate your cloud strategy.</p>



<p>We’ve opted for a flexible training model because we trust our customers. This means that you can train independently through e-learning, whenever you want, choosing the courses that are relevant to your business and the people who need to be trained, according to their role. This saves you time and money and, thanks to the expertise you’ll gain through training, you’ll be able to deploy more cost-effective and efficient cloud solutions.</p>



<p>Our training courses and certifications give you <strong>a more qualified workforce.</strong></p>



<p>In addition to validating your technical skills, our certifications can help you develop your expertise. Plus, you can demonstrate this with our certification badges, which help you gain recognition.</p>



<p>Finally, OVHcloud offers a wide range of solutions. Our training courses will help you discover the scope of these solutions and when and how to use them. Each course is designed to help you deliver a great experience for your customers. Simply by having the right knowledge to effectively identify the best solution to meet their needs.</p>



<p>Once trained, you are also likely to have ideas for new projects.</p>



<p>Get certified and give your expertise a headstart.</p>



<p>Discover our <a href="https://partner.ovhcloud.training/?lang=e" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Training Portal&#8217;s catalog</a> to boost your expertise.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="341" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-7-1024x341.png" alt="" class="wp-image-31379" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-7-1024x341.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-7-300x100.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-7-768x256.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-7.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><a href="https://startup.ovhcloud.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://startup.ovhcloud.com/</a>Get started with the <a href="https://startup.ovhcloud.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Startup Program</a> and accelerate your growth today. Apply now and discover how our program can help you achieve your goals: <a href="https://startup.ovhcloud.com/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://startup.ovhcloud.com/</a></p>



<p></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fovhcloud-startups-how-to-accelerate-your-growth-using-our-training-portal%2F&amp;action_name=OVHcloud%20Startups%3A%20How%20to%20Accelerate%20Your%20Growth%20using%20Our%20Training%20Portal&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Evolution of our Web Hosting plans: What is changing and why</title>
		<link>https://blog.ovhcloud.com/en-webhosting-2026/</link>
		
		<dc:creator><![CDATA[Sébastien Cavaillé]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 17:00:00 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=30639</guid>

					<description><![CDATA[From May 1st, 2026, OVHcloud’s Web Hosting plans will evolve in format and execution. Concretely, this means: a new offering structure adapted to your needs, changes in the resources included in your plan, improvements in the way you can access our support, and adjustments to the pricing structure. In this article, you will find information [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fen-webhosting-2026%2F&amp;action_name=Evolution%20of%20our%20Web%20Hosting%20plans%3A%20What%20is%20changing%20and%20why&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p><strong>From May 1st, 2026, OVHcloud’s Web Hosting plans will evolve in format and execution. Concretely, this means: a new offering structure adapted to your needs, changes in the resources included in your plan, improvements in the way you can access our support, and adjustments to the pricing structure. In this article, you will find information on what is changing, why we are making these decisions, and how it might impact you.</strong></p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="321" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-13-1024x321.png" alt="" class="wp-image-30643" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-13-1024x321.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-13-300x94.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-13-768x240.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-13-1536x481.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-13-2048x641.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<h2 class="wp-block-heading" id="offers"><strong>1) We are introducing three new Web Hosting ranges</strong></h2>



<p>Our offers will be organized into <strong>three distinct ranges</strong>, each designed to match different needs and usage profiles. Whether you are launching a simple website, running a growing business, or managing multiple client projects, you can now more easily <strong>find the plan that fits your situation</strong>.</p>



<h3 class="wp-block-heading"><strong>Eco range: affordable and straightforward hosting</strong></h3>



<p>This range is designed for professionals looking for a <strong>cost-effective solution</strong>. It focuses on essential features to get a website online quickly and easily, without unnecessary complexity. <strong>All plans include the core services</strong>: disk space, email accounts, a domain name, and built-in security.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1120" height="416" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_eco-range.png" alt="" class="wp-image-31441" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_eco-range.png 1120w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_eco-range-300x111.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_eco-range-1024x380.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_eco-range-768x285.png 768w" sizes="auto, (max-width: 1120px) 100vw, 1120px" /></figure>



<p>It is ideal for simple websites, first projects, portfolios, or small business sites that need to be reliable and easy to manage from day one. You get <strong>everything you need to launch and run your site</strong>, at a price that stays accessible over time.</p>



<p>In short, we provide a straightforward, dependable hosting solution that covers the essentials, so you can focus on your project, not on technical setup.</p>



<p>If you already own a domain name with OVHcloud, you can activate your free hosting right away. <strong>Every domain includes 100 MB of hosting</strong>, so you can get your first web pages online at no additional cost. This free plan comes with one <strong>email account</strong>, the <strong>performance</strong> of our infrastructure, and the same <strong>high level of security</strong> as all our other products.</p>



<h3 class="wp-block-heading"><strong>Business range: performance and flexibility</strong></h3>



<p>The Business range is built for professionals who need more <strong>performance</strong>, <strong>flexibility</strong>, and <strong>resources</strong> to support their growth.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1120" height="577" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_business-range.png" alt="" class="wp-image-31442" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_business-range.png 1120w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_business-range-300x155.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_business-range-1024x528.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_business-range-768x396.png 768w" sizes="auto, (max-width: 1120px) 100vw, 1120px" /></figure>



<p>As your website evolves, so do your requirements: more traffic, more content, more integrations. This range provides <strong>faster loading times, more generous resources</strong> (databases, storage, email accounts), and additional technical capabilities to adapt your environment to your needs.</p>



<p>Whether you are running a business website, an e-commerce platform, or multiple projects, you benefit from a hosting solution <strong>designed to keep up with your growth while giving you more control</strong>.</p>



<p>For more demanding use cases, our Pro and Performance plans provide higher CPU and RAM allocations designed to handle traffic spikes smoothly, ensuring your websites remain responsive even during peak activity.</p>



<p>In short, this is the right balance between performance, flexibility, and cost-efficiency for growing projects.</p>



<h3 class="wp-block-heading"><strong>Agencies range: built for managing multiple clients efficiently</strong></h3>



<p>The Agencies range is designed for <strong>professionals managing several websites</strong> across multiple clients.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1120" height="582" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_agencies-range.png" alt="" class="wp-image-31443" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_agencies-range.png 1120w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_agencies-range-300x156.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_agencies-range-1024x532.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/EN_agencies-range-768x399.png 768w" sizes="auto, (max-width: 1120px) 100vw, 1120px" /></figure>



<p>When you operate multiple projects, efficiency becomes key. This range allows you to host, manage, and scale multiple websites <strong>within a single environment</strong>, helping you <strong>centralize</strong> operations and <strong>reduce costs</strong>.</p>



<p>It is particularly suited for agencies, freelancers, and service providers who need to <strong>deploy, maintain, and monitor many sites</strong> while keeping their workflow simple and scalable.</p>



<p>In short: a solution built to help you manage more projects and clients, more efficiently, while saving both time and costs, without multiplying hosting plans.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="ressources"><strong>2) More capacity to grow your projects</strong></h2>



<p>After a full renewal of our <a href="https://blog.ovhcloud.com/en-webhosting-new-compute/" type="link" id="https://blog.ovhcloud.com/en-webhosting-new-compute/" data-wpel-link="internal">compute infrastructure in 2025</a>, our Web Hosting plans are now <strong>up to 3x faster</strong>, with 2x more compute power allocated.</p>



<p>In 2026, <strong>we are upgrading our storage technology</strong>. All our Web Hosting plans are progressively moving to <strong>SSD storage</strong> to ensure faster access times and better resilience during incidents or maintenance operations. The result: improved service quality and higher availability for your websites.</p>



<p>In addition, we are <strong>increasing both the number of databases and the storage capacity</strong> per database included in our Web Hosting plans.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="707" height="463" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/speed.png" alt="" class="wp-image-31195" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/speed.png 707w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/speed-300x196.png 300w" sizes="auto, (max-width: 707px) 100vw, 707px" /></figure>



<h3 class="wp-block-heading"><strong>What’s changing</strong></h3>



<p>Many customers begin with a single website, then expand to additional projects such as blogs, landing pages, test environments, or client websites. Because our Web Hosting plans are designed to be multi-site, <strong>you can host multiple projects within a single plan</strong>. As your projects grow, database requirements naturally increase due to additional content, users, plugins, and data.</p>



<p>Our goal is simple: instead of requiring an immediate upgrade to a higher plan, we are including <strong>additional resources directly in your existing plan</strong>. This allows you to group multiple websites under the same hosting account, each with its own database. In practice, <strong>this reduces costs, simplifies management, and gives you the flexibility to scale</strong> your projects without unnecessary complexity.</p>



<h3 class="wp-block-heading"><strong>What this means for you</strong></h3>



<p><strong>Run multiple websites without additional hosting plans</strong><br>You can create and manage several websites under the same account, each with its own database, without needing to upgrade immediately.</p>



<p><strong>Install multiple CMS environments easily</strong><br>Whether you use WordPress, Joomla!, PrestaShop, or another CMS, you can deploy separate projects independently, without database limitations.</p>



<p><strong>Create staging and test environments</strong><br>You can duplicate websites to safely test updates, themes, or plugins before deploying them to production.</p>



<p><strong>Support long-term website growth</strong><br>As your traffic and content increase, larger databases provide additional capacity without the risk of quickly reaching storage limits.</p>



<p>By expanding both database capacity and quantity, we are providing more room for your projects to grow without requiring an immediate plan upgrade.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>3) Pricing update: lower entry price and long-term savings</strong></h2>



<p>As part of this evolution, our pricing structure is also changing. It has been designed with two clear objectives: <strong>maintain a very accessible entry price</strong> for new projects and <strong>deliver stronger overall value for customers choosing longer durations.</strong></p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="707" height="463" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/serenity.png" alt="" class="wp-image-31194" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/serenity.png 707w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/serenity-300x196.png 300w" sizes="auto, (max-width: 707px) 100vw, 707px" /></figure>



<h3 class="wp-block-heading"><strong>A highly competitive first year for new subscriptions</strong></h3>



<p>For any new subscription, the first-year price is intentionally kept very low.</p>



<p>For example, <strong>the Pro plan now starts at €1.99/month for the first year.</strong></p>



<p>This approach makes it easier to launch a new idea, test a concept, or start a business without significant upfront costs. Customers launching new projects benefit from one of the most competitive entry prices available.</p>



<p><strong>All core hosting features remain included</strong>: generous email accounts, a domain name included during the first year, multi-site capability, expanded database resources, and enhanced support services. In short, you keep everything that makes your hosting complete, with additional resources and improved assistance.</p>



<h3 class="wp-block-heading"><strong>Better pricing with longer durations</strong></h3>



<p><strong>We are introducing 24- and 48-month prepaid plans to help you secure the best possible rate!</strong>&nbsp;Most websites are long-term projects that grow in visibility, traffic, and business value, and we want your hosting plan to support that long-term development.</p>



<p>By selecting a longer duration, you can benefit from significant savings:</p>



<ul class="wp-block-list">
<li><strong>Choosing 24 months can represent savings equivalent to 5 to 6 months</strong> compared to annual renewals.</li>



<li><strong>Choosing 48 months can represent savings equivalent to 16 to 18 months</strong> compared to annual renewals.</li>
</ul>



<p>This approach is simple: the longer your duration, the lower your monthly price and the more predictable your hosting budget becomes.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>4) Renew now and keep your current price</strong></h2>



<p>If you are already a customer, we want to ensure your <strong>loyalty continues to be rewarded.</strong> Many of you have trusted us to host your projects for years, and we want to give you the opportunity to maintain your current pricing conditions.</p>



<p><strong>If you wish to retain your existing pricing, you can renew your hosting plan before <strong>1st</strong></strong> <strong>June 2026</strong>. This allows you to secure your current rate while continuing to benefit from all plan improvements. Renewal can be completed in just a few clicks from your Control Panel.</p>



<p>By renewing in advance, you can:</p>



<ul class="wp-block-list">
<li><strong>Lock in your current rate</strong> for the duration you choose</li>



<li>Extend your subscription for <strong>up to 4 additional years</strong></li>



<li>Continue benefiting from <strong>upgraded features</strong>, including additional databases and improved support</li>
</ul>



<p>For long-term projects, renewing now provides cost stability and better visibility on future hosting expenses.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="support"><strong>5) A redesigned and strengthened support experience</strong></h2>



<p>For many of you, <strong>running a website is more than a hobby.</strong> It can generate revenue, support clients, or represent your business online. When an issue occurs, you do not want to simply open a ticket. You expect <strong>clear guidance and fast resolution</strong>. We have listened to this feedback and are strengthening our support services to be easier to reach, faster to respond, and more helpful when you need expert advice.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="707" height="463" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/support.png" alt="" class="wp-image-31192" style="width:707px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/support.png 707w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/support-300x196.png 300w" sizes="auto, (max-width: 707px) 100vw, 707px" /></figure>



<p>Here is how your day-to-day support experience will evolve:</p>



<p><strong>Support whenever you need it</strong><br>We are progressively rolling out 24/7 availability, with expanded contact channels so you can reach us at any time, whether you are launching a new site, managing an urgent issue, or looking for guidance.</p>



<p><strong>Faster responses</strong><br>An improved live chat experience will allow you to connect quickly with our teams and receive clear answers with reduced waiting times.</p>



<p><strong>Simplified human interaction</strong><br>You will be able to call us directly from your browser and request a callback from one of our agents, allowing you to receive assistance in the way that suits you best.</p>



<p><strong>Stronger guidance and follow-up</strong><br>We are adopting a more proactive support approach, focused not only on resolving issues but also on advising you and helping you move your projects forward with confidence.</p>



<p>Our objective is straightforward: make it easier and faster for you to get help when you need it. Whether you are launching a new website, managing updates, or troubleshooting an issue, we are continuously investing to deliver a smoother customer experience.</p>



<p>These improvements reflect our commitment to supporting both beginners and advanced users with reliable and accessible assistance. They are currently being prepared and will be progressively deployed to ensure quality and stability.</p>



<h2 class="wp-block-heading" id="partners"><strong>6) Dedicated offers for Partners and Agencies (coming soon)</strong></h2>



<p>Some customers go beyond managing their own websites. They design, deploy, and resell complete web environments for their clients, including hosting, domain names, email services, and other solutions, sometimes under their own brand. Resellers and agencies often operate across the entire OVHcloud ecosystem and <strong>require solutions adapted to multi-client and multi-service environments</strong>.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="707" height="463" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/partners.png" alt="" class="wp-image-31198" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/partners.png 707w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/partners-300x196.png 300w" sizes="auto, (max-width: 707px) 100vw, 707px" /></figure>



<p>Managing a Web Cloud portfolio typically involves:</p>



<ul class="wp-block-list">
<li><strong>Coordinating updates</strong> across multiple customer environments</li>



<li><strong>Ensuring availability and performance</strong> across all hosted projects</li>



<li><strong>Responding quickly </strong>when customer services are impacted</li>



<li><strong>Optimizing costs</strong> and margins across service portfolios</li>
</ul>



<p>We are preparing a dedicated offer designed specifically for these use cases.<br>This upcoming partner offering will include:</p>



<ul class="wp-block-list">
<li><strong>Premium and prioritized support</strong> with clearer escalation paths for business-critical situations</li>



<li><strong>Preferential pricing </strong>tailored to multi-product portfolios</li>



<li><strong>Management tools designed for agencies </strong>to simplify deployment, monitoring, and maintenance across multiple services for your multiple customers.&nbsp;</li>
</ul>



<p>More details will be shared soon. We look forward to developing this offer in collaboration with our partner ecosystem.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="roadmap"><strong>7) New features </strong></h2>



<p>We are continuously improving our Web Hosting platform, and several major enhancements are already underway.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="707" height="463" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/features.png" alt="" class="wp-image-31199" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/features.png 707w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/features-300x196.png 300w" sizes="auto, (max-width: 707px) 100vw, 707px" /></figure>



<p><strong>We have recently completed a full renewal of our compute infrastructure to deliver improved performance and reliability across all hosted websites</strong>. <a href="https://blog.ovhcloud.com/en-webhosting-new-compute/" data-wpel-link="internal">Read more about it on our dedicated blog article</a>.</p>



<p>We are also <strong>currently replacing our storage infrastructure </strong>with the same objective: delivering improved performance, resilience, and long-term data reliability.</p>



<p>These infrastructure upgrades are part of a broader and transparent product roadmap. We openly share our development priorities so you can track ongoing and upcoming improvements.</p>



<p>Beyond infrastructure, upcoming enhancements include:</p>



<ul class="wp-block-list">
<li>Simplified WordPress management through <strong>Managed Hosting for WordPress </strong>(<a href="https://labs.ovhcloud.com/en/managed-wp" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">currently available in beta</a>), providing increased automation and easier daily administration.</li>



<li>Our new <strong>video hosting solution</strong> designed to deliver media content without relying on third-party platforms. <a href="https://labs.ovhcloud.com/en/video-webhosting/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Discover the Video Center!</a></li>



<li><strong>New AI-powered features</strong> to help manage, optimize, and secure your websites</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Our commitment to you</strong></h2>



<p>Whether you are running a personal website, launching a business, or managing multiple projects, our objective remains unchanged: deliver a powerful, reliable, and cost-efficient platform that supports your growth over time and continuously improve your hosting experience with practical features that simplify daily management while strengthening performance and reliability.&nbsp;</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fen-webhosting-2026%2F&amp;action_name=Evolution%20of%20our%20Web%20Hosting%20plans%3A%20What%20is%20changing%20and%20why&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Reference Architecture: Deploying a vision-language model with vLLM on OVHcloud MKS for high performance inference and full observability</title>
		<link>https://blog.ovhcloud.com/reference-architecture-deploying-a-vision-language-model-with-vllm-on-ovhcloud-mks-for-high-performance-inference-and-full-observability/</link>
		
		<dc:creator><![CDATA[Eléa Petton]]></dc:creator>
		<pubDate>Fri, 10 Apr 2026 07:48:53 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[prometheus]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[vLLM]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=30455</guid>

					<description><![CDATA[Ensure complete&#160;digital sovereignty&#160;of your AI models with end-to-end control through open-source solutions on OVHcloud’s&#160;Managed Kubernetes Service. This reference architecture demonstrates how to deploy a Large Language Model (LLM) inference system using vLLM on&#160;OVHcloud Managed Kubernetes Service&#160;(MKS). The solution leverages NVIDIA L40S GPUs to serve the&#160;Qwen3-VL-8B-Instruct&#160;multimodal model (vision + text) with OpenAI-compatible API endpoints. This comprehensive [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Freference-architecture-deploying-a-vision-language-model-with-vllm-on-ovhcloud-mks-for-high-performance-inference-and-full-observability%2F&amp;action_name=Reference%20Architecture%3A%20Deploying%20a%20vision-language%20model%20with%20vLLM%20on%20OVHcloud%20MKS%20for%20high%20performance%20inference%20and%20full%20observability&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p><em><em>Ensure complete&nbsp;<strong>digital sovereignty</strong>&nbsp;of your AI models with end-to-end control through open-source solutions on OVHcloud’s&nbsp;<strong>Managed Kubernetes Service</strong>.</em></em></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="703" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/ref-archi-mks-vllm-703x1024.jpg" alt="vLLM on OVHcloud MKS for high availability and full observability" class="wp-image-31153" style="width:710px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/ref-archi-mks-vllm-703x1024.jpg 703w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/ref-archi-mks-vllm-206x300.jpg 206w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/ref-archi-mks-vllm-768x1118.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/ref-archi-mks-vllm-1055x1536.jpg 1055w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/ref-archi-mks-vllm.jpg 1260w" sizes="auto, (max-width: 703px) 100vw, 703px" /><figcaption class="wp-element-caption"><em><em>vLLM on OVHcloud MKS for high availability and full observability</em></em></figcaption></figure>



<p>This reference architecture demonstrates how to deploy a Large Language Model (LLM) inference system using vLLM on&nbsp;<a href="https://www.ovhcloud.com/fr/public-cloud/kubernetes/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Managed Kubernetes Service</a>&nbsp;(MKS). The solution leverages NVIDIA L40S GPUs to serve the&nbsp;<a href="https://huggingface.co/Qwen/Qwen3-VL-8B-Instruct" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Qwen3-VL-8B-Instruct</a>&nbsp;multimodal model (vision + text) with OpenAI-compatible API endpoints.</p>



<p>This comprehensive guide shows you how to deploy, to scale automatically, and how to monitor vLLM-based LLM workloads on the OVHcloud infrastructure.</p>



<p><strong>What are the key benefits?</strong></p>



<ul class="wp-block-list">
<li><strong>Cost-effectiveness:</strong>&nbsp;Leverage managed services to minimise operational overhead</li>



<li><strong>Real-time observability:</strong>&nbsp;Track Time-to-First-Token (TTFT), throughput, and resource utilisation</li>



<li><strong>Sovereign infrastructure:</strong>&nbsp;Keep all metrics and data within European datacentres</li>



<li><strong>Scalable by design:</strong>&nbsp;Automatically scale GPU inference replicas based on real workload demand</li>
</ul>



<h2 class="wp-block-heading">Context</h2>



<h3 class="wp-block-heading">Managed Kubernetes Service</h3>



<p><strong>OVHcloud MKS</strong>&nbsp;is a fully managed Kubernetes platform designed to help you deploy, operate, and scale containerised applications in production. It provides a secure and reliable Kubernetes environment without the operational overhead of managing the control plane.</p>



<p><strong>How does this benefit you?</strong></p>



<ul class="wp-block-list">
<li><strong>Cost-efficient</strong>: Pay only for worker nodes and consumed resources, with no additional charge for the Kubernetes control plane</li>



<li><strong>Fully managed Kubernetes</strong>: Certified upstream Kubernetes with automated control plane management, provided upgrades and high availability</li>



<li><strong>Production-ready by design</strong>: Built-in integrations with OVHcloud Load Balancers, networking, and persistent storage</li>



<li><strong>Scalable and flexible</strong>: Scale workloads easily, node pools to match application demand</li>



<li><strong>Open and portable</strong>: Based on standard Kubernetes APIs, enable seamless integration with open-source ecosystems and avoid vendor lock-in</li>
</ul>



<p>In the following guide, all services are deployed within the&nbsp;<strong>OVHcloud Public Cloud</strong>.</p>



<h2 class="wp-block-heading">Architecture overview</h2>



<p>This reference architecture demonstrates a basic deployment of vLLM for vision-language model inference on OVHcloud Managed Kubernetes Service, featuring:</p>



<ul class="wp-block-list">
<li><strong>High-availability deployment</strong>&nbsp;with 2 GPU nodes (NVIDIA L40S)</li>



<li><strong>Optimised GPU utilisation</strong>&nbsp;with proper driver configuration</li>



<li><strong>Scalable infrastructure</strong>&nbsp;supporting vision-language models</li>



<li><strong>Comprehensive monitoring</strong>&nbsp;using Prometheus, Grafana, and DCGM</li>



<li><strong>Full observability</strong>&nbsp;for both application and hardware metrics</li>
</ul>



<p><strong>Data flow</strong>:</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-3-1-1024x538.jpg" alt="" class="wp-image-30985" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-3-1-1024x538.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-3-1-300x158.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-3-1-768x403.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-3-1-1536x806.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-3-1-2048x1075.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"><em>Data Flow</em></figcaption></figure>



<ol class="wp-block-list">
<li><strong>Inference request:</strong>
<ul class="wp-block-list">
<li>User → LoadBalancer → Gateway → NGINX Ingress → &#8220;Qwen3 VL&#8221; Service → vLLM Pod → GPU</li>



<li>Response follows reverse path with streaming support</li>
</ul>
</li>



<li><strong>Metrics collection:</strong>
<ul class="wp-block-list">
<li>vLLM Pods expose <code>/metrics</code> endpoint (port <code><strong><mark class="has-inline-color has-ast-global-color-0-color">8000</mark></strong></code>)</li>



<li>DCGM Exporters expose GPU metrics (port <code><strong><mark class="has-inline-color has-ast-global-color-0-color">9400</mark></strong></code>)</li>



<li>Prometheus scrapes both endpoints every 30 seconds</li>



<li>Grafana queries Prometheus for visualization</li>
</ul>
</li>



<li><strong>Load distribution</strong>
<ul class="wp-block-list">
<li>NGINX Ingress uses cookie-based session affinity</li>



<li>vLLM Service uses ClientIP session affinity</li>



<li>Anti-affinity ensures 1 pod per GPU node</li>
</ul>
</li>
</ol>



<h2 class="wp-block-heading">Prerequisites</h2>



<p>Before you begin, ensure you have:</p>



<ul class="wp-block-list">
<li>An&nbsp;<strong>OVHcloud Public Cloud</strong>&nbsp;account</li>



<li>An&nbsp;<strong>OpenStack user</strong>&nbsp;with the<a href="https://help.ovhcloud.com/csm/en-gb-public-cloud-ai-users?id=kb_article_view&amp;sysparm_article=KB0048170" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">&nbsp;</a><strong><code>Administrator</code></strong>&nbsp;role</li>



<li><strong>Hugging Face access</strong>&nbsp;–&nbsp;<em>create a&nbsp;<a href="https://huggingface.co/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Hugging Face account</a>&nbsp;and generate an&nbsp;<a href="https://huggingface.co/settings/tokens" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">access token</a></em></li>



<li><code><strong>kubectl</strong></code>&nbsp;already installed and&nbsp;<code><strong>helm</strong></code>&nbsp;installed (at least version 3.x)</li>
</ul>



<p><strong>🚀 Now you have all the ingredients, it’s time to deploy the recipe for&nbsp;<a href="https://huggingface.co/Qwen/Qwen3-VL-8B-Instruct" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Qwen/Qwen3-VL-8B-Instruct</a>&nbsp;using vLLM and MKS!</strong></p>



<h2 class="wp-block-heading">Architecture guide: Native GPU deployment of vLLM on MKS with full stack observability</h2>



<p>This reference architecture describes a<strong>&nbsp;Large Language Model</strong>&nbsp;deployment using&nbsp;<strong>vLLM inference server&nbsp;</strong>and&nbsp;<strong>Kubernetes</strong>, to enjoy the&nbsp;benefits of a service that&#8217;s both highly available and monitorable in real time.</p>



<h3 class="wp-block-heading">Step 1 &#8211; Create MKS cluster and Node pools</h3>



<p>From&nbsp;<a href="https://www.ovh.com/manager/" target="_blank" rel="noreferrer noopener" data-wpel-link="exclude">OVHcloud Control Panel</a>, create a Kubernetes cluster using the&nbsp;<strong>MKS</strong>. </p>



<p>Navigate to: <code>Public Cloud</code> → <code>Managed Kubernetes Service</code> → <code>Create a cluster</code></p>



<h4 class="wp-block-heading">1. Configure cluster</h4>



<p>Consider using the following configuration for the current use case:</p>



<ul class="wp-block-list">
<li><strong>Name:</strong> <code><strong><mark class="has-inline-color has-ast-global-color-0-color">vllm-deployment-l40s-qwen3-8b</mark></strong></code></li>



<li><strong>Location</strong>: 1-AZ Region &#8211; Gravelines (<code><strong><mark class="has-inline-color has-ast-global-color-0-color">GRA11</mark></strong></code>)</li>



<li><strong>Plan:</strong> Free (or Standard)</li>



<li><strong>Network</strong>: attach a <strong>Private network </strong>(e.g. <code><strong><mark class="has-inline-color has-ast-global-color-0-color">0000 - AI Private Network</mark></strong></code>)</li>



<li><strong>Version:</strong> Latest stable (e.g. <code><strong><mark class="has-inline-color has-ast-global-color-0-color">1.34</mark></strong></code>)</li>
</ul>



<h4 class="wp-block-heading">2. Create GPU Node pool</h4>



<p>During the cluster creation, configure the vLLM Node pool for GPUs:</p>



<ul class="wp-block-list">
<li><strong>Node pool name:</strong> <code><mark class="has-inline-color has-ast-global-color-0-color">vllm</mark></code></li>



<li><strong>Flavor:</strong> <code><mark class="has-inline-color has-ast-global-color-0-color">L40S-90</mark></code></li>



<li><strong>Number of nodes:</strong> <code><mark class="has-inline-color has-ast-global-color-0-color">2</mark></code></li>



<li><strong>Autoscaling:</strong> Disabled (OFF)</li>
</ul>



<p><strong>Why L40S-90?</strong></p>



<ul class="wp-block-list">
<li>Cost-effective for single-model deployment (1 GPU per node)</li>



<li>Sufficient RAM (90GB) for <strong><code><mark class="has-inline-color has-ast-global-color-0-color">Qwen3-VL-8B</mark></code></strong> model</li>
</ul>



<p>You should see your cluster (e.g.&nbsp;<code><strong><mark class="has-inline-color has-ast-global-color-0-color">vllm-deployment-l40s-qwen3-8b</mark></strong></code>) in the list, along with the following information:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="588" src="https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-1.png" alt="" class="wp-image-30745" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-1.png 930w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-1-300x190.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-1-768x486.png 768w" sizes="auto, (max-width: 930px) 100vw, 930px" /></figure>



<p>You can now set up the node pool dedicated to monitoring.</p>



<h4 class="wp-block-heading">3. Create CPU Node pool</h4>



<p>From your cluster, click on <code><strong><mark class="has-inline-color has-ast-global-color-0-color">Add a node pool</mark></strong></code> and configure it as follow:</p>



<ul class="wp-block-list">
<li><strong>Node pool name:</strong> <mark class="has-inline-color has-ast-global-color-0-color"><code>monitoring</code></mark></li>



<li><strong>Flavor:</strong> <code><mark class="has-inline-color has-ast-global-color-0-color">B2-15</mark></code></li>



<li><strong>Number of nodes:</strong> <code><mark class="has-inline-color has-ast-global-color-0-color">1</mark></code></li>



<li><strong>Autoscaling:</strong> Disabled (OFF)</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>✅ <strong>Note</strong></p>



<p><strong><em>Monitoring stack can run on GPU nodes if cost is a concern. Dedicated CPU node provides better isolation and resource management.</em></strong></p>
</blockquote>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="365" src="https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-node-pool-creation-1024x365.png" alt="" class="wp-image-30743" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-node-pool-creation-1024x365.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-node-pool-creation-300x107.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-node-pool-creation-768x274.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-node-pool-creation.png 1283w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>If the status is green with the&nbsp;<strong><code><mark class="has-inline-color has-ast-global-color-0-color">OK</mark></code></strong>&nbsp;label, you can proceed to the next step.</p>



<h4 class="wp-block-heading">4. Configure Kubernetes access</h4>



<p>Once your nodes have been provisioned, you can download the <strong>Kubeconfig file</strong> and configure kubectl with your MKS cluster.</p>



<pre class="wp-block-code"><code class=""># configure kubectl with your MKS cluster<br>export KUBECONFIG=/path/to/your/kubeconfig-xxxxxx.yml<br><br># verify cluster connectivity<br>kubectl cluster-info<br>kubectl get nodes</code></pre>



<p>Returning:</p>



<p><code>NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; STATUS &nbsp; ROLES&nbsp; &nbsp; AGE &nbsp; VERSION<br>monitoring-node-xxxxxx &nbsp; Ready&nbsp; &nbsp; &lt;none&gt; &nbsp; 1d &nbsp; v1.34.2<br>vllm-node-yyyyyy &nbsp; &nbsp; &nbsp; &nbsp; Ready&nbsp; &nbsp; &lt;none&gt; &nbsp; 1d &nbsp; v1.34.2<br>vllm-node-zzzzzz &nbsp; &nbsp; &nbsp; &nbsp; Ready&nbsp; &nbsp; &lt;none&gt; &nbsp; 1d &nbsp; v1.34.2</code></p>



<p>Before going further, add a label to the CPU node for monitoring workloads.</p>



<pre class="wp-block-code"><code class="">CPU_NODE=$(kubectl get nodes -o json | \<br>  jq -r '.items[] | select(.status.allocatable."nvidia.com/gpu" == null) | .metadata.name')<br>kubectl label node $CPU_NODE node-role=monitoring</code></pre>



<p>Finally, check with the following command:</p>



<pre class="wp-block-code"><code class="">NAME                     GPU      ROLE<br>monitoring-node-xxxxxx   &lt;none&gt;   monitoring<br>vllm-node-yyyyyy         1        &lt;none&gt;<br>vllm-node-zzzzzz         1        &lt;none&gt;</code></pre>



<p>Once both nodes are in <strong>Ready</strong> status, you can proceed to the next step.</p>



<h3 class="wp-block-heading">Step 2 &#8211; Install GPU operator</h3>



<p>To start, consider setting up the GPU operator.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>✅ Note</strong></p>



<p><em><strong>This step is based on this OVHcloud documentation: <a href="https://help.ovhcloud.com/csm/en-gb-public-cloud-kubernetes-deploy-gpu-application?id=kb_article_view&amp;sysparm_article=KB0049707" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Deploying a GPU application on OVHcloud Managed Kubernetes Service</a></strong></em></p>
</blockquote>



<h4 class="wp-block-heading">1. Add NVIDIA helm repository and create namespace</h4>



<p>Add NVIDIA helm repo:</p>



<pre class="wp-block-code"><code class="">helm repo add nvidia https://helm.ngc.nvidia.com/nvidia<br>helm repo update</code></pre>



<p>And create Namespace as follow.</p>



<pre class="wp-block-code"><code class="">kubectl create namespace gpu-operator</code></pre>



<h4 class="wp-block-heading">2. Install GPU operator with correct configuration</h4>



<p>The GPU Operator must be configured with specific driver versions to ensure compatibility with vLLM containers.</p>



<p>However, the default installation uses recent drivers (<code><strong><mark class="has-inline-color has-ast-global-color-0-color">580.x</mark></strong></code> with <strong><code><mark class="has-inline-color has-ast-global-color-0-color">CUDA 13.x</mark></code></strong>) which are incompatible with vLLM containers (<strong><code><mark class="has-inline-color has-ast-global-color-0-color">CUDA 12.x</mark></code></strong>).</p>



<p><strong>Solution:</strong> Force driver version <strong><code><mark class="has-inline-color has-ast-global-color-0-color">535.183.01</mark></code></strong> (<code><strong><mark class="has-inline-color has-ast-global-color-0-color">CUDA 12.2</mark></strong></code>).</p>



<pre class="wp-block-code"><code class="">helm install gpu-operator nvidia/gpu-operator \<br>  -n gpu-operator \<br>  --set driver.enabled=true \<br>  --set driver.version="535.183.01" \<br>  --set toolkit.enabled=true \<br>  --set operator.defaultRuntime=containerd \<br>  --set devicePlugin.enabled=true \<br>  --set dcgmExporter.enabled=true \<br>  --set dcgmExporter.image="dcgm-exporter" \<br>  --set dcgmExporter.version="3.1.7-3.1.4-ubuntu20.04" \<br>  --set gfd.enabled=true \<br>  --set migManager.enabled=false \<br>  --set nodeStatusExporter.enabled=true \<br>  --set validator.driver.enable=false \<br>  --set validator.toolkit.enable=false \<br>  --set validator.plugin.enable=false \<br>  --timeout 20m</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>✅ <strong>Note </strong></p>



<p><em><strong>Specifying the DCGM version may only be necessary if you encounter problems with the default image (e.g. <code><mark class="has-inline-color has-ast-global-color-0-color">‘ImagePullBackOff’</mark></code>). If this is the case, add the following parameters:<br><code><mark class="has-inline-color has-ast-global-color-0-color">--set dcgmExporter.repository="nvcr.io/nvidia/k8s"<br>--set dcgmExporter.image="dcgm-exporter"<br>--set dcgmExporter.version="3.1.7-3.1.4-ubuntu20.04"</mark></code></strong></em></p>
</blockquote>



<pre class="wp-block-code"><code class="">kubectl get pods -n gpu-operator</code></pre>



<p>Note that all pods should reach <strong>Running</strong> state in 5-10 minutes.</p>



<p>You can also check the GPU availability:</p>



<pre class="wp-block-code"><code class="">kubectl get nodes -o json | jq -r '.items[] | select(.status.allocatable."nvidia.com/gpu" != null) | "\(.metadata.name): \(.status.allocatable."nvidia.com/gpu") GPU(s)"'</code></pre>



<p>Returning:</p>



<p><code>vllm-node-<code>yyyyyy</code>: 1 GPU(s)<br>vllm-node-zzzzzz: 1 GPU(s)</code></p>



<p>And you can test to run <code><strong><mark class="has-inline-color has-ast-global-color-0-color">nvidia-smi</mark></strong></code>:</p>



<pre class="wp-block-code"><code class="">DRIVER_POD=$(kubectl get pods -n gpu-operator -l app=nvidia-driver-daemonset -o name | head -1)<br>kubectl exec -n gpu-operator $DRIVER_POD -- nvidia-smi</code></pre>



<p>If GPU tests are working properly, you can move on DCGM service configuration.</p>



<h4 class="wp-block-heading">3. Configure DCGM service</h4>



<p><strong>Why is DCGM Exporter required?</strong></p>



<p>DCGM (Data Centre GPU Manager) is NVIDIA&#8217;s official tool for monitoring GPUs in production. The goal is to be able to collect and display metrics from both GPU nodes.</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="571" src="https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-1-1024x571.jpg" alt="" class="wp-image-30746" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-1-1024x571.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-1-300x167.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-1-768x428.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-1-1536x856.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/data_ia_archi-1.jpg 1733w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"><em>GPU monitoring with DCGM</em></figcaption></figure>



<p>The metrics provided are:</p>



<ul class="wp-block-list">
<li><code><strong><mark class="has-inline-color has-ast-global-color-0-color">DCGM_FI_DEV_GPU_UTIL</mark></strong></code> &#8211; GPU utilisation (%)</li>



<li><strong><code><mark class="has-inline-color has-ast-global-color-0-color">DCGM_FI_DEV_GPU_TEMP</mark></code></strong> &#8211; GPU temperature (°C)</li>



<li><strong><code><mark class="has-inline-color has-ast-global-color-0-color">DCGM_FI_DEV_FB_USED</mark></code></strong> &#8211; VRAM used (MB)</li>



<li><strong><code><mark class="has-inline-color has-ast-global-color-0-color">DCGM_FI_DEV_FB_FREE</mark></code></strong> &#8211; Free VRAM (MB)</li>



<li><strong><code><mark class="has-inline-color has-ast-global-color-0-color">DCGM_FI_DEV_POWER_USAGE</mark></code></strong> &#8211; Power consumption (W)</li>



<li>And 50+ other GPU metrics</li>
</ul>



<p>Next, ensure DCGM service has the correct labels and port configuration:</p>



<pre class="wp-block-code"><code class="">kubectl patch svc nvidia-dcgm-exporter -n gpu-operator --type merge -p '{<br>  "metadata": {<br>    "labels": {<br>      "app": "nvidia-dcgm-exporter"<br>    }<br>  },<br>  "spec": {<br>    "ports": [<br>      {<br>        "name": "metrics",<br>        "port": 9400,<br>        "targetPort": 9400,<br>        "protocol": "TCP"<br>      }<br>    ]<br>  }<br>}'</code></pre>



<p>Verify the endpoints (should show 2 IPs, one per GPU node).</p>



<pre class="wp-block-code"><code class="">kubectl get endpoints nvidia-dcgm-exporter -n gpu-operator</code></pre>



<p><code>NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ENDPOINTS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AGE<br>nvidia-dcgm-exporter &nbsp; x.x.x.x:9400,x.x.x.x:9400 &nbsp; 17d</code></p>



<h3 class="wp-block-heading">Step 3 &#8211; Deploy Qwen3 VL 8B with vLLM inference server</h3>



<p>The deployment of the <strong>Qwen 3 VL 8B</strong> model on two L40S GPU nodes is carried out in several stages.</p>



<h4 class="wp-block-heading">1. Create namespace and Hugging Face secret</h4>



<p>Start by creating Namespace:</p>



<pre class="wp-block-code"><code class="">kubectl create namespace vllm</code></pre>



<p>Next, you must retrieve your Hugging Face token and replace the&nbsp;<code><strong><mark class="has-inline-color has-ast-global-color-0-color">HF_TOKEN</mark></strong></code>&nbsp;value by your own:</p>



<pre class="wp-block-code"><code class="">export HF_TOKEN="hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"</code></pre>



<p>Create your secret as follow:</p>



<pre class="wp-block-code"><code class="">kubectl create secret generic huggingface-secret \<br>  --from-literal=token=$HF_TOKEN \<br>  --namespace=vllm</code></pre>



<p>Verify you obtain the following output by launching:</p>



<pre class="wp-block-code"><code class="">kubectl get secret huggingface-secret -n vllm</code></pre>



<p><code>NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TYPE &nbsp; &nbsp; DATA &nbsp; AGE<br>huggingface-secret &nbsp; Opaque &nbsp; 1&nbsp; &nbsp; &nbsp; 14d</code></p>



<h4 class="wp-block-heading">2. Create vLLM deployment configuration</h4>



<p>First, you can create <code><strong><a href="https://github.com/ovh/public-cloud-examples/blob/main/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/vllm/vllm-deployment-2nodes.yaml" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">vllm-deployment-2nodes.yaml</a></strong></code> file.</p>



<p>Deploy vLLM:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f vllm-deployment-2nodes.yaml</code></pre>



<p>You can monitor the deployment (it should take 8-10 minutes for model download and loading).</p>



<pre class="wp-block-code"><code class="">kubectl get pods -n vllm -o wide -w</code></pre>



<p>Expected output after 10 minutes:</p>



<pre class="wp-block-code"><code class="">NAME               READY  STATUS   RESTARTS  AGE  IP       NODE  <br>qwen3-vl-xxxx-yyy  1/1    Running  0         1d   X.X.X.X  vllm-node-yyyyyy<br>qwen3-vl-xxxx-zzz  1/1    Running  0         1d   X.X.X.X  vllm-node-zzzzzz</code></pre>



<p>You can also check the container logs:</p>



<pre class="wp-block-code"><code class="">kubectl logs -f -n vllm &lt;pod-name&gt;</code></pre>



<p>You should find in the logs: &#8220;<code>Uvicorn running on http://0.0.0.0:8000</code>&#8220;</p>



<p>Is everything installed correctly? Then let&#8217;s move on to the next step.</p>



<h4 class="wp-block-heading">3. Add service label</h4>



<p>Ensure service has the correct label for <strong><code><mark class="has-inline-color has-ast-global-color-0-color">ServiceMonitor</mark></code></strong> discovery.</p>



<pre class="wp-block-code"><code class="">kubectl label svc qwen3-vl-service -n vllm app=qwen3-vl --overwrite</code></pre>



<p>You can now verify by launching the following command.</p>



<pre class="wp-block-code"><code class="">kubectl get svc qwen3-vl-service -n vllm --show-labels | grep "app=qwen3-vl"</code></pre>



<p>Returning:</p>



<p><code>qwen3-vl-service&nbsp; ClusterIP&nbsp; X.X.X.X &nbsp;&lt;none&gt;  8000/TCP  1d &nbsp;app=qwen3-vl</code></p>



<h3 class="wp-block-heading">Step 4 &#8211; Install NGINX ingress controller</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><mark style="color:#cf2e2e" class="has-inline-color">⚠️ <strong>Moving beyond Ingress</strong></mark></p>



<p><strong><em><mark style="color:#cf2e2e" class="has-inline-color">Follow this <a href="https://blog.ovhcloud.com/moving-beyond-ingress-why-should-ovhcloud-managed-kubernetes-service-mks-users-start-looking-at-the-gateway-api/" data-wpel-link="internal">tutorial</a> if you want to use Gateway instead of Ingress.</mark></em></strong></p>
</blockquote>



<h4 class="wp-block-heading">1. Add helm repository and configure Ingress</h4>



<p>First of all, add helm repository:</p>



<pre class="wp-block-code"><code class="">helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx<br>helm repo update</code></pre>



<p>Create configuration file with <code><strong><a href="https://github.com/ovh/public-cloud-examples/blob/main/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/ingress/ingress-nginx-values.yaml" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">ingress-nginx-values.yaml</a></strong></code>.</p>



<p>Then, install NGINX Ingress:</p>



<pre class="wp-block-code"><code class="">helm install ingress-nginx ingress-nginx/ingress-nginx \<br>  --namespace ingress-nginx \<br>  --create-namespace \<br>  -f ingress-nginx-values.yaml \<br>  --wait</code></pre>



<p>Wait for LoadBalancer IP. The external IP assignment should take 1-2 minutes.</p>



<pre class="wp-block-code"><code class="">kubectl get svc -n ingress-nginx ingress-nginx-controller -w</code></pre>



<p>Once <code><strong><mark class="has-inline-color has-ast-global-color-0-color">&lt;EXTERNAL-IP&gt;</mark></strong></code> is no longer , Ctrl+C and export it:</p>



<pre class="wp-block-code"><code class="">export EXTERNAL_IP=&lt;EXTERNAL-IP&gt;<br>echo "API URL: http://$EXTERNAL_IP"</code></pre>



<h4 class="wp-block-heading">2. Create vLLM Ingress resource</h4>



<p>Next, create vLLM Ingress using <strong><code><a href="https://github.com/ovh/public-cloud-examples/blob/ep-vllm-deployment-observability-mks/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/vllm/vllm-ingress.yaml" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">vllm-ingress.yaml</a></code></strong>.</p>



<p>Apply it as follow:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f vllm-ingress.yaml</code></pre>



<p>You can now test different API calls to verify that your deployment is functional.</p>



<h4 class="wp-block-heading">3. Test API</h4>



<p>Firstly, check if the model is available:</p>



<pre class="wp-block-code"><code class="">curl http://$EXTERNAL_IP/v1/models | jq</code></pre>



<pre class="wp-block-preformatted"><code>{<br>  "object": "list",<br>  "data": [<br>    {<br>      "id": "qwen3-vl-8b",<br>      "object": "model",<br>      "created": 1772472143,<br>      "owned_by": "vllm",<br>      "root": "Qwen/Qwen3-VL-8B-Instruct",<br>      "parent": null,<br>      "max_model_len": 8192,<br>      "permission": [<br>        {<br>          "id": "modelperm-8fb35cdd3208b068",<br>          "object": "model_permission",<br>          "created": 1772472143,<br>          "allow_create_engine": false,<br>          "allow_sampling": true,<br>          "allow_logprobs": true,<br>          "allow_search_indices": false,<br>          "allow_view": true,<br>          "allow_fine_tuning": false,<br>          "organization": "*",<br>          "group": null,<br>          "is_blocking": false<br>        }<br>      ]<br>    }<br>  ]<br>}</code></pre>



<p>Next, test inference using the following request:</p>



<pre class="wp-block-code"><code class="">curl http://$EXTERNAL_IP/v1/chat/completions \<br>  -H "Content-Type: application/json" \<br>  -d '{<br>    "model": "qwen3-vl-8b",<br>    "messages": [{"role": "user", "content": "Count from 1 to 10."}],<br>    "max_tokens": 100<br>  }' | jq '.choices[0].message.content'</code></pre>



<p><code>"1, 2, 3, 4, 5, 6, 7, 8, 9, 10"</code></p>



<p>Great! You&#8217;re almost there…</p>



<h3 class="wp-block-heading">Step 5 &#8211; Install Prometheus stack</h3>



<p>Now, set up the monitoring stack that provides complete observability for&nbsp;<strong>application-level&nbsp;</strong>(vLLM) and&nbsp;<strong>hardware-level</strong>&nbsp;(GPU) metrics:</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="763" src="https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-architecture-1024x763.jpg" alt="" class="wp-image-30871" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-architecture-1024x763.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-architecture-300x223.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-architecture-768x572.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-architecture-1536x1144.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/monitoring-architecture.jpg 1673w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"><em>Monitoring architecture</em></figcaption></figure>



<h4 class="wp-block-heading">1. Add helm repository and create namespace</h4>



<p>Add Prometheus helm repo:</p>



<pre class="wp-block-code"><code class="">helm repo add prometheus-community https://prometheus-community.github.io/helm-charts<br>helm repo update</code></pre>



<p>Then, create the <code><strong><mark class="has-inline-color has-ast-global-color-0-color">monitoring</mark></strong></code> Namespace.</p>



<pre class="wp-block-code"><code class="">kubectl create namespace monitoring</code></pre>



<h4 class="wp-block-heading">2. Create Prometheus deployment configuration and installation</h4>



<p>First, create <code><strong><a href="https://github.com/ovh/public-cloud-examples/blob/main/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/monitoring/prometheus.yaml" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">prometheus.yaml</a></strong></code> file.</p>



<p>Install Prometheus stack:</p>



<pre class="wp-block-code"><code class="">helm install prometheus prometheus-community/kube-prometheus-stack \<br>  -n monitoring \<br>  -f prometheus.yaml \<br>  --timeout 10m \<br>  --wait</code></pre>



<p>Now,&nbsp;monitor its installation and wait until the pods are ready:</p>



<pre class="wp-block-code"><code class="">kubectl get pods -n monitoring -w</code></pre>



<p>If all pods are running successfully, you can proceed to the next step.</p>



<h4 class="wp-block-heading">3. Check that the installation is operational</h4>



<p>First access Grafana in background:</p>



<pre class="wp-block-code"><code class="">kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80 &amp;</code></pre>



<p>Test Grafana health:</p>



<pre class="wp-block-code"><code class="">curl -s http://localhost:3000/api/health | jq</code></pre>



<pre class="wp-block-preformatted"><code>{<br>  "database": "ok",<br>  "version": "12.3.3",<br>  "commit": "2a14494b2d6ab60f860d8b27603d0ccb264336f6"<br>}</code></pre>



<p>You can now access to Grafana locally via <strong><a href="http://localhost:3000" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><code>http://localhost:3000</code></a></strong>. You will have to use:</p>



<ul class="wp-block-list">
<li>Login: <code><strong><mark style="color:#cf2e2e" class="has-inline-color">admin</mark></strong></code></li>



<li>Password: <code><strong><mark style="color:#cf2e2e" class="has-inline-color">Admin123!vLLM</mark></strong></code></li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="518" src="https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-2-1024x518.png" alt="" class="wp-image-30804" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-2-1024x518.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-2-300x152.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-2-768x389.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-2.png 1322w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Well done! You can now proceed to the configuration step.</p>



<h3 class="wp-block-heading">Step 6 &#8211; Configure ServiceMonitors</h3>



<p>The ServiceMonitors is used to tell Prometheus which endpoints to scrape for metrics.</p>



<h4 class="wp-block-heading">1. Create vLLM ServiceMonitor</h4>



<p>Retrieve the file from the GitHub repository: <code><strong><a href="https://github.com/ovh/public-cloud-examples/blob/main/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/monitoring/vllm-servicemonitor.yaml" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">vllm-servicemonitor.yaml</a></strong></code>.</p>



<p>Next, apply and check that the ServiceMonitor <code><strong><mark class="has-inline-color has-ast-global-color-0-color">vllm-metrics</mark></strong></code> exists:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f vllm-servicemonitor.yaml<br>kubectl get servicemonitor -n vllm</code></pre>



<h4 class="wp-block-heading">2. Create DCGM ServiceMonitor</h4>



<p>First, create the <code><strong><a href="https://github.com/ovh/public-cloud-examples/blob/main/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/monitoring/dcgm-servicemonitor.yaml" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">dcgm-servicemonitor.yaml</a></strong></code> file.</p>



<p>Once again, apply and verify:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f dcgm-servicemonitor.yaml<br>kubectl get servicemonitor -n gpu-operator</code></pre>



<pre class="wp-block-preformatted"><code>gpu-operator                  1d<br>nvidia-dcgm-exporter          1d<br>nvidia-node-status-exporter   1d</code></pre>



<h4 class="wp-block-heading">3. Configure Prometheus for Cross-Namespace discovery</h4>



<p>Apply a patch to allow Prometheus to discover ServiceMonitors in all namespaces.</p>



<pre class="wp-block-code"><code class="">kubectl patch prometheus prometheus-kube-prometheus-prometheus -n monitoring --type merge -p '{<br>  "spec": {<br>    "serviceMonitorNamespaceSelector": {},<br>    "podMonitorNamespaceSelector": {}<br>  }<br>}'</code></pre>



<p>Now you have to restart Prometheus.</p>



<ol class="wp-block-list">
<li>Delete Prometheus pod to force configuration reload</li>



<li>Wait for Prometheus to restart</li>
</ol>



<pre class="wp-block-code"><code class="">kubectl delete pod prometheus-prometheus-kube-prometheus-prometheus-0 -n monitoring<br><br>kubectl wait --for=condition=Ready \<br>  pod/prometheus-prometheus-kube-prometheus-prometheus-0 \<br>  -n monitoring \<br>  --timeout=180s</code></pre>



<p>Wait about 2 minutes for discovery and finally, verify targets:</p>



<pre class="wp-block-code"><code class="">kubectl port-forward -n monitoring \<br>  prometheus-prometheus-kube-prometheus-prometheus-0 9090:9090 &amp;</code></pre>



<p>You can open in browser: <a href="http://localhost:9090/targets" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><code><strong><mark class="has-inline-color has-ast-global-color-0-color">http://localhost:9090/targets</mark></strong></code></a> and search for:</p>



<ul class="wp-block-list">
<li><code><strong><mark class="has-inline-color has-ast-global-color-0-color">vllm</mark></strong></code></li>



<li><strong><code><mark class="has-inline-color has-ast-global-color-0-color">dcgm</mark></code></strong></li>
</ul>



<p>Note that the expected targets are: </p>



<ul class="wp-block-list">
<li>serviceMonitor/vllm/vllm-metrics/0   (2/2 UP)</li>



<li>serviceMonitor/gpu-operator/nvidia-dcgm-exporter/0 (2/2 UP)</li>
</ul>



<h3 class="wp-block-heading">Step 7 &#8211; Create Grafana dashboards</h3>



<p>In this final step, the goal is to create two Grafana dashboards to track both the software side with vLLM metrics and the hardware metrics that will monitor the GPU consumption and system.</p>



<h4 class="wp-block-heading">1. vLLM application metrics</h4>



<p>The dashboard provides insights into vLLM application performance, request handling, and resource utilization based on the following metrics:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Metric</th><th>Type</th><th>Description</th><th>Unit</th><th>Dashboard Usage</th></tr></thead><tbody><tr><td><code>vllm:request_success_total</code></td><td>Counter</td><td>Total successful requests</td><td>count</td><td>Request Rate, Total Requests</td></tr><tr><td><code>vllm:num_requests_running</code></td><td>Gauge</td><td>Requests currently being processed</td><td>count</td><td>Queue Depth, Active Requests</td></tr><tr><td><code>vllm:num_requests_waiting</code></td><td>Gauge</td><td>Requests waiting in queue</td><td>count</td><td>Queue Depth, Queued Requests</td></tr><tr><td><code>vllm:time_to_first_token_seconds</code></td><td>Histogram</td><td>Latency until first token generated</td><td>seconds</td><td>TTFT P50/P95/P99</td></tr><tr><td><code>vllm:e2e_request_latency_seconds</code></td><td>Histogram</td><td>Total end-to-end latency</td><td>seconds</td><td>E2E Latency P50/P95/P99</td></tr><tr><td><code>vllm:generation_tokens_total</code></td><td>Counter</td><td>Total tokens generated (output)</td><td>count</td><td>Token Generation Rate, Throughput</td></tr><tr><td><code>vllm:prompt_tokens_total</code></td><td>Counter</td><td>Total prompt tokens (input)</td><td>count</td><td>Token Generation Rate, Avg Tokens</td></tr><tr><td><code>vllm:kv_cache_usage_perc</code></td><td>Gauge</td><td>GPU KV cache utilization</td><td>0-1 (0-100%)</td><td>KV Cache Usage</td></tr><tr><td><code>vllm:prefix_cache_hits_total</code></td><td>Counter</td><td>Number of prefix cache hits</td><td>count</td><td>Cache Hit Rate</td></tr><tr><td><code>vllm:prefix_cache_queries_total</code></td><td>Counter</td><td>Number of prefix cache queries</td><td>count</td><td>Cache Hit Rate</td></tr><tr><td><code>vllm:request_queue_time_seconds</code></td><td>Histogram</td><td>Time spent waiting in queue</td><td>seconds</td><td>Request Queue Time</td></tr><tr><td><code>vllm:request_prefill_time_seconds</code></td><td>Histogram</td><td>Prefill phase time</td><td>seconds</td><td>Prefill Time</td></tr><tr><td><code>vllm:request_decode_time_seconds</code></td><td>Histogram</td><td>Decode phase time</td><td>seconds</td><td>Decode Time</td></tr><tr><td><code>vllm:inter_token_latency_seconds</code></td><td>Histogram</td><td>Latency between each token</td><td>seconds</td><td>Inter-Token Latency</td></tr><tr><td><code>vllm:num_preemptions_total</code></td><td>Counter</td><td>Number of preemptions (OOM)</td><td>count</td><td>Preemptions</td></tr><tr><td><code>vllm:prompt_tokens_cached_total</code></td><td>Counter</td><td>Prompt tokens cached</td><td>count</td><td>Cached Tokens</td></tr><tr><td><code>vllm:request_prompt_tokens</code></td><td>Histogram</td><td>Prompt size distribution</td><td>count</td><td>(Table)</td></tr><tr><td><code>vllm:request_generation_tokens</code></td><td>Histogram</td><td>Generated tokens distribution</td><td>count</td><td>(Table)</td></tr><tr><td><code>vllm:iteration_tokens_total</code></td><td>Histogram</td><td>Tokens per iteration</td><td>count</td><td>(Advanced analysis)</td></tr></tbody></table></figure>



<p>This <strong>vLLM Grafana dashboard</strong> is composed of 23 panels:</p>



<p>The dashboard provides insights into LLM application performance, request handling, and resource utilisation based on the previous metrics.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Type</th><th>Nombre</th><th>Panels</th></tr></thead><tbody><tr><td><strong>Timeseries</strong></td><td>12</td><td>Request Rate, Queue Depth, TTFT, E2E Latency, Token Gen, Cache Usage, Cache Hit, Queue Time, Prefill/Decode, Inter-Token, Preemptions, Avg Tokens</td></tr><tr><td><strong>Stat</strong></td><td>10</td><td>Throughput, TTFT P95, Active Req, Queued Req, Cache Hit Rate, Cache Usage, Total Req, Total Tokens, Cached Tokens, Preemptions</td></tr><tr><td><strong>Table</strong></td><td>1</td><td>Pod Performance</td></tr></tbody></table></figure>



<p>Now create the dashboard using <a href="https://github.com/ovh/public-cloud-examples/blob/ep-vllm-deployment-observability-mks/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/grafana-dashboards/vllm-app-dashboard.json" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"></a><code><strong><a href="https://github.com/ovh/public-cloud-examples/blob/main/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/grafana-dashboards/vllm-app-dashboard.json" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">vllm-app-dashboard.json</a></strong></code>. Then, launch:</p>



<pre class="wp-block-code"><code class="">echo "Importing vLLM application dashboard..."<br>curl -X POST \<br>  'http://localhost:3000/api/dashboards/db' \<br>  -H 'Content-Type: application/json' \<br>  -u 'admin:Admin123!vLLM' \<br>  -d @vllm-app-dashboard.json | jq '.status, .url'</code></pre>



<p>Next, you an access the vLLM dashboard and follow metrics in real time:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="686" src="https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-3-1024x686.png" alt="" class="wp-image-30858" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-3-1024x686.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-3-300x201.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-3-768x514.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-3.png 1230w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>This dashboard is also essential to track hardware consumption for comprehensive monitoring.</p>



<h4 class="wp-block-heading">2. GPU hardware metrics</h4>



<p>Take advantage of the most useful DCGM metrics to check both the functioning and consumption of your hardware resources:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Metric</th><th>Type</th><th>Description</th><th>Unit</th><th>Normal Thresholds</th><th>Dashboard Usage</th></tr></thead><tbody><tr><td><code>DCGM_FI_DEV_GPU_UTIL</code></td><td>Gauge</td><td>GPU utilization (compute)</td><td>% (0-100)</td><td>70-95% optimal</td><td>GPU Utilization</td></tr><tr><td><code>DCGM_FI_DEV_GPU_TEMP</code></td><td>Gauge</td><td>GPU temperature</td><td>°C</td><td>&lt; 85°C normal</td><td>GPU Temperature</td></tr><tr><td><code>DCGM_FI_DEV_FB_USED</code></td><td>Gauge</td><td>VRAM used</td><td>MB</td><td>Variable by model</td><td>GPU Memory Used</td></tr><tr><td><code>DCGM_FI_DEV_FB_FREE</code></td><td>Gauge</td><td>VRAM free</td><td>MB</td><td>&gt; 2GB recommended</td><td>GPU Memory Free</td></tr><tr><td><code>DCGM_FI_DEV_POWER_USAGE</code></td><td>Gauge</td><td>Power consumption</td><td>Watts</td><td>&lt; 300W (L40S)</td><td>GPU Power Usage</td></tr><tr><td><code>DCGM_FI_DEV_SM_CLOCK</code></td><td>Gauge</td><td>GPU clock speed (compute)</td><td>MHz</td><td>Variable</td><td>GPU Clock Speed</td></tr><tr><td><code>DCGM_FI_DEV_MEM_CLOCK</code></td><td>Gauge</td><td>Memory clock speed</td><td>MHz</td><td>Variable</td><td>Memory Clock Speed</td></tr><tr><td><code>DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL</code></td><td>Counter</td><td>Total NVLink bandwidth</td><td>bytes/s</td><td>(If multi-GPU)</td><td>NVLink Bandwidth</td></tr><tr><td><code>DCGM_FI_DEV_PCIE_TX_BYTES</code></td><td>Counter</td><td>PCIe data transmitted</td><td>bytes</td><td>(I/O monitoring)</td><td>PCIe TX</td></tr><tr><td><code>DCGM_FI_DEV_PCIE_RX_BYTES</code></td><td>Counter</td><td>PCIe data received</td><td>bytes</td><td>(I/O monitoring)</td><td>PCIe RX</td></tr><tr><td><code>DCGM_FI_DEV_ECC_DBE_VOL_TOTAL</code></td><td>Counter</td><td>ECC double-bit errors</td><td>count</td><td>0 ideal</td><td>(Health check)</td></tr><tr><td><code>DCGM_FI_DEV_ECC_SBE_VOL_TOTAL</code></td><td>Counter</td><td>ECC single-bit errors</td><td>count</td><td>&lt; 10/day acceptable</td><td>(Health check)</td></tr></tbody></table></figure>



<p>This&nbsp;<strong>hardware Grafana dashboard</strong>&nbsp;is composed of 13 panels with GPU hardware and system metrics. A detailed view is also available GPU util (%), temperature (°C), vRAM (GB) and power (Watt).</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Type</th><th>Count</th><th>Panels</th></tr></thead><tbody><tr><td><strong>Timeseries</strong></td><td>8</td><td>GPU Util, GPU Mem, GPU Temp, GPU Power, CPU Usage, RAM Usage, Network I/O, Disk I/O</td></tr><tr><td><strong>Stat</strong></td><td>4</td><td>Avg GPU Util, Avg GPU Temp, Total GPU Mem, Total GPU Power</td></tr><tr><td><strong>Table</strong></td><td>1</td><td>Hardware Status</td></tr></tbody></table></figure>



<p>Please refer to <code><strong><a href="https://github.com/ovh/public-cloud-examples/blob/main/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/grafana-dashboards/hardware-dashboard.json" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">hardware-dashboard.json</a></strong></code> by loading it as follows:</p>



<pre class="wp-block-code"><code class="">echo "Importing hardware dashboard..."<br>curl -X POST \<br>  'http://localhost:3000/api/dashboards/db' \<br>  -H 'Content-Type: application/json' \<br>  -u 'admin:Admin123!vLLM' \<br>  -d @hardware-dashboard.json | jq '.status, .url'</code></pre>



<p>Finally, track resource consumption using this hardware dashboard:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="686" src="https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-4-1024x686.png" alt="" class="wp-image-30859" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-4-1024x686.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-4-300x201.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-4-768x514.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/03/image-4.png 1230w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Congratulations! Everything is working. You can now test your model and track the various metrics in real time.</p>



<h3 class="wp-block-heading">Step 8 &#8211; LLM testing and performance tracking</h3>



<p>Start by installing Python dependencies:</p>



<pre class="wp-block-code"><code class="">pip3 install openai tqdm</code></pre>



<p>Replace the <strong><mark class="has-inline-color has-ast-global-color-0-color">&lt;EXTERNAL_IP&gt;</mark></strong> by the vLLM service external IP and launch the performance test thanks to the following <a href="https://github.com/ovh/public-cloud-examples/blob/ep-vllm-deployment-observability-mks/containers-orchestration/managed-kubernetes/gpu-cluster-for-vllm-deployment-and-observability/llm-inference-performance-test.py" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><code><strong>Python code</strong></code></a>:</p>



<pre class="wp-block-code"><code class="">import time<br>import threading<br>import random<br>from statistics import mean<br>from openai import OpenAI<br>from tqdm import tqdm<br><br>APP_URL = "http://94.23.185.22/v1"<br>MODEL = "qwen3-vl-8b"<br><br>CONCURRENT_WORKERS = 500          # concurrency<br>REQUESTS_PER_WORKER = 10<br>MAX_TOKENS = 200                  # generation pressure<br><br># some random prompts<br>SHORT_PROMPTS = [<br>    "Summarize the theory of relativity.",<br>    "Explain what a transformer model is.",<br>    "What is Kubernetes autoscaling?"<br>]<br><br>MEDIUM_PROMPTS = [<br>    "Explain how attention mechanisms work in transformer-based models, including self-attention and multi-head attention.",<br>    "Describe how vLLM manages KV cache and why it impacts inference performance."<br>]<br><br>LONG_PROMPTS = [<br>    "Write a very detailed technical explanation of how large language models perform inference, "<br>    "including tokenization, embedding lookup, transformer layers, attention computation, KV cache usage, "<br>    "GPU memory management, and how batching affects latency and throughput. Use examples.",<br>]<br><br>PROMPT_POOL = (<br>    SHORT_PROMPTS * 2 +<br>    MEDIUM_PROMPTS * 4 +<br>    LONG_PROMPTS * 6    # bias toward long prompts<br>)<br><br># openai compliance<br>client = OpenAI(<br>    base_url=APP_URL,<br>    api_key="foo"<br>)<br><br># basic metrics<br>latencies = []<br>errors = 0<br>lock = threading.Lock()<br><br># worker<br>def worker(worker_id):<br>    global errors<br>    for _ in range(REQUESTS_PER_WORKER):<br>        prompt = random.choice(PROMPT_POOL)<br><br>        start = time.time()<br>        try:<br>            client.chat.completions.create(<br>                model=MODEL,<br>                messages=[{"role": "user", "content": prompt}],<br>                max_tokens=MAX_TOKENS,<br>                temperature=0.7,<br>            )<br>            elapsed = time.time() - start<br><br>            with lock:<br>                latencies.append(elapsed)<br><br>        except Exception as e:<br>            with lock:<br>                errors += 1<br><br># run<br>threads = []<br>start_time = time.time()<br><br>print("\n-&gt; STARTING PERFORMANCE TEST:")<br>print(f"Concurrency: {CONCURRENT_WORKERS}")<br>print(f"Total requests: {CONCURRENT_WORKERS * REQUESTS_PER_WORKER}")<br><br>for i in range(CONCURRENT_WORKERS):<br>    t = threading.Thread(target=worker, args=(i,))<br>    t.start()<br>    threads.append(t)<br><br>for t in threads:<br>    t.join()<br><br>total_time = time.time() - start_time<br><br># results<br>print("\n-&gt; BENCH RESULTS:")<br>print(f"Total requests sent: {len(latencies) + errors}")<br>print(f"Successful requests: {len(latencies)}")<br>print(f"Errors: {errors}")<br>print(f"Total wall time: {total_time:.2f}s")<br><br>if latencies:<br>    print(f"Avg latency: {mean(latencies):.2f}s")<br>    print(f"Min latency: {min(latencies):.2f}s")<br>    print(f"Max latency: {max(latencies):.2f}s")<br>    print(f"Throughput: {len(latencies)/total_time:.2f} req/s")</code></pre>



<p>Returning:</p>



<pre class="wp-block-preformatted"><code>-&gt; STARTING PERFORMANCE TEST:</code><br><code>Concurrency: 500<br>Total requests: 5000</code><br><code><br>-&gt; BENCH RESULTS:<br>Total requests sent: 5000<br>Successful requests: 5000<br>Errors: 0<br>Total wall time: 225.54s<br>Avg latency: 21.45s<br>Min latency: 6.06s<br>Max latency: 25.19s<br>Throughput: 22.17 req/s</code></pre>



<p>Don&#8217;t forget to track GPU and vLLM metrics in your Grafana dashboards!</p>



<h2 class="wp-block-heading">Conslusion</h2>



<p>This reference architecture demonstrates a<strong>&nbsp;vLLM deployment on OVHcloud Managed Kubernetes Service (MKS)</strong>&nbsp;with comprehensive GPU monitoring. Benefits include:</p>



<ul class="wp-block-list">
<li><strong>High Performance</strong>: GPU-accelerated inference with L40S</li>



<li><strong>Scalability</strong>: Kubernetes-native, horizontal scaling-ready</li>



<li><strong>Reliability</strong>: Health checks, auto-restart, monitoring</li>



<li><strong>API Compatibility</strong>: OpenAI-compatible endpoints</li>



<li><strong>Multimodality</strong>: Vision &amp; text capabilities</li>



<li><strong>Full stack monitoring</strong>: Complete vLLM application and hardware dashboards</li>
</ul>



<h2 class="wp-block-heading">Going Further</h2>



<p>Your current architecture is&nbsp;<strong>functional.&nbsp;</strong>However, if desired,&nbsp;<strong>it could be improved into a full production-ready&nbsp;solution.</strong></p>



<p><strong>Wish to take production hardening a step further?</strong></p>



<p>Go further with the following enhancements:</p>



<ol class="wp-block-list">
<li><strong>Authentication &amp; authorization</strong>
<ul class="wp-block-list">
<li>vLLM API authentication</li>



<li>Grafana authentication</li>



<li>Prometheus security</li>
</ul>
</li>



<li><strong>High availability &amp; load balancing</strong>
<ul class="wp-block-list">
<li>Grafana high availability with multiple replicas and shared storage</li>



<li>Prometheus high availability</li>



<li>vLLM Horizontal Pod Autoscaling (HPA) based on custom metrics</li>
</ul>
</li>



<li><strong>Data persistence &amp; backup</strong>
<ul class="wp-block-list">
<li>Prometheus long-term storage with persistent storage</li>



<li>Grafana Dashboard Backup</li>
</ul>
</li>



<li><strong>Observability enhancements</strong>
<ul class="wp-block-list">
<li>Distributed tracing by adding OpenTelemetry for request tracing</li>



<li>Alerting rules with production-ready alert rules</li>
</ul>
</li>
</ol>



<p></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Freference-architecture-deploying-a-vision-language-model-with-vllm-on-ovhcloud-mks-for-high-performance-inference-and-full-observability%2F&amp;action_name=Reference%20Architecture%3A%20Deploying%20a%20vision-language%20model%20with%20vLLM%20on%20OVHcloud%20MKS%20for%20high%20performance%20inference%20and%20full%20observability&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Running an Ethereum Node on OVHcloud Public instances</title>
		<link>https://blog.ovhcloud.com/running-an-ethereum-node-on-ovhcloud-public-instances/</link>
		
		<dc:creator><![CDATA[Lautaro BAUTISTA]]></dc:creator>
		<pubDate>Mon, 09 Mar 2026 10:12:42 +0000</pubDate>
				<category><![CDATA[OVHcloud Partner Program]]></category>
		<category><![CDATA[Blockchain]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Partner Program]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=30650</guid>

					<description><![CDATA[Introduction Ethereum is quickly becoming known as one of the most efficient and flexible blockchain networks in the world, enabling financial organisations and individuals alike to create smart contracts that can power the likes of decentralised finance (DeFi) applications and NFT ecosystems. Ethereum is one of the foundations of Web3, providing a decentralised, scalable and [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Frunning-an-ethereum-node-on-ovhcloud-public-instances%2F&amp;action_name=Running%20an%20Ethereum%20Node%20on%20OVHcloud%20Public%20instances&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="883" height="802" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/Canvas-38.png" alt="" class="wp-image-30703" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/Canvas-38.png 883w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/Canvas-38-300x272.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/Canvas-38-768x698.png 768w" sizes="auto, (max-width: 883px) 100vw, 883px" /></figure>



<h2 class="wp-block-heading"><strong>Introduction</strong></h2>



<p>Ethereum is quickly becoming known as one of the most efficient and flexible blockchain networks in the world, enabling financial organisations and individuals alike to create smart contracts that can power the likes of decentralised finance (DeFi) applications and NFT ecosystems. Ethereum is one of the foundations of Web3, providing a decentralised, scalable and secure network where builders can create the digital economy of the future.</p>



<p>But how do you get started? In this tutorial, we provide a guide to deploying and operating an Ethereum node on an OVHcloud public server. By the end of this guide, you will have a fully functional Ethereum node running on OVHcloud, following best practices for reliability and maintainability.</p>



<p>The security hardening and operational best practices required to fully protect an Ethereum node are beyond the scope of this tutorial. Users are strongly advised to implement additional security measures — such as firewall configuration, key management, and monitoring — according to their organizational requirements and industry best practices.</p>



<p>All set? Let’s get started.</p>



<h2 class="wp-block-heading"><strong>Launching an instance</strong></h2>



<p>Navigate to the OVHcloud Control Panel, and under the Public Cloud section, select Instances. From there, click on <strong>Create an Instance </strong>to begin the provisioning process.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="449" height="413" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-14.png" alt="" class="wp-image-30658" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-14.png 449w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-14-300x276.png 300w" sizes="auto, (max-width: 449px) 100vw, 449px" /></figure>



<p>To run an Ethereum node reliably, the hardware specifications must meet the client software’s minimum requirements. According to the Ethereum Foundation documentation, an Ethereum node requires at least:</p>



<p>● <strong>Execution client</strong>: 2 CPU cores, 16 GB of RAM, and 1 TB of fast SSD storage.</p>



<p>● <strong>Consensus client</strong>: 2 CPU cores, 8 GB of RAM, and access to the same storage.</p>



<p>For production environments and long-term stability, higher specifications are strongly recommended. In this tutorial, we will provision an instance with 2 vCores and 30 GB of RAM, which satisfies the minimum combined requirements for running both the execution and consensus clients on a single machine.</p>



<p>Within the Memory Optimized category, locate the instance type named R2-30 and select it for deployment.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="335" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-15.png" alt="" class="wp-image-30659" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-15.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-15-300x103.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-15-768x264.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>Next, select the <strong>geographic location </strong>for your instance. The choice of region may affect latency, network performance, and regulatory considerations. For the purposes of this tutorial, we will deploy the node in the <strong>Frankfurt data center</strong>, which provides low-latency connectivity within Europe and is well-suited for Ethereum node operations.</p>



<p>It is worth noting that maintaining nodes in <strong>different geographic regions </strong>contributes to the overall resilience and decentralization of the Ethereum network. Geographical diversity helps reduce the risk of localized outages and improves redundancy across the infrastructure.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="638" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-16.png" alt="" class="wp-image-30660" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-16.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-16-300x196.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-16-768x503.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>Now, select the operating system image for your instance. For this tutorial, we will use <strong>Ubuntu 24.04 LTS</strong>.</p>



<p>Next, select the <strong>public SSH key </strong>that will be associated with your instance. This key will be installed on the server during provisioning and will serve as the primary authentication method for secure remote access. After the instance is launched, you will be able to connect to it via SSH using the corresponding private key. This approach eliminates the need for password-based logins and significantly enhances security by enforcing key-based authentication.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="611" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-17.png" alt="" class="wp-image-30661" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-17.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-17-300x188.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-17-768x481.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>Assign a descriptive name to your instance (e.g., <strong>eth-node-fra-01</strong>) following your organization’s naming convention. If your workflow uses tags or labels, add ones that identify the <strong>role </strong>(execution/consensus), <strong>environment </strong>(prod/stage), and <strong>region </strong>(FRA). OVHcloud also allows attaching a post-installation script (cloud-init user data) to automate provisioning; however, this tutorial proceeds <strong>step-by-step</strong>, so leave that field empty.</p>



<p>For the purposes of this tutorial, we will simply assign the instance the name <strong>OVHnode</strong>.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="810" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-18.png" alt="" class="wp-image-30662" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-18.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-18-300x249.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-18-768x638.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>Configure the <strong>network access </strong>by selecting <strong>Public mode</strong>, which will assign the instance a public IP address and enable external connectivity. This setting is required for the node to participate in the Ethereum network. Next, choose your preferred <strong>billing method</strong>.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="351" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-19.png" alt="" class="wp-image-30663" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-19.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-19-300x108.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-19-768x276.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="234" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-20.png" alt="" class="wp-image-30664" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-20.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-20-300x72.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-20-768x184.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>Finally, click on <strong>Create an Instance </strong>to launch the deployment process. OVHcloud will provision the server with the selected configuration, and within a few minutes, the instance will be available and running. At this point, your Ethereum node host environment is ready for initial access and further configuration.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="38" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-21.png" alt="" class="wp-image-30665" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-21.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-21-300x12.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-21-768x30.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<h2 class="wp-block-heading"><strong>Adding Storage</strong></h2>



<p>The next step is to provision persistent storage for the Ethereum blockchain data. In the <strong>OVHcloud Control Panel</strong>, navigate to the <strong>Block Storage </strong>section from the side menu, and click on <strong>Create a Volume</strong>. This volume will serve as the primary data store for the Ethereum chain, ensuring durability and scalability independent of the compute instance.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="393" height="216" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-22.png" alt="" class="wp-image-30666" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-22.png 393w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-22-300x165.png 300w" sizes="auto, (max-width: 393px) 100vw, 393px" /></figure>



<p>When creating the storage volume, ensure that you select the <strong>same region </strong>as your compute instance. This is essential to guarantee low-latency access and to allow the volume to be attached directly to your node without cross-region performance penalties.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="975" height="157" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-23.png" alt="" class="wp-image-30667" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-23.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-23-300x48.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-23-768x124.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>OVHcloud provides three categories of block storage volumes:</p>



<ul class="wp-block-list">
<li><strong>Classic HDD </strong>– 500 IOPS guaranteed.</li>



<li><strong>High-Speed SSD </strong>– up to 3,000 IOPS.</li>



<li><strong>High-Speed Gen2 </strong>– up to 20,000 IOPS.</li>
</ul>



<p>Running an Ethereum node requires <strong>high-performance storage </strong>due to the constant read and write operations needed to synchronize the blockchain and access block and state data. For this reason, we strongly recommend selecting a <strong>High-Speed Gen2 volume</strong>, which delivers the necessary throughput and input/output operations per second (IOPS) to ensure stable node performance.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="338" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-24.png" alt="" class="wp-image-30668" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-24.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-24-300x104.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-24-768x266.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>Both the <strong>Ethereum Execution Layer (EL) client </strong>and the <strong>Consensus Layer (CL) client </strong>require significant disk capacity to store blockchain data, state, and historical records. A minimum of <strong>2 TB of storage </strong>is recommended to operate a full mainnet node reliably. When creating the block storage volume in OVHcloud, set the capacity to <strong>2 TB </strong>and select the <strong>High-Speed Gen2 </strong>option to ensure sufficient performance for synchronization and long-term operation.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="799" height="428" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-25.png" alt="" class="wp-image-30669" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-25.png 799w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-25-300x161.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-25-768x411.png 768w" sizes="auto, (max-width: 799px) 100vw, 799px" /></figure>



<p>Assign a <strong>descriptive name </strong>to the storage volume to simplify management and identification. For example, you may name it <strong>chaindata </strong>to clearly indicate its role as the primary data store for the node.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="693" height="325" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-26.png" alt="" class="wp-image-30670" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-26.png 693w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-26-300x141.png 300w" sizes="auto, (max-width: 693px) 100vw, 693px" /></figure>



<p>Once all parameters have been configured — including the region, storage type, capacity, and name — click on <strong>Create Volume</strong>. OVHcloud will provision the block storage resource, which will then be available to attach to your Ethereum node instance.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="468" height="214" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-1.jpg" alt="" class="wp-image-30654" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-1.jpg 468w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-1-300x137.jpg 300w" sizes="auto, (max-width: 468px) 100vw, 468px" /></figure>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="174" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-27.png" alt="" class="wp-image-30671" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-27.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-27-300x54.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-27-768x137.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<h2 class="wp-block-heading"><strong>Mounting the Volume</strong></h2>



<p>After the new volume appears as <strong>available </strong>in the OVHcloud Control Panel, attach it to your Ethereum node instance. To do this, open the ⋮ <strong>(more options) menu </strong>next to the volume entry and select <strong>Attach to an Instance</strong>. From the list of instances, choose the node you previously created. The volume will then be linked to that instance and accessible as an additional block device.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="691" height="348" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image.jpg" alt="" class="wp-image-30651" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image.jpg 691w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-300x151.jpg 300w" sizes="auto, (max-width: 691px) 100vw, 691px" /></figure>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="138" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-28.png" alt="" class="wp-image-30672" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-28.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-28-300x42.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-28-768x109.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>Now, establish a secure connection to your server via SSH. Use the following command from your local terminal, replacing <strong>IPaddress </strong>with the public IP assigned to your instance:</p>



<pre class="wp-block-code"><code class="">ssh ubuntu@IPaddress</code></pre>



<p>By default, OVHcloud instances provisioned with the Ubuntu image create a user named <strong>ubuntu</strong>, which you should use for the initial connection. Authentication will be handled through the SSH key you configured during instance creation.</p>



<p>Once connected to the instance, run the following command to list all available block devices:</p>



<pre class="wp-block-code"><code class="">lsblk</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="698" height="280" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-29.png" alt="" class="wp-image-30673" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-29.png 698w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-29-300x120.png 300w" sizes="auto, (max-width: 698px) 100vw, 698px" /></figure>



<p>This will display a tree view of the system’s storage devices, including the root disk and the newly attached block storage volume. Identify the additional device (e.g., /dev/sdb) that corresponds to the 2 TB volume you created in OVHcloud. This device will later be formatted and mounted to store the Ethereum blockchain data.</p>



<p>Next, create a partition on the newly attached volume. Replace /dev/sdb with the device name identified in the previous step if it differs. Execute:</p>



<pre class="wp-block-code"><code class="">sudo fdisk /dev/sdb</code></pre>



<p>This command will open the partitioning utility for the selected block device. From there, you can create a new primary partition that spans the entire disk. Once complete, the partition will typically be available as /dev/sdb1.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="609" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-30.png" alt="" class="wp-image-30674" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-30.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-30-300x187.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-30-768x480.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>Once the partition has been created (e.g., /dev/sdb1), format it with the <strong>ext4 </strong>filesystem so it can be mounted and used by the operating system. Run the following command:</p>



<pre class="wp-block-code"><code class="">sudo mkfs.ext4 /dev/sdb1</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="383" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-31.png" alt="" class="wp-image-30675" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-31.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-31-300x118.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-31-768x302.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>This will initialize the partition with an ext4 filesystem, which is a stable and widely supported choice for storing Ethereum chain data.</p>



<p>Now, create a dedicated directory to serve as the mount point for the formatted volume, then mount it and verify that it has been successfully attached to the filesystem. Execute the following commands:</p>



<pre class="wp-block-code"><code class="">sudo mkdir -p /mnt/chaindata</code></pre>



<pre class="wp-block-code"><code class="">sudo mount /dev/sdb1 /mnt/chaindata</code></pre>



<pre class="wp-block-code"><code class="">df -h</code></pre>



<ul class="wp-block-list">
<li>mkdir -p /mnt/chaindata creates the mount directory (using -p ensures no error if intermediate directories are missing).</li>



<li>mount /dev/sdb1 /mnt/chaindata mounts the formatted partition to the directory.</li>



<li>df -h displays all mounted filesystems in a human-readable format, allowing you to confirm that /dev/sdb1 is correctly mounted at /mnt/chaindata with the expected capacity (approximately 2 TB).</li>
</ul>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="886" height="419" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-32.png" alt="" class="wp-image-30676" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-32.png 886w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-32-300x142.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-32-768x363.png 768w" sizes="auto, (max-width: 886px) 100vw, 886px" /></figure>



<p>At this point, your disk is mounted and ready for use. However, the configuration is <strong>not persistent</strong>: if the server restarts, the volume will need to be mounted manually. To ensure the volume is mounted automatically at boot, we must configure it in the /etc/fstab file.</p>



<p>First, retrieve the <strong>UUID (Universally Unique Identifier) </strong>of your volume by running:</p>



<pre class="wp-block-code"><code class="">sudo blkid</code></pre>



<p>This command lists all block devices and their associated attributes. Identify the entry corresponding to your new partition (e.g., /dev/sdb1) and copy the value of its UUID field, which will be used in the fstab configuration.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="85" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-33.png" alt="" class="wp-image-30677" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-33.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-33-300x26.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-33-768x67.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>Next, edit the /etc/fstab file to configure the automatic mount. Open the file with your preferred text editor, for example:</p>



<pre class="wp-block-code"><code class="">sudo nano /etc/fstab</code></pre>



<p>Then add the following line at the end of the file, replacing the UUID with the one obtained from the previous blkid command:</p>



<pre class="wp-block-code"><code class="">UUID=e146e498-bba2-4574-9b47-b54fffea77e7 /mnt/chaindata ext4 nofail 0 0</code></pre>



<p>This entry ensures that the partition will be mounted at /mnt/chaindata automatically on every system boot. The nofail option allows the system to continue booting even if the device is unavailable.</p>



<p>Your storage volume is now fully configured and ready to be used for storing Ethereum blockchain data. With the automatic mount entry in place, the system will make the volume available at /mnt/chaindata on every reboot, ensuring a stable and persistent data directory for your node.</p>



<h2 class="wp-block-heading"><strong>Create a dedicated user</strong></h2>



<p>Next, create a <strong>dedicated user account </strong>to manage all Ethereum node operations. This practice improves security by separating node processes from the default system user. Run the following commands:</p>



<pre class="wp-block-code"><code class="">sudo useradd -s /bin/bash -d /home/node_admin/ -m -G sudo node_admin</code></pre>



<pre class="wp-block-code"><code class="">echo 'node_admin:MySuperPassword123' | sudo chpasswd</code></pre>



<pre class="wp-block-code"><code class="">sudo mkdir -p /home/node_admin/.ssh</code></pre>



<ul class="wp-block-list">
<li>useradd creates a new user named node_admin, with a home directory, bash shell, and membership in the sudo group.</li>



<li>chpasswd sets an initial password for the new user (replace with a strong secret or configure key-based login).</li>



<li>mkdir -p creates the .ssh directory for SSH configuration in the user’s home directory.</li>
</ul>



<p>Now, configure <strong>SSH key-based authentication </strong>for the new user by adding your public SSH key to the authorized_keys file. Replace the placeholder with your actual public key:</p>



<pre class="wp-block-code"><code class="">sudo sh -c "echo 'My-public-SSH-key' &gt; /home/node_admin/.ssh/authorized_keys"</code></pre>



<p>This command creates the authorized_keys file under /home/node_admin/.ssh/ and writes your public key into it, allowing secure, passwordless login as the node_admin user.</p>



<h2 class="wp-block-heading"><strong>Ethereum Preliminaries</strong></h2>



<p>Operating a fully functional Ethereum node requires the coordinated operation of two key software components:</p>



<p>1. <strong>Execution Client (EL) </strong>– responsible for processing transactions and maintaining the Ethereum state.</p>



<p>2. <strong>Consensus Client (CL) </strong>– responsible for reaching consensus with the rest of the network through the Ethereum proof-of-stake protocol.</p>



<p>These two components must run in tandem and communicate securely to maintain synchronization with the Ethereum mainnet.</p>



<p>The Ethereum ecosystem supports multiple client implementations, each developed independently but compliant with the Ethereum specification. The most widely used options include:</p>



<p><strong>Execution Clients (EL):</strong></p>



<ul class="wp-block-list">
<li>Geth</li>



<li>Nethermind</li>



<li>Reth</li>



<li>Besu</li>



<li>Erigon</li>
</ul>



<p><strong>Consensus Clients (CL):</strong></p>



<ul class="wp-block-list">
<li>Lighthouse</li>



<li>Prysm</li>



<li>Teku</li>



<li>Nimbus</li>



<li>Lodestar</li>
</ul>



<p>For this guide, we will use the following combination:</p>



<p>● <strong>Execution Client</strong>: Nethermind</p>



<p>● <strong>Consensus Client</strong>: Lighthouse</p>



<h2 class="wp-block-heading"><strong>Installing Nethermind (Execution Client)</strong></h2>



<h3 class="wp-block-heading"><strong>Step 1: Add the Nethermind APT Repository</strong></h3>



<p>To install Nethermind via APT, begin by adding the official repository:</p>



<pre class="wp-block-code"><code class="">sudo add-apt-repository ppa:nethermindeth/nethermind</code></pre>



<p>If the above command is not found, install the required tools first:</p>



<pre class="wp-block-code"><code class="">sudo apt-get install software-properties-common</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="725" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-34.png" alt="" class="wp-image-30678" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-34.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-34-300x223.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-34-768x571.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<h3 class="wp-block-heading"><strong>Step 2: Update the Package Index</strong></h3>



<p>Refresh your package list to include packages from the newly added repository:</p>



<pre class="wp-block-code"><code class="">sudo apt-get update</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="964" height="178" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-35.png" alt="" class="wp-image-30679" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-35.png 964w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-35-300x55.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-35-768x142.png 768w" sizes="auto, (max-width: 964px) 100vw, 964px" /></figure>



<p>⚠️This may take a few minutes depending on your system and network speed.</p>



<h3 class="wp-block-heading"><strong>Step 3: Install Nethermind</strong></h3>



<p>Now install the Nethermind binary:</p>



<pre class="wp-block-code"><code class="">sudo apt-get install nethermind -y</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="975" height="520" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-36.png" alt="" class="wp-image-30680" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-36.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-36-300x160.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-36-768x410.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<h2 class="wp-block-heading"><strong>Installing Lighthouse (Consensus Client)</strong></h2>



<h3 class="wp-block-heading">Step 1: Download the Latest Stable Release</h3>



<p>Navigate to the Lighthouse GitHub Releases page and locate the <strong>latest stable release</strong>.</p>



<p>As of <strong>September 29, 2025</strong>, version 8.0.0 is marked as a <strong>Pre-release</strong>, so we will use the stable version 7.1.0.</p>



<p>Use the following curl command to download the Lighthouse client binary archive:</p>



<pre class="wp-block-code"><code class="">curl -LO <a href="https://github.com/sigp/lighthouse/releases/download/v7.1.0/lighthouse-v7.1.0-x86_64-unknown-linux-gnu.tar.gz" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://github.com/sigp/lighthouse/releases/download/v7.1.0/lighthouse-v7.1.0-x86_64-unknown-linux-gnu.tar.gz</a></code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="88" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-37.png" alt="" class="wp-image-30681" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-37.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-37-300x27.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-37-768x69.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<h3 class="wp-block-heading"><strong>Step 2: Extract the Archive</strong></h3>



<p>Once downloaded, extract the archive:</p>



<pre class="wp-block-code"><code class="">tar -xvf lighthouse-v7.1.0-x86_64-unknown-linux-gnu.tar.gz</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="141" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-38.png" alt="" class="wp-image-30682" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-38.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-38-300x43.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-38-768x111.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>This will place the lighthouse binary in your current directory.</p>



<h3 class="wp-block-heading"><strong>Step 3: Verify and Move the Binary</strong></h3>



<p>Test the binary to ensure it is working:</p>



<pre class="wp-block-code"><code class="">./lighthouse –version</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="603" height="200" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-39.png" alt="" class="wp-image-30683" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-39.png 603w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-39-300x100.png 300w" sizes="auto, (max-width: 603px) 100vw, 603px" /></figure>



<p>Move it to a directory included in your system&#8217;s $PATH for global access:</p>



<pre class="wp-block-code"><code class="">sudo cp lighthouse /usr/bin</code></pre>



<h2 class="wp-block-heading">Create the JWT Secret File</h2>



<p>A shared JWT secret is required for secure authenticated communication between the execution and consensus clients.</p>



<h3 class="wp-block-heading"><strong>Step 1: Create a Secrets Directory</strong></h3>



<pre class="wp-block-code"><code class="">sudo mkdir -p /secrets</code></pre>



<h3 class="wp-block-heading"><strong>Step 2: Generate the JWT Token</strong></h3>



<pre class="wp-block-code"><code class="">openssl rand -hex 32 | tr -d "\n" | sudo tee /secrets/jwt.hex &gt; /dev/null</code></pre>



<p>You should now have the file /secrets/jwt.hex containing a 32-byte hexadecimal secret. </p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="104" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-40.png" alt="" class="wp-image-30684" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-40.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-40-300x32.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-40-768x82.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<h2 class="wp-block-heading">Using screen for Session Persistence</h2>



<p>When running on a remote server (such as an OVH cloud instance), any disconnection from your SSH session will terminate running processes unless they are managed through tools like screen.</p>



<p>Check if screen is installed:</p>



<pre class="wp-block-code"><code class="">screen –version</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="424" height="71" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-41.png" alt="" class="wp-image-30685" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-41.png 424w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-41-300x50.png 300w" sizes="auto, (max-width: 424px) 100vw, 424px" /></figure>



<p>If not installed:</p>



<pre class="wp-block-code"><code class="">sudo apt-get install screen</code></pre>



<h2 class="wp-block-heading"><strong>Setting Ownership for /mnt/chaindata</strong></h2>



<p>When running Ethereum clients (Nethermind and Lighthouse), it’s essential that the user executing the commands has the necessary access to the data directory. To avoid permission issues and maintain security, you should assign ownership of the previously mounted directory to your current user.</p>



<pre class="wp-block-code"><code class="">sudo chown $USER:$USER /mnt/chaindata</code></pre>



<p>This command sets the user and group ownership of /mnt/chaindata to the currently logged-in user. It ensures that you (and your Ethereum clients, if run under your user account) have full access to read, write, and modify files in this directory.</p>



<p>Now we are ready to launch both the execution and consensus clients in <strong>separate screen sessions </strong>for persistent background operation.</p>



<h2 class="wp-block-heading"><strong>Launching Nethermind (Execution Client)</strong></h2>



<h3 class="wp-block-heading">Step 1: Create a Screen Session</h3>



<pre class="wp-block-code"><code class="">screen -S nethermind</code></pre>



<h3 class="wp-block-heading">Step 2: Run Nethermind</h3>



<pre class="wp-block-code"><code class="">nethermind -c mainnet \ <br>--data-dir /mnt/chaindata/nethermind \ <br>--JsonRpc.Enabled true \ <br>--HealthChecks.Enabled true \ <br>--HealthChecks.UIEnabled true \ <br>--JsonRpc.EngineHost=127.0.0.1 \ <br>--JsonRpc.EnginePort=8551 \ <br>--JsonRpc.JwtSecretFile=/secrets/jwt.hex <br></code></pre>



<p>You should see logs indicating the client is running. Eventually, the message:</p>



<pre class="wp-block-code"><code class="">Waiting for Forkchoice message from Consensus Layer</code></pre>



<p>will appear, indicating the execution client is waiting to pair with the consensus client.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="617" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-42.png" alt="" class="wp-image-30686" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-42.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-42-300x190.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-42-768x486.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<h3 class="wp-block-heading">Step 3: Detach the Session</h3>



<p>Press: Ctrl-a then d to detach from the session and return to the main shell.</p>



<h3 class="wp-block-heading">Step 4: List Active Sessions (Optional)</h3>



<pre class="wp-block-code"><code class="">screen -ls</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="752" height="145" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-43.png" alt="" class="wp-image-30687" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-43.png 752w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-43-300x58.png 300w" sizes="auto, (max-width: 752px) 100vw, 752px" /></figure>



<p>To reattach later:</p>



<pre class="wp-block-code"><code class="">screen -r nethermind</code></pre>



<h2 class="wp-block-heading"><strong>Launching Lighthouse (Consensus Client)</strong></h2>



<h3 class="wp-block-heading">Step 1: Create a New Screen Session</h3>



<pre class="wp-block-code"><code class="">screen -S lighthouse</code></pre>



<h3 class="wp-block-heading">Step 2: Run Lighthouse Beacon Node</h3>



<pre class="wp-block-code"><code class="">lighthouse bn \ <br>--network mainnet \ <br>--execution-endpoint http://127.0.0.1:8551 \ <br>--execution-jwt /secrets/jwt.hex \ <br>--checkpoint-sync-url https://mainnet.checkpoint.sigp.io \ <br>--http \ <br>--datadir /mnt/chaindata/lighthouse</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="167" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-44.png" alt="" class="wp-image-30688" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-44.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-44-300x51.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-44-768x132.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p>After some initial setup, Lighthouse should begin syncing with the network.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="975" height="154" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-45.png" alt="" class="wp-image-30689" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-45.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-45-300x47.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-45-768x121.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<h3 class="wp-block-heading">Step 3: Detach the Session</h3>



<p>Use the same key combination: Ctrl-a then d.</p>



<h2 class="wp-block-heading"><strong>Verifying Synchronization Between EL and CL</strong></h2>



<p>At this stage, both the <strong>execution client </strong>(Nethermind) and the <strong>consensus client </strong>(Lighthouse) should be running in separate screen sessions. To confirm that they are properly connected and synchronization is underway, reattach to the Nethermind session and inspect the logs.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="975" height="408" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-46.png" alt="" class="wp-image-30690" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-46.png 975w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-46-300x126.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/image-46-768x321.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<h3 class="wp-block-heading">Step 1: Reattach to the Nethermind Session</h3>



<pre class="wp-block-code"><code class="">screen -r nethermind</code></pre>



<p>This command brings you back into the Nethermind screen session, where you can observe real-time logs.</p>



<h3 class="wp-block-heading">Step 2: Check for Communication Messages</h3>



<p>If Lighthouse is running and connected correctly, Nethermind&#8217;s logs should no longer display:</p>



<pre class="wp-block-code"><code class="">Waiting for Forkchoice message from Consensus Layer</code></pre>



<p>Instead, you should see logs indicating that the <strong>Engine API </strong>communication has been established and blocks are being processed. Look for messages like:</p>



<pre class="wp-block-code"><code class="">Received ForkChoice: ...<br>Syncing...</code></pre>



<p>These logs confirm that Nethermind is receiving block proposals and fork choice updates from Lighthouse and that the node is syncing correctly with the Ethereum mainnet.</p>



<h2 class="wp-block-heading"><strong>Conclusion</strong></h2>



<p>And you’re done! You have deployed a fully functional Ethereum node on OVHcloud.</p>



<p>While this guide focused on the technical deployment, it is important to complement the setup with proper security hardening, monitoring, and maintenance practices to ensure long-term stability. With the foundation now in place, you can extend the node’s functionality, integrate it into larger infrastructures, or use it as a base for research, development, and staking operations.</p>



<p>This is the first guide in our mini-series and will shortly be followed by a tutorial on how to deploy an Ethereum node on a bare metal server and monitor it in real-time. Stay tuned for more.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Frunning-an-ethereum-node-on-ovhcloud-public-instances%2F&amp;action_name=Running%20an%20Ethereum%20Node%20on%20OVHcloud%20Public%20instances&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>🎙️ Tranches de Tech #26 &#8211; Architecte, c&#8217;est une bonne situation ça ?</title>
		<link>https://blog.ovhcloud.com/%f0%9f%8e%99%ef%b8%8f-tranches-de-tech-26-architecte-cest-une-bonne-situation-ca/</link>
		
		<dc:creator><![CDATA[Stéphane Philippart]]></dc:creator>
		<pubDate>Fri, 06 Mar 2026 13:13:43 +0000</pubDate>
				<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Tranches de Tech]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=30841</guid>

					<description><![CDATA[👤 Présentation d’Alexandre &#8211; ⏱️ 0&#8243;37s 📰 News Techs&#160; 🤖 Intelligence Artificielle &#8211; ⏱️ 15&#8243;40s Spotify indique que ses développeurs ne codent plus depuis décembre grâce à l’IA OpenClaw OpenClaw founder Peter Steinberger is joining OpenAI IA au quotidien &#8211; Paralléliser sa production agentique de code 👩‍💻 Développement &#8211; ⏱️ 48&#8243;40s Java has evolved.Your code can [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2F%25f0%259f%258e%2599%25ef%25b8%258f-tranches-de-tech-26-architecte-cest-une-bonne-situation-ca%2F&amp;action_name=%F0%9F%8E%99%EF%B8%8F%20Tranches%20de%20Tech%20%2326%20%26%238211%3B%20Architecte%2C%20c%26%238217%3Best%20une%20bonne%20situation%20%C3%A7a%20%3F&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="759" height="757" src="https://blog.ovhcloud.com/wp-content/uploads/2026/02/Tranches-de-Tech-visuel-rond.png" alt="Tranche de Tech logo (avocado)" class="wp-image-30480" style="aspect-ratio:1;object-fit:cover;width:400px" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/02/Tranches-de-Tech-visuel-rond.png 759w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/Tranches-de-Tech-visuel-rond-300x300.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/Tranches-de-Tech-visuel-rond-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2026/02/Tranches-de-Tech-visuel-rond-70x70.png 70w" sizes="auto, (max-width: 759px) 100vw, 759px" /></figure>



<ul class="wp-block-list">
<li>👤 Invitée : Alexandre Touret
<ul class="wp-block-list">
<li>Bluesky : @<a href="http://touret.info" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">touret.info</a></li>



<li>LinkedIn : <a href="https://www.linkedin.com/in/atouret/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.linkedin.com/in/atouret/</a></li>
</ul>
</li>



<li>🗓️ Date d&#8217;enregistrement : 27 février 2026</li>



<li>🎧 <a href="https://smartlink.ausha.co/tranches-de-tech/tranches-de-tech-26-architecte-c-est-une-bonne-situation-ca" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Lien vers l&#8217;épisode</a></li>
</ul>



<h3 class="wp-block-heading">👤 Présentation d’Alexandre &#8211; ⏱️ 0&#8243;37s</h3>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h3 class="wp-block-heading">📰 News Techs&nbsp;</h3>



<h4 class="wp-block-heading">🤖 Intelligence Artificielle &#8211; ⏱️ 15&#8243;40s</h4>



<h5 class="wp-block-heading">Spotify indique que ses développeurs ne codent plus depuis décembre grâce à l’IA</h5>



<ul class="wp-block-list">
<li><a href="https://developers.slashdot.org/story/26/02/13/1834228/spotify-says-its-best-developers-havent-written-a-line-of-code-since-december-thanks-to-ai" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://developers.slashdot.org/story/26/02/13/1834228/spotify-says-its-best-developers-havent-written-a-line-of-code-since-december-thanks-to-ai</a></li>
</ul>



<h5 class="wp-block-heading">OpenClaw</h5>



<ul class="wp-block-list">
<li><a href="https://openclaw.ai/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://openclaw.ai/</a></li>



<li><a href="https://www.infostealers.com/article/clawdbot-the-new-primary-target-for-infostealers-in-the-ai-era/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.infostealers.com/article/clawdbot-the-new-primary-target-for-infostealers-in-the-ai-era/</a>  </li>



<li><a href="https://www.youtube.com/watch?v=F0EammZyMaA" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.youtube.com/watch?v=F0EammZyMaA</a></li>
</ul>



<h5 class="wp-block-heading">OpenClaw founder Peter Steinberger is joining OpenAI</h5>



<ul class="wp-block-list">
<li><a href="https://www.theverge.com/ai-artificial-intelligence/879623/openclaw-founder-peter-steinberger-joins-openai " data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.theverge.com/ai-artificial-intelligence/879623/openclaw-founder-peter-steinberger-joins-openai </a></li>
</ul>



<h5 class="wp-block-heading">IA au quotidien &#8211; Paralléliser sa production agentique de code</h5>



<ul class="wp-block-list">
<li><a href="https://www.linkedin.com/pulse/claude-code-au-quotidien-parall%C3%A9liser-ses-t%C3%A2ches-fr%C3%A9d%C3%A9ric-camblor-jqjpe/?trackingId=h9dz1qUyRxeD6qwWMb9vlg%3D%3D" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.linkedin.com/pulse/claude-code-au-quotidien-parall%C3%A9liser-ses-t%C3%A2ches-fr%C3%A9d%C3%A9ric-camblor-jqjpe/?trackingId=h9dz1qUyRxeD6qwWMb9vlg%3D%3D</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h4 class="wp-block-heading">👩‍💻 Développement &#8211; ⏱️ 48&#8243;40s</h4>



<h5 class="wp-block-heading">Java has evolved.Your code can too</h5>



<ul class="wp-block-list">
<li><a href="https://javaevolved.github.io/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://javaevolved.github.io/</a></li>
</ul>



<h5 class="wp-block-heading">Claude code skills</h5>



<ul class="wp-block-list">
<li><a href="https://resources.anthropic.com/hubfs/The-Complete-Guide-to-Building-Skill-for-Claude.pdf" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://resources.anthropic.com/hubfs/The-Complete-Guide-to-Building-Skill-for-Claude.pdf</a></li>



<li><a href="https://bsky.app/profile/k33gorg.bsky.social/post/3me6zw6klkk2d" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://bsky.app/profile/k33gorg.bsky.social/post/3me6zw6klkk2d</a></li>
</ul>



<h5 class="wp-block-heading">The Augmented Developer: My Journey with Cursor CLI</h5>



<ul class="wp-block-list">
<li><a href="https://david.pilato.fr/posts/2026-02-06-the-augmented-developer/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://david.pilato.fr/posts/2026-02-06-the-augmented-developer/</a></li>
</ul>



<h5 class="wp-block-heading">L’ANSSI révise sa doctrine vis-à-vis du logiciel libre</h5>



<ul class="wp-block-list">
<li><a href="https://linuxfr.org/news/l-anssi-revise-sa-doctrine-vis-a-vis-du-logiciel-libre" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://linuxfr.org/news/l-anssi-revise-sa-doctrine-vis-a-vis-du-logiciel-libre</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h4 class="wp-block-heading">👥 Sociétal &#8211; ⏱️ 1h&#8221;02&#8243;30s</h4>



<h5 class="wp-block-heading">IBM triple le nombre de jeunes diplômés dans leur recrutement</h5>



<ul class="wp-block-list">
<li><a href="https://fortune.com/2026/02/13/tech-giant-ibm-tripling-gen-z-entry-level-hiring-according-to-chro-rewriting-jobs-ai-era/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://fortune.com/2026/02/13/tech-giant-ibm-tripling-gen-z-entry-level-hiring-according-to-chro-rewriting-jobs-ai-era/</a></li>
</ul>



<h5 class="wp-block-heading">Forklifts Require Training : Sleepwalking into labor collapse</h5>



<ul class="wp-block-list">
<li><a href="https://www.zacsweers.dev/forklifts-require-training/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.zacsweers.dev/forklifts-require-training/</a></li>
</ul>



<h4 class="wp-block-heading">🎤 Conférences / meetup &#8211; ⏱️ 1h&#8221;13&#8243;20s</h4>



<ul class="wp-block-list">
<li><a href="https://developers.events/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://developers.events/</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p class="has-text-align-center">💡 Retrouvez l&#8217;ensemble des autres épisodes ici : <a href="https://smartlink.ausha.co/tranches-de-tech" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://smartlink.ausha.co/tranches-de-tech</a> 💡</p>



<p></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2F%25f0%259f%258e%2599%25ef%25b8%258f-tranches-de-tech-26-architecte-cest-une-bonne-situation-ca%2F&amp;action_name=%F0%9F%8E%99%EF%B8%8F%20Tranches%20de%20Tech%20%2326%20%26%238211%3B%20Architecte%2C%20c%26%238217%3Best%20une%20bonne%20situation%20%C3%A7a%20%3F&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
