Skip to content

feat(t8s-cluster/management-cluster): enable ImageVolume feature flag#1786

Merged
cwrau merged 1 commit intomainfrom
feat/t8s-cluster/enable-image-volume-feature
Nov 21, 2025
Merged

feat(t8s-cluster/management-cluster): enable ImageVolume feature flag#1786
cwrau merged 1 commit intomainfrom
feat/t8s-cluster/enable-image-volume-feature

Conversation

@cwrau
Copy link
Member

@cwrau cwrau commented Nov 21, 2025

Summary by CodeRabbit

Release Notes

  • Bug Fixes

    • Fixed template syntax errors in cluster configuration templates to ensure proper rendering.
  • New Features

    • Enhanced API server configuration with support for feature gates, including ImageVolume feature support for improved cluster functionality.
    • Feature gates are now configurable per component with automatic application to relevant services.

✏️ Tip: You can customize this high-level summary in your review settings.

Copilot AI review requested due to automatic review settings November 21, 2025 08:54
@cwrau cwrau enabled auto-merge November 21, 2025 08:54
@coderabbitai
Copy link

coderabbitai bot commented Nov 21, 2025

Walkthrough

Introduces feature gate handling for API server by computing component-specific feature gates and conditionally applying them to server arguments. Replaces placeholder feature gates mapping with concrete values for "apiserver" and "kubelet" components. Fixes template syntax errors in two template blocks.

Changes

Cohort / File(s) Summary
Feature gate handling and template fixes
charts/t8s-cluster/templates/management-cluster/clusterClass/_helpers.tpl
Adds feature-gates flag computation from t8s-cluster.featureGates.forComponent data for API server. Replaces empty featureGates placeholder with concrete mapping defining "ImageVolume" for apiserver and kubelet. Removes stray closing tokens in staticFiles and dynamicFiles template blocks.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Template logic verification: Ensure feature-gates computation correctly extracts and formats values from the featureGates.forComponent structure, particularly the conditional flag assembly logic.
  • Syntax and template rendering: Verify that stray token removal and the modified template blocks render correctly without breaking Helm chart compilation.
  • API server argument handling: Confirm that the feature-gates flag integrates properly with existing API server arguments and follows the same pattern as other components.

Poem

🐰 A rabbit hops through gates so fine,
Feature flags now in line,
Templates fixed with careful care,
API server's smooth affair! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: enabling the ImageVolume feature flag in the t8s-cluster management cluster, which aligns with the primary objective and the concrete feature gate mapping introduced in the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/t8s-cluster/enable-image-volume-feature

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7c1bd9a and d1c04ce.

📒 Files selected for processing (1)
  • charts/t8s-cluster/templates/management-cluster/clusterClass/_helpers.tpl (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Agent
  • GitHub Check: lint helm chart (t8s-cluster)
🔇 Additional comments (2)
charts/t8s-cluster/templates/management-cluster/clusterClass/_helpers.tpl (2)

73-75: ImageVolume feature gate mapping looks consistent with intended components

Defining ImageVolume once and listing "apiserver" and "kubelet" as consumers is a clean central mapping and fits the forComponent helper usage.


77-86: The review comment contains an incorrect assessment of the piping argument order

The review claims the arguments to has are reversed, but this analysis is incorrect.

Sprig's has function takes the needle first and the collection second, and when using a pipeline (|), the piped value becomes the last argument to the function.

In the current code {{- if $components | has $component -}}:

  • $component is the explicit argument (placed first)
  • $components is piped and becomes the last argument
  • This results in: has($component, $components) — the correct order

For the apiserver use case:

  • $component = "apiserver" (string)
  • $components = ["apiserver", "kubelet"] (list from the feature gates definition)
  • The condition correctly checks if "apiserver" exists in the list, which is true
  • The feature gate is properly applied

The current implementation is correct and requires no changes.

Likely an incorrect or invalid review comment.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR enables the ImageVolume Kubernetes feature gate for both the API server and kubelet components in the t8s-cluster management cluster configuration.

Key Changes:

  • Activates the ImageVolume feature gate for apiserver and kubelet components through the centralized feature gate management system
  • Implements feature gate command-line argument generation for the API server
  • Leverages existing kubelet patch mechanism for kubelet feature gate configuration

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@cwrau cwrau added this pull request to the merge queue Nov 21, 2025
Merged via the queue into main with commit 9676ee0 Nov 21, 2025
38 of 39 checks passed
@cwrau cwrau deleted the feat/t8s-cluster/enable-image-volume-feature branch November 21, 2025 08:59
github-merge-queue bot pushed a commit that referenced this pull request Jan 15, 2026
🤖 I have created a release *beep* *boop*
---


##
[9.5.0](t8s-cluster-v9.4.1...t8s-cluster-v9.5.0)
(2026-01-15)


### Features

* **t8s-cluster/artifacthub:** use centralised helmRepositories template
([#1846](#1846))
([73a41f9](73a41f9))
* **t8s-cluster/cilium:** enable kubeProxy replacement
([#1815](#1815))
([b3c412d](b3c412d))
* **t8s-cluster/management-cluster:** add cluster-autoscaler deployment
([#1756](#1756))
([5b6ead9](5b6ead9))
* **t8s-cluster/management-cluster:** enable ImageVolume feature flag
([#1786](#1786))
([9676ee0](9676ee0))
* **t8s-cluster/management-cluster:** set apiServerLoadBalancer.provider
via TeutonetesCloud
([#1898](#1898))
([6bf8889](6bf8889))
* **t8s-cluster/management-cluster:** switch to hcp
([#1759](#1759))
([303b0b6](303b0b6))
* **t8s-cluster/management-cluster:** use new
KubeletEnsureSecretPulledImages feature gate
([#1858](#1858))
([40d7bef](40d7bef))
* **t8s-cluster:** migrate to CAPI v1beta2
([#1685](#1685))
([dc5f071](dc5f071))


### Bug Fixes

* **t8s-cluster/autoscaler:** these names are inside the workload
cluster
([#1877](#1877))
([f345cea](f345cea))
* **t8s-cluster/management-cluster:** leave out protocol if `nil`
([#1837](#1837))
([f370dac](f370dac))
* **t8s-cluster:** only allow nodePools with valid k8s names
([#1851](#1851))
([b9431c5](b9431c5))


### Miscellaneous Chores

* **t8s-cluster/dependencies:** update common docker tag to v1.6.0
([#1811](#1811))
([b3b4c94](b3b4c94))
* **t8s-cluster/dependencies:** update common docker tag to v1.7.0
([#1873](#1873))
([71e062f](71e062f))
* **t8s-cluster/dependencies:** update helm release cilium to v1.18.6
([#1894](#1894))
([e1adc88](e1adc88))
* **t8s-cluster/dependencies:** update helm release cluster-autoscaler
to v9.53.0
([#1856](#1856))
([dc67fcd](dc67fcd))
* **t8s-cluster/dependencies:** update helm release
openstack-cloud-controller-manager to v2.34.1
([#1553](#1553))
([e984d19](e984d19))
* **t8s-cluster/dependencies:** update registry.k8s.io/etcd docker tag
to v3.5.24
([#1793](#1793))
([a5098e3](a5098e3))
* **t8s-cluster/dependencies:** update registry.k8s.io/etcd docker tag
to v3.6.6
([#1813](#1813))
([e07ffa7](e07ffa7))
* **t8s-cluster/dependencies:** update registry.k8s.io/etcd docker tag
to v3.6.7
([#1895](#1895))
([cf1d3b4](cf1d3b4))
* **t8s-cluster/flux:** use centralised HelmRepositories instead of
per-instance
([#1758](#1758))
([3deff65](3deff65))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants