<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Enix.io – DevOps Kubernetes &amp; Cloud Native</title><link>https://enix.io/en/</link><description>Enix : Cloud, DevOps and Kubernetes experts. Everywhere : on our private Cloud, On-premises, on our Cloud SP partners.</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Tue, 31 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://enix.io/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Helm 4: the key improvements!</title><link>https://enix.io/en/blog/helm-4/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/helm-4/</guid><description>&lt;p&gt;Helm 4 was released as planned in late 2025 during KubeCon + CloudNativeCon North America. We had anticipated 1 year ago the main new features in this article — here’s what the final release confirms and clarifies.&lt;/p&gt;
&lt;p&gt;We took a deep dive into the &lt;strong&gt;main new features of Helm 4&lt;/strong&gt; — from the shift to Server Side Apply to the advanced management of resource status. The goal: to better understand what these changes mean for your Kubernetes deployments, and how to anticipate the &lt;strong&gt;migration to Helm 4&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>We tested Proxmox Datacenter Manager!</title><link>https://enix.io/en/blog/proxmox-datacenter-manager/</link><pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/proxmox-datacenter-manager/</guid><description>&lt;p&gt;Proxmox has been developing two &lt;strong&gt;flagship open-source solutions for virtualization&lt;/strong&gt; for over 15 years: Proxmox Virtual Environment (Proxmox VE) and Proxmox Backup Server (Proxmox BS).&lt;/p&gt;
&lt;p&gt;Proxmox VE enables the creation of virtualization clusters on physical servers to host virtual resources, while Proxmox PBS allows for backing up cluster resources in case of a virtual environment failure.&lt;/p&gt;
&lt;p&gt;Since December 4, 2025, Proxmox has officially released its &lt;strong&gt;Proxmox Datacenter Manager&lt;/strong&gt; - also known by its short name: “Proxmox DM” or “PDM”.&lt;/p&gt;</description></item><item><title>Our open-source CLI to efficiently manage your Proxmox VE clusters!</title><link>https://enix.io/en/blog/cli-tool-proxmox-management/</link><pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/cli-tool-proxmox-management/</guid><description>&lt;p&gt;At Enix, we manage many Proxmox platforms for our clients. Our teams are therefore often faced with various needs in &lt;strong&gt;Proxmox VE cluster management&lt;/strong&gt;: VM audit and management (virtual servers), updates, migrations, inventory, etc.&lt;/p&gt;
&lt;p&gt;Although the Proxmox VE GUI (web interface) is already very complete, some repeated operations can become tedious, especially in a multi-cluster context. Other operations are not implemented in the Proxmox GUI, likely because they would be too complex to develop (e.g., RAM/CPU quota management per user).&lt;/p&gt;</description></item><item><title>Breathing new life into old tech: PXE for Talos, the Cloud Native way.</title><link>https://enix.io/en/blog/pxe-talos/</link><pubDate>Fri, 22 Aug 2025 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/pxe-talos/</guid><description>&lt;p&gt;Breathing new life into old tech: PXE for Talos, the Cloud Native way.&lt;/p&gt;
&lt;p&gt;Simplify the installation of Talos OS for Kubernetes on bare metal servers with a containerized, GitOps-ready PXE server!&lt;/p&gt;
&lt;p&gt;We recently helped a client migrate their Kubernetes clusters to &lt;strong&gt;Talos&lt;/strong&gt;, an immutable OS purpose-built for Kubernetes (we particularly appreciate it for highly secure managed clusters, whether on-premises or in a private cloud).&lt;/p&gt;
&lt;p&gt;With an infrastructure made up of around fifty large bare-metal servers, we faced a key challenge: &lt;strong&gt;how to efficiently install Talos OS on so many servers&lt;/strong&gt;, both for the initial installation and for the frequent updates (which come with the immutable OS approach).&lt;/p&gt;</description></item><item><title>GitOps: The Principles and Why You Should Adopt It</title><link>https://enix.io/en/blog/gitops/</link><pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/gitops/</guid><description>&lt;p&gt;This article is intended for those who are just discovering or haven&amp;rsquo;t yet formed a strong opinion about &lt;strong&gt;GitOps&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It can be particularly difficult to get a clear picture when navigating between the &lt;a href="https://enix.io/fr/expert-devops/" target="_blank" rel="noopener"
&gt;DevOps&lt;/a&gt; movement, &lt;strong&gt;Infrastructure-as-Code&lt;/strong&gt; (IaC) tools, and the &lt;strong&gt;GitOps method&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The goal of this article is to shed light on all of these concepts. By the end of this read, you should have formed your own opinion — and maybe even a preference — about the GitOps approach that suits you best.&lt;/p&gt;</description></item><item><title>Survey - Impacts of Broadcom's Acquisition of VMware on French CIOs</title><link>https://enix.io/en/blog/enquete-vmware/</link><pubDate>Tue, 17 Dec 2024 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/enquete-vmware/</guid><description>&lt;p&gt;Between July and October 2024, we conducted a &lt;strong&gt;comprehensive survey of over 100 French IT decision-makers&lt;/strong&gt; to understand the impact of Broadcom&amp;rsquo;s acquisition of VMware on their organizations.&lt;/p&gt;
&lt;p&gt;In this freely downloadable white paper, we present the &lt;strong&gt;key findings, enriched with our field insights and analyses&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;img
src="https://enix.io/en/blog/enquete-vmware/ebook-vmware_hu_c9430e297c802ebb.webp"
alt="Cover of our whitepaper on VMware survey"
loading="lazy"
/&gt;
&lt;/p&gt;
&lt;div class="container"&gt;
&lt;div class="mx-lg-auto" style="max-width: 500px;"&gt;
&lt;div class="card overflow-hidden p-5 nx-bg-blue text-center"&gt;
&lt;div class="container"&gt;
&lt;div class="mb-3"&gt;
&lt;span class="h4 text-white"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;a class="btn btn-light transition-3d-hover" href="enix-livre-blanc-enquete-impact-vmware-dec-2024.pdf" download
onclick="dataLayer.push({'event': &amp;#34;cta-download-livre-blanc&amp;#34;});"&gt;Download our survey (french)&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;img
src="https://enix.io/en/blog/enquete-vmware/popeye_hu_c7332f5e0aa18d2.webp"
alt="Monkey Enix popeye"
loading="lazy"
/&gt;
&lt;/p&gt;</description></item><item><title>We tested the Veeam Backup Solution with Proxmox VE!</title><link>https://enix.io/en/blog/veeam-proxmox/</link><pubDate>Tue, 03 Dec 2024 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/veeam-proxmox/</guid><description>&lt;p&gt;Since VMware was acquired by Broadcom, IT service departments have been facing significant price increases, prompting them to evolve their IT infrastructure (Information Systems and Business-specific IT platform) toward more sustainable solutions.&lt;/p&gt;
&lt;p&gt;Among hypervisors, the open-source solution &lt;strong&gt;&lt;a href="https://www.proxmox.com/en/proxmox-virtual-environment/overview" target="_blank" rel="nofollow noopener"
&gt;Proxmox VE&lt;/a&gt;&lt;/strong&gt; has become one of the most popular alternatives to VMware. In response to its growing adoption, developers of virtualization-related software solutions are beginning to &lt;strong&gt;integrate Proxmox VE support&lt;/strong&gt; into their offerings. This is notably the case with &lt;strong&gt;Veeam&lt;/strong&gt;, a major player in backup solutions historically used with VMware. &lt;strong&gt;Proxmox VE has been supported since version 12.2 (August 2024) of its Veeam Data Platform.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>A Guide to Migrating from VMware to Proxmox for CIOs and CTOs</title><link>https://enix.io/en/blog/migration-vmware-proxmox/</link><pubDate>Tue, 01 Oct 2024 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/migration-vmware-proxmox/</guid><description>&lt;h1 id="a-guide-to-migrating-from-vmware-to-proxmox-for-cios-and-ctos"&gt;A Guide to Migrating from VMware to Proxmox for CIOs and CTOs&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Originally published on Le Monde Informatique.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In light of VMware’s pricing policy changes, many companies have already started &lt;strong&gt;migrating to alternative solutions like Proxmox VE&lt;/strong&gt; (Proxmox Virtual Environment). We’ve supported french companies across various industries, such as Oodrive, XBTO, Weka, and IMIO.be, in making this transition. A migration of this nature presents &lt;strong&gt;concrete challenges&lt;/strong&gt;, both &lt;strong&gt;technical&lt;/strong&gt; and &lt;strong&gt;organizational&lt;/strong&gt;, which we aim to share in this experience report.&lt;/p&gt;</description></item><item><title>Alternatives to VMware: The Benefits of Open Source</title><link>https://enix.io/en/blog/vmware-alternatives/</link><pubDate>Mon, 30 Sep 2024 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/vmware-alternatives/</guid><description>&lt;h1 id="alternatives-to-vmware-the-benefits-of-open-source"&gt;Alternatives to VMware: The Benefits of Open Source&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Originally published on Le Monde Informatique.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As the effects of VMware&amp;rsquo;s acquisition by Broadcom materialize, VMware’s dominance could be challenged by the rise of alternative solutions.&lt;/p&gt;
&lt;p&gt;Some companies are choosing to &lt;strong&gt;replace VMware with other proprietary solutions&lt;/strong&gt;, such as Nutanix, Citrix, or Microsoft, with equivalent functionalities. Others, frustrated by vendor lock-in and often high prices, are looking to avoid the same model of technological and financial dependency, &lt;strong&gt;turning instead to open-source technologies like Proxmox VE&lt;/strong&gt; or XCP-NG.&lt;/p&gt;</description></item><item><title>VMware Buyout: What Strategy Should You Adopt?</title><link>https://enix.io/en/blog/migration-vmware-strategy/</link><pubDate>Sun, 29 Sep 2024 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/migration-vmware-strategy/</guid><description>&lt;h1 id="vmware-buyout-what-strategy-should-you-adopt"&gt;VMware Buyout: What Strategy Should You Adopt?&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Originally published on Le Monde Informatique.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In November 2023, Broadcom, the American semiconductor giant, officially acquired VMware, the virtualization specialist, for a sum of $69 billion. This massive transaction has already had significant repercussions for thousands of VMware clients worldwide. However, some CIOs and infrastructure leaders remain optimistic, viewing this as an opportunity to rethink their IT strategy, aiming for more sovereignty and long-term cost savings.&lt;/p&gt;</description></item><item><title>Kubernetes Ingress Controller : migration handbook</title><link>https://enix.io/en/blog/k8s-ingress-migration/</link><pubDate>Tue, 09 Jan 2024 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/k8s-ingress-migration/</guid><description>&lt;p&gt;In this article, we’ll present various techniques that can be used to migrate from one existing Kubernetes Ingress Controller to another one.&lt;/p&gt;
&lt;h2 id="first-things-first-what-is-an-ingress-controller-"&gt;First things first: what is an ingress controller ?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://kubernetes.io/docs/concepts/services-networking/ingress/" target="_blank" rel="noopener"
&gt;Ingress&lt;/a&gt;&lt;/strong&gt; is a popular Kubernetes API resource to &lt;strong&gt;route incoming HTTP (and HTTPS) requests to their corresponding pods&lt;/strong&gt;. Developers and administrators can create &lt;em&gt;ingress resources&lt;/em&gt;, which define routing rules. For instance, “requests to &lt;a href="https://www.example.com/api" target="_blank" rel="noopener"
&gt;www.example.com/api&lt;/a&gt; are load balanced across pods associated with service XYZ.” These resources rely on one or more ingress &lt;em&gt;controllers&lt;/em&gt; to implement the actual traffic handling, routing, and load balancing.&lt;/p&gt;</description></item><item><title>Overcoming the Deployment Challenges of H100 GPUs in Azure Kubernetes</title><link>https://enix.io/en/blog/azure-kubernetes-gpu-h100/</link><pubDate>Thu, 21 Dec 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/azure-kubernetes-gpu-h100/</guid><description>&lt;p&gt;In the ever-evolving world of cloud computing, &lt;strong&gt;NVIDIA H100 GPUs&lt;/strong&gt; have made a name for themselves with their stellar performance, driving significant strides in &lt;strong&gt;AI&lt;/strong&gt; and &lt;strong&gt;intensive computing&lt;/strong&gt;. Recently made available by most cloud providers, including Azure, we got the chance to integrate them into an Azure Kubernetes Service (&lt;strong&gt;AKS&lt;/strong&gt;) cluster for a heavyweight in &lt;strong&gt;Generative AI&lt;/strong&gt; (LLM).&lt;/p&gt;
&lt;p&gt;Our original deployment plan, which worked with the A100 generation, never led to a functional cluster. We &lt;strong&gt;encountered a problem when launching instances&lt;/strong&gt; of type &lt;code&gt;Standard_ND96isr_H100_v5&lt;/code&gt; (integrating 8 NVIDIA H100 GPUs) on &lt;code&gt;Ubuntu 22.04&lt;/code&gt;, within a Kubernetes &lt;code&gt;1.27.7&lt;/code&gt; cluster.&lt;/p&gt;</description></item><item><title>Deploying Kubernetes on OVHcloud Dedicated Infrastructure</title><link>https://enix.io/en/blog/kubernetes-ovhcloud/</link><pubDate>Mon, 23 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/kubernetes-ovhcloud/</guid><description>&lt;p&gt;OVHcloud&amp;rsquo;s &lt;em&gt;Managed Kubernetes Service&lt;/em&gt; (public cloud) addresses many of the challenges highlighted in this article. However, there are relevant cases for deploying &lt;a href="https://enix.io/en/blog/kubernetes-k8s/" target="_blank" rel="noopener"
&gt;Kubernetes&lt;/a&gt; on dedicated infrastructures (bare metal, VPC, private cloud).&lt;/p&gt;
&lt;p&gt;In this article, we delve into this scenario, sharing our tips for &lt;strong&gt;deploying a Kubernetes cluster on OVHcloud dedicated infrastructure&lt;/strong&gt;. We&amp;rsquo;ll set it up manually or using our automation tools.&lt;/p&gt;
&lt;p&gt;When would this approach be useful? For example, when addressing these &lt;strong&gt;specific needs&lt;/strong&gt; expressed by some of our shared clients:&lt;/p&gt;</description></item><item><title>Advanced Kubectl Commands for Managing Your Kubernetes Cluster</title><link>https://enix.io/en/blog/kubectl-commands-2/</link><pubDate>Wed, 11 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/kubectl-commands-2/</guid><description>&lt;p&gt;Navigating the world of Kubernetes can be daunting, but with the right set of commands, you can master it!&lt;/p&gt;
&lt;p&gt;In our previous article on &lt;a href="https://enix.io/en/blog/kubectl-commands/" target="_blank" rel="noopener"
&gt;Kubectl Commands: Efficient Kubernetes Cluster Administration&lt;/a&gt;, I introduced you to the tool and some of the main kubectl commands.&lt;/p&gt;
&lt;p&gt;Today, we delve deeper into the DevOps jungle to discover these fascinating creatures known as &lt;strong&gt;advanced kubectl commands&lt;/strong&gt;. Let&amp;rsquo;s go! 🦍&lt;/p&gt;
&lt;h2 id="advanced-kubectl-commands-for-everyday-daily-operations"&gt;Advanced Kubectl Commands for Everyday Daily Operations&lt;/h2&gt;
&lt;p&gt;Here, we&amp;rsquo;ll explore slightly complex kubectl commands that can be very useful in daily operations. In some cases, you might even set up an alias for easier access.&lt;/p&gt;</description></item><item><title>Kubectl Commands: Efficient Kubernetes Cluster Administration</title><link>https://enix.io/en/blog/kubectl-commands/</link><pubDate>Wed, 11 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/kubectl-commands/</guid><description>&lt;p&gt;In this article, we&amp;rsquo;ll explore how to manage Kubernetes clusters with the official command-line tool, &lt;strong&gt;kubectl&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll delve into the primary commands and also touch upon some &lt;strong&gt;advanced kubectl commands&lt;/strong&gt; that might be unfamiliar!&lt;/p&gt;
&lt;p&gt;To start, &lt;strong&gt;kubectl&lt;/strong&gt; is a blend of the words &lt;em&gt;Kubernetes&lt;/em&gt; and &lt;em&gt;control&lt;/em&gt;. It&amp;rsquo;s a tool that &lt;strong&gt;allows communication with the Kubernetes API&lt;/strong&gt; to create, modify, read, or even delete resources from our Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;For those needing a refresher, I suggest revisiting our introductory article on &lt;a href="https://enix.io/en/blog/kubernetes-k8s/" target="_blank" rel="noopener"
&gt;Kubernetes&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How to Create a Prometheus Exporter?</title><link>https://enix.io/en/blog/create-prometheus-exporter/</link><pubDate>Tue, 10 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/create-prometheus-exporter/</guid><description>&lt;p&gt;If you&amp;rsquo;re reading this article, chances are you&amp;rsquo;re well-versed in &lt;strong&gt;Kubernetes&lt;/strong&gt; and &lt;strong&gt;Prometheus&lt;/strong&gt;&amp;hellip; Fortunately, that&amp;rsquo;s the very topic we&amp;rsquo;re diving into!&lt;/p&gt;
&lt;p&gt;From defining to scraping and all the way to deployment, I&amp;rsquo;ll cover nearly every aspect of the exporter we&amp;rsquo;re about to craft together. Don&amp;rsquo;t worry, it&amp;rsquo;ll go smoothly. 😉&lt;/p&gt;
&lt;p&gt;Before diving in, it&amp;rsquo;s worth noting that I&amp;rsquo;m working on a &lt;strong&gt;sandbox cluster&lt;/strong&gt; with Prometheus already set up using &lt;a href="https://github.com/prometheus-operator/prometheus-operator" target="_blank" rel="noopener"
&gt;prometheus-operator&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="what-is-a-prometheus-exporter"&gt;What is a Prometheus Exporter?&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s kick things off with some theory. &lt;strong&gt;Prometheus exporters&lt;/strong&gt; are both common and abundant; for a comprehensive list, you can refer to the official documentation &lt;a href="https://prometheus.io/docs/instrumenting/exporters/" target="_blank" rel="noopener"
&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>K9s: a Kubernetes Cluster Management Tool</title><link>https://enix.io/en/blog/k9s/</link><pubDate>Mon, 09 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/k9s/</guid><description>&lt;p&gt;(Article updated on 02/10/2025).&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re regularly managing &lt;a href="https://enix.io/en/blog/kubernetes-k8s/" target="_blank" rel="noopener"
&gt;Kubernetes&lt;/a&gt; clusters, you&amp;rsquo;ve probably noticed the repetitive nature of typing out &lt;code&gt;kubectl&lt;/code&gt; commands.&lt;/p&gt;
&lt;p&gt;Listing pods or deployments, switching namespaces, viewing container logs, editing or deleting resources&amp;hellip; these actions are relatively simple but can quickly become tedious. (you can check my articles on &lt;a href="https://enix.io/en/blog/kubectl-commands/" target="_blank" rel="noopener"
&gt;Kubectl Commands&lt;/a&gt; and &lt;a href="https://enix.io/en/blog/kubectl-commands-2/" target="_blank" rel="noopener"
&gt;Advanced Kubectl Commands&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;K9s&lt;/strong&gt; is a robust tool designed to simplify these routine tasks on your clusters. In this article, we&amp;rsquo;ll walk you through K9s using a Prometheus stack example. I&amp;rsquo;ve included brief demo videos for clarity, eliminating the need for your to have your own Kubernetes cluster.&lt;/p&gt;</description></item><item><title>Kubebuilder: Easily create a Kubernetes operator</title><link>https://enix.io/en/blog/kubebuilder/</link><pubDate>Mon, 09 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/kubebuilder/</guid><description>&lt;p&gt;In this article, I will introduce you to how to use &lt;strong&gt;kubebuilder to easily create a Kubernetes operator&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;After a quick introduction on &lt;strong&gt;kubebuilder&lt;/strong&gt;, we will &lt;strong&gt;create step by step a k8s operator&lt;/strong&gt; (using the example of the kube-image-keeper operator, an open-source tool for caching images within the Kubernetes cluster). Finally, we will discuss the &lt;strong&gt;benefits and limitations&lt;/strong&gt; of kubebuilder.&lt;/p&gt;
&lt;h2 id="what-is-kubebuilder"&gt;What is Kubebuilder?&lt;/h2&gt;
&lt;h3 id="kubebuilder-a-framework-for-k8s-operator-creation"&gt;Kubebuilder, a framework for K8s operator creation&lt;/h3&gt;
&lt;p&gt;Kubebuilder is a &lt;strong&gt;framework designed to streamline the creation of Kubernetes operators&lt;/strong&gt;. It empowers you to &lt;strong&gt;generate project boilerplate directly from your terminal&lt;/strong&gt; including essential components such as &lt;code&gt;Makefile&lt;/code&gt;, &lt;code&gt;Dockerfile&lt;/code&gt;, and basic source files like &lt;code&gt;main.go&lt;/code&gt;. Once the project is created, Kubebuilder also facilitates the generation of essential files for configuring Custom Resource Definitions (CRDs), controllers, and webhooks.&lt;/p&gt;</description></item><item><title>Thanos: Aggregating Multiple Prometheus Instances</title><link>https://enix.io/en/blog/thanos-prometheus/</link><pubDate>Fri, 06 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/thanos-prometheus/</guid><description>&lt;p&gt;This is the concluding article in our three-part series on &lt;strong&gt;Thanos&lt;/strong&gt; monitoring.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Part 1: &lt;a href="https://enix.io/en/blog/prometheus-thanos/" target="_blank" rel="noopener"
&gt;&amp;ldquo;Thanos: Long-Term Storage of Prometheus Metrics&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 2: &lt;a href="https://enix.io/en/blog/thanos-k8s/" target="_blank" rel="noopener"
&gt;&amp;ldquo;Deploying Thanos and Prometheus on a K8s Cluster&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 3: &lt;strong&gt;&amp;ldquo;Thanos: Aggregating Multiple Prometheus Instances&amp;rdquo;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;In the previous article, we ended by configuring the &lt;em&gt;Thanos Query&lt;/em&gt; as a &lt;em&gt;datasource&lt;/em&gt; in Grafana to query multiple Prometheus instances from a single &lt;em&gt;datasource&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Now, let&amp;rsquo;s explore how Thanos aggregates multiple Prometheus instances. We will discuss two relevant cases: within a single Kubernetes cluster and across multiple Kubernetes clusters.&lt;/p&gt;</description></item><item><title>Deploying Thanos and Prometheus on a K8s Cluster</title><link>https://enix.io/en/blog/thanos-k8s/</link><pubDate>Thu, 05 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/thanos-k8s/</guid><description>&lt;p&gt;This article is the second in a series of 3 on &lt;strong&gt;Thanos&lt;/strong&gt; monitoring.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Part 1: &lt;a href="https://enix.io/en/blog/prometheus-thanos/" target="_blank" rel="noopener"
&gt;&amp;ldquo;Thanos: Long-term Storage for Prometheus Metrics&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 2: &lt;strong&gt;&amp;ldquo;Deploying Thanos and Prometheus on a K8s Cluster&amp;rdquo;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Part 3: &lt;a href="https://enix.io/en/blog/thanos-prometheus/" target="_blank" rel="noopener"
&gt;&amp;ldquo;Thanos: Aggregating Multiple Prometheus&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Today, it&amp;rsquo;s time for action: we heat up our Kubernetes &lt;em&gt;cluster&lt;/em&gt; and &lt;strong&gt;focus on how to deploy Thanos&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Note: Our focus here is on deploying a single Prometheus and Thanos instance on Kubernetes, but Thanos can also be used and deployed outside of Kubernetes.&lt;/p&gt;</description></item><item><title>Thanos : Long-Term Storage of Prometheus Metrics</title><link>https://enix.io/en/blog/prometheus-thanos/</link><pubDate>Wed, 04 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/prometheus-thanos/</guid><description>&lt;p&gt;This article kicks off our three-part series on &lt;strong&gt;Thanos&lt;/strong&gt; monitoring.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Part 1: &lt;strong&gt;&amp;ldquo;Thanos: Long-term Storage for Prometheus Metrics&amp;rdquo;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Part 2: &lt;a href="https://enix.io/en/blog/thanos-k8s/" target="_blank" rel="noopener"
&gt;&amp;ldquo;Deploying Thanos and Prometheus on a K8s Cluster&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 3: &lt;a href="https://enix.io/en/blog/thanos-prometheus/" target="_blank" rel="noopener"
&gt;&amp;ldquo;Thanos: Aggregating Multiple Prometheus&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;This initial article introduces Thanos used for &lt;strong&gt;long-term collection of Prometheus metrics&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;By default, the &lt;strong&gt;retention duration for Prometheus metrics is 15 days&lt;/strong&gt;. To keep them for a longer period (months, or even years), the first reflex would be to increase Prometheus&amp;rsquo;s retention duration.&lt;/p&gt;</description></item><item><title>What is Kubernetes?</title><link>https://enix.io/en/blog/kubernetes-k8s/</link><pubDate>Tue, 03 Oct 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/kubernetes-k8s/</guid><description>&lt;p&gt;Commonly abbreviated as &lt;em&gt;&lt;strong&gt;kube&lt;/strong&gt;&lt;/em&gt; or &lt;em&gt;&lt;strong&gt;K8s&lt;/strong&gt;&lt;/em&gt;, Kubernetes has risen in recent years as the reference &lt;strong&gt;container orchestration&lt;/strong&gt; solution for application deployment.&lt;/p&gt;
&lt;p&gt;With Kubernetes, you can &lt;strong&gt;deploy containerized applications across any type of IT infrastructure&lt;/strong&gt; and &lt;strong&gt;centrally managing the various resources&lt;/strong&gt; they require. These can be &lt;em&gt;computing&lt;/em&gt; resources, storage, databases, &lt;em&gt;networking&lt;/em&gt;, etc. These resources are grouped into a &lt;strong&gt;Kubernetes cluster&lt;/strong&gt; composed of a set of servers.&lt;/p&gt;
&lt;p&gt;While this article doesn&amp;rsquo;t delve into the basics of containers (a prerequisite for using K8s), it presents Kubernetes in broad strokes, its native mechanisms, its utility for platform operation, and the different types of K8s deployments.&lt;/p&gt;</description></item><item><title>Increase Availability &amp; Kubernetes Image Caching with kube-image-keeper</title><link>https://enix.io/en/blog/cache-image-docker-kubernetes/</link><pubDate>Wed, 25 Jan 2023 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/cache-image-docker-kubernetes/</guid><description>&lt;p class="h2"&gt;Project background&lt;/p&gt;
&lt;p&gt;At Enix, we manage hundreds of Kubernetes clusters for our customers and our own internal use. On cloud, on premises, big and small, from development to large-scale production deployments. One recurring challenge we face across all these environments is ensuring &lt;strong&gt;reliable Kubernetes image caching&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Every Kubernetes administrator has encountered, or will encounter, an issue related to container image retrieval. This may happen when you roll out an update to patch a security issue, fix a bug or rollback to a stable release after a faulty update. And then, surprise: on a few nodes of the cluster, some containers won’t start because the image can’t be pulled. The registry might be down, or having a bad day, or the image might have been removed, or you might be hitting your Docker Hub pull quota. Either way: you’re SOL (sadly out of luck).&lt;/p&gt;</description></item><item><title>Storage in Kubernetes: how we developed a CSI plugin</title><link>https://enix.io/en/blog/kubernetes-storage-csi-plugin/</link><pubDate>Mon, 18 Oct 2021 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/kubernetes-storage-csi-plugin/</guid><description>&lt;p&gt;Containers are a great way to build, ship and run applications anywhere, on-premises or in the cloud. When they&amp;rsquo;re used correctly, they improve the portability and operability of our workloads.&lt;/p&gt;
&lt;p&gt;For production deployments involving multiple machines (for scalability or reliability reasons), it is fairly common to use an &lt;em&gt;orchestrator&lt;/em&gt; like Kubernetes. The orchestrator can also manage the underlying infrastructure components, including network and storage.&lt;/p&gt;
&lt;p&gt;Stateful components (like databases or message queues) are comparatively harder to deploy than their stateless counterparts, precisely because of these storage components.&lt;/p&gt;</description></item><item><title>Avoiding certificate expiration in a Kubernetes infrastructure</title><link>https://enix.io/en/blog/avoiding-certificate-expiration-kubernetes-infrastructure/</link><pubDate>Thu, 18 Mar 2021 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/avoiding-certificate-expiration-kubernetes-infrastructure/</guid><description>&lt;p&gt;We have all seen these ugly security alerts caused by expired TLS certificates.&lt;/p&gt;
&lt;p&gt;
&lt;img
src="https://enix.io/en/blog/avoiding-certificate-expiration-kubernetes-infrastructure/expired_hu_553d98c4d0d033cf.webp"
alt="Message de certificat expiré sous Chrome"
loading="lazy"
/&gt;
&lt;/p&gt;
&lt;p&gt;In this blog post, we will see a “belt and suspenders” approach to avoid this situation, by renewing them automatically &lt;strong&gt;and&lt;/strong&gt; detecting certificates that might expire (before they do!). In pure Cloud Native fashion, our solution will even run entirely on Kubernetes!&lt;/p&gt;
&lt;h2 id="x509-certificates-what-are-they"&gt;X.509 certificates, what are they?&lt;/h2&gt;
&lt;p&gt;X.509 certificates are used to ensure the &lt;strong&gt;security&lt;/strong&gt; of various actions in our Cloud Native world, and are widely used to guarantee the security of exchanges via HTTPS, so the APIs we all use also depend on them.&lt;/p&gt;</description></item><item><title>Rancher 2: Three Installation Methods</title><link>https://enix.io/en/blog/rancher-2-three-installation-methods/</link><pubDate>Mon, 15 Jun 2020 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/rancher-2-three-installation-methods/</guid><description>&lt;p&gt;Whether you&amp;rsquo;re on the lookout for a practical solution to hold the reins of Kubernetes, or an active Rancher 1.6 user, this blogpost on Rancher 2 may be of interest to you.&lt;/p&gt;
&lt;h2 id="what-is-rancher-2"&gt;What is Rancher 2?&lt;/h2&gt;
&lt;p&gt;If you only take a quick look at Rancher, you might think it&amp;rsquo;s &amp;ldquo;just&amp;rdquo; a simple graphical interface and wonder how it differs from the &lt;a href="https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/" target="_blank" rel="noopener"
&gt;official Kubernetes dashboard&lt;/a&gt;. However, there is a world between the two, since &lt;strong&gt;Rancher also manages&lt;/strong&gt; :&lt;/p&gt;</description></item><item><title>"Honey, I Shrunk Docker!" - part 1/3</title><link>https://enix.io/en/blog/docker-image-size-optimizations-1/</link><pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/docker-image-size-optimizations-1/</guid><description>&lt;p&gt;This is the &lt;strong&gt;first part&lt;/strong&gt; of our serie of blogposts dealing with &lt;strong&gt;Docker image size optimization&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;“Honey, I Shrunk Docker!”, Part 1/3 : here we are!&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://enix.io/en/blog/docker-image-size-optimizations-2/" target="_blank" rel="noopener"
&gt;“Honey, I Shrunk Docker!”, Part 2/3 &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://enix.io/en/blog/docker-image-size-optimizations-3/" target="_blank" rel="noopener"
&gt;“Honey, I Shrunk Docker!”, Part 3/3 &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;When getting started with containers, it’s pretty easy to be shocked by the size of the images that we build. We’re going to review a number of techniques to reduce image size, without sacrificing developers’ and ops’ convenience. In this first part, we will talk about multi-stage builds, because that’s where anyone should start if they want to reduce the size of their images. We will also explain the differences between static and dynamic linking, as well as why we should care about that. This will be the occasion to introduce Alpine.&lt;/p&gt;</description></item><item><title>"Honey, I Shrunk Docker!" - part 2/3</title><link>https://enix.io/en/blog/docker-image-size-optimizations-2/</link><pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/docker-image-size-optimizations-2/</guid><description>&lt;p&gt;This is the &lt;strong&gt;second part&lt;/strong&gt; of our serie of blogposts dealing with &lt;strong&gt;Docker image size optimization&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://enix.io/en/blog/docker-image-size-optimizations-1/" target="_blank" rel="noopener"
&gt;“Honey, I Shrunk Docker!”, Part 1/3 &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;“Honey, I Shrunk Docker!”, Part 2/3 : here we are!&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://enix.io/en/blog/docker-image-size-optimizations-3/" target="_blank" rel="noopener"
&gt;“Honey, I Shrunk Docker!”, Part 3/3 &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In the first part, we introduced multi-stage builds, static and dynamic linking, and briefly mentioned Alpine. In this second part, we are going to dive into some details specific to Go. Then we will talk more about Alpine, because it’s worth it; and finally we will see how things play out with other languages like Java, Node, Python, Ruby, and Rust.&lt;/p&gt;</description></item><item><title>"Honey, I Shrunk Docker!" - part 3/3</title><link>https://enix.io/en/blog/docker-image-size-optimizations-3/</link><pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/docker-image-size-optimizations-3/</guid><description>&lt;p&gt;This is the &lt;strong&gt;last part&lt;/strong&gt; of our serie of blogposts dealing with &lt;strong&gt;Docker image size optimization&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://enix.io/en/blog/docker-image-size-optimizations-1/" target="_blank" rel="noopener"
&gt;“Honey, I Shrunk Docker!”, Part 1/3 &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://enix.io/en/blog/docker-image-size-optimizations-3/" target="_blank" rel="noopener"
&gt;“Honey, I Shrunk Docker!”, Part 2/3 &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;“Honey, I Shrunk Docker!”, Part 3/3 : here we are!&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In the first two parts of this series, we covered the most common methods to optimize Docker image size. We saw how multi-stage builds, combined with Alpine-based images, and sometimes static builds, would generally give us the most dramatic savings. In this last part, we will see how to go even farther. We will talk about standardizing base images, stripping binaries, assets optimization, and other build systems or add-ons like DockerSlim or Bazel, as well as the NixOS distribution.&lt;/p&gt;</description></item><item><title>Continuous Integration: Getting rid of Manual Release Management</title><link>https://enix.io/en/blog/continuous-integration-getting-rid-manual-release-management/</link><pubDate>Mon, 16 Dec 2019 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/continuous-integration-getting-rid-manual-release-management/</guid><description>&lt;p&gt;A proper &lt;em&gt;release&lt;/em&gt; is a lot of work and a lot of steps. To ensure that the work is done &lt;strong&gt;well&lt;/strong&gt; &lt;em&gt;and&lt;/em&gt; &lt;strong&gt;quickly&lt;/strong&gt;, it is a good idea to automate as many of them as possible.&lt;/p&gt;
&lt;p&gt;Let’s talk about two steps in particular: the (automatic) &lt;strong&gt;numbering&lt;/strong&gt; of the next version, and the generation of its &lt;strong&gt;changelog&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;After having worked on a rather wide range of applications and libraries, our feedback is clear: &lt;em&gt;&lt;strong&gt;Automating&lt;/strong&gt; the release process pays off!&lt;/em&gt;  When this process is automatic (or simply requires less work), you can do it more often. Hence you can release &lt;strong&gt;new functionalities&lt;/strong&gt; (or fixes/patches) &lt;strong&gt;faster&lt;/strong&gt;. And everybody wins.&lt;/p&gt;</description></item><item><title>DIY at Enix, designing and producing a rotating beacon</title><link>https://enix.io/en/blog/diy-enix-designing-producing-rotating-beacon/</link><pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/diy-enix-designing-producing-rotating-beacon/</guid><description>&lt;p&gt;In our office, we have been using a rotating beacon to be notified whenever a new customer support ticket comes in, allowing a rapid response to our customers’s requests and sometimes urgent demands. We would now like to use an identical device for the notification of several types of monitoring alerts. Our original rotating beacon, of a pretty classical type, is made of an engine and a light bulb, both of which are controlled through a WiFi relay switch.&lt;/p&gt;</description></item><item><title>Kubernetes : kubectl wait</title><link>https://enix.io/en/blog/kubernetes-tips-tricks-kubectl-wait/</link><pubDate>Tue, 02 Apr 2019 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/kubernetes-tips-tricks-kubectl-wait/</guid><description>&lt;p&gt;The &lt;a href="https://enix.io/en/blog/kubernetes-k8s/" target="_blank" rel="noopener"
&gt;Kubernetes&lt;/a&gt; CLI offers a powerful command to monitor and react to changes in your cluster: the &lt;strong&gt;&lt;code&gt;kubectl wait&lt;/code&gt;&lt;/strong&gt; command.&lt;/p&gt;
&lt;p&gt;This command enables you to block execution (i.e. wait) until a specific condition is met, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a specified resource is deleted ;&lt;/li&gt;
&lt;li&gt;a specified resource transitions to a specific state&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="waiting-for-resource-deletion-kubectl-wait---fordelete"&gt;Waiting for resource deletion: &lt;code&gt;kubectl wait --for=delete&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;In this case, you will use the &lt;code&gt;--for=delete&lt;/code&gt; option as follows, for example on a &lt;em&gt;pod&lt;/em&gt; :&lt;/p&gt;</description></item><item><title>Deploying Kubernetes 1.13 on Openstack with Terraform</title><link>https://enix.io/en/blog/deploying-kubernetes-1-13-openstack-terraform/</link><pubDate>Wed, 26 Dec 2018 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/deploying-kubernetes-1-13-openstack-terraform/</guid><description>&lt;p&gt;We use &lt;strong&gt;OpenStack&lt;/strong&gt; a lot at Enix, especially to automate the setup of &lt;strong&gt;Kubernetes&lt;/strong&gt; clusters used during our training sessions. Whether through the &lt;em&gt;Horizon&lt;/em&gt; web interface or via the CLI, the &lt;strong&gt;pleasure&lt;/strong&gt; of deploying &lt;em&gt;a bulk&lt;/em&gt; of Virtual Machines never dries up!&lt;/p&gt;
&lt;p&gt;With a few years of using AWS behind me, switching to a private cloud was really easy. But in both cases, setting up and dismantling multiple virtual machines is still very time consuming. It is therefore on the good advice of Antoine and Romain that I tested Terraform; with the primary goal of &lt;strong&gt;automating&lt;/strong&gt; deployment.&lt;/p&gt;</description></item><item><title>Prometheus Service Discovery with Netbox</title><link>https://enix.io/en/blog/service-discovery-netbox-prometheus/</link><pubDate>Tue, 13 Nov 2018 00:00:00 +0000</pubDate><guid>https://enix.io/en/blog/service-discovery-netbox-prometheus/</guid><description>&lt;p&gt;Today, we will see how we can &amp;ldquo;connect&amp;rdquo; the &lt;strong&gt;Prometheus Service Discovery with Netbox&lt;/strong&gt; used as the source of truth for your infrastructures !&lt;/p&gt;
&lt;h2 id="prometheus-service-discovery"&gt;Prometheus Service Discovery&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://prometheus.io" target="_blank" rel="noopener"
&gt;Prometheus&lt;/a&gt;, a metrology system whose reputation is well established, has the particularity of retrieving the &lt;em&gt;metrics&lt;/em&gt; from the device (or &lt;em&gt;target&lt;/em&gt;) it monitors. While this &amp;ldquo;pull&amp;rdquo; operating mode (as opposed to &amp;ldquo;push&amp;rdquo;) has many advantages in terms of &lt;a href="https://prometheus.io/blog/2016/07/23/pull-does-not-scale-or-does-it/" target="_blank" rel="noopener"
&gt;scalability&lt;/a&gt; and &lt;a href="https://prometheus.io/docs/introduction/faq/#why-do-you-pull-rather-than-push?" target="_blank" rel="noopener"
&gt;practicality&lt;/a&gt;, it nevertheless implies that &lt;strong&gt;all the services to be monitored must be declared to the supervision server&lt;/strong&gt;.&lt;/p&gt;</description></item></channel></rss>