Skip to content

Remove helmify / kustomize, switch to helm-chart only.#270

Merged
notandy merged 1 commit intomainfrom
remove-kustomize_helmify
Mar 17, 2026
Merged

Remove helmify / kustomize, switch to helm-chart only.#270
notandy merged 1 commit intomainfrom
remove-kustomize_helmify

Conversation

@notandy
Copy link
Contributor

@notandy notandy commented Mar 16, 2026

This PR removes the helmify step and removes kustomize as an option to
render the manager/rbacs/crd.
Helmify took a lot of work creating a helm-chart based on the
boilerplate generated by kubebuilder. But ultimatively, it imposes too
many constraints to the outcome of the helm-chart and makes it hard to
implement custom renditions (like using .AppVersion as a image tag).

Thus this PR is removing the kustomize files, leaving only the generated
CRDs in the config directory (which don't need any templating) and
symlinks it to the helm chart.

Summary by CodeRabbit

  • Chores
    • Helm Chart version bumped to 1.0.0; container image repository relocated to GitHub Container Registry
    • Removed built-in metrics collection infrastructure, including network policies and monitoring endpoints
    • Removed RBAC viewer/editor roles for resource access control
    • Simplified deployment configuration and removed pre-commit hooks
    • Deprecated and removed Eviction custom resource entirely; CRD definitions restructured

@coderabbitai
Copy link

coderabbitai bot commented Mar 16, 2026

📝 Walkthrough

Walkthrough

This PR restructures the project by removing kustomize-based Kubernetes configuration, consolidating CRD generation into the Helm chart directory, updating the image repository to GitHub Container Registry, enabling additional security checks, and simplifying the deployment and test setup.

Changes

Cohort / File(s) Summary
GitHub Actions & Build Tools
.github/workflows/helm-oci-package-ghcr.yaml, .golangci.yaml, .pre-commit-config.yaml
Updated Helm action version specification, enabled G120 gosec checks, and removed helmify and go-build pre-commit hooks.
Build Configuration & CRD Generation
Makefile, Makefile.maker.yaml
Removed kustomize-based CRD installation pipeline, deleted helmify target, updated controller-gen output path to charts/openstack-hypervisor-operator/crds, and added allowDangerousTypes: true.
Helm Chart Configuration
charts/openstack-hypervisor-operator/Chart.yaml, charts/openstack-hypervisor-operator/values.yaml
Updated chart version to 1.0.0, changed appVersion to "latest", and migrated image repository from SAP-internal Keppel to ghcr.io/cobaltcore-dev/openstack-hypervisor-operator.
Kustomize Configuration Removal
config/crd/kustomization.yaml, config/crd/kustomizeconfig.yaml, config/default/kustomization.yaml, config/manager/kustomization.yaml, config/rbac/kustomization.yaml, config/network-policy/kustomization.yaml, config/prometheus/kustomization.yaml
Removed kustomization pipeline files and associated resource references, eliminating webhook patches, CA injection scaffolds, and kustomize-based CRD customization.
Kubernetes Manager & Service Resources
config/manager/manager.yaml, config/manager/secret.yaml, config/default/manager_metrics_patch.yaml, config/default/metrics_service.yaml
Deleted Deployment, Secret, metrics patch, and metrics Service manifests.
RBAC Configuration
config/rbac/service_account.yaml, config/rbac/role.yaml, config/rbac/role_binding.yaml, config/rbac/leader_election_role.yaml, config/rbac/leader_election_role_binding.yaml, config/rbac/metrics_auth_role.yaml, config/rbac/metrics_auth_role_binding.yaml, config/rbac/metrics_reader_role.yaml, config/rbac/eviction_editor_role.yaml, config/rbac/eviction_viewer_role.yaml, config/rbac/hypervisor_editor_role.yaml, config/rbac/hypervisor_viewer_role.yaml
Removed all RBAC ServiceAccount, ClusterRole, and ClusterRoleBinding manifests including leader election, metrics authentication, and custom resource editor/viewer roles.
Prometheus Monitoring
config/prometheus/monitor.yaml
Deleted Prometheus ServiceMonitor manifest for metrics scraping.
Network Policies
config/network-policy/allow-metrics-traffic.yaml
Removed NetworkPolicy allowing metrics traffic from labeled namespaces.
Sample Resources
config/samples/kustomization.yaml, config/samples/kvm_v1_eviction.yaml
Removed sample Eviction resource and its kustomization reference.
CRD Manifest Files
charts/openstack-hypervisor-operator/crds/eviction-crd.yaml, charts/openstack-hypervisor-operator/crds/hypervisor-crd.yaml
Deleted CustomResourceDefinition manifests for Eviction and Hypervisor resources.
Test Configuration Updates
api/v1/suite_test.go, internal/controller/suite_test.go
Updated CRD directory paths from config/crd/bases to charts/openstack-hypervisor-operator/crds in test bootstrapping.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • new helm oci step #265 — Shares modifications to Helm OCI GitHub Actions workflow and Makefile.maker.yaml configuration.

Suggested reviewers

  • fwiesel

Poem

🐰 Hoppy refactoring, we bound through the code,
Kustomize paths shed like brush down the road,
To Helm charts we hop, to registries new,
CRDs consolidated—simplified and true! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately reflects the primary change: removing helmify and kustomize infrastructure while transitioning to a Helm-chart-only deployment model.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch remove-kustomize_helmify
📝 Coding Plan
  • Generate coding plan for human review comments

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

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
Makefile.maker.yaml (1)

76-76: Harden install-crds against accidental non-CRD YAML matches.

Currently, all files in config/crd/ are valid CustomResourceDefinitions, so the glob pattern works correctly. However, as a defensive measure to prevent future misconfigurations, consider filtering explicitly to exclude potential auxiliary files like kustomization.yaml:

Proposed change
-      kubectl apply -f config/crd/*.yaml
+      find config/crd -maxdepth 1 -type f -name '*.yaml' \
+        ! -name 'kustomization.yaml' -print0 | xargs -0 -n1 kubectl apply -f
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Makefile.maker.yaml` at line 76, The current install step uses the broad glob
"kubectl apply -f config/crd/*.yaml" which can accidentally pick up non-CRD
files like kustomization.yaml; update the install step (the line containing
"kubectl apply -f config/crd/*.yaml" in the install-crds target) to explicitly
match CRD filenames (for example "kubectl apply -f config/crd/*crd*.yaml") or
replace it with a safe find invocation that excludes kustomization.yaml (e.g.,
use find config/crd -maxdepth 1 -type f -name '*.yaml' ! -name
'kustomization.yaml' -print0 | xargs -0 kubectl apply -f) so only actual CRD
manifests are applied.
charts/openstack-hypervisor-operator/Chart.yaml (1)

4-4: Prefer an immutable appVersion over latest.

The chart defaults the image tag to .Chart.AppVersion (deployment.yaml:51). Setting appVersion: latest makes deployments non-reproducible—the same chart version can deploy different image bytes at different times as the registry tag changes. This also breaks rollback reliability, as rolling back reapplies the same mutable tag rather than the original image.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@charts/openstack-hypervisor-operator/Chart.yaml` at line 4, The Chart.yaml
currently sets appVersion: latest which makes .Chart.AppVersion (used by
deployment.yaml) mutable; change appVersion to a fixed, immutable semver or
exact image digest/tag (e.g., v1.2.3 or sha256:...) instead of "latest" so
deployments are reproducible; update the Chart.yaml appVersion value accordingly
and ensure the Deployment template (which reads .Chart.AppVersion) continues to
reference .Chart.AppVersion for the image tag.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/ci.yaml:
- Line 48: The workflow currently pins the action to
fgrosse/go-coverage-report@v1.2.0 which downgrades from v1.3.0 and loses bug
fixes/features; update the uses entry (fgrosse/go-coverage-report@...) back to
v1.3.0 (or a specific commit SHA for supply-chain integrity) to restore fixes
for duplicate block counting, expired baseline fallbacks, additional
event/branch inputs, and structured outputs, or if v1.2.0 is required, add a
clear commit message and repository documentation explaining the incompatibility
and why v1.2.0 is chosen instead of v1.3.0.

In @.github/workflows/helm-oci-package-ghcr.yaml:
- Line 31: The workflow currently uses a floating major tag for the Helm setup
action (azure/setup-helm@v4); replace this with a pinned version (specific patch
like azure/setup-helm@v4.5.1 or a commit SHA) to ensure reproducible CI; update
the uses entry referencing azure/setup-helm to the chosen fixed tag and apply
the same pinning policy to other actions that use floating major tags across
workflows.

---

Nitpick comments:
In `@charts/openstack-hypervisor-operator/Chart.yaml`:
- Line 4: The Chart.yaml currently sets appVersion: latest which makes
.Chart.AppVersion (used by deployment.yaml) mutable; change appVersion to a
fixed, immutable semver or exact image digest/tag (e.g., v1.2.3 or sha256:...)
instead of "latest" so deployments are reproducible; update the Chart.yaml
appVersion value accordingly and ensure the Deployment template (which reads
.Chart.AppVersion) continues to reference .Chart.AppVersion for the image tag.

In `@Makefile.maker.yaml`:
- Line 76: The current install step uses the broad glob "kubectl apply -f
config/crd/*.yaml" which can accidentally pick up non-CRD files like
kustomization.yaml; update the install step (the line containing "kubectl apply
-f config/crd/*.yaml" in the install-crds target) to explicitly match CRD
filenames (for example "kubectl apply -f config/crd/*crd*.yaml") or replace it
with a safe find invocation that excludes kustomization.yaml (e.g., use find
config/crd -maxdepth 1 -type f -name '*.yaml' ! -name 'kustomization.yaml'
-print0 | xargs -0 kubectl apply -f) so only actual CRD manifests are applied.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a390aa53-e0d7-42b0-9c17-c6de9a951cc9

📥 Commits

Reviewing files that changed from the base of the PR and between 9813dcb and f77f4d5.

📒 Files selected for processing (41)
  • .github/workflows/ci.yaml
  • .github/workflows/helm-oci-package-ghcr.yaml
  • .golangci.yaml
  • .pre-commit-config.yaml
  • Makefile
  • Makefile.maker.yaml
  • api/v1/suite_test.go
  • charts/openstack-hypervisor-operator/Chart.yaml
  • charts/openstack-hypervisor-operator/crds
  • charts/openstack-hypervisor-operator/crds/eviction-crd.yaml
  • charts/openstack-hypervisor-operator/crds/hypervisor-crd.yaml
  • charts/openstack-hypervisor-operator/values.yaml
  • config/crd/kustomization.yaml
  • config/crd/kustomizeconfig.yaml
  • config/crd/kvm.cloud.sap_evictions.yaml
  • config/crd/kvm.cloud.sap_hypervisors.yaml
  • config/default/kustomization.yaml
  • config/default/manager_metrics_patch.yaml
  • config/default/metrics_service.yaml
  • config/manager/kustomization.yaml
  • config/manager/manager.yaml
  • config/manager/secret.yaml
  • config/network-policy/allow-metrics-traffic.yaml
  • config/network-policy/kustomization.yaml
  • config/prometheus/kustomization.yaml
  • config/prometheus/monitor.yaml
  • config/rbac/eviction_editor_role.yaml
  • config/rbac/eviction_viewer_role.yaml
  • config/rbac/hypervisor_editor_role.yaml
  • config/rbac/hypervisor_viewer_role.yaml
  • config/rbac/kustomization.yaml
  • config/rbac/leader_election_role.yaml
  • config/rbac/leader_election_role_binding.yaml
  • config/rbac/metrics_auth_role.yaml
  • config/rbac/metrics_auth_role_binding.yaml
  • config/rbac/metrics_reader_role.yaml
  • config/rbac/role_binding.yaml
  • config/rbac/service_account.yaml
  • config/samples/kustomization.yaml
  • config/samples/kvm_v1_eviction.yaml
  • internal/controller/suite_test.go
💤 Files with no reviewable changes (30)
  • .golangci.yaml
  • config/samples/kvm_v1_eviction.yaml
  • config/rbac/metrics_auth_role_binding.yaml
  • config/default/kustomization.yaml
  • config/manager/secret.yaml
  • charts/openstack-hypervisor-operator/crds/hypervisor-crd.yaml
  • config/manager/kustomization.yaml
  • .pre-commit-config.yaml
  • config/rbac/hypervisor_editor_role.yaml
  • config/crd/kustomizeconfig.yaml
  • config/rbac/metrics_auth_role.yaml
  • config/rbac/leader_election_role_binding.yaml
  • config/rbac/leader_election_role.yaml
  • config/rbac/hypervisor_viewer_role.yaml
  • config/rbac/kustomization.yaml
  • config/rbac/eviction_viewer_role.yaml
  • config/samples/kustomization.yaml
  • config/prometheus/monitor.yaml
  • config/manager/manager.yaml
  • config/crd/kustomization.yaml
  • config/rbac/role_binding.yaml
  • charts/openstack-hypervisor-operator/crds/eviction-crd.yaml
  • config/rbac/service_account.yaml
  • config/default/manager_metrics_patch.yaml
  • config/network-policy/kustomization.yaml
  • config/prometheus/kustomization.yaml
  • config/rbac/metrics_reader_role.yaml
  • config/network-policy/allow-metrics-traffic.yaml
  • config/rbac/eviction_editor_role.yaml
  • config/default/metrics_service.yaml

@notandy notandy force-pushed the remove-kustomize_helmify branch from f77f4d5 to f064a62 Compare March 16, 2026 16:13
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
charts/openstack-hypervisor-operator/Chart.yaml (1)

4-5: Consider using a concrete appVersion for production deployments.

Using appVersion: latest impacts deployment reproducibility—the same chart version could deploy different application versions over time. This makes rollbacks, auditing, and debugging more difficult.

If this is intentional for development workflow, consider:

  • Overriding appVersion during CI/CD releases with the actual Git tag or commit SHA
  • Documenting that production deployments should specify an explicit image tag via values override

The version bump to 1.0.0 appropriately signals the breaking changes from removing kustomize/helmify.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@charts/openstack-hypervisor-operator/Chart.yaml` around lines 4 - 5, Replace
the placeholder appVersion value "latest" with a concrete application release
identifier by setting the appVersion field to the actual image tag/Git tag or
commit SHA (i.e., change appVersion in Chart.yaml from "latest" to a specific
version string); if you need to keep flexibility for development, modify CI/CD
to inject/override appVersion during releases (use the Git tag or commit SHA)
and add a short note in chart documentation/values that production deployments
must supply an explicit image tag via values override.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@charts/openstack-hypervisor-operator/Chart.yaml`:
- Around line 4-5: Replace the placeholder appVersion value "latest" with a
concrete application release identifier by setting the appVersion field to the
actual image tag/Git tag or commit SHA (i.e., change appVersion in Chart.yaml
from "latest" to a specific version string); if you need to keep flexibility for
development, modify CI/CD to inject/override appVersion during releases (use the
Git tag or commit SHA) and add a short note in chart documentation/values that
production deployments must supply an explicit image tag via values override.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 791b319c-29b6-4f0c-8ac0-7ea90d2d7d55

📥 Commits

Reviewing files that changed from the base of the PR and between f77f4d5 and f064a62.

📒 Files selected for processing (40)
  • .github/workflows/helm-oci-package-ghcr.yaml
  • .golangci.yaml
  • .pre-commit-config.yaml
  • Makefile
  • Makefile.maker.yaml
  • api/v1/suite_test.go
  • charts/openstack-hypervisor-operator/Chart.yaml
  • charts/openstack-hypervisor-operator/crds
  • charts/openstack-hypervisor-operator/crds/eviction-crd.yaml
  • charts/openstack-hypervisor-operator/crds/hypervisor-crd.yaml
  • charts/openstack-hypervisor-operator/values.yaml
  • config/crd/kustomization.yaml
  • config/crd/kustomizeconfig.yaml
  • config/crd/kvm.cloud.sap_evictions.yaml
  • config/crd/kvm.cloud.sap_hypervisors.yaml
  • config/default/kustomization.yaml
  • config/default/manager_metrics_patch.yaml
  • config/default/metrics_service.yaml
  • config/manager/kustomization.yaml
  • config/manager/manager.yaml
  • config/manager/secret.yaml
  • config/network-policy/allow-metrics-traffic.yaml
  • config/network-policy/kustomization.yaml
  • config/prometheus/kustomization.yaml
  • config/prometheus/monitor.yaml
  • config/rbac/eviction_editor_role.yaml
  • config/rbac/eviction_viewer_role.yaml
  • config/rbac/hypervisor_editor_role.yaml
  • config/rbac/hypervisor_viewer_role.yaml
  • config/rbac/kustomization.yaml
  • config/rbac/leader_election_role.yaml
  • config/rbac/leader_election_role_binding.yaml
  • config/rbac/metrics_auth_role.yaml
  • config/rbac/metrics_auth_role_binding.yaml
  • config/rbac/metrics_reader_role.yaml
  • config/rbac/role_binding.yaml
  • config/rbac/service_account.yaml
  • config/samples/kustomization.yaml
  • config/samples/kvm_v1_eviction.yaml
  • internal/controller/suite_test.go
💤 Files with no reviewable changes (30)
  • config/rbac/metrics_reader_role.yaml
  • .pre-commit-config.yaml
  • config/manager/manager.yaml
  • config/prometheus/monitor.yaml
  • .golangci.yaml
  • config/samples/kustomization.yaml
  • config/rbac/eviction_viewer_role.yaml
  • config/rbac/role_binding.yaml
  • config/default/metrics_service.yaml
  • config/crd/kustomization.yaml
  • config/rbac/hypervisor_editor_role.yaml
  • config/default/kustomization.yaml
  • config/network-policy/kustomization.yaml
  • config/rbac/eviction_editor_role.yaml
  • config/prometheus/kustomization.yaml
  • charts/openstack-hypervisor-operator/crds/hypervisor-crd.yaml
  • config/rbac/leader_election_role.yaml
  • config/default/manager_metrics_patch.yaml
  • config/rbac/service_account.yaml
  • config/rbac/kustomization.yaml
  • config/rbac/hypervisor_viewer_role.yaml
  • config/rbac/metrics_auth_role_binding.yaml
  • config/manager/secret.yaml
  • config/crd/kustomizeconfig.yaml
  • config/manager/kustomization.yaml
  • config/samples/kvm_v1_eviction.yaml
  • config/network-policy/allow-metrics-traffic.yaml
  • charts/openstack-hypervisor-operator/crds/eviction-crd.yaml
  • config/rbac/metrics_auth_role.yaml
  • config/rbac/leader_election_role_binding.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
  • .github/workflows/helm-oci-package-ghcr.yaml
  • internal/controller/suite_test.go
  • Makefile.maker.yaml

Copy link
Member

@PhilippMatthes PhilippMatthes left a comment

Choose a reason for hiding this comment

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

This is similar to what we did with cortex, just that, in cortex, we directly output the crd into the helm chart's templates directory. Since we don't really use the kustomize scaffold and always deploy from the helm chart.

About the symlinks, have you checked these are fine when you package the helm charts? I think helm is smart enough to resolve these, but just to double check. We had symlinks in cortex as well, but I can't remember why we removed them eventually.

@notandy
Copy link
Contributor Author

notandy commented Mar 16, 2026

About the symlinks, have you checked these are fine when you package the helm charts? I think helm is smart enough to resolve these, but just to double check. We had symlinks in cortex as well, but I can't remember why we removed them eventually.

Yes, they are fine and helm can resolve them, I've already checked. I thought about putting them directly into the helm chart... The envtest needs the CRD path, which of course can be adapted to be in the helm charts, but I didn't felt strong about it: https://github.com/cobaltcore-dev/openstack-hypervisor-operator/blob/main/internal/controller/suite_test.go#L58

EDIT:
I've tested it out and adapted the paths, so the CRDs get directly created in the charts subdirectory.

@notandy notandy force-pushed the remove-kustomize_helmify branch from f064a62 to 8f6f5dd Compare March 16, 2026 19:12
This PR removes the helmify step and removes kustomize as an option to
render the manager/rbacs/crd.
Helmify took a lot of work creating a helm-chart based on the
boilerplate generated by kubebuilder. But ultimatively, it imposes too
many constraints to the outcome of the helm-chart and makes it hard to
implement custom renditions (like using .AppVersion as a image tag).

Thus this PR is removing the kustomize files, leaving only the generated
CRDs in the config directory (which don't need any templating) and
symlinks it to the helm chart.
@notandy notandy force-pushed the remove-kustomize_helmify branch from 8f6f5dd to 40ad6ff Compare March 16, 2026 19:14
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@charts/openstack-hypervisor-operator/values.yaml`:
- Line 26: The deployment currently falls back to .Chart.AppVersion which is set
to "latest" in Chart.yaml, producing a non-reproducible image tag; fix by either
setting a concrete semantic version for appVersion in Chart.yaml (e.g., 0.1.0)
or restoring an explicit image.tag in values.yaml (e.g., image.tag: "0.1.0") so
templates/deployment.yaml renders a fixed, immutable tag instead of :latest;
update whichever file you choose (Chart.yaml -> appVersion or values.yaml ->
image.tag) and ensure templates/deployment.yaml continues to reference
.Values.image.tag | default .Chart.AppVersion.

In `@Makefile`:
- Around line 37-38: The install-crds Makefile target is pointing at a
non-existent path (config/crd/*.yaml); update the target named install-crds so
its kubectl apply command uses the actual CRD output directory
charts/openstack-hypervisor-operator/crds/*.yaml (or add a small existence check
before applying) so kubectl applies the correct CRD files; modify the command
that currently calls kubectl apply -f config/crd/*.yaml to reference
charts/openstack-hypervisor-operator/crds/*.yaml and ensure the target still
documents its purpose.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9dd4e850-4db0-4ddb-8978-9d98e646cd0b

📥 Commits

Reviewing files that changed from the base of the PR and between f064a62 and 8f6f5dd.

📒 Files selected for processing (39)
  • .github/workflows/helm-oci-package-ghcr.yaml
  • .golangci.yaml
  • .pre-commit-config.yaml
  • Makefile
  • Makefile.maker.yaml
  • api/v1/suite_test.go
  • charts/openstack-hypervisor-operator/Chart.yaml
  • charts/openstack-hypervisor-operator/crds/kvm.cloud.sap_evictions.yaml
  • charts/openstack-hypervisor-operator/crds/kvm.cloud.sap_hypervisors.yaml
  • charts/openstack-hypervisor-operator/values.yaml
  • config/crd/kustomization.yaml
  • config/crd/kustomizeconfig.yaml
  • config/crd/kvm.cloud.sap_evictions.yaml
  • config/crd/kvm.cloud.sap_hypervisors.yaml
  • config/default/kustomization.yaml
  • config/default/manager_metrics_patch.yaml
  • config/default/metrics_service.yaml
  • config/manager/kustomization.yaml
  • config/manager/manager.yaml
  • config/manager/secret.yaml
  • config/network-policy/allow-metrics-traffic.yaml
  • config/network-policy/kustomization.yaml
  • config/prometheus/kustomization.yaml
  • config/prometheus/monitor.yaml
  • config/rbac/eviction_editor_role.yaml
  • config/rbac/eviction_viewer_role.yaml
  • config/rbac/hypervisor_editor_role.yaml
  • config/rbac/hypervisor_viewer_role.yaml
  • config/rbac/kustomization.yaml
  • config/rbac/leader_election_role.yaml
  • config/rbac/leader_election_role_binding.yaml
  • config/rbac/metrics_auth_role.yaml
  • config/rbac/metrics_auth_role_binding.yaml
  • config/rbac/metrics_reader_role.yaml
  • config/rbac/role_binding.yaml
  • config/rbac/service_account.yaml
  • config/samples/kustomization.yaml
  • config/samples/kvm_v1_eviction.yaml
  • internal/controller/suite_test.go
💤 Files with no reviewable changes (28)
  • config/manager/secret.yaml
  • .golangci.yaml
  • config/rbac/hypervisor_editor_role.yaml
  • config/rbac/leader_election_role_binding.yaml
  • config/prometheus/kustomization.yaml
  • config/network-policy/kustomization.yaml
  • config/default/manager_metrics_patch.yaml
  • config/crd/kustomization.yaml
  • config/default/metrics_service.yaml
  • config/manager/kustomization.yaml
  • config/rbac/role_binding.yaml
  • config/manager/manager.yaml
  • config/rbac/eviction_viewer_role.yaml
  • config/crd/kustomizeconfig.yaml
  • config/prometheus/monitor.yaml
  • config/rbac/leader_election_role.yaml
  • config/rbac/kustomization.yaml
  • config/network-policy/allow-metrics-traffic.yaml
  • config/default/kustomization.yaml
  • config/rbac/metrics_reader_role.yaml
  • config/rbac/metrics_auth_role.yaml
  • config/rbac/hypervisor_viewer_role.yaml
  • config/samples/kustomization.yaml
  • config/rbac/service_account.yaml
  • config/rbac/metrics_auth_role_binding.yaml
  • config/rbac/eviction_editor_role.yaml
  • .pre-commit-config.yaml
  • config/samples/kvm_v1_eviction.yaml
✅ Files skipped from review due to trivial changes (1)
  • config/crd/kvm.cloud.sap_evictions.yaml
🚧 Files skipped from review as they are similar to previous changes (4)
  • internal/controller/suite_test.go
  • Makefile.maker.yaml
  • .github/workflows/helm-oci-package-ghcr.yaml
  • charts/openstack-hypervisor-operator/Chart.yaml

@github-actions
Copy link

Merging this branch will not change overall coverage

Impacted Packages Coverage Δ 🤖
github.com/cobaltcore-dev/openstack-hypervisor-operator/api/v1 0.00% (ø)
github.com/cobaltcore-dev/openstack-hypervisor-operator/internal/controller 63.09% (ø)

Coverage by file

Changed unit test files

  • github.com/cobaltcore-dev/openstack-hypervisor-operator/api/v1/suite_test.go
  • github.com/cobaltcore-dev/openstack-hypervisor-operator/internal/controller/suite_test.go

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@charts/openstack-hypervisor-operator/Chart.yaml`:
- Line 4: The Chart.yaml currently sets appVersion: latest which makes
deployments non-deterministic; change appVersion to a specific pinned value or a
Git SHA (e.g., match your packaged image tag) and update any references that
expect .AppVersion as the image tag in your templates to use that concrete value
or allow override via helm --set image.tag=<tag> at install/upgrade time so the
chart defaults are deterministic and reproducible; update Chart.yaml's
appVersion and document using --set for dynamic tags.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 46d15ba3-52b9-4e1f-be7c-717782be10e1

📥 Commits

Reviewing files that changed from the base of the PR and between 8f6f5dd and 40ad6ff.

📒 Files selected for processing (39)
  • .github/workflows/helm-oci-package-ghcr.yaml
  • .golangci.yaml
  • .pre-commit-config.yaml
  • Makefile
  • Makefile.maker.yaml
  • api/v1/suite_test.go
  • charts/openstack-hypervisor-operator/Chart.yaml
  • charts/openstack-hypervisor-operator/crds/eviction-crd.yaml
  • charts/openstack-hypervisor-operator/crds/hypervisor-crd.yaml
  • charts/openstack-hypervisor-operator/crds/kvm.cloud.sap_evictions.yaml
  • charts/openstack-hypervisor-operator/crds/kvm.cloud.sap_hypervisors.yaml
  • charts/openstack-hypervisor-operator/values.yaml
  • config/crd/kustomization.yaml
  • config/crd/kustomizeconfig.yaml
  • config/default/kustomization.yaml
  • config/default/manager_metrics_patch.yaml
  • config/default/metrics_service.yaml
  • config/manager/kustomization.yaml
  • config/manager/manager.yaml
  • config/manager/secret.yaml
  • config/network-policy/allow-metrics-traffic.yaml
  • config/network-policy/kustomization.yaml
  • config/prometheus/kustomization.yaml
  • config/prometheus/monitor.yaml
  • config/rbac/eviction_editor_role.yaml
  • config/rbac/eviction_viewer_role.yaml
  • config/rbac/hypervisor_editor_role.yaml
  • config/rbac/hypervisor_viewer_role.yaml
  • config/rbac/kustomization.yaml
  • config/rbac/leader_election_role.yaml
  • config/rbac/leader_election_role_binding.yaml
  • config/rbac/metrics_auth_role.yaml
  • config/rbac/metrics_auth_role_binding.yaml
  • config/rbac/metrics_reader_role.yaml
  • config/rbac/role_binding.yaml
  • config/rbac/service_account.yaml
  • config/samples/kustomization.yaml
  • config/samples/kvm_v1_eviction.yaml
  • internal/controller/suite_test.go
💤 Files with no reviewable changes (30)
  • config/manager/manager.yaml
  • .golangci.yaml
  • config/default/manager_metrics_patch.yaml
  • config/rbac/metrics_reader_role.yaml
  • config/prometheus/kustomization.yaml
  • config/rbac/metrics_auth_role.yaml
  • config/prometheus/monitor.yaml
  • config/rbac/kustomization.yaml
  • config/samples/kustomization.yaml
  • charts/openstack-hypervisor-operator/crds/hypervisor-crd.yaml
  • config/network-policy/allow-metrics-traffic.yaml
  • config/rbac/leader_election_role.yaml
  • config/manager/kustomization.yaml
  • config/default/metrics_service.yaml
  • config/rbac/role_binding.yaml
  • .pre-commit-config.yaml
  • config/default/kustomization.yaml
  • config/network-policy/kustomization.yaml
  • config/rbac/hypervisor_editor_role.yaml
  • config/rbac/eviction_viewer_role.yaml
  • config/rbac/service_account.yaml
  • config/manager/secret.yaml
  • config/rbac/hypervisor_viewer_role.yaml
  • charts/openstack-hypervisor-operator/crds/eviction-crd.yaml
  • config/samples/kvm_v1_eviction.yaml
  • config/rbac/metrics_auth_role_binding.yaml
  • config/crd/kustomizeconfig.yaml
  • config/crd/kustomization.yaml
  • config/rbac/eviction_editor_role.yaml
  • config/rbac/leader_election_role_binding.yaml
🚧 Files skipped from review as they are similar to previous changes (5)
  • .github/workflows/helm-oci-package-ghcr.yaml
  • Makefile
  • api/v1/suite_test.go
  • Makefile.maker.yaml
  • charts/openstack-hypervisor-operator/values.yaml

@notandy notandy merged commit 9f13080 into main Mar 17, 2026
7 checks passed
@notandy notandy deleted the remove-kustomize_helmify branch March 17, 2026 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants