Skip to content

Commit

Permalink
Decision Record: keep capi images recommended (#582)
Browse files Browse the repository at this point in the history
Signed-off-by: Matthias Büchse <[email protected]>
Co-authored-by: Malte Münch <[email protected]>
Co-authored-by: Kurt Garloff <[email protected]>
  • Loading branch information
mxmxchere and garloff authored Oct 10, 2024
1 parent d8095aa commit 5911813
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions Standards/scs-0120-v1-capi-images.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
title: Cluster-API images
type: Decision Record
status: Draft
track: IaaS
---

## Abstract

The SCS reference implementation for the Kubernetes-as-a-service layer is built on top of Cluster API (CAPI), and therefore it depends on the corresponding VM images, which may or may not be present on the underlying infrastructure-as-a-service layer. Current tooling will make sure to upload the required image in case it's not present or outdated. However, these ad-hoc uploads will not be shared across environments, which may lead to waste of bandwidth (for transferring the image), storage (if images are not stored in a deduplicated manner), and not least time (because the upload does take multiple minutes). Needless to say, it may also lead to excessive greenhouse-gas emissions.

This decision record investigates the pros and cons of making the CAPI images mandatory. Ultimately, the decision is made to keep them recommended; we stress, however, that providers who offer the images by default should advertise this fact.

## Terminology

- _Kubernetes as a service (KaaS)_: A service that offers provisioning Kubernetes clusters.
- _Cluster API (CAPI)_: "Cluster API is a Kubernetes sub-project focused on providing declarative APIs and tooling to simplify provisioning, upgrading, and operating multiple Kubernetes clusters." ([source](https://cluster-api.sigs.k8s.io/)) This API can thus be used to implement KaaS.
- _CAPI image_: Virtual machine image that contains a standardized Kubernetes setup to be used for CAPI. The SCS reference implementation for KaaS depends on these images.
- _CSP_: Cloud-service provider

## Design considerations

We consider the following two options:

1. Make CAPI image mandatory.
2. Keep CAPI image recommended.

For reasons of symmetry, it suffices to consider the pros and cons of the first option.

Pros:

- Save time, money, physical resources and power for both CSP and customer.
- Regardless of CSP taste, this KaaS tech is part of SCS.

Neutral:

- The CAPI image can be provided in an automated fashion that means virtually no burden to the CSP.
- The KaaS implementation will work either way.
- Willing CSPs may offer the image by default and advertise as much.

Cons:

- Additional regulations would be necessary to guarantee quality and timeliness of image.
- Some CSPs may be opposed to being forced to offer a certain service, which may hurt the overall acceptance
of the SCS standardization efforts.

## Decision

Ultimately, we value the freedom of the CSPs (and the acceptance of the standardization efforts) highest;
willing CSPs are welcome to opt in, i.e., to provide up-to-date images and advertise as much.

Therefore we decide to _keep the CAPI images recommended_.

## Consequences

None, as the status quo is being kept.

## Open questions

Some interesting potential future work does remain, however: to find a way to certify that a willing provider
does indeed provide up-to-date images. It would be possible with today's methods to certify that a CAPI
image is present (the image_spec yaml file would have to be split up to obtain a separate test case), but
we there is no way to make sure that the image is up to date.

0 comments on commit 5911813

Please sign in to comment.