RSSAmplifier

Blog

Code Engineered

Recent content on Code Engineered

codeengineered.comRSS feed ↗100 posts

Latest posts

Helm 4 Contributors, A Thank You

Helm v4 has been released after a year of development . There were a number of people who have contributed to Helm v4 and I want to say a big Thank You to them. A subset has been instrumental is getting Helm v4 to where it is. They have given a lot of their time and I, like many others, appreciate it. That includes (but isn’t limited to): Robert Sirchia - In addition to contributing code, he…

My 10 Year Helm Anniversary

10 year ago I had my first commit against Helm . This is my 10 year anniversary. commit b64d701023830999750c570a9224fa9dd3eb4a22 Author: Matt Farina <matt@xxxxxxxxxx.com> Date: Wed Oct 28 13:52:21 2015 -0400 docs(README): add Go Report Card badge I had been around the Kubernetes space for awhile and I have long known Matt Butcher, who had the first Helm commit. He showed me Helm and I found my…

New Year, New Terminal Setup With Ghostty

I&rsquo;ve had the same terminal setup for years. Every year it gets some minor changes, usually in the form of additions. Over time, the whole setup has slowed down and fell into a state of being a mess rather than optimal or thought out. With the release of Ghostty , it seemed like a good time to rethink my whole setup. Ghostty Ghostty is the creation of the famed Mitchell Hashimoto . He&rsquo;s…

Common SemVer Problems

I get asked a lot of questions that involve Semantic Versioning (a.k.a. SemVer) . I also get told that something some piece of software does around it is wrong. Having spent far too much time dealing versions, this post tries to clear up some of the more common misconceptions. What Is SemVer? Semantic Versioning, often referred to SemVer, is a specific way to deal with computer software versions.…

Please Stop Using Helm v2 With Tiller

When I read about the use of Tiller in the article on SAP AI vulnerabilities , I was a bit surprised. The article came out around three and a half years after Helm v2 - which includes Tiller - reached its end of life. It had been even longer since the last Helm v2 release. Looking at the downloads of Tiller, I was surprised to find tens of thousands of downloads each week. The image blew is the…

Why Are CNCF Contributors Down

There are fewer contributors to CNCF projects than there were a few years ago. During that time, there has been an increase in the number of projects in the CNCF. I’ve been wondering what the data can tell us about what’s going on. Here’s what I’ve found from my preliminary review of the data. Note A decrease in contributors is neither a good or bad thing. We would need to dig deeper to understand…

CNCF Sandbox: Know Before You Submit

Every month, new projects are submitted to the CNCF Sandbox in hopes of having their project join the CNCF. But, there&rsquo;s a bunch of things that often escape the attention of companies and project maintainers when they submit their projects. It&rsquo;s all in the fine print but, how often do we read that and realize what it means. With that in mind, let&rsquo;s take a look at some things…

Retrospective After Two Years On The CNCF TOC

I just finished a two year term on the Cloud Native Computing Foundation (CNCF) Technical Oversight Committee (TOC). Being too busy to dedicate the time it deserves, I didn&rsquo;t run for another term. Before I put the TOC out of my mind, I wanted to take some time and do a retrospective. I&rsquo;m hopeful this is useful for the future TOC members and the broader cloud native community who…

The CNCF For Developers

Over the years, I&rsquo;ve been asked a lot of questions about why the Cloud Native Computing Foundation (CNCF) has done things the way it has. I&rsquo;ve also seen people speculate about things that are going on and reasons for it. Quite often, developers are missing some context or understanding about what the CNCF is or how it operates. The CNCF often doesn&rsquo;t operate the way project…

Kubernetes Is Great On-premise

Kubernetes was birthed from tooling for on-premise data centers. So, it should be no surprise that it&rsquo;s incredibly useful in on-premise situations like clusters. And, while the collective &ldquo;we&rdquo; often looks at the public cloud with Kubernetes, it&rsquo;s worth looking at clusters in our offices, labs, and colocation data centers . Borg And Google Data Centers Kubernetes was birthed…

Open Source Doesn't Require Providing Builds

Maintaining several open source projects, over the years, I&rsquo;ve seen a common request. That the project either produce builds or a wider variety of builds. For example, to build for a new architecture or to provide the software as a container or Helm chart. I see a couple common expectations. First, that the open source project is the right place to do the builds. Second, that a project…

Container Image Search In Artifact Hub

Docker has decided to sunset free organizations on Docker Hub . This has created some feelings of unrest in the open source community at large . There is a program for open source projects . This got me wondering, why is Docker Hub the go to location for container images? Why don&rsquo;t more projects use GitHub Container Registry, Quay, or one of the many other registries? The answer is simple…

Where the CNCF TOC Members Are In the World (for 2022)

While I was looking at where CNCF contributors are in the world I also wondered, how to the Technical Oversight Committee (TOC) members overlap with these locations? To summarize the data, contributors are distributed around the globe (mostly in the northern hemisphere) fairly evenly in North America, Europe, and Asia. The TOC is responsible for defining common practices across projects, approving…

CNCF Contributors Are Global

It has long been suggested to me that contributions to the CNCF are mostly United States centered. At times people use that to justify various things from the times meetings are scheduled for to the way certain things are prioritized. I was wondering, how true is this notion? To find out, I decided to see what devstats made available. What I found was enlightening. Ways To Look At The Data There…

Helm, kubeVersion, and GKE

I was recently asked about an error someone got with Helm and GKE . The error provides some insight into how semantic versions work and how to work around cases where someone isn&rsquo;t following them. The specific error was: Error: INSTALLATION FAILED: chart requires kubeVersion: >= 1.19.0 which is incompatible with Kubernetes v1.23.8-gke.1900 This error is specific to the kubeVersion optional…

What's Up With Rancher Fleet?

Several months ago, I moved from working on Rancher Desktop to work on Fleet . At the time, there wasn&rsquo;t much development of Fleet and there were a lot of questions with it. Some of those were around feature requests, some of those were around bugs, and some of those were around the level of SUSE Rancher investment in Fleet. I think actions speak louder than words. Now that we have two…

Why You Might Want To Use The SLES Base Container Images

Disclaimer: I work for SUSE but I don&rsquo;t work in the Linux business unit. I&rsquo;m a consumer of the base container images like anyone else who uses them. If you&rsquo;re building a containerized applications you have a base container image at the bottom. That base container image can make a difference to your stack. Is it really large which impacts what you pass around on the network and…

Verify SUSE SLE Base Container Images SLSA Attestations

SLSA , the supply chain security project, as a model for attesting and verifing software artifacts. The project documentation has a whole section on software attestations . The SUSE SLE Base Container Images (BCI) are attested and you can verify them. Basic Example To follow along with the examples you will need to have cosign installed. This software lets you attest and verify images.…

Docker Desktop vs Rancher Desktop

I&rsquo;ve been regularly asked about comparisons between Docker Desktop and Rancher Desktop . As I have moved off of Rancher Desktop to work on other things at SUSE, I figure now is a good time to write up some of my thoughts. Note, there is an amazing team working on it now. They are incredibly talented and have made it better than I imagined. First, I need to say what respect I have for the…

Golang Logging Mess

Go has a logging mess. If you want to see it in action open up a Go application and look at the number of logging implementations that have been pulled into the application. For example, if you look into the Kubernetes modules you&rsquo;ll find it&rsquo;s using zap, logrus, klog, and others. This mess can lead to applications not exposing logs, binary bloat, and more. It also inverts control.…

localdev.me DNS For Local Development

When I&rsquo;m doing local development, I sometimes need a domain name that routes back to localhost . I&rsquo;ve long run into cases where I need subdomains and ended up modifying my local hosts file. I&rsquo;ve used this for a variety of situations going back for a long time. From Kubernetes ingress work to web development. While I was reviewing the NGINX ingress guide for Rancher Desktop , I…

Verify SUSE SLE Base Container Images With Cosign

SUSE has SLE Base Container Images (BCI) that are great to use in workflows and as a based under your applications. One of the big reasons I like these images is that they are constantly updated with fixes for Common Vulnerabilities and Exposures (CVE). SUSE stays on top of this and takes security seriously . For example, prior to writing this post I used Trivy to scan the Go image: ❯ trivy i…

Bringing Docker engine (Moby) and The Docker CLI to Rancher Desktop

At the end of 2021, a new version of Rancher Desktop came out that provides the Docker CLI and a dockerd socket as an alternative to nerdctl and containerd . In this post I&rsquo;ll cover some details on why and how we did it. Why Docker/Moby nerdctl has been a great CLI for many things. You can build images and run containers with it. But, you can&rsquo;t do everything you can with the Docker…

Choosing Processor for Framework Laptop

When I recently bought a Framework laptop , one of the tasks I needed to do was to choose a processor. When I bought Mac computers there were few things to think about in terms of processors. A more expensive processor just meant more power. The processors available in Framework laptops don&rsquo;t quite operate on that model. In some cases, you may get more features and not more power. Are those…

Why I Bought A Framework Laptop

It was time to replace my 7 year old Macbook Pro. Two cores running the latest macOS was not longer capable of easily doing everything I threw at it. Instead of buying another Macbook Pro I went a different route. After close to 20 years of having a personal Mac laptop, I switched to a Framework laptop. This is the reasoning behind the move. Framework Laptop Framework is a new laptop from a new…

IT Should Be An Enabler

Almost everywhere I look, IT is treated as a cost center. Their goal is often to cut costs (expenses) to be as low as possible. But, this isn&rsquo;t working well for them or the companies that treat things like this. In companies like this you end up with shadow IT, lines of business who are held back (which hurts income), or a little of both. Let&rsquo;s explore what this means. The Customer of…

Podman vs Nerdctl

The Docker CLI has some competition in the form of podman and nerdctl . Recent changes in the Docker ecosystem have caused some folks to start looking at what the other options are. Since these are two of the most capable Docker CLI alternatives, it&rsquo;s worth looking at them. Who Owns The Code Since the recent uptake in conversations on this topic are driven by changes to Docker you might be…

Tips For Your Helm Pull Request

I review a lot of pull requests for Helm , the package manager for Kubernetes. While reviewing, I&rsquo;ve noticed some common pieces of advice or guidance I give along the way. This post documents some of those. Don&rsquo;t Change APIs In minor and patch releases of Helm we don&rsquo;t change APIs. Helm follows semantic versioning and we have documented our backwards compatibility . This is both…

Always Be Connecting Dots

Always Be Connecting Dots (ABCD) I think it was Rajeev Pandey who shared this with me. Technology is complicated and getting more so. Take Kubernetes as an example. To understand the environment that created it, it&rsquo;s useful to know how Google builds their data centers and about the cluster operating system they use ( borg - a predecessor to Kubernetes). It&rsquo;s also useful to know the…

Two Reasons Minimizing Distraction Matters

A Call To Minimize Distraction & Respect Users Attention is a recently hyped presentation that was shown internally at Google years ago and leaked at some point. After looking at the presentation, which I believe is very much worth looking at, I realized there were two concrete reasons to minimize distraction that mattered to me and many people I talk with. Deep Work and Getting Things Done Deep…

New Open Source Projects from SUSE / Rancher

The first have of 2021 has been quite a half year at SUSE / Rancher. Numerous new open source projects have been launched covering a wide array of areas. I&rsquo;m enjoying seeing all the innovation taking place as these new projects try to find their footing. These are in addition to projects like Harvester that started in 2020. Let&rsquo;s take a look at some of these projects&hellip; Rancher…

How We Did Logging Differently In Hypper

When we started working on Hypper we knew there would be an SDK and a client in the codebase. From the beginning, we wanted the core business logic to be easily accessible for other applications to use. This meant we needed to have logging that worked for a CLI application and when the SDK was pulled into an app. All of this written in Go due to the need to pull in some outside libraries only…

What Are Operators? A Look At The Definition

In November 2016, Operators came on the scene. They have since been embraced by the Kubernetes community for many use cases where there are frameworks and ecosystems surrounding them. In the years after the announcement, CoreOS, the company that started the operator craze, has been bought and that company has been bought. The CoreOS website and docs, where all of this came out, are no longer…

Helm - A Look At The Code For The Kubernetes Package Manager

Have you ever wondered how Helm&rsquo;s source code was organized? Or wanted to know where to start when fixing a bug or creating a new feature for Helm? Trying to learn a new codebase can take some time and feel daunting. To help with that problem I created a short series of short videos that walk through the code organization, life of a command, testing, layout of the package library, and more.…

Better Golang Logging - How We Can Untangle The Mess

When you&rsquo;re writing libraries and applications in Go there is one glaring problem. Logging is all over the place. This is due to there being no standard interface for logging. So, libraries and applications both include logging libraries that are different from each other. This leads to log sprawl. For example, look in the Kubernetes dependencies and you&rsquo;ll see references to about 10…

Storing More Than Container Images In Registries

Did you know that you can store more than container images in many container registries? Container registries generally follow the OCI Distribution specification . While still unreleased, as of the writing of this, there have been recent changes that make the type thing (a.k.a artifact) stored and distributed through registries more general. This work was started though a project called OCI…

Blog Code Under Open Source License

Have you ever found a code snippet on a blog or some other website that helped you out? One you just wanted to copy into a software project you were working on. Unfortunately, quite often the code on that website isn&rsquo;t licensed for someone to take and use in their own software projects. It may not seem like a big deal to take that code snippets and use them anyway. The problems starts to…

DNS Saves Headaches

When JFrog announced they were sun setting Bintray and ChartCenter I quickly had a couple of thoughts&hellip; I was relieved we didn&rsquo;t move the Helm stable and incubator archive to ChartCenter (it was an option) I wondered what Homebrew was going to do. Homebrew stores bottles in Bintray and the project has to deal with a new setup and migration When Helm had to move the stable and incubator…

Learning Helm (The Book)

Have you ever wanted to understand package management in Kubernetes? Helm is the package manager for Kubernetes and there is a whole ecosystem of packages you can install or you can create some yourself. If you want to understand it through a book, where can you go? Learning Helm is a book written by Matt Butcher (co-creator of Helm), Josh Dolitsky, and myself. Each of us is a core maintainer of…

Why We Have Software Elitism

I&rsquo;ve watched software developers argue about the right way to do things for most of my career. Sometimes it&rsquo;s around the technologies or patterns that are acceptable to use. Sometimes it&rsquo;s around the right things to have as part of the interview process for candidates. I&rsquo;ll illustrate this with an example many can relate to. Many companies ask people to do code interviews…

Helm: 4 Places To Find Helm Charts

There are now many charts (packages) for Helm , the Kubernetes package manager. These charts are provided by companies, like Bitnami (part of VMware), open source projects, and individuals. These days, the charts are hosted in a distributed manner where these different people and groups can host them on their own. To aide in discovering these distributed charts, there are now multiple services you…

Kubernetes: Controlling exec Access

Using kubectl exec to execute commands in a container is a powerful feature for Kubernetes. It&rsquo;s especially useful for debugging applications. But, it can also be a security risk and some policies require you to disable this feature. So, how can you do it? The Need If we look at similar systems, for example systems that control access to ssh, we will see the need is more than an explicit…

Helm Growth and Kubernetes Complexity

On June 10th 2020, Mike Vizard writing for the Container Journal wrote: As IT organizations look to operationalize what may soon become fleets of Kubernetes clusters, the amount of time required to deploy applications on those clusters will need to be greatly reduced. Helm provides a means of accomplishing that goal using an open source tool that is not going to fade away anytime soon because of a…

Artifact Hub: Notifications and Webhooks

Artifact versions regularly change and new releases come out. Cloud native software changes and it can be difficult to stay on top of the changes. Notifications and webhooks when updates come out are rarely available for consumers. The Artifact Hub is different. It now provides notifications and webhooks, that you can use for programming, when new releases of packages come out. Email Notifications…

Helm Under The Hood: Storage Using Secrets

Helm v3 uses Kubernetes Secrets as the default method to store release information in a cluster. This bucks some newer trends, but if you look at the needs and features it turns out that Secrets are a good fit. In this post you&rsquo;ll learn why Helm uses Secrets by default and how you can do something similar if Secrets fit well for you. Why Secrets? Custom Resources based on Custom Resource…

Clutternaming, The Anti-pattern

Naming things and anti-patterns are two things that have fascinated me. So, when Marc Atwood tweeted with a name for an anti-pattern I&rsquo;d personally experienced I was excited to have a name to it. Marc tweeted : today I asked a master of naming antipatterns for a name for the practice of naming directories in an evolving project after version numbers, instead of just using the VCS. His…

Installing Go on Linux In One Command

I have a Linux workstation I regularly use and I need to develop in Go on it. So, I want an easy way to install and upgrade Go. With Go, I need to use the latest version and usually don&rsquo;t want the version I would get with apt-get or the systems conservative package manager. I&rsquo;ve become accustomed to using one command to install Go and a similar command to upgrade it. Install Go: $…

Helm, JSON Schema, and Generated Forms

One of the really powerful new features in Helm v3 is the use of JSON Schemas . This is great for validation, documentation, and it can be used for automated form generation . We&rsquo;ll take a quick look at what they are, how you can generate them (i.e. you don&rsquo;t need to write the whole thing by hand), and how they can be used to generate web forms. JSON Schema The basics&hellip; when you…

Graduating Helm, A Look At The Process

Graduating a CNCF project is no small feat. As someone who took Helm through the graduation process I thought it would be useful and interesting for people to learn about it. This can illustrate what the CNCF looks for in a mature project and what other projects that look to graduate can look forward to. A Little Background When the CNCF first launched and Kubernetes became the first project, Helm…

Introducing The Artifact Hub

Many of the cloud native and CNCF projects are based around artifacts that you can use and share. Helm has charts, which is an obvious case. It doesn&rsquo;t stop there. Open Policy Agent (OPA) has policies. Falco has configurations. Then there are operators. Operators can be deployed using Helm, KUDO , the Operator Frameworks OLM, and even raw Kubernetes manifests. It turns out there are a lot of…