-
Notifications
You must be signed in to change notification settings - Fork 106
Description
Created on 2025-07-29 by Xin Ruan (@ruanxin ).
Decision log
| Name | Description |
|---|---|
| Title | Provide Gardener Generic Extensions to Kyma users |
| Due date | 2025-08-31 |
| Status | Accepted on 2025-08-13 |
| Decision type | Choice |
| Affected decisions | The Registry Cache ADR |
Context
Gardener offers generic extensions to enhance cluster capabilities — for example:
- Falco: Improves security monitoring.
- Registry Cache: Speeds up image pulls and reduces external dependencies.
These extensions are configured in the Gardener Shoot CR via Gardener API.
However, Kyma end users do not have direct Gardener API access. Instead, the Kyma Infrastructure Manager (KIM) acts as the bridge between SKR and the Garden cluster.
The Registry Cache ADR established a pattern where KIM:
- Reads configuration from the Kyma runtime.
- Delivers necessary resources to the Garden cluster via the Gardener API.
We now aim to extend this pattern to other Gardener extensions, creating a general, unified solution for enabling Kyma users to configure selected extensions.
Decision Drivers
- Security: The solution must follow the principle of least privilege, minimizing access scopes and potential attack vectors.
- User Experience (UX): The process for a user to enable and configure an extension should be straightforward and consistent with existing Kyma and Kubernetes practices.
- Architectural Cohesion: The design should align with the existing Kyma and Gardener architecture, maintaining a clear separation of concerns between components.
Have a unified user experience
Treat extension as kyma regular module
apiVersion: operator.kyma-project.io/v1beta2
kind: Kyma
spec:
channel: fast
modules:
- name: api-gateway
- name: falco
- name: registry-cache
Provide configuration resources to Gardener
To align with this decision and the Kyma module concept, the following architecture is proposed:
- User is able to enable extension as a standard Kyma module in SKR Kyma CR
- Optional: allow the user to configure the extension through BTP cockpit while provisioning Kyma
- KLM deploys the extension as a standard Kyma module. This module only contains the CRD and CR related to extension configuration.
- An Extension Manager (not decided if is a single manager or multiple ones) runs in the KCP and is responsible for syncing extension configuration from the SKR to the KCP, updating the corresponding Runtime CR.
- KIM reads the extension configuration from the Runtime CR and interacts with the Gardener API to fetch the shoot status.
- If there are additional external extension resources required, KIM access the SKR and send them to Gardener accordingly.
- KIM updates the Runtime CR about the extension status.
- The Extension Manager updates the extension CR in the SKR based on the status in the Runtime CR.
Decision
-
Scope
- Applies only to Gardener extensions that:
- Provide clear value to Kyma end users.
- Require user configuration.
- Can be safely exposed in Kyma.
- In scope initially: Registry Cache, Falco.
- Out of scope: Auditlog, DNS, and extensions not feasible for user exposure.
- Applies only to Gardener extensions that:
-
Unified Module Approach
- All supported extensions will be implemented as regular Kyma modules.
- Each extension must:
- Provide a Kyma-specific configuration CR with a schema tailored for end users.
- Follow the Kyma module release process, including versioning and essential information, e.g: documentation.
- Deliver the configuration CR and its CRD as core module resources.
-
Ownership
- @kyma-project/framefrog team will implement and maintain Registry Cache and Falco.
- Any future extension covered by this ADR will have a designated owner.
Consequences
Advantages
- Unified, familiar UX for enabling and configuring extensions.
- Leverages existing Kyma module tooling, release process, and lifecycle management.
- Maintains clear separation of concerns between user-level CRs and Gardener-level operations.
Disadvantages
- Each supported extension requires its own Kyma module with ongoing maintenance.
- Adds sync complexity between SKR, KCP, and Gardener.
References
https://gardener.cloud/docs/extensions/_index#generic-extensions
https://gardener.cloud/docs/gardener/managed_seed/#managedseeds-register-shoot-as-seed