Skip to content

Support overrides for objects created by our operators other than Pods #712

@lfrancke

Description

@lfrancke

Description

As a user of the Stackable Data Platform (SDP) I want to be able to override attributes of objects the SDP operators generate for me, similar to what the podOverride feature does but for more object types.

Value

Some environments need special annotations or labels to work e.g., AWS assumed identities and ServiceAccount annotations).
There are probably other corporate policy or workaround use-cases we don't know about yet and we want to enable them.

Tasks

Rollout to all operators

Phase 1: Investigation (timebox: 3 days max)

  • Create inventory of all object types we currently generate across operators
  • Research what other operators do (strimzi, cloud native pg etc.)
  • Come up with 1-3 design approaches/ideas with pros/cons for each on how this could be implemented including rough estimates (days, weeks, months....)

Important

Decision point 1:
After investigation, decide:

  • Is this worth doing at all?
  • Which design approach makes sense?
  • Does this replace podOverrides or live alongside it?

If we stop here: document findings

Phase 2: Desing & ADR

Only if we decide to continue after phase 1

Note

I made these points up and we need to refine again after phase 1 how exactly to continue

  • Create a decision for the chosen approach
  • Create an ADR with the outcome
  • Decide on podOverride migration strategy if needed

Phase 3: Implementation

Research outcome

List of objects created is hopefully everything that implements the ClusterResource trait:

  • ConfigMap
  • Secret
  • Service
  • ServiceAccount
  • RoleBinding
  • PodDisruptionBudget
  • Listener
  • Job
  • StatefulSet
  • DaemonSet
  • Deployment

Acceptance Criteria

  • Users can override spec and metadata of all objects we generate (don't forget about the StatefulSet)
  • Users have documentation and examples on how to add labels & annotations to all objects we create
  • This does not mean we can only override labels & annotations but those have come up in the past
  • Write concepts page
  • Link to concepts page in CRD docs

Release Notes

Added

  • Support objectOverrides, a list of generic Kubernetes objects, which are merged into the objects created by the operator (e.g. StatefulSets, Listeners or ConfigMaps).
    Have a look at the concepts page for details.
    The priority of the overrides (in ascending order) is configOverrides -> podOverrides -> objectOverrides, with the latter overriding the previous.

References

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions