From aca0741207c86fe8d8dde645c713917a57dff1ac Mon Sep 17 00:00:00 2001 From: Debakel Orakel Date: Wed, 26 Aug 2026 09:02:17 +0200 Subject: [PATCH 1/2] Refactor image source definition This PR changes how images are defined in the component. It is a breaking change, but follows recommended syntaxt for image handling. --- class/defaults.yml | 6 +++-- class/metrics-server.yml | 23 +++++++++++-------- component/helm.jsonnet | 18 +++++++++++++++ tests/defaults.yml | 3 +-- .../metrics-server/templates/deployment.yaml | 2 +- 5 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 component/helm.jsonnet diff --git a/class/defaults.yml b/class/defaults.yml index 1f63814..dcb5806 100644 --- a/class/defaults.yml +++ b/class/defaults.yml @@ -12,5 +12,7 @@ parameters: images: metrics_server: - image: registry.k8s.io/metrics-server/metrics-server - tag: v0.6.1 + registry: registry.k8s.io + repository: metrics-server/metrics-server + + helm_values: {} diff --git a/class/metrics-server.yml b/class/metrics-server.yml index bef8535..116a942 100644 --- a/class/metrics-server.yml +++ b/class/metrics-server.yml @@ -5,24 +5,29 @@ parameters: source: ${metrics_server:charts:metrics-server:source} chart_name: metrics-server version: ${metrics_server:charts:metrics-server:version} - output_path: dependencies/metrics-server/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version}/ + output_path: ${_base_directory}/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version}/ compile: - input_paths: - - metrics-server/component/app.jsonnet + - ${_base_directory}/component/app.jsonnet input_type: jsonnet output_path: . - input_paths: - - metrics-server/component/main.jsonnet + - ${_base_directory}/component/main.jsonnet input_type: jsonnet - output_path: metrics-server/ + output_path: ${_instance}/ + + # Helm chart + - input_type: jsonnet + input_paths: + - ${_base_directory}/component/helm.jsonnet + output_path: ${_base_directory}/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version}/ - output_path: metrics-server/01_helmchart input_type: helm input_paths: - - metrics-server/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version} - helm_values: - image: - repository: ${metrics_server:images:metrics_server:image} - tag: ${metrics_server:images:metrics_server:tag} + - ${_base_directory}/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version} + helm_values_files: + - ${_base_directory}/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version}/metrics-values.yaml + - ${_base_directory}/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version}/metrics-overrides.yaml helm_params: release_name: metrics-server namespace: ${metrics_server:namespace} diff --git a/component/helm.jsonnet b/component/helm.jsonnet new file mode 100644 index 0000000..c88e7b5 --- /dev/null +++ b/component/helm.jsonnet @@ -0,0 +1,18 @@ +local com = import 'lib/commodore.libjsonnet'; +local kap = import 'lib/kapitan.libjsonnet'; +local inv = kap.inventory(); + +// The hiera parameters for the component +local params = inv.parameters.metrics_server; + +local values = { + image: { + repository: '%(registry)s/%(repository)s' % params.images.metrics_server, + [if std.objectHas(params.images.metrics_server, 'tag') then 'tag']: params.images.metrics_server.tag, + }, +}; + +{ + 'metrics-values': values, + 'metrics-overrides': params.helm_values, +} diff --git a/tests/defaults.yml b/tests/defaults.yml index c53f145..d5624b7 100644 --- a/tests/defaults.yml +++ b/tests/defaults.yml @@ -1,2 +1 @@ -parameters: - metrics_server: {} +# params here diff --git a/tests/golden/defaults/metrics-server/metrics-server/01_helmchart/metrics-server/templates/deployment.yaml b/tests/golden/defaults/metrics-server/metrics-server/01_helmchart/metrics-server/templates/deployment.yaml index 20fac29..4f630ad 100644 --- a/tests/golden/defaults/metrics-server/metrics-server/01_helmchart/metrics-server/templates/deployment.yaml +++ b/tests/golden/defaults/metrics-server/metrics-server/01_helmchart/metrics-server/templates/deployment.yaml @@ -28,7 +28,7 @@ spec: - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname - --kubelet-use-node-status-port - --metric-resolution=15s - image: registry.k8s.io/metrics-server/metrics-server:v0.6.1 + image: registry.k8s.io/metrics-server/metrics-server:v0.9.0 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 From 932dbd83aa0b98b203e8cd08ac4e6e90dd464c7c Mon Sep 17 00:00:00 2001 From: Debakel Orakel Date: Wed, 26 Aug 2026 09:40:43 +0200 Subject: [PATCH 2/2] Apply suggestions from review --- class/defaults.yml | 6 +++++- class/metrics-server.yml | 10 +--------- component/helm.jsonnet | 18 ------------------ 3 files changed, 6 insertions(+), 28 deletions(-) delete mode 100644 component/helm.jsonnet diff --git a/class/defaults.yml b/class/defaults.yml index dcb5806..7678886 100644 --- a/class/defaults.yml +++ b/class/defaults.yml @@ -14,5 +14,9 @@ parameters: metrics_server: registry: registry.k8s.io repository: metrics-server/metrics-server + tag: v0.9.0 - helm_values: {} + helm_values: + image: + repository: ${metrics_server:images:metrics_server:registry}/${metrics_server:images:metrics_server:repository} + tag: ${metrics_server:images:metrics_server:tag} diff --git a/class/metrics-server.yml b/class/metrics-server.yml index 116a942..448ca3b 100644 --- a/class/metrics-server.yml +++ b/class/metrics-server.yml @@ -15,19 +15,11 @@ parameters: - ${_base_directory}/component/main.jsonnet input_type: jsonnet output_path: ${_instance}/ - - # Helm chart - - input_type: jsonnet - input_paths: - - ${_base_directory}/component/helm.jsonnet - output_path: ${_base_directory}/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version}/ - output_path: metrics-server/01_helmchart input_type: helm input_paths: - ${_base_directory}/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version} - helm_values_files: - - ${_base_directory}/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version}/metrics-values.yaml - - ${_base_directory}/helmcharts/metrics-server/${metrics_server:charts:metrics-server:version}/metrics-overrides.yaml + helm_values: ${metrics_server:helm_values} helm_params: release_name: metrics-server namespace: ${metrics_server:namespace} diff --git a/component/helm.jsonnet b/component/helm.jsonnet deleted file mode 100644 index c88e7b5..0000000 --- a/component/helm.jsonnet +++ /dev/null @@ -1,18 +0,0 @@ -local com = import 'lib/commodore.libjsonnet'; -local kap = import 'lib/kapitan.libjsonnet'; -local inv = kap.inventory(); - -// The hiera parameters for the component -local params = inv.parameters.metrics_server; - -local values = { - image: { - repository: '%(registry)s/%(repository)s' % params.images.metrics_server, - [if std.objectHas(params.images.metrics_server, 'tag') then 'tag']: params.images.metrics_server.tag, - }, -}; - -{ - 'metrics-values': values, - 'metrics-overrides': params.helm_values, -}