Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extension registration and automation for gardener-operator #9635

Open
timuthy opened this issue Apr 22, 2024 · 1 comment
Open

Extension registration and automation for gardener-operator #9635

timuthy opened this issue Apr 22, 2024 · 1 comment
Labels
area/ipcei IPCEI (Important Project of Common European Interest) area/open-source Open Source (community, enablement, contributions, conferences, CNCF, etc.) related area/ops-productivity Operator productivity related (how to improve operations) area/usability Usability related kind/enhancement Enhancement, improvement, extension

Comments

@timuthy
Copy link
Contributor

timuthy commented Apr 22, 2024

How to categorize this issue?

/area usability
/area ops-productivity
/area open-source
/area ipcei
/kind enhancement

What would you like to be added:
The following concept aims at improving the overall experience and productivity for operators. A Gardener installation usually needs additional and tedious preparation tasks to be done, e.g. creating storage buckets for backups or managing DNS entries. All of those can be automated via gardener-operator.
They even overlap with requirements that were already implemented for shoot clusters, but never made it to the Garden due to conceptional reasons.

Therefore, we plan to add a new custom resource Extension:

🎯 Goals

  • Registration of a provider extension for the Garden-Runtime and Shoot clusters at the same time.
    • Serves common tasks in Runtime cluster, e.g. reconciling DNSRecord or BackupBucket resources (gardener-operator will need to create those).
    • Will be translated into and deployed as ControllerRegistration/ControllerDeployment (ref) in Garden cluster.
  • Registration of an optional admission controller (example).
  • Stick to Helm deployment logic (ref) but only rely on OCI repositories to fetch charts/assets (similar to Flux's support for OCI Repositories).
  • Add great defaulting for known extensions, hosted in github.com/gardener. This allows smaller and trial landscapes to be setup with a minimal Extension resources (see Example 2 below).

🙅‍♂️ Non Goals

  • It's not planned to eliminate ControllerRegistrations. For complex or advanced configurations, operators should still consider their additional usage.

Extension API:

Fields of the Extension API are very similar to ControllerRegistration/ControllerDeployment as requirements and goals overlap for the main part.

Example 1:

apiVersion: operator.gardener.cloud/v1alpha1
kind: Extension
metadata:
  name: aws
spec:
    resources: # optional - defaulted by Operator for well-known extensions
  # - kind: BackupBucket
  #   type: aws
  #   primary: true|false
  #   globallyEnabled: true|false # only valid if kind=Extension
  #   reconcileTimeout: 30s # only valid if kind=Extension
  #   lifecycle: {}
  #   workerlessSupported: true|false # only valid if kind=Extension
  version: # optional - defaulted by Operator for well-known extensions
  deployment: # optional - defaulted by Operator for well-known extensions
    admission:
      ociRepositoryURL: # optional - defaulted by Operator for well-known extensions
      type: helm
      providerConfig:
        values: {}
    extension:
      ociRepositoryURL: # optional - defaulted by Operator for well-known extensions
      type: helm
      providerConfig:
        values: {}
    # policy: OnDemand|Always

The resources configuration merges the extension handling for Garden and Shoot clusters, whereas the most part is irrelevant for the Garden and only needed to craft the ControllerRegistration.

With decent defaulting, we want the extension registration for operators to be as simple as the following:

Example 2:

apiVersion: operator.gardener.cloud
kind: Extension
metadata:
  name: aws
@gardener-prow gardener-prow bot added area/usability Usability related area/ops-productivity Operator productivity related (how to improve operations) area/open-source Open Source (community, enablement, contributions, conferences, CNCF, etc.) related area/ipcei IPCEI (Important Project of Common European Interest) kind/enhancement Enhancement, improvement, extension labels Apr 22, 2024
@timuthy
Copy link
Contributor Author

timuthy commented Apr 22, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/ipcei IPCEI (Important Project of Common European Interest) area/open-source Open Source (community, enablement, contributions, conferences, CNCF, etc.) related area/ops-productivity Operator productivity related (how to improve operations) area/usability Usability related kind/enhancement Enhancement, improvement, extension
Projects
None yet
Development

No branches or pull requests

1 participant