Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8c43259
controller
hown3d May 4, 2026
ddad90c
watch managedseed shoots
hown3d May 11, 2026
9818012
different managed resource name for garden extension
hown3d May 12, 2026
7f25339
healthcheck garden managed resource
hown3d May 12, 2026
2ed9821
tests
hown3d May 18, 2026
5cdd131
delete managed resource of garden extension
hown3d May 18, 2026
615cee1
fix deployment manifest for controller
hown3d May 27, 2026
943c5de
move garden specific allowed cidrs into own file
hown3d May 27, 2026
204a8a4
comment why to add node and pod cidr of runtime cluster to allowed
hown3d May 27, 2026
ecd08d1
move rbac for extension classes into separate files
hown3d May 27, 2026
e67326f
drop uneeded permissions
hown3d May 27, 2026
2be0db3
restrict garden permissions to garden namespace
hown3d May 27, 2026
d114a2a
kustomization for garden resources
hown3d May 27, 2026
c9ab15b
helper function to check if garden extension
hown3d May 27, 2026
f279d50
requeue if no advertised addresses
hown3d May 27, 2026
c1e6340
drop special findIstioNamespace logic for garden extension
hown3d May 27, 2026
659ced4
tidy
hown3d May 27, 2026
d21eac8
clusterCompability in extension
hown3d May 28, 2026
0210f9e
move gardencluster setup to app.go
hown3d May 28, 2026
e544c2d
format
hown3d May 28, 2026
2a6d363
generate
hown3d May 28, 2026
8fd4a43
adapt tests to gardener version
hown3d May 28, 2026
78038ca
downgrade kubernetes packages to 1.35
hown3d May 28, 2026
b38c4ac
adapt tests to include proxy tests
hown3d May 29, 2026
fe2b7ed
rebase
hown3d Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ VERSION := $(shell git describe --tag --always --dirty)
export TAG := $(VERSION)
LEADER_ELECTION := false
IGNORE_OPERATION_ANNOTATION := false
REGISTRY := registry.local.gardener.cloud:5001

SHELL=/usr/bin/env bash -o pipefail

Expand Down Expand Up @@ -109,9 +110,10 @@ generate: $(HELM) $(YQ)
format: $(GOIMPORTS) $(GOIMPORTSREVISER)
@bash $(GARDENER_HACK_DIR)/format.sh ./cmd ./pkg

.PHONY: test
.PHONY: test
test: DIRS ?= "./cmd/... ./pkg/..."
test: $(REPORT_COLLECTOR) $(SETUP_ENVTEST)
@./hack/test.sh ./cmd/... ./pkg/...
@./hack/test.sh $(DIRS)

.PHONY: test-cov
test-cov:
Expand Down Expand Up @@ -145,7 +147,7 @@ verify-extended: verify-tidy verify-generate check format test artifacts

# speed-up skaffold deployments by building all images concurrently
extension-%: export SKAFFOLD_BUILD_CONCURRENCY = 0
extension-%: export SKAFFOLD_DEFAULT_REPO ?= registry.local.gardener.cloud:5001
extension-%: export SKAFFOLD_DEFAULT_REPO ?= $(REGISTRY)
extension-%: export SKAFFOLD_PUSH = true
# use static label for skaffold to prevent rolling all gardener components on every `skaffold` invocation
extension-%: export SKAFFOLD_LABEL = skaffold.dev/run-id=acl
Expand Down
33 changes: 30 additions & 3 deletions charts/gardener-extension-acl/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ spec:
labels:
networking.gardener.cloud/to-dns: allowed
networking.gardener.cloud/to-runtime-apiserver: allowed
networking.resources.gardener.cloud/to-garden-virtual-garden-kube-apiserver-tcp-443: allowed
{{ include "labels" . | indent 8 }}
spec:
priorityClassName: gardener-system-900
priorityClassName: {{ default "gardener-system-900" .Values.gardener.runtimeCluster.priorityClassName }}
serviceAccountName: {{ include "name" . }}
containers:
- name: {{ include "name" . }}
Expand All @@ -43,7 +44,16 @@ spec:
{{- if .Values.gardener.version }}
- --gardener-version={{ .Values.gardener.version }}
{{- end }}
{{- if .Values.gardener.runtimeCluster.enabled }}
- --extension-classes=garden
{{- else }}
- --extension-classes=shoot
{{- end }}
env:
{{- if .Values.gardener.runtimeCluster.enabled }}
- name: GARDEN_KUBECONFIG
value: /var/run/secrets/gardener.cloud/garden/generic-kubeconfig/kubeconfig
{{- end }}
- name: LEADER_ELECTION_NAMESPACE
valueFrom:
fieldRef:
Expand All @@ -65,16 +75,33 @@ spec:
runAsGroup: 65532
seccompProfile:
type: RuntimeDefault
{{- if .Values.imageVectorOverwrite }}
volumeMounts:
{{- if .Values.gardener.runtimeCluster.enabled }}
- name: kubeconfig
mountPath: /var/run/secrets/gardener.cloud/garden/generic-kubeconfig
readOnly: true
{{- end }}
{{- if .Values.imageVectorOverwrite }}
- name: extension-imagevector-overwrite
mountPath: /charts_overwrite/
readOnly: true
{{- end }}
{{- if .Values.imageVectorOverwrite }}
volumes:
{{- if .Values.imageVectorOverwrite }}
- name: extension-imagevector-overwrite
configMap:
name: {{ include "name" . }}-imagevector-overwrite
defaultMode: 420
{{- end }}
{{- if .Values.gardener.runtimeCluster.enabled }}
- name: kubeconfig
projected:
defaultMode: 420
sources:
- secret:
items:
- key: kubeconfig
path: kubeconfig
name: garden-kubeconfig
optional: false
{{- end }}
32 changes: 32 additions & 0 deletions charts/gardener-extension-acl/templates/rbac-garden.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{{- if .Values.gardener.runtimeCluster.enabled }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ include "name" . }}:garden
labels:
{{ include "labels" . | indent 4 }}
rules:
- apiGroups:
- operator.gardener.cloud
resources:
- gardens
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ include "name" . }}:garden
labels:
{{ include "labels" . | indent 4 }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ include "name" . }}:garden
subjects:
- kind: ServiceAccount
name: {{ include "name" . }}
namespace: {{ .Release.Namespace }}
{{- end }}
42 changes: 42 additions & 0 deletions charts/gardener-extension-acl/templates/rbac-shoot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{{- if not .Values.gardener.runtimeCluster.enabled }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ include "name" . }}:shoot
labels:
{{ include "labels" . | indent 4 }}
rules:
- apiGroups:
- extensions.gardener.cloud
resources:
- clusters
- dnsrecords
- infrastructures
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- services
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ include "name" . }}:shoot
labels:
{{ include "labels" . | indent 4 }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ include "name" . }}:shoot
subjects:
- kind: ServiceAccount
name: {{ include "name" . }}
namespace: {{ .Release.Namespace }}
{{- end }}
42 changes: 1 addition & 41 deletions charts/gardener-extension-acl/templates/rbac.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,6 @@ rules:
- delete
resources:
- envoyfilters
- apiGroups:
- ""
resources:
- services
verbs:
- get
- list
- watch
- apiGroups:
- extensions.gardener.cloud
resources:
- clusters
- dnsrecords
- infrastructures
verbs:
- get
- list
- watch
- apiGroups:
- extensions.gardener.cloud
resources:
Expand Down Expand Up @@ -67,28 +49,6 @@ rules:
- get
- list
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- create
- update
- patch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
- clusterrolebindings
- roles
- rolebindings
verbs:
- get
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
Expand Down Expand Up @@ -197,4 +157,4 @@ roleRef:
subjects:
- kind: ServiceAccount
name: {{ include "name" . }}
namespace: {{ .Release.Namespace }}
namespace: {{ .Release.Namespace }}
30 changes: 30 additions & 0 deletions charts/gardener-extension-acl/templates/secret.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: v1
kind: Secret
type: Opaque
metadata:
annotations:
serviceaccount.resources.gardener.cloud/name: extension-acl
serviceaccount.resources.gardener.cloud/inject-ca-bundle: "true"
serviceaccount.resources.gardener.cloud/labels: '{"extension": "acl"}'
labels:
resources.gardener.cloud/class: garden
resources.gardener.cloud/purpose: token-requestor

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume that you're creating this "by hand" because gardener-operator doesn't create this by default. Should we add this feature, similarly to https://github.com/gardener/gardener/blob/master/docs/extensions/garden-api-access.md?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would love to see this available in g/g. However as of the time creating this PR it was not possible to do

name: garden-kubeconfig
namespace: {{ .Release.Namespace }}
stringData:
kubeconfig: |
apiVersion: v1
clusters:
- cluster:
server: https://virtual-garden-kube-apiserver.garden.svc.cluster.local
name: default
contexts:
- context:
cluster: default
user: token
name: default
current-context: default
kind: Config
users:
- name: token
user: {}
3 changes: 3 additions & 0 deletions charts/gardener-extension-acl/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,6 @@ additionalAllowedCidrs: []

gardener:
version: ""
runtimeCluster:
enabled: false
priorityClassName: ""
2 changes: 1 addition & 1 deletion charts/seed/templates/envoyfilter/envoyfilter-api.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: acl-api-{{ .Values.shootName }}
name: acl-api-{{ .Values.suffix }}
namespace: {{ .Values.targetNamespace }}
labels:
{{- include "gardener-extension.labels" . | nindent 4 }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
{{- if .Values.httpProxyEnvoyFilterSpec }}
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: acl-http-proxy-{{ .Values.shootName }}
name: acl-http-proxy-{{ .Values.suffix }}
namespace: {{ .Values.targetNamespace }}
labels:
{{- include "gardener-extension.labels" . | nindent 4 }}
spec: {{- .Values.httpProxyEnvoyFilterSpec | toYaml | nindent 2 }}
{{- end }}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: acl-ingress-{{ .Values.shootName }}
name: acl-ingress-{{ .Values.suffix }}
namespace: istio-ingress
labels:
{{- include "gardener-extension.labels" . | nindent 4 }}
Expand Down
4 changes: 3 additions & 1 deletion charts/seed/templates/envoyfilter/envoyfilter-vpn.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
{{- if .Values.vpnEnvoyFilterSpec }}
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: acl-vpn-{{ .Values.shootName }}
name: acl-vpn-{{ .Values.suffix }}
namespace: {{ .Values.targetNamespace }}
labels:
{{- include "gardener-extension.labels" . | nindent 4 }}
spec: {{- .Values.vpnEnvoyFilterSpec | toYaml | nindent 2 }}
{{- end }}
4 changes: 3 additions & 1 deletion charts/seed/values.yaml
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
# TODO
suffix: ""
targetNamespace: ""

Loading