Fan-Out and Fan-In Golang channels in Kubeapps

During a career as a software engineer, every now and then you come across a design pattern that becomes your darling for a few years following the discovery. Other design patterns are useful, but not so special that you want to tell the world about them.

Up until recently, my favourite design pattern was the state pattern which allows encapsulating different behaviours (implementations of an interface) in different classes so that an object can delegate its functionality to different state implementations which can be update at runtime. But more recently, while using a lot of concurrency in certain Kubeapps services, I’ve fallen in love with another design pattern - the fan-out/fan-in messaging pattern (or a form of it).

[Read More]

Kubeapps APIs - a plugable system supporting different Kubernetes packages

The recent release of Kubeapps marks a milestone for the Kubeapps team in that we are no longer restricted to presenting a catalog of only Helm packages in our UI and, behind the scenes, we’ve addressed a long-standing security issue to remove the reverse proxy to the Kubernetes API server that our UI depended on until now. We’ve done a few overviews of the new Kubeapps APIs service which makes this possible (see Kubeapps APIs: Beyond Helm, or the TanzuTV episode 74 where Antonio gives an in-depth demo of the Carvel support), or more recently, a demo of the Flux and Carvel support together: But in this post I’d like to write something a little more detailed about the choices we made as well as some of the implementation details. [Read More]

Kubeapps on Tanzu Kubernetes Grid 1.3

This is the second post in a series of two post detailing the steps that I took to install Kubeapps running on a TKG 1.3 cluster on AWS configured to allow user authentication via the TKG identity management: The first post focuses on the TKG 1.3 setup required to get a workload clusters with identity management (using your chosen identity provider), This followup post details the related Kubeapps installation and configuration on the TKG 1. [Read More]

Tanzu Kubernetes Grid 1.3 with Identity Management

Way back in 2020 I’d detailed how I’d setup a Tanzu Kubernetes Grid 1.1 management cluster with OpenID Connect support (for single sign-on) before installing Kubeapps with single sign-on on that management cluster. Recently TKG 1.3 was released and the identity management support in TKG has changed significantly, so it’s time to see what’s different when setting up a TKG cluster with identity management as well as how we can run Kubeapps on TKG 1. [Read More]

Kubeapps on Tanzu Mission Control via Pinniped

We’ve been able to run Kubeapps in a multi-cluster setup on various Kubernetes clusters for a while now, but this was dependent on the Kubeapps’ user being authenticated in a way that all the clusters trust. Up until now, this meant having all the clusters configured to trust the same OIDC identity provider, which is not possible in some Kubernetes environments.

Particularly, this meant we were unable to demonstrate multi-cluster Kubeapps with clusters created by Tanzu Mission Control since we can’t specify API server options, such as OIDC configuration, when creating a cluster in TMC. But that requirement has now changed thanks to a new project called Pinniped.

[Read More]

Carvel kbld With Helm Post Render

For the past couple of years I’ve been working on the Kubeapps project, which until recently has been a UI dashboard for the Helm project - providing a simple, web-based UI to deploy applications on Kubernetes.

I’m currently looking at generalising Kubeapps to support other Kubernetes packages formats, including Carvel from VMware of course. So I set out today to start learning more about Carvel, which in contrast to more monolithic tools like Helm, provides “a set of single-purpose, composable tools that aid in your application building, configuration and deployment to Kubernetes”.

As an example of that composability, I found I can deploy a helm chart using a set of immutable images by utilizing Helm’s new-ish support for post rendering of a chart. Here’s how…

[Read More]

Ridge soaring, meteorology and course completion!

Learning to Paraglide Days 8-10

Ridge soaring, meteorology and course completion!

The 8th day of our course was completely blown out weather-wise with no possibility of flying, which is unfortunate as most of us only need to do some ridge soaring hours practising the give-way rules of the air and get more experience doing our reverse launches on our own in varying conditions. On the 9th day some of us were able to do a brief ridge soar after our theory test, but it was only by staying an extra day that I was able to get in the air for a longer period and demonstrate ridge soaring in traffic.

[Read More]

Morning high flights and sunset sleddies

Learning to Paraglide Day 7

Morning high flights and sunset sleddies

There’s some windy weather headed this way for the weekend, so our aim for the day was to get as much practise in as we could, which is exactly what we did - a day without theory classes! We left around 7:45 as planned to head up to the north launch and got 4 flights in before the wind died, landing in the East paddock. In the evening we managed another 3 flights from the west and south launches, the last one into the sunset!

[Read More]

First big flight and more ground handling

Learning to Paraglide Day 6

First big flight and more ground handling

We started the day at 7:45 heading up the hill in the basher to the North launch at Mt Borah again. After our first flight to the triange paddock we began doing solo flights so that after takeoff, Godfrey hands us over to the landing-site instructors, Karl and Bob, but they only use the radio if necessary. On my last flight for the morning I got to fly with another student all the way from Mt Borah back to the paddock outside the headquarters building! The afternoon saw us doing more reverse inflation ground handling as well as some more theory for landing approaches and handling injuries.

[Read More]

Reverse launches, wind gradients and turbulence

Learning to Paraglide Day 5

Reverse launches, wind gradients and turbulence

The winds just wouldn’t cooperate today, even for learning reverse launches in the paddock. We all got up ready to go, packed ourselves into the basher 4WD with our gear in the trailer, but didn’t even leave. The winds at the top of the mountain were getting stronger rather than weaker over the previous half-an-hour, so that it was currently gusts of 30km/h or 8m/s. So we came inside to do more theory: this time learning about wind gradients, turbulence and strategies for judging whether you’ll clear obstacles. We did head out to the paddock before lunch to learn reverse launches with Bob, but the wind in the paddock then died down so we couldn’t practise the new skill, so more theory instead. We headed out to the paddock again in the late afternoon when the wind had picked up a bit but again it died off on us and we were left standing there “parawaiting”.

[Read More]