stackabletech / stackabletech/issues

Allow patchlevel updates to product images independent of a full Stackable release

Open
#818 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Introduction

This is currently mostly to write down something that @lfrancke and myself discussed last week to allow people to comment and get a discussion going.

Reasoning

Currently a patch release for SDP is somewhat simpler than a "full" release, but still creates very high effort. Ideally we'd like to be able to update products easily and frequently, in order to allow updating the base-image as well as gain the ability to push dependency updates / CVE fixes or similar things on short notice.

Since a lot of the effort is created by releasing and certifying our operators, we might solve this by decoupling product images from the operator images to a certain degree.

There is some prior art around this, the following list feels incomplete, but I was unable to find the "large" issue and discussion that I feel I remember:

Requirements

Whatever we decide must allow us to easily push updated product images in less than a day with minimal effort, ideally we'd just tag in docker-images and the rest just work einfach so.

Updated images should not be automatically rolled out to customer clusters, they have to explicitly choose to use a newer image in order to avoid any "magic" that is not transparent to customers. So no floating tags or similar things that would mean the same CRD results in different things being deployed depending on when they are deployed.

We must not need to certify anything for OpenShift!

Idea

We add an extra field to the version struct in our CRD, which allows specifying a product-image-patchlevel (maybe not named like this, but it nicely illustrates the point.

spec:
  image:
    productVersion: 1.2.3 
    productImagePatchlevel: 1

Which the operator can then add to the image name like this:
nifi:2.6.0-stackable26.3.0-1

So for existing CRDs nothing would change, the operator would consistently pick a stable image, but customer who want to update for some reason can switch to an updated version of the product image.

Image

Problems

Users need to remember to remove the patchlevel when updating the product version, this is not too hard, but makes templating the version more complex and is just an extra thing that could go wrong.

This requires updating the CRD, when updating the Stackable Version, because for the new version the patchlevel will not be available. We could mitigate this by making the patchlevel release specific like for example:

spec:
  image:
    productVersion: 1.2.3 
    productImagePatchlevel:
      25.1: 1
      25.1.1: 3
      26.3: 1

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the linked docker-images issues and the discussion in this issue; no implementation repository, file, or test is identified. Map how product images, operator releases, CRDs, and certification currently relate across repositories. Done requires an agreed design that meets the patch-level update, explicit image selection, compatibility, and OpenShift requirements.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, kubernetes
Domain
infrastructure, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.