MCPcopy
hub / github.com/gardener/gardener

github.com/gardener/gardener @v1.145.0 sqlite

repository ↗ · DeepWiki ↗ · release v1.145.0 ↗
22,600 symbols 91,998 edges 3,897 files 12,777 documented · 57%
README

Gardener

Gardener Logo

REUSE status Build Slack workspace Go Report Card GoDoc CII Best Practices

Gardener implements the automated management and operation of Kubernetes clusters as a service and provides a fully validated extensibility framework that can be adjusted to any programmatic cloud or infrastructure provider.

Gardener is 100% Kubernetes-native and exposes its own Cluster API to create homogeneous clusters on all supported infrastructures. This API differs from SIG Cluster Lifecycle's Cluster API that only harmonizes how to get to clusters, while Gardener's Cluster API goes one step further and also harmonizes the make-up of the clusters themselves. That means, Gardener gives you homogeneous clusters with exactly the same bill of material, configuration and behavior on all supported infrastructures, which you can see further down below in the section on our K8s Conformance Test Coverage.

In 2020, SIG Cluster Lifecycle's Cluster API made a huge step forward with v1alpha3 and the newly added support for declarative control plane management. This made it possible to integrate managed services like GKE or Gardener. We would be more than happy, if the community would be interested, to contribute a Gardener control plane provider. For more information on the relation between Gardener API and SIG Cluster Lifecycle's Cluster API, please see here.

Gardener's main principle is to leverage Kubernetes concepts for all of its tasks.

In essence, Gardener is an extension API server that comes along with a bundle of custom controllers. It introduces new API objects in an existing Kubernetes cluster (which is called garden cluster) in order to use them for the management of end-user Kubernetes clusters (which are called shoot clusters). These shoot clusters are described via declarative cluster specifications which are observed by the controllers. They will bring up the clusters, reconcile their state, perform automated updates and make sure they are always up and running.

To accomplish these tasks reliably and to offer a high quality of service, Gardener controls the main components of a Kubernetes cluster (etcd, API server, controller manager, scheduler). These so-called control plane components are hosted in Kubernetes clusters themselves (which are called seed clusters). This is the main difference compared to many other OSS cluster provisioning tools: The shoot clusters do not have dedicated master VMs. Instead, the control plane is deployed as a native Kubernetes workload into the seeds (the architecture is commonly referred to as kubeception or inception design). This does not only effectively reduce the total cost of ownership but also allows easier implementations for "day-2 operations" (like cluster updates or robustness) by relying on all the mature Kubernetes features and capabilities.

Gardener reuses the identical Kubernetes design to span a scalable multi-cloud and multi-cluster landscape. Such familiarity with known concepts has proven to quickly ease the initial learning curve and accelerate developer productivity:

  • Kubernetes API Server = Gardener API Server
  • Kubernetes Controller Manager = Gardener Controller Manager
  • Kubernetes Scheduler = Gardener Scheduler
  • Kubelet = Gardenlet
  • Node = Seed cluster
  • Pod = Shoot cluster

Please find more information regarding the concepts and a detailed description of the architecture in our Gardener Wiki and our blog posts on kubernetes.io: Gardener - the Kubernetes Botanist (17.5.2018) and Gardener Project Update (2.12.2019).


K8s Conformance Test Coverage certified kubernetes logo

Gardener takes part in the Certified Kubernetes Conformance Program to attest its compatibility with the K8s conformance testsuite. Currently, Gardener is certified for K8s versions up to v1.35, see the conformance spreadsheet.

Continuous conformance test results of the latest stable Gardener release are uploaded regularly to the CNCF test grid:

Provider/K8s v1.36 v1.35 v1.34 v1.33 v1.32
AWS N/A Gardener v1.35 Conformance Tests Gardener v1.34 Conformance Tests Gardener v1.33 Conformance Tests Gardener v1.32 Conformance Tests
Azure N/A Gardener v1.35 Conformance Tests Gardener v1.34 Conformance Tests Gardener v1.33 Conformance Tests Gardener v1.32 Conformance Tests
GCP N/A Gardener v1.35 Conformance Tests Gardener v1.34 Conformance Tests Gardener v1.33 Conformance Tests Gardener v1.32 Conformance Tests
OpenStack N/A Gardener v1.35 Conformance Tests Gardener v1.34 Conformance Tests Gardener v1.33 Conformance Tests Gardener v1.32 Conformance Tests
Alicloud N/A Gardener v1.35 Conformance Tests Gardener v1.34 Conformance Tests Gardener v1.33 Conformance Tests Gardener v1.32 Conformance Tests

Get an overview of the test results at testgrid.

Quickstart with the demo environment

Check out our Gardener demo environment!

It is a preconfigured playground which includes lots of tutorials and examples to get you started with Gardener.

Start using or developing the Gardener locally

See our documentation in the /docs repository, please find the index here.

Setting up your own Gardener landscape

Bootstrapping and maintaining a Gardener landscape has never been easier. Check out our Gardener landscape setup guide to learn about the operator and other key concepts.

Feedback and Support

Feedback and contributions are always welcome!

All channels for getting in touch or learning about our project are listed under the community section. We are cordially inviting interested parties to join our bi-weekly meetings.

Please report bugs or suggestions about our Kubernetes clusters as such or the Gardener itself as GitHub issues or reach out on Slack (join the workspace here).

Learn More!

Please find further resources about our project here:

Extension points exported contracts — how you extend this code

WorkloadIdentityNamespaceLister (Interface)
WorkloadIdentityNamespaceLister helps list and get WorkloadIdentities. All objects returned here must be treated as read [18 …
pkg/client/security/listers/security/v1alpha1/workloadidentity.go
TaskFn (Interface)
TaskFn is an interface that allows mocking `flow.TaskFn`s. [16 implementers]
pkg/utils/flow/mock/doc.go
Deployer (Interface)
Deployer is used to control the life-cycle of a component. [150 implementers]
pkg/component/interfaces.go
Client (Interface)
Client defines the containerd client Interface exported for testing. [8 implementers]
pkg/nodeagent/containerd/containerdclient.go
ReplicaGetter (Interface)
ReplicaGetter provides a method for getting all existing replicas of a ManagedSeedSet. [9 implementers]
pkg/controllermanager/controller/managedseedset/replicagetter.go
Object (Interface)
Object is a security object resource. [13 implementers]
pkg/apis/security/types.go
FileCodec (Interface)
FileCodec is a codec to en- and decode data in cloud-init scripts with.j [9 implementers]
pkg/api/extensions/v1alpha1/helper/filecodec.go
WantsCoreInformerFactory (Interface)
WantsCoreInformerFactory defines a function which sets Core InformerFactory for admission plugins that need it. [18 implementers]
pkg/apiserver/admission/initializer/types.go

Core symbols most depended-on inside this repo

Create
called by 3838
pkg/client/core/clientset/versioned/typed/core/v1beta1/seed.go
Get
called by 2406
pkg/utils/oci/cache.go
Add
called by 2100
pkg/utils/flow/graph.go
Info
called by 1921
hack/tools/logcheck/pkg/logcheck/testdata/src/use-logr/use_logr.go
Get
called by 1870
pkg/component/extensions/worker/worker.go
WithVersion
called by 1664
pkg/client/kubernetes/fake/builder.go
HasPathFrom
called by 1350
pkg/utils/graph/graph.go
BeNotFoundError
called by 1335
pkg/utils/test/matchers/matchers.go

Shape

Method 11,682
Function 7,951
Struct 2,374
Interface 374
TypeAlias 143
FuncType 76

Languages

Go100%

Modules by API surface

pkg/apis/core/v1beta1/generated.pb.go1,537 symbols
pkg/apis/core/v1beta1/zz_generated.conversion.go865 symbols
pkg/apiserver/openapi/openapi_generated.go656 symbols
pkg/apis/core/zz_generated.deepcopy.go470 symbols
pkg/apis/core/v1beta1/zz_generated.deepcopy.go470 symbols
pkg/apis/core/v1beta1/generated.protomessage.pb.go219 symbols
pkg/apis/core/v1beta1/zz_generated.model_name.go218 symbols
pkg/apis/extensions/v1alpha1/zz_generated.deepcopy.go194 symbols
pkg/apis/seedmanagement/v1alpha1/generated.pb.go159 symbols
third_party/mock/client-go/core/v1/mocks.go156 symbols
pkg/apis/operator/v1alpha1/zz_generated.deepcopy.go140 symbols
third_party/mock/client-go/kubernetes/mocks.go116 symbols

Dependencies from manifests, versioned

cel.dev/exprv0.25.1 · 1×
cyphar.com/go-pathrsv0.2.1 · 1×
dario.cat/mergov1.0.2 · 1×
github.com/Azure/go-ansitermv0.0.0-2025010203350 · 1×
github.com/Masterminds/goutilsv1.1.1 · 1×
github.com/Masterminds/semver/v3v3.5.0 · 1×
github.com/Masterminds/sprig/v3v3.3.0 · 1×
github.com/Microsoft/go-winiov0.6.2 · 1×
github.com/Microsoft/hcsshimv0.14.1 · 1×
github.com/NYTimes/gziphandlerv1.1.1 · 1×
github.com/PaesslerAG/gvalv1.2.4 · 1×

For agents

$ claude mcp add gardener \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact