RSSAmplifier

Blog

~jpetazzo/

jpetazzo.github.ioRSS feed ↗69 posts

Latest posts

Patching CoreDNS configuration with Terraform on Kubernetes

During a recent training, a student asked me how I would update the configuration of CoreDNS on a Kubernetes cluster, when the cluster is deployed is Terraform and comes with CoreDNS pre-installed. This article explains how to do it, and shows more generally speaking how to get Terraform to update resources that it did not create directly in the first place. The context Almost every Kubernetes…

Améliorez vos talks de 42% grâce à ce truc bizarre

Je ne sais pas exactement combien de talks j’ai donné dans ma carrière (probablement quelques centaines). Je ne sais pas comment donner le meilleur talk du monde , par contre je vais partager avec vous un moyen (garanti!) d’améliorer n’importe quel talk—y compris le vôtre, donc. Cette technique est valable pour tout le monde, du néophyte qui n’est encore jamais monté sur scène à l’intervenant·e…

Comment obtenir le line-up parfait pour votre conférence ?

Durant ma carrière, j’ai participé à des centaines de conférences en tant qu’intervenant, et j’ai été plusieurs dizaines de fois organisateur ou membre du comité de sélection. Dans cet article, je vais partager quelques techniques et astuces que j’ai utilisées pour avoir le meilleur line-up possible. Ces techniques peuvent servir aux organisateurs de conférences, aux comités de sélection, aux…

Is Cloudflare overcharging us for their images service?

I recently went down a very deep rabbit hole to understand why, some months, Cloudflare was charging us 3x what we were expecting for their Cloudflare Images service. I’m posting this write-up because back then, a quick search didn’t turn anything up; and Cloudflare support has totally ghosted us for more than 8 months now. Context and scale Let’s get something out of the way first: this is not…

Understanding DNS resolution on Linux and Kubernetes

I recently investigated a warning message on Kubernetes that said: DNSConfigForming ... Nameserver limits were exceeded, some nameservers have been omitted . This was technically a Kubernetes event with type: Warning , and these usually indicate that there’s something wrong, so I wanted to investigate it. This led me down a pretty deep rabbit hole about DNS resolution on Linux in general and…

Six months with Wayland, from i3 to Sway

Six months ago, I started using Wayland (the graphics stack that will replace X11 on Linux). This is a summary of what worked, what didn’t, and a few tips and tricks for folks considering to do the same. TL,DR If you’re using i3 and want to try Wayland without reconfiguring everything, try Sway . Its configuration format is 99.99% compatible with i3, so you can easily switch back and forth between…

Installing Archlinux with LUKS, SecureBoot, TPM

Once in a while, I need to install Archlinux on a new machine. This is the procedure that I follow. It has been recently updated to include root device encryption using LUKS, with the encryption keys stored in the machine’s TPM, and uses SecureBoot so that the device can be unlocked without typing a passphrase, while retaining a good(ish) security level. A tiny bit of context I usually don’t need…

Debugging Django Performance

This is a story of how we identified a performance issue in EphemeraSearch . The performance issue itself isn’t very interesting (there is a very low chance that you will run into the same issue), but the methodology that we used might be useful if you need to troubleshoot performance issues in Django. The problem EphemeraSearch is an archive of old mail. It currently focuses on postcards. The…

You Belong Here

To all my LGBT+ friends, peers, and fellow members of the Kubernetes and Cloud Native communities: you do belong here. No matter what others think or say; privately or publicly; you played (and are still playing) a major role in the success of this community. Many of you, through your code, your docs, your talks, your workshops, your pull requests, your comments thereon, your presence on social…

Anti-Patterns When Building Container Images

This is a list of recurring anti-patterns that I see when I help folks with their container build pipelines, and suggestions to avoid them or refactor them into something better. And since only a Sith deals in absolutes , keep in mind that these anti-patterns aren’t always bad. Many of them are harmless when used separately. But when combined, they can easily compromise your productivity and waste…

Mésinformation sélective: brief.me et le nucléaire

Je suis abonné à une newsletter qui synthétise l’information quotidienne. Je la pensais objective, mais depuis quelques temps, j’ai des doutes. Je les partage pour créer une conversation. Cela fait quelques années que je suis abonné à brief.me . Le principe est simple: chaque jour, on reçoit par email une synthèse de l’information, sur quasiment tous les sujets. L’équipe éditoriale semble faire un…

Offsetting the carbon footprint of air travel

I recently decided to check how much it would cost to offset the carbon footprint of my air travel. It was cheaper than I thought: for about 170 flights, it was about $1000. Here are some details and thoughts about the process. A little bit of background Since my move to the US in 2011, I’ve been flying a lot. Flights to Europe for vacations and holidays; domestic flights in the US when I was in a…

Deploying ephemeral Kubernetes clusters with Terraform and env0

env0 is a SaaS that can deploy Terraform plans, track their cost, and automatically shut them down after a given time. I’m going to show how to use it to deploy short-lived Kubernetes clusters and make sure that they get shut down when we don’t use them anymore. Wait but why As you may or may not know, my main source of income is the delivery of Docker and Kubernetes training . When I prepare,…

Streaming tech talks and training / Using Linux

If you are using Linux as your main operating system, you might wonder if it’s doable to use it to stream content, and how. In this article, I’ll tell you everything I learned about this: what works, what doesn’t, and the various hacks that I’m using to keep it working. This will be interesting if you are using (or want to use) Linux for these things, but there will be also technical tidbits…

Streaming tech talks and training / To OBS or not to OBS

In this article, I’ll talk about the various services and tools that I tried to stream my presentations. I’m going to talk about OBS Studio , why and how I use it. I will also review a bunch of video conferencing and streaming platforms like Jitsi , Twitch, YouTube, Zoom. This section should be relevant regardless of your operating system(i.e. applicable to Linux, Mac, or Windows), while part 4…

Streaming tech talks and training / Hardware

This is a long description of the various equipment (cameras, lights, mics, and more) that I am using, or that I have tried to use, to deliver online training and tech talks. For context, please check part 1 ! Desk and desk placement Priority: low to high It helps me a lot to stand when I’m presenting. I suppose that this is irrelevant for most people, and that many of you might actually prefer to…

Streaming tech talks and training / Overview

In March 2020, I started delivering online training sessions (instead of doing it in person). In these series of blog posts, I describe how I’ve set up what I call my “video streaming studio”, hoping that my experience and feedback can be useful to others. In this first article, I’ll give some context so that you can understand what I’m doing and what I’m trying to achieve. The second article will…

The Quest for Minimal Docker Images, part 3

In the beginning of this series ( first part , second part ), 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,…

The Quest for Minimal Docker Images, part 2

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. The English version of this series was…

The Quest for Minimal Docker Images, part 1

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…

Containers, microservices, and service meshes

There is a lot of material out there about services meshes, and this is another one. Yay! But why? Because I would like to give you the perspective of someone who wish service meshes did exist 10 years ago, long before the rise of container platforms like Docker and Kubernetes. I’m not claiming that this perspective is better or worse than others, but since service meshes are rather complex…

Recording video tutorials with (almost) zero budget

I’ve just published a series of video of a one-day Kubernetes tutorial that I recently delivered in London. I would like to share the method and tools that I used, because although the result is far from perfect, I believe it can be useful for other speakers who want to share their work to a wide audience without a huge investment (in time and equipment). What are we talking about? I regularly…

Running Kubernetes without nodes

Capacity planning with Kubernetes is a non-trivial challenge. How many nodes should we deploy? What should be their size? When should we add or remove nodes to accommodate variations in load? One solution is to not deploy nodes, and provision resources on-demand instead. Let’s see how to do that. What we’re trying to solve When we deploy a Kubernetes cluster, we need to provision a given number of…

Using Compose to go from Docker to Kubernetes (1/2)

For anyone using containers, Docker is a wonderful development platform, and Kubernetes is an equally wonderful production platform. But how do we go from one to the other? Specifically, if we use Compose to describe our development environment, how do we transform our Compose files into Kubernetes resources? This is a translation of an article initially published in French. So feel free to read…

De Docker à Kubernetes en passant par Compose (2/2)

Cette article est la suite du précédent . Aujourd’hui, on va entrer dans les détails pour voir comment adapter une application décrite par un fichier Compose afin de la faire tourner sur Kubernetes. If you still can’t read French and wonder what this post is about: it’s an in-depth description of a technique that one can use to transform an app described by a Compose file into a set of Kubernetes…

De Docker à Kubernetes en passant par Compose (1/2)

Dans le monde des conteneurs, Docker est une formidable plateforme de développement, et Kubernetes une tout aussi formidable plateforme de production. Comment passe-t-on de l’un à l’autre ? En particulier, si l’on utilise Compose pour décrire son environnement de développement, comment traduit-on ses fichiers Compose en ressources Kubernetes ? If you can’t read French and wonder what this post is…

The depression gnomes

I’m going to try to explain how I felt when I was struggling with depression. There will be gnomes and other lousy metaphors, but don’t let that distract you. Sometimes, depression feels like two miniature gnomic versions of me are fighting over the control of my brain. You know, a bit like the little do-gooder angel and the mischievous imp that we imagine sitting on our shoulders, giving us…

Juniors, seniors, and mentors

What’s the difference between a junior and a senior software engineer? Is it the responsibility of a company to provide learning resources (e.g. time or mentoring) to its engineers? What makes a good mentor anyway? All these questions are particularly important in the context of software engineering, a discipline where the tools and frameworks and languages evolve very quickly. At a first glance,…

Dérisquer son infrastructure avec les conteneurs

On parle souvent des conteneurs comme un moyen d’accélérer les cycles de développement, mais ils permettent aussi de dérisquer (ou réduire les risques, si le néologisme vous fait grincer des dents ☺) les opérations de déploiement. Comment donc ? Grâce à un pattern sûrement familier à certain·e·s d’entre vous : les « infrastructures immutables ». Nous allons voir comment ce pattern réduit les…

Les conteneurs : par où commencer ?

Depuis quelques années, l’industrie du logiciel parle énormément des containers ; notamment de deux projets phares de cet écosystème : Docker et Kubernetes. Cet article donne une introduction de haut niveau (à quoi servent les conteneurs?) et donne un exemple de feuille de route que vous pouvez utiliser dans votre “voyage” pour adopter cette technologie et en tirer le meilleur parti. Avant de…

Test drive of AppSwitch, the "network stack from the future"

I was given the opportunity to test AppSwitch, a network stack for containers and hybrid setups that promises to be super easy to deploy and configure, while offering outstanding performance. Sounds too good to be true? Let’s find out. A bit of context One of the best perks of my job at Docker has been the incredible connections that I was able to make in the industry. That’s how I met Dinesh…

Tax implications of relocating to the US

This is a boring post about boring tax stuff. It’s boring but I wish I had known that when I moved to the US — it would have saved me more than $10K. TL,DR: if you live in the US and own shares in foreign companies (even something tiny), you are supposed to declare it to the IRS each year. You won’t be taxed on it, but you have to declare it. Nobody told me anything about that when I moved to the…

Seven years at Docker

TL,DR: I have left Docker Inc. to take a sabbatical and recover from depression and burnout. I plan to dedicate the next six months to family, friends, meditation, music, and generally speaking, enjoy life to recharge for whatever will come next. This text is an adaptation of the message that I sent last week to my coworkers to announce my departure. I’m now sharing it with a wider audience,…

Recovering the productivity stolen by depression with kanban and emoji

I want to share a few organizational tools that helped me to be more productive while dealing with stress, anxiety, and depression. They include post-it notes, Trello cards, calendars, and emojis (just to name a few). I’m sharing them in the hopes that they can be a source of ideas and inspiration for those struggling with similar conditions. This post was initially published on The Human In The…

USB-C redux

A few months ago, I started using a 2017 12” Macbook Air. This machine has only two ports: an audio jack, and one USB-C port. That USB-C port is the only thing you have to plug external storage and monitors, network connectivity, and of course, a power supply. I had to do some research to understand how USB-C works, and find the perfect adapters (at least, the perfect adapters for what I do). Here…

Letter to Santa Kube

A few months ago, I wrote and delivered a Kubernetes orchestration workshop , based on my Swarm orchestration workshop . While doing so, I hit a few snags; and since I’m attending KubeCon this week, I thought this would be the perfect occasion to track down Santa Kube and give them my wishlist for Christmas! 🎄🎅🏿❤️ As a foreword: I don’t consider myself a Kube expert, and while I did a bit of…

DevOps, Docker, and Empathy

Just because we’re using containers doesn’t mean that we “do DevOps.” Docker is not some kind of fairy dust that you can sprinkle around your code and applications to deploy faster. It is only a tool, albeit a very powerful one. And like every tool, it can be misused. Guess what happens when we misuse a power tool? Power fuck-ups. Let’s talk about it. I’m writing this because I have seen a few…

Being a track host – tips from DockerCon

You’ve accepted to be a “track host,” but you don’t know how to do it? Or you’ve done it before, but you’d love to swap a few tips, tricks, and new ideas to do it better next time? I got you covered! I’ve been a track host twice. Both times were for DockerCon, in the “Black Belt Tech” track. I had a wonderful time, because that gave me the perfect excuse to sit during the whole conference in a…

Train people well enough

I’d like to tell you a short story illustrating why training your employees is crucial to the success of your organization. I was born and raised in France, and worked there until 2010. Of course, I’m a native French speaker. What about other languages? Well, I could vaguely get around in German, and my written English was pretty good. So good, in fact, that most people with whom I was interacting…

From dotCloud to Docker

Have you heard about dotCloud? If you haven’t, I’m going to give you a hint: it is a PAAS company. Another hint: eventually, dotCloud open-sourced their container engine. That container engine became Docker. This is a quasi-archeological account of some of the early design decisions of dotCloud, some of which have shaped how Docker is today (and how it is not). “How is this relevant to my…

Adventures in GELF

If you are running apps in containers and are using Docker’s GELF logging driver (or are considering using it), the following musings might be relevant to your interests. Some context When you run applications in containers, the easiest logging method is to write on standard output. You can’t get simpler than that: just echo , print , write (or the equivalent in your programming language!) and the…

Yes, all men

In conversations about sexism (in the tech industry or elsewhere), men are often surprised to hear how bad the situation is for some of their women coworkers and friends. We often are tempted to say “this wouldn’t happen in my company.” If you are an expatriate or travel abroad, there is also the variant “in my country, we treat women fairly!” I would like to share something that made me think…

Les mots ont un sens

I usually write in English, about container technology. This will be in French, and about very different topics. You’ve been warned! :-) Oh, regarde, une vache en train de pondre ! C’est une phrase un peu bizarre, pas vrai ? Elle est tout à fait correcte grammaticalement parlant. Elle intime la personne qui l’entend à observer un spectacle insolite : une vache en train de pondre. C’est là que les…

Go + Docker = ♥

This is a short collection of tips and tricks showing how Docker can be useful when working with Go code. For instance, I’ll show you how to compile Go code with different versions of the Go toolchain, how to cross-compile to a different platform (and test the result!), or how to produce really small container images. The following article assumes that you have Docker installed on your system. It…

One container to rule them all

A while ago, I wrote about how to bind-mount the Docker control socket instead of running Docker-in-Docker. This is a huge win for CI use-cases, and many others. Here I want to talk about a more generic scenario: controlling any Docker setup (local or remote Engine, but also Swarm clusters) from a container, and the benefits that it brings us. Bind-mounting the control socket If you have never…

“I am a feminist, but…”

TL,DR: we all have different perceptions and experiences. Just because you’re fine with a picture, book, movie, etc., doesn’t mean that everybody will accept it equally well. Even if you are the nicest person in the world. Let’s accept it, and be aware of each other’s sensitivities. What am I talking about? A recent CommitStrip Episode describes two guys and a girl watching an episode of the TV…

How to deliver a great tech tutorial

Here are a few tips and tricks that I learned when building then delivering the Docker Fundamentals course at Docker Inc. This course is a 2 days training designed to be delivered to small groups (up to 20 people) but we also delivered the intro part many times at tech conferences, to groups of varying sizes (50 to 300). Foreword I wrote this in a hurry. The style is probably not very good, and I…

Using Docker-in-Docker for your CI or testing environment? Think twice.

The primary purpose of Docker-in-Docker was to help with the development of Docker itself. Many people use it to run CI (e.g. with Jenkins), which seems fine at first, but they run into many “interesting” problems that can be avoided by bind-mounting the Docker socket into your Jenkins container instead. Let’s see what this means. If you want the short solution without the details, just scroll to…

Someone said that 30% of the images on the Docker Registry contain vulnerabilities

This number is wonderful. Not because it’s high or low, but because it exists. The fact that it is possible (and relatively easy) to compute this metric means that it will be possible (and relatively easy) to improve it, among other things. Disclaimer: I work for Docker, and while this post is not sponsored or approved by my employer, you are obviously welcome to take it with a grain of salt. The…

Putting data in a volume in a Dockerfile

In a Dockerfile, if you put data in a directory, and then declare that directory to be a volume, weird things can happen. Let’s see what exactly. The problem Someone contacted me to ask about very slow build times. They told me: “This is weird. In this Dockerfile, the VOLUME and CMD lines take a few minutes. Why is that?” The diagnostic I was very intrigued, and investigated. And I found the…