Packaging and Deploying Helm Charts with Guix

My daily job requires me to maintain multiple Helm Charts released to multiple Kubernetes Clusters. I’ve encountered mutiple limitations with Helm. The Go templating engine sometimes is not enough. The only functions available to Chart Helm maintainers have been added explicitely. You cannot add custom ones easily. The values.yaml file is great at reducing the interface between the Helm Chart maintainer and the users, but when an option is missing, the only ways are to fork or contribute a pull request, and this lead to complex values....

<span title='2024-04-01 00:00:00 +0000 UTC'>April 1, 2024</span>&nbsp;·&nbsp;4 min&nbsp;·&nbsp;Polyedre

Let's filter Prometheus metrics exposed by Softwares

This post discusses about the limit of Prometheus crawlers when a software exposes too much metrics, and provides a solution to limit the number of metrics exported by Softwares that cannot be modified. Sometimes you’re just crawling too much The number of metrics exported on the /metrics endpoint of a Software can impact the performances of Prometheus crawlers. There is at least two ways crawlers could fail to fetch metrics for a software....

<span title='2023-10-19 15:41:17 +0100 +0100'>October 19, 2023</span>&nbsp;·&nbsp;4 min&nbsp;·&nbsp;Polyedre

Using multiple kubectl contexts at the same time

Kubernetes clusters rarely come alone. If you have access to at least one, in no time you’ll need to switch your kubectl context to access other clusters. But what if you need to access two clusters simultaneously? This is a problem I had multiple times per week (even per day) for a few months. When comparing two Kubernetes clusters, if often had to switch the kubectl context between each command....

<span title='2023-07-15 00:00:00 +0000 UTC'>July 15, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;Polyedre

Reduce Kube State Metrics's sample count by 45%

Kube State Metrics is a service that listen to the Kubernetes API server and generates metrics about the state of the resources (Pods, Deployments, Namespaces…). The metrics are exported on the HTTP endpoint /metrics on the listening port (default 8080). They are served as plaintext and can be crawled directly by Prometheus. For each Kubernetes resource, some metrics are available. For Pods for instance, the metrics listed in this file are available....

<span title='2023-05-31 19:41:17 +0100 +0100'>May 31, 2023</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;Polyedre

Identifying unused files in Docker images with Dive

One of the challenges of using Docker is that images can often be quite large, especially for interpreted languages. Large Docker images increase pull time and disk space usage, making it difficult to manage and deploy applications. In this article, we’ll take a look at a tool called “dive” that can help to optimize the size of Docker images. Dive is a command-line tool that allows users to analyze the addition of each layer to the filesystem of a Docker image....

<span title='2022-12-10 12:57:17 +0100 +0100'>December 10, 2022</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;Polyedre