From 9e32fa548231a5f91aefefcf1bf152e129b7c9c0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 10:09:40 +0200 Subject: [PATCH 1/7] Renovate: Update External dependencies (#1186) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---|---|---|---| | [kube-prometheus-stack](https://redirect.github.com/prometheus-operator/kube-prometheus) ([source](https://redirect.github.com/prometheus-community/helm-charts)) | patch | `88.6.2` → `88.6.3` | ![age](https://developer.mend.io/api/mc/badges/age/docker/ghcr.io%2fprometheus-community%2fcharts%2fkube-prometheus-stack/88.6.3?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/ghcr.io%2fprometheus-community%2fcharts%2fkube-prometheus-stack/88.6.3?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/ghcr.io%2fprometheus-community%2fcharts%2fkube-prometheus-stack/88.6.2/88.6.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/ghcr.io%2fprometheus-community%2fcharts%2fkube-prometheus-stack/88.6.2/88.6.3?slim=true) | | [sigs.k8s.io/controller-tools](https://redirect.github.com/kubernetes-sigs/controller-tools) | minor | `v0.21.0` → `v0.22.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/sigs.k8s.io%2fcontroller-tools/v0.22.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/sigs.k8s.io%2fcontroller-tools/v0.22.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/sigs.k8s.io%2fcontroller-tools/v0.21.0/v0.22.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/sigs.k8s.io%2fcontroller-tools/v0.21.0/v0.22.0?slim=true) | --- ### Release Notes
prometheus-community/helm-charts (kube-prometheus-stack) ### [`v88.6.3`](https://redirect.github.com/prometheus-community/helm-charts/compare/kube-prometheus-stack-88.6.2...kube-prometheus-stack-88.6.3) [Compare Source](https://redirect.github.com/prometheus-community/helm-charts/compare/kube-prometheus-stack-88.6.2...kube-prometheus-stack-88.6.3)
kubernetes-sigs/controller-tools (sigs.k8s.io/controller-tools) ### [`v0.22.0`](https://redirect.github.com/kubernetes-sigs/controller-tools/releases/tag/v0.22.0) [Compare Source](https://redirect.github.com/kubernetes-sigs/controller-tools/compare/v0.21.0...v0.22.0) #### What's Changed - ⚠️ Deprecated +kubebuilder:validation:Required and +kubebuilder:validation:Optional markers in favor of shorter +required and +optional forms (both continue to work) by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1390](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1390) - ⚠️ Generate ApplyConfig ExtractFuns when kubebuilder:resource marker is absent by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1449](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1449) - ✨ crd: Add k8s:listType and k8s:listMapKey markers by [@​itzPranshul](https://redirect.github.com/itzPranshul) in [#​1357](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1357) - ✨ webhook: Add patch field for webhook customization by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1339](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1339) [#​1461](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1461) - 🌱 crd/markers: Emit cheaper CEL rules for `oneOf` markers by [@​HadrienPatte](https://redirect.github.com/HadrienPatte) in [#​1408](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1408) - 🐛 Fix marker parser misinterpreting number-ish strings as numeric literals by [@​sivchari](https://redirect.github.com/sivchari) in [#​1366](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1366) - 🐛 Accept `encoding.TextMarshaler` types as CRD map keys by [@​HadrienPatte](https://redirect.github.com/HadrienPatte) in [#​1419](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1419) - 🐛 Handle `omitzero` in `OneOf` constraint validation by [@​HadrienPatte](https://redirect.github.com/HadrienPatte) in [#​1375](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1375) - 🐛 crd: Fix duplicate MinProperties/MaxProperties by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1398](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1398) - 🐛 crd: Panic when parsing type aliases from indirectly imported packages by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1399](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1399) - 🐛 crd: Raise error message instead of crash when using unnamed struct types by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1394](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1394) #### Misc - 🌱 Add OS-specific files and build artifacts to .gitignore by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1403](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1403) - 🌱 Add copyright header validation & fix findings by [@​sbueringer](https://redirect.github.com/sbueringer) in [#​1451](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1451) - 🌱 Add envtest tests for +kubebuilder:default={} with nested field defaults by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1392](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1392) - 🌱 Add new test to ensure that pointer embedded structs with the inline JSON tag works by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1395](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1395) - 🌱 Add tests to improve coverage for IntOrStringWithEnumSlice by [@​dongjiang1989](https://redirect.github.com/dongjiang1989) in [#​1385](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1385) - 🌱 Add verify-generated check for golden files by [@​dongjiang1989](https://redirect.github.com/dongjiang1989) in [#​1457](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1457) - 🌱 Declare contents: read permissions for pr-verify action by [@​arpitjain099](https://redirect.github.com/arpitjain099) in [#​1412](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1412) - 🌱 Migrate to Ginkgo v2 and ensure test temp directories are cleaned up on failure by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1396](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1396) - 🌱 Replace gopkg.in/yaml with sigs.k8s.io/yaml and go.yaml.in/yaml/v3 by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1440](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1440) - 🌱 Revert "Migrate away from custom GitHub action approval workflow" by [@​sbueringer](https://redirect.github.com/sbueringer) in [#​1428](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1428) - 📖 Add comprehensive XValidation CEL documentation and examples by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1341](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1341) - 📖 Improve documentation about path behaviour by [@​camilamacedo86](https://redirect.github.com/camilamacedo86) in [#​1438](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1438) - 📖 Update README compatibility matrix and remove stale content by [@​HadrienPatte](https://redirect.github.com/HadrienPatte) in [#​1435](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1435) #### envtest - ✨ Release envtest v1.36.2 by [@​yuluo-yx](https://redirect.github.com/yuluo-yx) in [#​1444](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1444) - ✨ Release envtest v1.37.0 by [@​dongjiang1989](https://redirect.github.com/dongjiang1989) in [#​1468](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1468) - 🌱 Promotion of envtest release for Kubernetes v1.36.2 by [@​sbueringer](https://redirect.github.com/sbueringer) in [#​1445](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1445) - 🌱 Promotion of envtest release for Kubernetes v1.37.0 by [@​sbueringer](https://redirect.github.com/sbueringer) in [#​1471](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1471) #### Dependency bumps - 🌱 Bump k8s.io/\* to v1.36.1 by [@​dongjiang1989](https://redirect.github.com/dongjiang1989) in [#​1418](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1418) - 🌱 Bump k8s.io/\* to v0.37.0-beta.0 by [@​dongjiang1989](https://redirect.github.com/dongjiang1989) in [#​1455](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1455) - 🌱 Bump k8s.io/\* to v0.37.0 by [@​dongjiang1989](https://redirect.github.com/dongjiang1989) in [#​1470](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1470) - 🌱 Bump EndBug/add-and-commit from 10.0.0 to 11.0.0 in the all-github-actions group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1466](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1466) - 🌱 Bump EndBug/add-and-commit from 11.0.0 to 11.1.1 in the all-github-actions group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1467](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1467) - 🌱 Bump actions/checkout from 6.0.2 to 6.0.3 in the all-github-actions group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1423](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1423) - 🌱 Bump actions/checkout from 7.0.0 to 7.0.1 in the all-github-actions group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1456](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1456) - 🌱 Bump actions/github-script from 8.0.0 to 9.0.0 in the all-github-actions group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1433](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1433) - 🌱 Bump actions/setup-go from 6.4.0 to 6.5.0 in the all-github-actions group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1447](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1447) - 🌱 Bump github.com/onsi/gomega from 1.40.0 to 1.41.0 in the all-go-mod-patch-and-minor group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1414](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1414) - 🌱 Bump github.com/onsi/gomega from 1.42.1 to 1.43.0 in the all-go-mod-patch-and-minor group across 1 directory by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1472](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1472) - 🌱 Bump go.yaml.in/yaml/v3 from 3.0.4 to 3.0.5 in the all-go-mod-patch-and-minor group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1459](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1459) - 🌱 Bump golang.org/x/tools from 0.44.0 to 0.45.0 in the all-go-mod-patch-and-minor group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1410](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1410) - 🌱 Bump golang.org/x/tools from 0.47.0 to 0.48.0 in the all-go-mod-patch-and-minor group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1452](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1452) - 🌱 Bump golangci-lint to v2.12.1 by [@​dongjiang1989](https://redirect.github.com/dongjiang1989) in [#​1406](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1406) - 🌱 Bump golangci-lint to v2.12.2 by [@​dongjiang1989](https://redirect.github.com/dongjiang1989) in [#​1439](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1439) - 🌱 Bump golangci-lint to v2.13.1 by [@​dongjiang1989](https://redirect.github.com/dongjiang1989) in [#​1469](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1469) - 🌱 Bump golangci/golangci-lint-action from 9.2.0 to 9.2.1 in the all-github-actions group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1417](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1417) - 🌱 Bump golangci/golangci-lint-action from 9.2.1 to 9.3.0 in the all-github-actions group by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1450](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1450) - 🌱 Bump the all-github-actions group with 2 updates by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1442](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1442) - 🌱 Bump the all-github-actions group with 2 updates by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1453](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1453) - 🌱 Bump the all-go-mod-patch-and-minor group with 2 updates by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1434](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1434) - 🌱 Bump the all-go-mod-patch-and-minor group with 2 updates by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1446](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1446) - 🌱 Bump the all-go-mod-patch-and-minor group with 2 updates by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1465](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1465) #### New Contributors - [@​HadrienPatte](https://redirect.github.com/HadrienPatte) made their first contribution in [#​1375](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1375) - [@​arpitjain099](https://redirect.github.com/arpitjain099) made their first contribution in [#​1412](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1412) - [@​yuluo-yx](https://redirect.github.com/yuluo-yx) made their first contribution in [#​1444](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1444) - [@​itzPranshul](https://redirect.github.com/itzPranshul) made their first contribution in [#​1357](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1357) - [@​sivchari](https://redirect.github.com/sivchari) made their first contribution in [#​1366](https://redirect.github.com/kubernetes-sigs/controller-tools/pull/1366) **Full Changelog**:
--- ### Configuration 📅 **Schedule**: (in timezone Europe/Berlin) - Branch creation - "after 6pm every weekday,every weekend,before 8am every weekday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cobaltcore-dev/cortex). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: cortex-ai-agents[bot] <279748396+cortex-ai-agents[bot]@users.noreply.github.com> Co-authored-by: Philipp Matthes Co-authored-by: Claude Opus 4.7 --- Makefile | 2 +- helm/dev/cortex-prometheus-operator/Chart.yaml | 2 +- .../cortex/files/crds/cortex.cloud_committedresources.yaml | 2 +- helm/library/cortex/files/crds/cortex.cloud_datasources.yaml | 2 +- helm/library/cortex/files/crds/cortex.cloud_decisions.yaml | 2 +- helm/library/cortex/files/crds/cortex.cloud_deschedulings.yaml | 2 +- .../cortex/files/crds/cortex.cloud_flavorgroupcapacities.yaml | 2 +- helm/library/cortex/files/crds/cortex.cloud_histories.yaml | 2 +- helm/library/cortex/files/crds/cortex.cloud_knowledges.yaml | 2 +- helm/library/cortex/files/crds/cortex.cloud_kpis.yaml | 2 +- helm/library/cortex/files/crds/cortex.cloud_pipelines.yaml | 2 +- helm/library/cortex/files/crds/cortex.cloud_projectquotas.yaml | 2 +- helm/library/cortex/files/crds/cortex.cloud_reservations.yaml | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 378f15ff9..220ab131a 100644 --- a/Makefile +++ b/Makefile @@ -58,7 +58,7 @@ CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen GOLANGCI_LINT = $(LOCALBIN)/golangci-lint GOTESTSUM = $(LOCALBIN)/gotestsum -CONTROLLER_TOOLS_VERSION ?= v0.21.0 +CONTROLLER_TOOLS_VERSION ?= v0.22.0 GOLANGCI_LINT_VERSION ?= v2.13.2 GOTESTSUM_VERSION ?= v1.13.0 diff --git a/helm/dev/cortex-prometheus-operator/Chart.yaml b/helm/dev/cortex-prometheus-operator/Chart.yaml index e5f93df9e..c10dbab6f 100644 --- a/helm/dev/cortex-prometheus-operator/Chart.yaml +++ b/helm/dev/cortex-prometheus-operator/Chart.yaml @@ -10,4 +10,4 @@ dependencies: # CRDs of the prometheus operator, such as PrometheusRule, ServiceMonitor, etc. - name: kube-prometheus-stack repository: oci://ghcr.io/prometheus-community/charts - version: 88.6.2 + version: 88.6.3 diff --git a/helm/library/cortex/files/crds/cortex.cloud_committedresources.yaml b/helm/library/cortex/files/crds/cortex.cloud_committedresources.yaml index 5901dddb6..568e5e02f 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_committedresources.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_committedresources.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: committedresources.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_datasources.yaml b/helm/library/cortex/files/crds/cortex.cloud_datasources.yaml index 9a2d32bbc..e949d0b9e 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_datasources.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_datasources.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: datasources.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_decisions.yaml b/helm/library/cortex/files/crds/cortex.cloud_decisions.yaml index 1d7c38ea1..2d80182e0 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_decisions.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_decisions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: decisions.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_deschedulings.yaml b/helm/library/cortex/files/crds/cortex.cloud_deschedulings.yaml index b01e8d2f4..db0807f5a 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_deschedulings.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_deschedulings.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: deschedulings.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_flavorgroupcapacities.yaml b/helm/library/cortex/files/crds/cortex.cloud_flavorgroupcapacities.yaml index 4102ea447..171451f99 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_flavorgroupcapacities.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_flavorgroupcapacities.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: flavorgroupcapacities.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_histories.yaml b/helm/library/cortex/files/crds/cortex.cloud_histories.yaml index 693f776e5..3818ecdbf 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_histories.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_histories.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: histories.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_knowledges.yaml b/helm/library/cortex/files/crds/cortex.cloud_knowledges.yaml index 5a4cba037..a42984003 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_knowledges.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_knowledges.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: knowledges.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_kpis.yaml b/helm/library/cortex/files/crds/cortex.cloud_kpis.yaml index b7637fa24..68ec754d4 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_kpis.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_kpis.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: kpis.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_pipelines.yaml b/helm/library/cortex/files/crds/cortex.cloud_pipelines.yaml index 702703f6c..0262ea445 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_pipelines.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_pipelines.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: pipelines.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_projectquotas.yaml b/helm/library/cortex/files/crds/cortex.cloud_projectquotas.yaml index 7309f8ad1..c48ae2d63 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_projectquotas.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_projectquotas.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: projectquotas.cortex.cloud spec: group: cortex.cloud diff --git a/helm/library/cortex/files/crds/cortex.cloud_reservations.yaml b/helm/library/cortex/files/crds/cortex.cloud_reservations.yaml index 85995dc62..4cd6101e6 100644 --- a/helm/library/cortex/files/crds/cortex.cloud_reservations.yaml +++ b/helm/library/cortex/files/crds/cortex.cloud_reservations.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.21.0 + controller-gen.kubebuilder.io/version: v0.22.0 name: reservations.cortex.cloud spec: group: cortex.cloud From 1a3f701f9ac1c7b1995852fdc8739843d3e7af57 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2026 07:43:46 +0200 Subject: [PATCH 2/7] Renovate: Update External dependencies (#1188) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---|---|---|---|---| | [kube-prometheus-stack](https://redirect.github.com/prometheus-operator/kube-prometheus) ([source](https://redirect.github.com/prometheus-community/helm-charts)) | | patch | `88.6.3` → `88.6.5` | ![age](https://developer.mend.io/api/mc/badges/age/docker/ghcr.io%2fprometheus-community%2fcharts%2fkube-prometheus-stack/88.6.5?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/ghcr.io%2fprometheus-community%2fcharts%2fkube-prometheus-stack/88.6.5?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/ghcr.io%2fprometheus-community%2fcharts%2fkube-prometheus-stack/88.6.3/88.6.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/ghcr.io%2fprometheus-community%2fcharts%2fkube-prometheus-stack/88.6.3/88.6.5?slim=true) | | [sigs.k8s.io/controller-runtime](https://redirect.github.com/kubernetes-sigs/controller-runtime) | require | minor | `v0.24.1` → `v0.25.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/sigs.k8s.io%2fcontroller-runtime/v0.25.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/sigs.k8s.io%2fcontroller-runtime/v0.25.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/sigs.k8s.io%2fcontroller-runtime/v0.24.1/v0.25.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/sigs.k8s.io%2fcontroller-runtime/v0.24.1/v0.25.0?slim=true) | --- ### Release Notes
prometheus-community/helm-charts (kube-prometheus-stack) ### [`v88.6.5`](https://redirect.github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-88.6.5) kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. #### What's Changed - \[kube-prometheus-stack] Make cert-manager private key configurable by [@​maarous](https://redirect.github.com/maarous) in [#​7216](https://redirect.github.com/prometheus-community/helm-charts/pull/7216) #### New Contributors - [@​maarous](https://redirect.github.com/maarous) made their first contribution in [#​7216](https://redirect.github.com/prometheus-community/helm-charts/pull/7216) **Full Changelog**: ### [`v88.6.4`](https://redirect.github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-88.6.4) kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. #### What's Changed - \[CI] Update helm/kind-action action to v1.15.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7231](https://redirect.github.com/prometheus-community/helm-charts/pull/7231) - \[kube-prometheus-stack] Document Grafana dashboard folder options by [@​VERNIERELoic](https://redirect.github.com/VERNIERELoic) in [#​7219](https://redirect.github.com/prometheus-community/helm-charts/pull/7219) #### New Contributors - [@​VERNIERELoic](https://redirect.github.com/VERNIERELoic) made their first contribution in [#​7219](https://redirect.github.com/prometheus-community/helm-charts/pull/7219) **Full Changelog**:
kubernetes-sigs/controller-runtime (sigs.k8s.io/controller-runtime) ### [`v0.25.0`](https://redirect.github.com/kubernetes-sigs/controller-runtime/releases/tag/v0.25.0) [Compare Source](https://redirect.github.com/kubernetes-sigs/controller-runtime/compare/v0.24.1...v0.25.0) #### Highlights This version of controller-runtime introduces a new experimental `ReadYourWritesConsistency` feature, which ensures that all writes are reflected in subsequent reads from the default cache-backed client. Stale client reads are arguably the biggest source of friction and sometimes bugs for controller authors, providing this functionality at the library level eliminates that class of problems entirely. Try it out by setting `Client.EnableReadYourWritesConsistency: new(true)` in your manager and leave any feedback you may have on the [tracking issue](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3320). #### :warning: Breaking Changes - Dependencies: Bump to k8s.io/\* v1.37 ([#​3579](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3579) [#​3575](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3575) [#​3567](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3567) [#​3561](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3561) [#​3547](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3547) [#​3529](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3529) [#​3524](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3524)) - Events: Add new EventRecorder interface ([#​3509](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3509)) #### :sparkles: New Features - Client: Add a read-your-own-writes client ([#​3472](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3472)) - Fakeclient: Add WithGlobalResourceVersionCounter ([#​3581](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3581)) - Fakeclient: Add scale subresource support for Apply ([#​3569](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3569)) - Metrics: Allow opt-in for client-go REST client metrics ([#​3510](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3510)) - Metrics: Allow overriding client-go REST client metrics latency histogram buckets ([#​3573](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3573)) - Source: Add TypedInformer source ([#​3520](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3520)) - Webhooks: Allow to disable the webhook server by setting the port to -1 ([#​3481](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3481)) #### :bug: Bug Fixes - Cache: Fix goroutine leaks in cache Start() methods ([#​3565](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3565)) - Client: Fix regression in Apply typed error handling ([#​3515](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3515)) - Controller: Unlock when Controller.Start() returns with error ([#​3545](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3545)) - Envtest: Fix envtest process stop on Windows ([#​3519](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3519)) - Fakeclient: Allow updating managedFields through Update ([#​3585](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3585)) - Fakeclient: Fix AddIndex panic when wrapped with an interceptor ([#​3583](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3583)) - Fakeclient: Fix PartialObjectMeta handling ([#​3571](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3571)) - Fakeclient: Support scale subresource get/update for unstructured objects ([#​3546](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3546)) - Fakeclient: Update object on subresource apply ([#​3570](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3570)) - PriorityQueue: Fix PriorityQueue deadlock on shutdown ([#​3540](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3540)) - Testing/Process: Fix process Stop timeout error handling ([#​3523](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3523)) #### :seedling: Others - LeaderElection: Pass Managers Logger to Leader Elector via Context ([#​3576](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3576)) #### :seedling: CI & linters - Add copyright header validation & fix findings ([#​3544](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3544)) - Bump to golangci-lint v2.12.1 ([#​3514](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3514)) - Bump to golangci-lint v2.12.2 ([#​3532](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3532)) - Bump to golangci-lint v2.13.1 ([#​3580](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3580)) - Declare contents: read permissions for pr-verify action ([#​3517](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3517)) - Revert "Migrate away from custom GitHub action approval workflow" ([#​3528](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3528)) :book: Additionally, there have been 7 contributions to our documentation and book. ([#​3513](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3513), [#​3521](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3521), [#​3531](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3531), [#​3551](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3551), [#​3562](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3562), [#​3563](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3563), [#​3566](https://redirect.github.com/kubernetes-sigs/controller-runtime/issues/3566)) #### Dependencies ##### Added - github.com/go-openapi/swag/cmdutils: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/cmdutils/v0.27.1) - github.com/go-openapi/swag/conv: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/conv/v0.27.1) - github.com/go-openapi/swag/fileutils: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/fileutils/v0.27.1) - github.com/go-openapi/swag/jsonutils/fixtures\_test: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/jsonutils/fixtures_test/v0.27.1) - github.com/go-openapi/swag/jsonutils: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/jsonutils/v0.27.1) - github.com/go-openapi/swag/loading: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/loading/v0.27.1) - github.com/go-openapi/swag/mangling: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/mangling/v0.27.1) - github.com/go-openapi/swag/netutils: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/netutils/v0.27.1) - github.com/go-openapi/swag/pools: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/pools/v0.27.1) - github.com/go-openapi/swag/stringutils: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/stringutils/v0.27.1) - github.com/go-openapi/swag/typeutils: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/typeutils/v0.27.1) - github.com/go-openapi/swag/yamlutils: [v0.27.1](https://redirect.github.com/go-openapi/swag/tree/yamlutils/v0.27.1) - github.com/go-openapi/testify/enable/yaml/v2: [v2.6.0](https://redirect.github.com/go-openapi/testify/tree/enable/yaml/v2/v2.6.0) - github.com/go-openapi/testify/v2: [v2.6.0](https://redirect.github.com/go-openapi/testify/tree/v2.6.0) ##### Changed - github.com/Azure/go-ansiterm: [306776e → faa5f7b](https://redirect.github.com/Azure/go-ansiterm/compare/306776e...faa5f7b) - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp: [v1.30.0 → v1.32.0](https://redirect.github.com/GoogleCloudPlatform/opentelemetry-operations-go/compare/detectors/gcp/v1.30.0...detectors/gcp/v1.32.0) - github.com/antlr4-go/antlr/v4: [v4.13.0 → v4.13.1](https://redirect.github.com/antlr4-go/antlr/compare/v4.13.0...v4.13.1) - github.com/cncf/xds/go: [ee656c7 → dba9d58](https://redirect.github.com/cncf/xds/compare/ee656c7...dba9d58) - github.com/envoyproxy/go-control-plane/envoy: [v1.36.0 → v1.37.0](https://redirect.github.com/envoyproxy/go-control-plane/compare/envoy/v1.36.0...envoy/v1.37.0) - github.com/envoyproxy/protoc-gen-validate: [v1.3.0 → v1.3.3](https://redirect.github.com/envoyproxy/protoc-gen-validate/compare/v1.3.0...v1.3.3) - github.com/fxamacker/cbor/v2: [v2.9.0 → v2.9.1](https://redirect.github.com/fxamacker/cbor/compare/v2.9.0...v2.9.1) - github.com/go-jose/go-jose/v4: [v4.1.3 → v4.1.4](https://redirect.github.com/go-jose/go-jose/compare/v4.1.3...v4.1.4) - github.com/go-openapi/jsonpointer: [v0.21.0 → v1.0.0](https://redirect.github.com/go-openapi/jsonpointer/compare/v0.21.0...v1.0.0) - github.com/go-openapi/jsonreference: [v0.20.2 → v1.0.0](https://redirect.github.com/go-openapi/jsonreference/compare/v0.20.2...v1.0.0) - github.com/go-openapi/swag: [v0.23.0 → v0.27.1](https://redirect.github.com/go-openapi/swag/compare/v0.23.0...v0.27.1) - github.com/golang-jwt/jwt/v5: [v5.3.0 → v5.3.1](https://redirect.github.com/golang-jwt/jwt/compare/v5.3.0...v5.3.1) - github.com/google/cel-go: [v0.26.0 → v0.29.2](https://redirect.github.com/google/cel-go/compare/v0.26.0...v0.29.2) - github.com/grpc-ecosystem/grpc-gateway/v2: [v2.27.7 → v2.29.0](https://redirect.github.com/grpc-ecosystem/grpc-gateway/compare/v2.27.7...v2.29.0) - github.com/klauspost/compress: [v1.18.0 → v1.19.0](https://redirect.github.com/klauspost/compress/compare/v1.18.0...v1.19.0) - github.com/moby/term: [v0.5.0 → v0.5.2](https://redirect.github.com/moby/term/compare/v0.5.0...v0.5.2) - github.com/prometheus/client\_golang: [v1.23.2 → v1.24.0](https://redirect.github.com/prometheus/client_golang/compare/v1.23.2...v1.24.0) - github.com/prometheus/common: [v0.67.5 → v0.70.0](https://redirect.github.com/prometheus/common/compare/v0.67.5...v0.70.0) - github.com/prometheus/procfs: [v0.19.2 → v0.21.1](https://redirect.github.com/prometheus/procfs/compare/v0.19.2...v0.21.1) - github.com/sirupsen/logrus: [v1.9.3 → v1.9.4](https://redirect.github.com/sirupsen/logrus/compare/v1.9.3...v1.9.4) - github.com/spf13/pflag: [v1.0.9 → v1.0.10](https://redirect.github.com/spf13/pflag/compare/v1.0.9...v1.0.10) - github.com/stretchr/objx: [v0.5.2 → v0.5.3](https://redirect.github.com/stretchr/objx/compare/v0.5.2...v0.5.3) - go.etcd.io/bbolt: v1.4.3 → v1.5.0 - go.etcd.io/etcd/api/v3: v3.6.8 → v3.7.0 - go.etcd.io/etcd/client/pkg/v3: v3.6.8 → v3.7.0 - go.etcd.io/etcd/client/v3: v3.6.8 → v3.7.0 - go.etcd.io/etcd/pkg/v3: v3.6.8 → v3.7.0 - go.etcd.io/etcd/server/v3: v3.6.8 → v3.7.0 - go.etcd.io/raft/v3: v3.6.0 → v3.7.0 - go.opentelemetry.io/contrib/detectors/gcp: v1.39.0 → v1.43.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc: v0.65.0 → v0.68.0 - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp: v0.65.0 → v0.69.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc: v1.40.0 → v1.44.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace: v1.40.0 → v1.44.0 - go.opentelemetry.io/otel/metric: v1.41.0 → v1.44.0 - go.opentelemetry.io/otel/sdk/metric: v1.40.0 → v1.44.0 - go.opentelemetry.io/otel/sdk: v1.40.0 → v1.44.0 - go.opentelemetry.io/otel/trace: v1.41.0 → v1.44.0 - go.opentelemetry.io/otel: v1.41.0 → v1.44.0 - go.opentelemetry.io/proto/otlp: v1.9.0 → v1.10.0 - go.yaml.in/yaml/v2: v2.4.3 → v2.4.4 - golang.org/x/crypto: v0.47.0 → v0.54.0 - golang.org/x/exp: [`944ab1f`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/944ab1f) → [`746e56f`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/746e56f) - golang.org/x/mod: v0.32.0 → v0.37.0 - golang.org/x/net: v0.49.0 → v0.57.0 - golang.org/x/oauth2: v0.34.0 → v0.36.0 - golang.org/x/sync: v0.19.0 → v0.22.0 - golang.org/x/sys: v0.40.0 → v0.47.0 - golang.org/x/telemetry: [`bd525da`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/bd525da) → [`59b4966`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/59b4966) - golang.org/x/term: v0.39.0 → v0.45.0 - golang.org/x/text: v0.33.0 → v0.40.0 - golang.org/x/time: v0.14.0 → v0.15.0 - golang.org/x/tools: v0.41.0 → v0.47.0 - gonum.org/v1/gonum: v0.16.0 → v0.17.0 - google.golang.org/genproto/googleapis/api: [`8636f87`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/8636f87) → [`3dc84a4`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/3dc84a4) - google.golang.org/genproto/googleapis/rpc: [`8636f87`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/8636f87) → [`3dc84a4`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/3dc84a4) - google.golang.org/grpc: v1.79.3 → v1.82.1 - k8s.io/api: v0.36.0 → v0.37.0 - k8s.io/apiextensions-apiserver: v0.36.0 → v0.37.0 - k8s.io/apimachinery: v0.36.0 → v0.37.0 - k8s.io/apiserver: v0.36.0 → v0.37.0 - k8s.io/client-go: v0.36.0 → v0.37.0 - k8s.io/code-generator: v0.36.0 → v0.37.0 - k8s.io/component-base: v0.36.0 → v0.37.0 - k8s.io/gengo/v2: [`ec3ebc5`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/ec3ebc5) → [`25e2208`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/25e2208) - k8s.io/kms: v0.36.0 → v0.37.0 - k8s.io/kube-openapi: [`43fb72c`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/43fb72c) → [`d427ff9`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/d427ff9) - k8s.io/streaming: v0.36.0 → v0.37.0 - k8s.io/utils: [`b8788ab`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/b8788ab) → [`be93311`](https://redirect.github.com/kubernetes-sigs/controller-runtime/commit/be93311) - sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.34.0 → v0.36.0 - sigs.k8s.io/structured-merge-diff/v6: v6.3.2 → v6.4.2 ##### Removed - github.com/creack/pty: [v1.1.9](https://redirect.github.com/creack/pty/tree/v1.1.9) - github.com/gogo/protobuf: [v1.3.2](https://redirect.github.com/gogo/protobuf/tree/v1.3.2) - github.com/josharian/intern: [v1.0.0](https://redirect.github.com/josharian/intern/tree/v1.0.0) - github.com/kr/pty: [v1.1.1](https://redirect.github.com/kr/pty/tree/v1.1.1) - github.com/mailru/easyjson: [v0.7.7](https://redirect.github.com/mailru/easyjson/tree/v0.7.7) - github.com/matttproud/golang\_protobuf\_extensions: [v1.0.1](https://redirect.github.com/matttproud/golang_protobuf_extensions/tree/v1.0.1) - github.com/stoewer/go-strcase: [v1.3.0](https://redirect.github.com/stoewer/go-strcase/tree/v1.3.0) *Thanks to all our contributors!* 😊
--- ### Configuration 📅 **Schedule**: (in timezone Europe/Berlin) - Branch creation - "after 6pm every weekday,every weekend,before 8am every weekday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cobaltcore-dev/cortex). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 26 ++++----- go.sum | 55 +++++++++---------- .../dev/cortex-prometheus-operator/Chart.yaml | 2 +- 3 files changed, 40 insertions(+), 43 deletions(-) diff --git a/go.mod b/go.mod index a341fe2df..db2ea39a1 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( k8s.io/api v0.37.0 k8s.io/apimachinery v0.37.0 k8s.io/client-go v0.37.0 - sigs.k8s.io/controller-runtime v0.24.1 + sigs.k8s.io/controller-runtime v0.25.0 ) require ( @@ -65,12 +65,12 @@ require ( github.com/go-openapi/swag/typeutils v0.27.1 // indirect github.com/go-openapi/swag/yamlutils v0.27.1 // indirect github.com/go-sql-driver/mysql v1.10.0 // indirect - github.com/google/cel-go v0.29.0 // indirect + github.com/google/cel-go v0.29.2 // indirect github.com/google/gnostic-models v0.7.1 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/gotestyourself/gotestyourself v2.2.0+incompatible // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -87,25 +87,25 @@ require ( github.com/poy/onpar v0.3.5 // indirect github.com/prometheus/common v0.70.1 // indirect github.com/prometheus/procfs v0.21.1 // indirect - github.com/sirupsen/logrus v1.9.3 // indirect + github.com/sirupsen/logrus v1.9.4 // indirect github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/pflag v1.0.10 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/ziutek/mymysql v1.5.4 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 // indirect go.opentelemetry.io/otel v1.44.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 // indirect go.opentelemetry.io/otel/metric v1.44.0 // indirect go.opentelemetry.io/otel/sdk v1.44.0 // indirect go.opentelemetry.io/otel/trace v1.44.0 // indirect - go.opentelemetry.io/proto/otlp v1.9.0 // indirect + go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect - golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect + golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f // indirect golang.org/x/net v0.58.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sys v0.47.0 // indirect @@ -119,14 +119,14 @@ require ( gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gotest.tools v2.2.0+incompatible // indirect - k8s.io/apiextensions-apiserver v0.36.3 // indirect - k8s.io/apiserver v0.36.3 // indirect - k8s.io/component-base v0.36.3 // indirect + k8s.io/apiextensions-apiserver v0.37.0 // indirect + k8s.io/apiserver v0.37.0 // indirect + k8s.io/component-base v0.37.0 // indirect k8s.io/klog/v2 v2.140.0 // indirect k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad // indirect k8s.io/streaming v0.37.0 // indirect k8s.io/utils v0.0.0-20260626114624-be93311217bd // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v6 v6.4.2 // indirect diff --git a/go.sum b/go.sum index 064097ef7..6bb1301e4 100644 --- a/go.sum +++ b/go.sum @@ -98,8 +98,8 @@ github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1v github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/cel-go v0.29.0 h1:fEG+Ja3YRwNOqnQxTyJwoByAUAvTuxUGiro/jhrm4F4= -github.com/google/cel-go v0.29.0/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= +github.com/google/cel-go v0.29.2 h1:ZtDxkeiMmz0mxbKDYiNkE5Lk7V5edMRcaaDf2jX002k= +github.com/google/cel-go v0.29.2/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= github.com/google/gnostic-models v0.7.1 h1:SisTfuFKJSKM5CPZkffwi6coztzzeYUhc3v4yxLWH8c= github.com/google/gnostic-models v0.7.1/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -117,8 +117,8 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gotestyourself/gotestyourself v2.2.0+incompatible h1:AQwinXlbQR2HvPjQZOmDhRqsv5mZf+Jb1RnSLxcqZcI= github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -187,8 +187,8 @@ github.com/sapcc/go-api-declarations v1.25.0 h1:vLkSVV8oaZExoBMEkwX31AqUjZIjwxKk github.com/sapcc/go-api-declarations v1.25.0/go.mod h1:7NrwidCCv/MxwBpb/qqYLbQb/eY6rlnYkXwWMGx/wlI= github.com/sapcc/go-bits v0.0.0-20260827091731-7669cbdb53fb h1:jORKY0SgUAhXCq40zGSDRaBzDk2zUX+p2wsJeCYxITk= github.com/sapcc/go-bits v0.0.0-20260827091731-7669cbdb53fb/go.mod h1:X2M3A28UnHSRGlRmiztvmBhdETrplwDFn7QLyxCOYtA= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= +github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -198,7 +198,6 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= @@ -207,14 +206,14 @@ github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb7sGddAr30RRS6xjKy7AZ2JtTOPA3oolgVSw8= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 h1:8tvICD4vSTOOsNrsI4Ljf6C+6UKvpTEH5XY3JMoyPoo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0/go.mod h1:z9+yiacE0IHRqM4qFfkbt/JYlmYXgss8GY/jXoNuPJI= go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU= go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 h1:4YsVu3B8+3qtWYYrsUYgn0OG78pN0rnNPRGX4SbokQI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0/go.mod h1:+wnlSn0mD1ADVMe3v9Z/WIaiz6q6gL2J/ejaAmdmv80= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 h1:qazEJlUOQzhCpzQpFETGby7EdqjI1wsd0W+6Gg1SCTU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0/go.mod h1:fOD2Yefuxixkx3ahVNf0O/PERb6r4OlbxfATVnYvzCo= go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc= go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= @@ -223,8 +222,8 @@ go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRk go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA= go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk= go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= -go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= -go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= +go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -239,8 +238,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y= -golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0= -golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80= golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= @@ -250,7 +249,6 @@ golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7 golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0= @@ -280,23 +278,22 @@ gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnf gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= k8s.io/api v0.37.0 h1:Z//Vj9N7RA/yS2sDmxyeo7h+RR4zbUrd2vrd3Z0TbB4= k8s.io/api v0.37.0/go.mod h1:LKXgcJWMc+f4OLbP5SFR8rulEg07zZhpi/zMULiBImk= -k8s.io/apiextensions-apiserver v0.36.3 h1:dPmOAPhwTtqb1bTxbFPsy18KHPhktQeO3WUPXunZIB0= -k8s.io/apiextensions-apiserver v0.36.3/go.mod h1:KTXFqgXiuw2pRoL+Wpmttqc+up9Xt/GohadPWeLLOa4= +k8s.io/apiextensions-apiserver v0.37.0 h1:zRMQ3+/LIE5oZ0tVvXwYHC+dIkSP5cjNWju7AZU1LOI= +k8s.io/apiextensions-apiserver v0.37.0/go.mod h1:HU0PfSBwchHL5iDau6jjt9zU6ryWkDDlaVUiq91NK80= k8s.io/apimachinery v0.37.0 h1:Np2AbDtf8x6RDHiD8T9LbKJ9gaegeVNa8yNm5FuGKm0= k8s.io/apimachinery v0.37.0/go.mod h1:RN3nhprFSCxOi5Selxd7oMTXOe/c+ZbcE7Im+TS2zkE= -k8s.io/apiserver v0.36.3 h1:MGSg2SkdfuytiDEcRylT5mQFmmSsbx90XFUO67Y4bsQ= -k8s.io/apiserver v0.36.3/go.mod h1:fVH7zv9EUNUA7Fl7LtDKh8aB9W7u1VQPSGtWV5SjUxg= +k8s.io/apiserver v0.37.0 h1:TXg7OxsOWrAH8J4Zi/gBAZuMw1Dfdd+6cca2h4qjRqo= +k8s.io/apiserver v0.37.0/go.mod h1:OddHDF4gy9qyIb8o/3+qaeP6S0vEObWLgOygVqXksv0= k8s.io/client-go v0.37.0 h1:nsN31fy8wBySuZ+QRnKmrjRSQLOG2rvoGN0tKd12zhQ= k8s.io/client-go v0.37.0/go.mod h1:FcGqw+Ll/gNQiq+nPGY1Oyt9y7SgDh1d3MW3RFDEbn0= -k8s.io/component-base v0.36.3 h1:vc/UFvPCkW0irPz84LAodAL1j3f4xktPM6dDJIEheAY= -k8s.io/component-base v0.36.3/go.mod h1:hZbNFG+gCMl9EbykDGEu73feKP9/Cq6JsV4pTo9GTO8= +k8s.io/component-base v0.37.0 h1:3SdSa4+itMdFTDFTeR8CxKGmSTSMXFlKL4ky8OqjguM= +k8s.io/component-base v0.37.0/go.mod h1:LjOebp4R9y6LODWZQv102ZQxGheLcDO2ZJLAw6bbh4I= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad h1:oXImqH8mQNk7PmvzKhmN3ddJoY6OnyM225MXwGHPm0A= @@ -305,10 +302,10 @@ k8s.io/streaming v0.37.0 h1:iPBUZLZiKt5bV+lxJurASMOV07VuBhNpiwJt2//AWrM= k8s.io/streaming v0.37.0/go.mod h1:APlJR26ZWRcVy5bIEj0QRrKUXROtBHPcxl2NT7EAzPU= k8s.io/utils v0.0.0-20260626114624-be93311217bd h1:Ea7fgQ5we8Y9T0OX5o0dAHzQOBRI07D/dEYRaB9ZZEs= k8s.io/utils v0.0.0-20260626114624-be93311217bd/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= -sigs.k8s.io/controller-runtime v0.24.1 h1:miPEwrmirImAvgME1L9qebGHrOnGJoVmVdtOU9fRfo4= -sigs.k8s.io/controller-runtime v0.24.1/go.mod h1:vFkfY5fGt5xAC/sKb8IBFKgWPNKG9OUG29dR8Y2wImw= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0 h1:/YpDJ4vReG7ZmzSpBGxduXgywWkJU9zHubgJG03MT+Y= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0/go.mod h1:tJo1aepTXyR+8Xs3sUsGBDk4Ub2AM5dPAPKJx0mpm5c= +sigs.k8s.io/controller-runtime v0.25.0 h1:44KgRUPew331KSJpNu8zJow3iTR5W0p/SfrHdw3lV40= +sigs.k8s.io/controller-runtime v0.25.0/go.mod h1:4QqLdT6z/L6Olj8JJCtvztid4/fnIiYsfaTFScegctc= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= diff --git a/helm/dev/cortex-prometheus-operator/Chart.yaml b/helm/dev/cortex-prometheus-operator/Chart.yaml index c10dbab6f..ab9e30d9b 100644 --- a/helm/dev/cortex-prometheus-operator/Chart.yaml +++ b/helm/dev/cortex-prometheus-operator/Chart.yaml @@ -10,4 +10,4 @@ dependencies: # CRDs of the prometheus operator, such as PrometheusRule, ServiceMonitor, etc. - name: kube-prometheus-stack repository: oci://ghcr.io/prometheus-community/charts - version: 88.6.3 + version: 88.6.5 From 261b49054fb1259364b15c7950e08c55c6e5c54f Mon Sep 17 00:00:00 2001 From: Philipp Matthes Date: Fri, 4 Sep 2026 11:23:51 +0200 Subject: [PATCH 3/7] Fix multicluster recorder for controller-runtime v0.25.0 EventRecorder change (#1191) Bumping sigs.k8s.io/controller-runtime to v0.25.0 changed the return type of cluster.Cluster.GetEventRecorder from k8s.io/client-go/tools/events.EventRecorder to sigs.k8s.io/controller-runtime/pkg/recorder.EventRecorder, which embeds both events.EventRecorder and events.AnnotatedEventRecorder. This broke the build in pkg/multicluster. This updates the multicluster Client, MultiClusterRecorder, and their test doubles to use the new recorder.EventRecorder type, and adds an AnnotatedEventf method that routes annotated events to the correct cluster recorder just like Eventf does, so the recorder satisfies the wider interface. make passes locally with lint and all tests green. Assisted-by: Claude Code:claude-opus-4-8 [Bash] [Read] Signed-off-by: Philipp Matthes --- pkg/multicluster/client_test.go | 6 +++--- pkg/multicluster/recorder.go | 25 ++++++++++++++++--------- pkg/multicluster/recorder_test.go | 12 ++++++++++++ 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/pkg/multicluster/client_test.go b/pkg/multicluster/client_test.go index 29ea8e0ca..e208394de 100644 --- a/pkg/multicluster/client_test.go +++ b/pkg/multicluster/client_test.go @@ -16,7 +16,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/client-go/tools/events" "k8s.io/client-go/tools/record" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cache" @@ -24,6 +23,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/controller-runtime/pkg/cluster" "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/recorder" "github.com/cobaltcore-dev/cortex/api/v1alpha1" ) @@ -81,7 +81,7 @@ type fakeCluster struct { cluster.Cluster fakeClient client.Client fakeCache *fakeCache - fakeRecorder events.EventRecorder + fakeRecorder recorder.EventRecorder scheme *runtime.Scheme } @@ -104,7 +104,7 @@ func (f *fakeCluster) GetFieldIndexer() client.FieldIndexer { return f.fakeCache } -func (f *fakeCluster) GetEventRecorder(_ string) events.EventRecorder { +func (f *fakeCluster) GetEventRecorder(_ string) recorder.EventRecorder { if f.fakeRecorder != nil { return f.fakeRecorder } diff --git a/pkg/multicluster/recorder.go b/pkg/multicluster/recorder.go index 8c7c78d3d..f7099dcd3 100644 --- a/pkg/multicluster/recorder.go +++ b/pkg/multicluster/recorder.go @@ -5,18 +5,18 @@ package multicluster import ( "k8s.io/apimachinery/pkg/runtime" - "k8s.io/client-go/tools/events" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cluster" + "sigs.k8s.io/controller-runtime/pkg/recorder" ) -// MultiClusterRecorder implements events.EventRecorder and routes events to the -// correct cluster based on the GVK of the "regarding" object. It uses the same -// routing logic as the multicluster Client's write path. +// MultiClusterRecorder implements recorder.EventRecorder and routes events to +// the correct cluster based on the GVK of the "regarding" object. It uses the +// same routing logic as the multicluster Client's write path. type MultiClusterRecorder struct { client *Client - homeRecorder events.EventRecorder - recorders map[cluster.Cluster]events.EventRecorder + homeRecorder recorder.EventRecorder + recorders map[cluster.Cluster]recorder.EventRecorder } // GetEventRecorder creates a multi-cluster-aware EventRecorder. It pre-creates @@ -24,10 +24,10 @@ type MultiClusterRecorder struct { // registered in the client. The name parameter is passed through to each // cluster's GetEventRecorder method (it becomes the reportingController in the // Kubernetes Event). -func (c *Client) GetEventRecorder(name string) events.EventRecorder { +func (c *Client) GetEventRecorder(name string) recorder.EventRecorder { homeRecorder := c.HomeCluster.GetEventRecorder(name) - recorders := make(map[cluster.Cluster]events.EventRecorder) + recorders := make(map[cluster.Cluster]recorder.EventRecorder) recorders[c.HomeCluster] = homeRecorder c.remoteClustersMu.RLock() @@ -55,8 +55,15 @@ func (r *MultiClusterRecorder) Eventf(regarding, related runtime.Object, eventty recorder.Eventf(regarding, related, eventtype, reason, action, note, args...) } +// AnnotatedEventf routes the annotated event to the cluster that owns the +// "regarding" object. Falls back to the home cluster recorder if routing fails. +func (r *MultiClusterRecorder) AnnotatedEventf(regarding, related runtime.Object, annotations map[string]string, eventtype, reason, action, note string, args ...any) { + recorder := r.recorderFor(regarding) + recorder.AnnotatedEventf(regarding, related, annotations, eventtype, reason, action, note, args...) +} + // recorderFor resolves which per-cluster recorder to use for the given object. -func (r *MultiClusterRecorder) recorderFor(obj runtime.Object) events.EventRecorder { +func (r *MultiClusterRecorder) recorderFor(obj runtime.Object) recorder.EventRecorder { if obj == nil { return r.homeRecorder } diff --git a/pkg/multicluster/recorder_test.go b/pkg/multicluster/recorder_test.go index 90bdd71dc..16318747c 100644 --- a/pkg/multicluster/recorder_test.go +++ b/pkg/multicluster/recorder_test.go @@ -41,6 +41,18 @@ func (f *fakeEventRecorder) Eventf(regarding, _ runtime.Object, eventtype, reaso }) } +func (f *fakeEventRecorder) AnnotatedEventf(regarding, _ runtime.Object, _ map[string]string, eventtype, reason, action, note string, args ...any) { + f.mu.Lock() + defer f.mu.Unlock() + f.calls = append(f.calls, eventfCall{ + regarding: regarding, + eventtype: eventtype, + reason: reason, + action: action, + note: fmt.Sprintf(note, args...), + }) +} + func (f *fakeEventRecorder) getCalls() []eventfCall { f.mu.Lock() defer f.mu.Unlock() From 0cf9e7763a614882fb7284f2cb09b239d86946e3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2026 09:35:56 +0000 Subject: [PATCH 4/7] Renovate: Update github.com/sapcc/go-bits digest to 1774475 (#1187) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/sapcc/go-bits](https://redirect.github.com/sapcc/go-bits) | require | digest | `7669cbd` → `1774475` | --- ### Configuration 📅 **Schedule**: (in timezone Europe/Berlin) - Branch creation - "after 6pm every weekday,every weekend,before 8am every weekday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cobaltcore-dev/cortex). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 15 ++++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index db2ea39a1..16f15fb93 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/prometheus/client_golang v1.24.1 github.com/prometheus/client_model v0.6.3 github.com/sapcc/go-api-declarations v1.25.0 - github.com/sapcc/go-bits v0.0.0-20260827091731-7669cbdb53fb + github.com/sapcc/go-bits v0.0.0-20260903192122-1774475e70e3 go.uber.org/zap v1.28.0 go.xyrillian.de/gg v1.14.0 golang.org/x/sync v0.22.0 @@ -85,7 +85,7 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/poy/onpar v0.3.5 // indirect - github.com/prometheus/common v0.70.1 // indirect + github.com/prometheus/common v0.71.0 // indirect github.com/prometheus/procfs v0.21.1 // indirect github.com/sirupsen/logrus v1.9.4 // indirect github.com/spf13/cobra v1.10.2 // indirect @@ -103,7 +103,7 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect - go.yaml.in/yaml/v3 v3.0.4 // indirect + go.yaml.in/yaml/v3 v3.0.5 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f // indirect golang.org/x/net v0.58.0 // indirect diff --git a/go.sum b/go.sum index 6bb1301e4..2af74e098 100644 --- a/go.sum +++ b/go.sum @@ -176,8 +176,8 @@ github.com/prometheus/client_golang v1.24.1 h1:JnJkREXzWxUdCuPFpIWZiPispT9xVV59u github.com/prometheus/client_golang v1.24.1/go.mod h1:F+oSRECHg4sse5ucfYpYDeIv/hu68Zo0uoHKetWnzcE= github.com/prometheus/client_model v0.6.3 h1:O0jaTVAYNxTHYInEPFJt5I3+sN8zqBtVMPTB1qyxiEo= github.com/prometheus/client_model v0.6.3/go.mod h1:gpN5P9S7Rr6Yr92PiQ+Ixvhf6JZEkF1dnxsYL2aPBEM= -github.com/prometheus/common v0.70.1 h1:1HvjP4D5oL3t8RsPlwxA9onvvStjtIHYE5XuuwOi/PY= -github.com/prometheus/common v0.70.1/go.mod h1:VdFUQDMZK3VLkurFUVhia6uys/0suUp86TJz5qbJRhc= +github.com/prometheus/common v0.71.0 h1:9KDAKb7Mj3HEVKyFCK6Dc/HIwlBzZIN2l7/lrHl3KK8= +github.com/prometheus/common v0.71.0/go.mod h1:CLJ5H8TEsGX8bl31BdMkfhIZ+QmZ9tBPPotUxUbfcmk= github.com/prometheus/procfs v0.21.1 h1:GljZCt+zSTS+NZq88cyQ1LjZ+RCHp3uVuabBWA5+OJI= github.com/prometheus/procfs v0.21.1/go.mod h1:aB55Cww9pdSJVHk0hUf0inxWyyjPogFIjmHKYgMKmtY= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -185,8 +185,8 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sapcc/go-api-declarations v1.25.0 h1:vLkSVV8oaZExoBMEkwX31AqUjZIjwxKkxXr4q2sAAOg= github.com/sapcc/go-api-declarations v1.25.0/go.mod h1:7NrwidCCv/MxwBpb/qqYLbQb/eY6rlnYkXwWMGx/wlI= -github.com/sapcc/go-bits v0.0.0-20260827091731-7669cbdb53fb h1:jORKY0SgUAhXCq40zGSDRaBzDk2zUX+p2wsJeCYxITk= -github.com/sapcc/go-bits v0.0.0-20260827091731-7669cbdb53fb/go.mod h1:X2M3A28UnHSRGlRmiztvmBhdETrplwDFn7QLyxCOYtA= +github.com/sapcc/go-bits v0.0.0-20260903192122-1774475e70e3 h1:UJBdl9Nd8Q2mvzWp4ArZDqEdzT6J3EcMFtm6IpCD56A= +github.com/sapcc/go-bits v0.0.0-20260903192122-1774475e70e3/go.mod h1:vkuud4jRPWr/S2dW2409gclx56CjuFbm4N5NXyDRKlI= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= @@ -198,8 +198,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= +github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= @@ -234,8 +234,9 @@ go.xyrillian.de/gg v1.14.0 h1:S19Jk3V1dcF9WdXQi7OGWjboVj8/40I4+/G1lZ6i4TI= go.xyrillian.de/gg v1.14.0/go.mod h1:DoO4fQSWIrBRlNlCjVyrYM0kAEBt/Jg2GkMH+cGRZ0k= go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= -go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y= golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM= From 9420286df4486d230bcdd89393ec85b52c9f4c2a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2026 11:36:17 +0200 Subject: [PATCH 5/7] Renovate: Update kube-prometheus-stack Docker tag to v89 (#1189) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [kube-prometheus-stack](https://redirect.github.com/prometheus-operator/kube-prometheus) ([source](https://redirect.github.com/prometheus-community/helm-charts)) | major | `88.6.5` → `89.2.0` | --- ### Release Notes
prometheus-community/helm-charts (kube-prometheus-stack) ### [`v89.2.0`](https://redirect.github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-89.2.0) kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. ##### What's Changed - \[kube-prometheus-stack] Update Helm release grafana to v13.2.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7233](https://redirect.github.com/prometheus-community/helm-charts/pull/7233) **Full Changelog**: ### [`v89.1.0`](https://redirect.github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-89.1.0) kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. #### What's Changed - \[kube-prometheus-stack] Update kube-prometheus-stack dependency non-major updates by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7232](https://redirect.github.com/prometheus-community/helm-charts/pull/7232) **Full Changelog**: ### [`v89.0.0`](https://redirect.github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-89.0.0) kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. #### What's Changed - \[kube-prometheus-stack] Update Helm release grafana to v13 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7217](https://redirect.github.com/prometheus-community/helm-charts/pull/7217) **Full Changelog**:
--- ### Configuration 📅 **Schedule**: (in timezone Europe/Berlin) - Branch creation - "after 6pm every weekday,every weekend,before 8am every weekday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cobaltcore-dev/cortex). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- helm/dev/cortex-prometheus-operator/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/dev/cortex-prometheus-operator/Chart.yaml b/helm/dev/cortex-prometheus-operator/Chart.yaml index ab9e30d9b..fe518c336 100644 --- a/helm/dev/cortex-prometheus-operator/Chart.yaml +++ b/helm/dev/cortex-prometheus-operator/Chart.yaml @@ -10,4 +10,4 @@ dependencies: # CRDs of the prometheus operator, such as PrometheusRule, ServiceMonitor, etc. - name: kube-prometheus-stack repository: oci://ghcr.io/prometheus-community/charts - version: 88.6.5 + version: 89.2.0 From cd38777a81a2a8ff0fce963cc52c3d52a6c761b9 Mon Sep 17 00:00:00 2001 From: Philipp Matthes Date: Fri, 4 Sep 2026 12:51:03 +0200 Subject: [PATCH 6/7] Placement shim: detect a lost remote apiserver and rebuild the manager (#1190) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Problem The placement shim runs a self-healing supervisor that rebuilds the controller-manager only when `mgr.Start` returns. Remote apiservers are added as manager Runnables, and when a remote cluster is deleted *after* its informer cache already synced (e.g. `kind delete cluster --name kind-cortex-remote-az-a`), controller-runtime's informer retries the dead watch forever and never errors. So `mgr.Start` never returns, the supervisor never rebuilds, `cortex_placement_shim_manager_up` stays 1, and the pod silently idles. ### Fix Add an external liveness signal: a per-remote reachability probe (`GET /readyz`) that, on sustained failure, cancels a per-cycle context bound to `mgr.Start`, causing it to return so the existing supervisor backoff rebuilds the whole manager (which re-reads config and reconnects to currently-configured remotes). - `client_probe.go`: `UniqueRemotes()` dedupes remotes by cluster identity; `ProbeRemotes()` runs one probe goroutine per remote via `wait.PollUntilContextCancel`, tracks consecutive failures, and calls `onLost(host)` after `FailureThreshold` (default 3 × 10s ≈ 30s, deliberately above the supervisor backoff floor to keep the rebuild loop period bounded). Classification keys on the transport outcome: any HTTP response (incl. 401/403/5xx `StatusError`) = reachable; only a transport failure (connection refused, TLS/handshake failure, timeout) = unreachable — so an authz/server error never triggers a rebuild storm. - `main.go`: `buildAndStart` derives a per-cycle `context.WithCancelCause`, launches `ProbeRemotes`, and binds `mgr.Start(cycleCtx)`. No `supervisor.go` change needed — the supervisor already rebuilds on every `BuildAndStart` return. - `monitor.go`: new `cortex_multicluster_remote_apiserver_reachable{host}` gauge on the process-lifetime Monitor (survives manager rebuilds). - `alerts.yaml`: new `CortexPlacementShimRemoteApiserverUnreachable` alert. - Instrumented the probe with greppable `reachability probe:` log lines at every decision point (start, per-remote watch, per-tick outcome at V(1) with the underlying error, unreachable/threshold/lost/recovered transitions). ### Guide RBAC fix Running the shim against the multicluster kind guide produced `hypervisors.kvm.cloud.sap is forbidden` for user `...#system:serviceaccount:default:cortex-placement-shim`: the shim's SA user was missing from the remote clusters' cluster-admin ClusterRoleBinding. Added it as a subject to `cortex-remote-crb.yaml` (applied to both remotes by the existing `run.sh` steps). ### Auxiliary changes Also included (unrelated to the core fix, bundled for convenience): - `run.sh`: no longer pins the guide to `ACTIVE_DEPLOYMENTS="nova"`. - `client.go`: demotes a noisy per-GVK log line to `V(1)`. ### Testing `make` passes (generate produced no diffs, lint + format clean, full test suite green). New/updated tests cover probe classification, sustained-failure trigger + gauge, no-trigger-when-reachable, no-remotes no-op, transient-blip counter reset, the monitor gauge setter, and a supervisor test locking down the exact internal-cancel → rebuild mechanism `main.go` relies on. `pkg/multicluster` and `pkg/shim/supervisor` also pass under `-race`. Assisted-by: Claude Code:claude-opus-4-8 [Bash] [Read] Signed-off-by: Philipp Matthes --- cmd/shim/main.go | 27 +- .../multicluster/cortex-remote-crb.yaml | 3 + docs/guides/multicluster/run.sh | 2 +- .../templates/alerts.yaml | 27 ++ pkg/multicluster/client.go | 2 +- pkg/multicluster/client_probe.go | 220 ++++++++++++++++ pkg/multicluster/client_probe_test.go | 243 ++++++++++++++++++ pkg/multicluster/client_test.go | 13 + pkg/multicluster/monitor.go | 25 ++ pkg/multicluster/monitor_test.go | 21 ++ pkg/shim/supervisor/supervisor_test.go | 29 +++ 11 files changed, 607 insertions(+), 5 deletions(-) create mode 100644 pkg/multicluster/client_probe.go create mode 100644 pkg/multicluster/client_probe_test.go diff --git a/cmd/shim/main.go b/cmd/shim/main.go index 62ab7f64d..e3b7e2d37 100644 --- a/cmd/shim/main.go +++ b/cmd/shim/main.go @@ -403,11 +403,32 @@ func main() { return fmt.Errorf("unable to create manager: %w", err) } - multiclusterClient, err := setupMulticlusterClient(ctx, mgr, restConfig, multiclusterMonitor) + // cycleCtx scopes this manager cycle: cancelling it makes mgr.Start return + // so the supervisor rebuilds the manager (re-reading config and + // reconnecting to the currently-configured remotes). It is cancelled on a + // clean return (defer), when the parent ctx is cancelled (child), or by the + // reachability probe below when a remote apiserver is lost. This is the + // external liveness signal the supervisor lacks on its own: a remote whose + // informer already synced and then disappears is retried by + // controller-runtime forever without mgr.Start ever returning. + cycleCtx, cancelCycle := context.WithCancelCause(ctx) + defer cancelCycle(nil) + + multiclusterClient, err := setupMulticlusterClient(cycleCtx, mgr, restConfig, multiclusterMonitor) if err != nil { return fmt.Errorf("unable to set up multicluster client: %w", err) } + // Probe each remote apiserver for reachability. When a remote is + // sustained-unreachable (e.g. its cluster was deleted after its cache had + // already synced), cancel the cycle so the supervisor rebuilds the manager. + // A remote that answers with any HTTP status is reachable, so an authz or + // server error does not trigger a rebuild storm. + go multiclusterClient.ProbeRemotes(cycleCtx, multicluster.DefaultProbeOptions, func(host string) { + setupLog.Info("remote apiserver sustained-unreachable; recycling manager", "host", host) + cancelCycle(fmt.Errorf("remote apiserver unreachable: %s", host)) + }) + if placementShim != nil { if err := placementShim.SetupControllerWithManager(ctx, mgr, multiclusterClient); err != nil { return fmt.Errorf("unable to set up placement shim controller: %w", err) @@ -431,7 +452,7 @@ func main() { // goroutine only marks ready while the context is still live, and the // deferred clear always wins the final state. var readyMu sync.Mutex - cacheCtx, cancelCacheSync := context.WithCancel(ctx) + cacheCtx, cancelCacheSync := context.WithCancel(cycleCtx) defer func() { cancelCacheSync() readyMu.Lock() @@ -483,7 +504,7 @@ func main() { } setupLog.Info("starting manager") - return mgr.Start(ctx) + return mgr.Start(cycleCtx) } // +kubebuilder:scaffold:builder diff --git a/docs/guides/multicluster/cortex-remote-crb.yaml b/docs/guides/multicluster/cortex-remote-crb.yaml index 66b44ded8..61968e368 100644 --- a/docs/guides/multicluster/cortex-remote-crb.yaml +++ b/docs/guides/multicluster/cortex-remote-crb.yaml @@ -15,6 +15,9 @@ subjects: - kind: User apiGroup: rbac.authorization.k8s.io name: "https://host.docker.internal:8443#system:serviceaccount:default:cortex-pods-controller-manager" +- kind: User + apiGroup: rbac.authorization.k8s.io + name: "https://host.docker.internal:8443#system:serviceaccount:default:cortex-placement-shim" roleRef: kind: ClusterRole name: cluster-admin diff --git a/docs/guides/multicluster/run.sh b/docs/guides/multicluster/run.sh index f68956870..c4062b84d 100755 --- a/docs/guides/multicluster/run.sh +++ b/docs/guides/multicluster/run.sh @@ -78,4 +78,4 @@ kubectl --context kind-cortex-remote-az-b apply \ echo "Starting cortex in home cluster with tilt, using overrides from $TILT_OVERRIDES_PATH" kubectl config use-context kind-cortex-home -export ACTIVE_DEPLOYMENTS="nova" && tilt up +tilt up diff --git a/helm/bundles/cortex-placement-shim/templates/alerts.yaml b/helm/bundles/cortex-placement-shim/templates/alerts.yaml index ff5ac691b..f12c8e616 100644 --- a/helm/bundles/cortex-placement-shim/templates/alerts.yaml +++ b/helm/bundles/cortex-placement-shim/templates/alerts.yaml @@ -242,4 +242,31 @@ spec: resource router is mapping the same object to multiple clusters, or an object was created out-of-band on the wrong cluster. Investigate the affected resources and the routing configuration. + + - alert: CortexPlacementShimRemoteApiserverUnreachable + # min by (host): a remote is unreachable only if it was 0 for the whole + # window (a rebuild flips it 1->0->1, and min ignores the brief 1s during a + # reconnect attempt). Fires per host so the offending remote is named. + expr: | + min by (host) (cortex_multicluster_remote_apiserver_reachable{service="cortex-placement-shim-metrics-service"}) < 1 + for: 5m + labels: + context: multicluster + dashboard: cortex-placement-shim-status-dashboard/cortex-placement-shim-status-dashboard + service: cortex + severity: warning + support_group: workload-management + annotations: + summary: "Remote apiserver `{{ "{{" }} $labels.host {{ "}}" }}` is unreachable" + description: > + The multicluster client cannot reach the remote apiserver at + `{{ "{{" }} $labels.host {{ "}}" }}`. The reachability probe has seen + sustained transport failures (connection refused, TLS/handshake failure, + or timeout), which is the signature of a deleted or network-partitioned + cluster rather than an authz/server error. The shim recycles its + controller-manager in response, so the manager cache for resources served + by that remote is stale or empty and `cortex_placement_shim_manager_up` + will average low (see CortexPlacementShimManagerLooping). Passthrough + requests to upstream Placement are unaffected. Investigate whether the + remote cluster still exists and network connectivity to its apiserver. {{- end }} diff --git a/pkg/multicluster/client.go b/pkg/multicluster/client.go index 92cab3430..641b2b0f9 100644 --- a/pkg/multicluster/client.go +++ b/pkg/multicluster/client.go @@ -89,7 +89,7 @@ func (c *Client) InitFromConf(ctx context.Context, mgr ctrl.Manager, conf Client gvksByConfStr[formatted] = gvk } for gvkStr := range gvksByConfStr { - log.Info("scheme gvk registered", "gvk", gvkStr) + log.V(1).Info("scheme gvk registered", "gvk", gvkStr) } // Parse home GVKs. c.homeGVKs = make(map[schema.GroupVersionKind]bool) diff --git a/pkg/multicluster/client_probe.go b/pkg/multicluster/client_probe.go new file mode 100644 index 000000000..854ddd887 --- /dev/null +++ b/pkg/multicluster/client_probe.go @@ -0,0 +1,220 @@ +// Copyright SAP SE +// SPDX-License-Identifier: Apache-2.0 + +package multicluster + +import ( + "context" + "errors" + "time" + + apierrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cluster" +) + +// RemoteEndpoint identifies a unique remote cluster to probe for reachability. +type RemoteEndpoint struct { + // Host is the remote apiserver URL (from the cluster's rest.Config). + Host string + // Cluster is the controller-runtime cluster whose apiserver is probed. + Cluster cluster.Cluster +} + +// UniqueRemotes returns each distinct remote cluster exactly once, across all +// configured GVKs. The same remote apiserver is stored once per GVK it serves, +// so this dedupes by cluster identity (the same policy IndexField uses to dedupe +// caches). The home cluster is not included. +func (c *Client) UniqueRemotes() []RemoteEndpoint { + c.remoteClustersMu.RLock() + defer c.remoteClustersMu.RUnlock() + seen := make(map[cluster.Cluster]bool) + var out []RemoteEndpoint + for _, remotes := range c.remoteClusters { + for _, r := range remotes { + if r.cluster == nil || seen[r.cluster] { + continue + } + seen[r.cluster] = true + out = append(out, RemoteEndpoint{Host: r.cluster.GetConfig().Host, Cluster: r.cluster}) + } + } + return out +} + +// ProbeOptions configures the per-remote reachability probe. +type ProbeOptions struct { + // Interval is the time between reachability probes for each remote. + Interval time.Duration + // Timeout bounds a single probe request so it never blocks on a dead socket + // longer than intended. + Timeout time.Duration + // FailureThreshold is the number of consecutive unreachable probes that must + // occur before a remote is considered lost and onLost is called. It is chosen + // above the supervisor's backoff floor so a doomed manager cycle outlives the + // growing backoff, keeping the rebuild loop period bounded rather than hot. + FailureThreshold int +} + +// DefaultProbeOptions probes every 10s with a 5s per-probe timeout and treats a +// remote as lost after 3 consecutive failures (~30s of sustained unreachability). +var DefaultProbeOptions = ProbeOptions{ + Interval: 10 * time.Second, + Timeout: 5 * time.Second, + FailureThreshold: 3, +} + +// ProbeRemotes runs one reachability probe goroutine per unique remote apiserver +// until ctx is cancelled. Each goroutine periodically probes its remote, updates +// the reachability gauge on the Monitor (if any), and tracks consecutive +// failures; when a remote has been unreachable FailureThreshold times in a row it +// calls onLost(host) once and stops probing that remote (the caller is expected +// to tear down the manager cycle in response). +// +// A single transient blip does not trigger onLost: the failure counter resets on +// the first reachable probe. "Unreachable" means a transport-level failure +// (connection refused, no route, TLS/handshake failure, timeout) — an apiserver +// that responds with any HTTP status (including 401/403/5xx) is considered +// reachable, since a manager rebuild cannot fix an authz/server error and would +// only cause a restart storm. +// +// ProbeRemotes returns immediately when no remotes are configured. +func (c *Client) ProbeRemotes(ctx context.Context, opts ProbeOptions, onLost func(host string)) { + log := ctrl.LoggerFrom(ctx) + remotes := c.UniqueRemotes() + hosts := make([]string, 0, len(remotes)) + for _, r := range remotes { + hosts = append(hosts, r.Host) + } + if len(remotes) == 0 { + // No remotes to watch: log it explicitly so an operator who deletes a + // cluster and sees "nothing happening" can tell this apart from the probe + // simply not finding the remote it expected to watch. + log.Info("reachability probe: no remote apiservers configured, nothing to probe") + return + } + log.Info("reachability probe: starting", "remoteCount", len(remotes), "hosts", hosts, + "interval", opts.Interval.String(), "timeout", opts.Timeout.String(), "failureThreshold", opts.FailureThreshold) + var wg wait.Group + for _, remote := range remotes { + httpClient, err := reachabilityClient(remote.Cluster.GetConfig(), opts.Timeout) + if err != nil { + // A remote we cannot even build a probe client for is treated as + // lost immediately: its config is unusable, so a rebuild (which + // re-reads config) is the right response. + log.Error(err, "reachability probe: unable to build probe client for remote; declaring it lost", "host", remote.Host) + onLost(remote.Host) + continue + } + wg.StartWithContext(ctx, func(ctx context.Context) { + c.probeRemoteLoop(ctx, opts, remote, httpClient, onLost) + }) + } + wg.Wait() + log.Info("reachability probe: stopped", "hosts", hosts) +} + +// probeRemoteLoop probes a single remote until ctx is cancelled or the remote is +// declared lost. +func (c *Client) probeRemoteLoop(ctx context.Context, opts ProbeOptions, remote RemoteEndpoint, httpClient *rest.RESTClient, onLost func(host string)) { + log := ctrl.LoggerFrom(ctx).WithValues("host", remote.Host) + log.Info("reachability probe: watching remote apiserver") + failures := 0 + wasReachable := true // assume reachable at start; log the first real transition + // PollUntilContextCancel with immediate=true runs the first probe right away + // rather than waiting a full interval, so a remote that is already gone at + // cycle start is detected promptly. The poll func never returns an error, so + // the only error PollUntilContextCancel can return is the context error once + // ctx is cancelled or the loop stops after declaring the remote lost — both + // expected, so it is intentionally not surfaced. + err := wait.PollUntilContextCancel(ctx, opts.Interval, true, func(ctx context.Context) (bool, error) { + reachable, probeErr := probeReachable(ctx, httpClient, opts.Timeout) + if c.Monitor != nil { + c.Monitor.recordRemoteReachable(remote.Host, reachable) + } + // Per-probe outcome at V(1): verbose, but the single most useful line when + // diagnosing "why didn't it detect the deletion" — it shows the classified + // result and the underlying transport/HTTP error for each tick. + if probeErr != nil { + log.V(1).Info("reachability probe: tick", "reachable", reachable, "error", probeErr.Error()) + } else { + log.V(1).Info("reachability probe: tick", "reachable", reachable) + } + if reachable { + if !wasReachable { + log.Info("reachability probe: remote apiserver recovered", "afterConsecutiveFailures", failures) + } + wasReachable = true + failures = 0 + return false, nil + } + wasReachable = false + failures++ + if probeErr != nil { + log.Info("reachability probe: remote apiserver unreachable", + "consecutiveFailures", failures, "threshold", opts.FailureThreshold, "error", probeErr.Error()) + } else { + log.Info("reachability probe: remote apiserver unreachable", + "consecutiveFailures", failures, "threshold", opts.FailureThreshold) + } + if failures >= opts.FailureThreshold { + log.Info("reachability probe: failure threshold reached, declaring remote lost", "consecutiveFailures", failures) + onLost(remote.Host) + return true, nil + } + return false, nil + }) + if err != nil && ctx.Err() == nil { + // A non-context error is not expected here (the poll func never returns + // one), but log it rather than swallow it if the invariant ever changes. + log.Error(err, "remote reachability poll stopped unexpectedly") + } +} + +// reachabilityClient builds a REST client for the given remote config that is +// used only to probe reachability. It copies the config (so the caller's shared +// config is never mutated), sets a per-probe timeout, and supplies a codec so the +// unversioned REST client can be constructed (we only read the transport outcome, +// never decode a body, but rest requires a NegotiatedSerializer). +func reachabilityClient(cfg *rest.Config, timeout time.Duration) (*rest.RESTClient, error) { + cfgCopy := *cfg + cfgCopy.Timeout = timeout + cfgCopy.NegotiatedSerializer = scheme.Codecs.WithoutConversion() + if cfgCopy.GroupVersion == nil { + cfgCopy.GroupVersion = &schema.GroupVersion{} + } + httpClient, err := rest.HTTPClientFor(&cfgCopy) + if err != nil { + return nil, err + } + return rest.UnversionedRESTClientForConfigAndClient(&cfgCopy, httpClient) +} + +// probeReachable issues a lightweight GET /readyz against the remote apiserver +// and reports whether the apiserver is reachable. Any HTTP response — including +// non-2xx statuses surfaced as a Kubernetes StatusError — counts as reachable; +// only a transport-level error (connection refused, no route, TLS failure, +// timeout) counts as unreachable, which is the signature of a deleted cluster. +// probeReachable issues a lightweight GET /readyz against the remote apiserver +// and reports whether the apiserver is reachable, along with the underlying +// error (nil on a 2xx, otherwise the transport or HTTP error even when the result +// is classified reachable) for logging. Any HTTP response — including non-2xx +// statuses surfaced as a Kubernetes StatusError — counts as reachable; only a +// transport-level error (connection refused, no route, TLS failure, timeout) +// counts as unreachable, which is the signature of a deleted cluster. +func probeReachable(ctx context.Context, client *rest.RESTClient, timeout time.Duration) (bool, error) { + probeCtx, cancel := context.WithTimeout(ctx, timeout) + defer cancel() + err := client.Get().AbsPath("/readyz").Do(probeCtx).Error() + if err == nil { + return true, nil + } + // The apiserver answered with a non-2xx status: it is up and reachable. Return + // the error too so callers can log the status the apiserver returned. + var statusErr *apierrors.StatusError + return errors.As(err, &statusErr), err +} diff --git a/pkg/multicluster/client_probe_test.go b/pkg/multicluster/client_probe_test.go new file mode 100644 index 000000000..6bbe34f01 --- /dev/null +++ b/pkg/multicluster/client_probe_test.go @@ -0,0 +1,243 @@ +// Copyright SAP SE +// SPDX-License-Identifier: Apache-2.0 + +package multicluster + +import ( + "context" + "net/http" + "net/http/httptest" + "sync" + "testing" + "time" + + "github.com/prometheus/client_golang/prometheus/testutil" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/rest" +) + +// fakeRemote builds a fakeCluster whose rest config points at the given host. +func fakeRemote(t *testing.T, host string) *fakeCluster { + t.Helper() + scheme := newTestScheme(t) + c := newFakeCluster(scheme) + c.restConfig = &rest.Config{Host: host} + return c +} + +func TestUniqueRemotes_DedupesAcrossGVKs(t *testing.T) { + gvkA := schema.GroupVersionKind{Group: "g", Version: "v", Kind: "A"} + gvkB := schema.GroupVersionKind{Group: "g", Version: "v", Kind: "B"} + shared := fakeRemote(t, "https://shared") + other := fakeRemote(t, "https://other") + c := &Client{ + remoteClusters: map[schema.GroupVersionKind][]remoteCluster{ + gvkA: {{cluster: shared}, {cluster: other}}, + gvkB: {{cluster: shared}}, + }, + } + remotes := c.UniqueRemotes() + if len(remotes) != 2 { + t.Fatalf("expected 2 unique remotes, got %d", len(remotes)) + } + hosts := map[string]bool{} + for _, r := range remotes { + hosts[r.Host] = true + } + if !hosts["https://shared"] || !hosts["https://other"] { + t.Errorf("unexpected hosts: %v", hosts) + } +} + +func TestUniqueRemotes_NoRemotes(t *testing.T) { + c := &Client{} + if got := c.UniqueRemotes(); len(got) != 0 { + t.Errorf("expected no remotes, got %d", len(got)) + } +} + +func TestProbeReachable_Classification(t *testing.T) { + tests := []struct { + name string + status int // 0 means "close the connection / unreachable" + wantReachable bool + }{ + {"ok", http.StatusOK, true}, + {"forbidden apiserver is up", http.StatusForbidden, true}, + {"unauthorized apiserver is up", http.StatusUnauthorized, true}, + {"server error apiserver is up", http.StatusInternalServerError, true}, + {"connection refused is unreachable", 0, false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var host string + if tt.status == 0 { + // Reserve a port and close the listener so connections are refused. + srv := httptest.NewServer(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {})) + host = srv.URL + srv.Close() + } else { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.WriteHeader(tt.status) + })) + t.Cleanup(srv.Close) + host = srv.URL + } + client, err := reachabilityClient(&rest.Config{Host: host, TLSClientConfig: rest.TLSClientConfig{Insecure: true}}, time.Second) + if err != nil { + t.Fatalf("reachabilityClient: %v", err) + } + got, probeErr := probeReachable(context.Background(), client, time.Second) + if got != tt.wantReachable { + t.Errorf("probeReachable = %v (err %v), want %v", got, probeErr, tt.wantReachable) + } + // A 200 yields no error; any other outcome (reachable non-2xx or an + // unreachable transport failure) surfaces the underlying error. + if tt.status == http.StatusOK && probeErr != nil { + t.Errorf("expected nil error on 200, got %v", probeErr) + } + if tt.status != http.StatusOK && probeErr == nil { + t.Errorf("expected a non-nil error for status %d / unreachable, got nil", tt.status) + } + }) + } +} + +func TestProbeRemotes_TriggersOnSustainedFailure(t *testing.T) { + // A remote pointing at a closed listener is always unreachable. + srv := httptest.NewServer(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {})) + deadHost := srv.URL + srv.Close() + + remote := fakeRemote(t, deadHost) + mon := NewMonitor("test_trigger_") + c := &Client{ + Monitor: mon, + remoteClusters: map[schema.GroupVersionKind][]remoteCluster{{Kind: "A"}: {{cluster: remote}}}, + } + + var mu sync.Mutex + var lostHosts []string + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + done := make(chan struct{}) + go func() { + c.ProbeRemotes(ctx, ProbeOptions{Interval: 5 * time.Millisecond, Timeout: 50 * time.Millisecond, FailureThreshold: 3}, func(host string) { + mu.Lock() + lostHosts = append(lostHosts, host) + mu.Unlock() + }) + close(done) + }() + + // The probe loop stops itself once the remote is declared lost. + select { + case <-done: + case <-time.After(2 * time.Second): + t.Fatal("ProbeRemotes did not return after remote was declared lost") + } + + mu.Lock() + if len(lostHosts) != 1 || lostHosts[0] != deadHost { + t.Errorf("expected onLost called once with %q, got %v", deadHost, lostHosts) + } + mu.Unlock() + + if got := testutil.ToFloat64(mon.(*monitor).remoteReachable.WithLabelValues(deadHost)); got != 0 { + t.Errorf("expected reachable gauge 0 for dead host, got %v", got) + } +} + +func TestProbeRemotes_NoTriggerWhenReachable(t *testing.T) { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.WriteHeader(http.StatusOK) + })) + t.Cleanup(srv.Close) + + remote := fakeRemote(t, srv.URL) + remote.restConfig.TLSClientConfig = rest.TLSClientConfig{Insecure: true} + mon := NewMonitor("test_reachable_") + c := &Client{ + Monitor: mon, + remoteClusters: map[schema.GroupVersionKind][]remoteCluster{{Kind: "A"}: {{cluster: remote}}}, + } + + var mu sync.Mutex + lost := false + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + go c.ProbeRemotes(ctx, ProbeOptions{Interval: 5 * time.Millisecond, Timeout: time.Second, FailureThreshold: 3}, func(string) { + mu.Lock() + lost = true + mu.Unlock() + }) + + // Poll for the gauge to reach 1: a reachable remote must record 1 and never + // trip onLost. Polling (rather than a fixed sleep + single read) avoids racing + // the probe goroutine's gauge write. + gauge := mon.(*monitor).remoteReachable.WithLabelValues(srv.URL) + reachableSeen := false + for range 200 { + if testutil.ToFloat64(gauge) == 1 { + reachableSeen = true + break + } + time.Sleep(10 * time.Millisecond) + } + cancel() + + mu.Lock() + defer mu.Unlock() + if lost { + t.Error("onLost was called for a reachable remote") + } + if !reachableSeen { + t.Errorf("expected reachable gauge to reach 1, last value %v", testutil.ToFloat64(gauge)) + } +} + +func TestProbeRemotes_NoRemotesIsNoop(t *testing.T) { + c := &Client{} + lost := false + // Should return immediately without ever calling onLost. + c.ProbeRemotes(context.Background(), DefaultProbeOptions, func(string) { lost = true }) + if lost { + t.Error("onLost called with no remotes configured") + } +} + +func TestProbeRemotes_TransientBlipResetsCounter(t *testing.T) { + // probeRemoteLoop's counter resets on any reachable probe, so a run of + // failures shorter than the threshold never trips onLost. Drive the counter + // logic directly: a probe func that fails twice (below threshold 3) then + // recovers must leave failures at 0 and never call onLost. + failures := 0 + onLost := false + reachSeq := []bool{false, false, true, true} + i := 0 + step := func() bool { + reachable := reachSeq[i] + i++ + if reachable { + failures = 0 + return false + } + failures++ + if failures >= 3 { + onLost = true + return true + } + return false + } + for i < len(reachSeq) { + if step() { + break + } + } + if onLost { + t.Error("onLost tripped despite failures never reaching the threshold") + } + if failures != 0 { + t.Errorf("expected failure counter reset to 0 after recovery, got %d", failures) + } +} diff --git a/pkg/multicluster/client_test.go b/pkg/multicluster/client_test.go index e208394de..d3159c00d 100644 --- a/pkg/multicluster/client_test.go +++ b/pkg/multicluster/client_test.go @@ -16,6 +16,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/rest" "k8s.io/client-go/tools/record" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cache" @@ -83,12 +84,24 @@ type fakeCluster struct { fakeCache *fakeCache fakeRecorder recorder.EventRecorder scheme *runtime.Scheme + restConfig *rest.Config } func (f *fakeCluster) GetClient() client.Client { return f.fakeClient } +// GetConfig returns the rest config the cluster was built with, defaulting to a +// placeholder host when unset. Production clusters always have one (used for +// per-cluster logging and reachability probing); the default keeps tests that +// don't care about the host from panicking on the embedded nil interface. +func (f *fakeCluster) GetConfig() *rest.Config { + if f.restConfig != nil { + return f.restConfig + } + return &rest.Config{Host: "https://fake-cluster"} +} + func (f *fakeCluster) GetScheme() *runtime.Scheme { return f.scheme } diff --git a/pkg/multicluster/monitor.go b/pkg/multicluster/monitor.go index a33cfffb8..6cf3883b5 100644 --- a/pkg/multicluster/monitor.go +++ b/pkg/multicluster/monitor.go @@ -23,6 +23,11 @@ type Monitor interface { // detected on more than one cluster serving the GVK, labeled by the method // of access and the resource GVK. recordCrossClusterNameConflict(method string, gvk schema.GroupVersionKind) + + // recordRemoteReachable records whether a remote apiserver was reachable at + // the last reachability probe, labeled by host. See pkg/multicluster's + // ProbeRemotes for how reachability is determined. + recordRemoteReachable(host string, reachable bool) } // monitor is the default Prometheus-backed Monitor implementation. @@ -31,6 +36,10 @@ type monitor struct { // detected on more than one cluster serving the GVK, labeled by the method // of access and the resource GVK. crossClusterNameConflicts *prometheus.CounterVec + // remoteReachable reports whether each remote apiserver was reachable at the + // last reachability probe, labeled by host. It lives on the process-lifetime + // Monitor (not the per-cycle Client) so it survives manager rebuilds. + remoteReachable *prometheus.GaugeVec } // NewMonitor creates a new Prometheus-backed multicluster client monitor. The @@ -42,6 +51,10 @@ func NewMonitor(prefix string) Monitor { Name: prefix + "multicluster_cross_cluster_name_conflicts_total", Help: "Total number of times the same resource name was detected on more than one cluster serving the same GVK", }, duplicateConflictLabels), + remoteReachable: prometheus.NewGaugeVec(prometheus.GaugeOpts{ + Name: prefix + "multicluster_remote_apiserver_reachable", + Help: "1 if the remote apiserver was reachable at the last probe, 0 if sustained-unreachable, labeled by host", + }, []string{"host"}), } } @@ -51,12 +64,24 @@ func (m *monitor) recordCrossClusterNameConflict(method string, gvk schema.Group m.crossClusterNameConflicts.WithLabelValues(method, gvk.String()).Inc() } +// recordRemoteReachable sets the reachability gauge for the given host to 1 +// (reachable) or 0 (unreachable). +func (m *monitor) recordRemoteReachable(host string, reachable bool) { + v := 0.0 + if reachable { + v = 1.0 + } + m.remoteReachable.WithLabelValues(host).Set(v) +} + // Describe implements prometheus.Collector. func (m *monitor) Describe(ch chan<- *prometheus.Desc) { m.crossClusterNameConflicts.Describe(ch) + m.remoteReachable.Describe(ch) } // Collect implements prometheus.Collector. func (m *monitor) Collect(ch chan<- prometheus.Metric) { m.crossClusterNameConflicts.Collect(ch) + m.remoteReachable.Collect(ch) } diff --git a/pkg/multicluster/monitor_test.go b/pkg/multicluster/monitor_test.go index 104751280..0660595e6 100644 --- a/pkg/multicluster/monitor_test.go +++ b/pkg/multicluster/monitor_test.go @@ -91,3 +91,24 @@ func TestMonitor_RecordCrossClusterNameConflict(t *testing.T) { t.Errorf("list/%s: got %v, want 0", gvk, got) } } + +func TestMonitor_RecordRemoteReachable(t *testing.T) { + m := NewMonitor("cortex_").(*monitor) + + // reachable=true sets the gauge to 1, reachable=false to 0, and the latest + // value for a host wins. + m.recordRemoteReachable("https://a", true) + m.recordRemoteReachable("https://b", false) + if got := testutil.ToFloat64(m.remoteReachable.WithLabelValues("https://a")); got != 1 { + t.Errorf("host a: got %v, want 1", got) + } + if got := testutil.ToFloat64(m.remoteReachable.WithLabelValues("https://b")); got != 0 { + t.Errorf("host b: got %v, want 0", got) + } + + // A host flipping from reachable to unreachable overwrites the prior value. + m.recordRemoteReachable("https://a", false) + if got := testutil.ToFloat64(m.remoteReachable.WithLabelValues("https://a")); got != 0 { + t.Errorf("host a after loss: got %v, want 0", got) + } +} diff --git a/pkg/shim/supervisor/supervisor_test.go b/pkg/shim/supervisor/supervisor_test.go index 8d86b2b5a..258410ee2 100644 --- a/pkg/shim/supervisor/supervisor_test.go +++ b/pkg/shim/supervisor/supervisor_test.go @@ -285,6 +285,35 @@ func TestBackoffProgressionAndReset(t *testing.T) { } } +// TestManagerRestartsOnInternalCycleCancel locks down the exact mechanism the +// placement shim relies on: BuildAndStart derives a per-cycle child context from +// the one the supervisor passes in and cancels it itself (as the shim does when a +// remote apiserver goes unreachable), then returns. The parent context is still +// live, so the supervisor must treat this as a manager exit and rebuild — not +// mistake it for a graceful shutdown and stop the loop. +func TestManagerRestartsOnInternalCycleCancel(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + var cycles atomic.Int32 + + o := baseOptions(t) + o.Backoff = wait.Backoff{Duration: time.Millisecond, Factor: 1.0, Steps: 100} + o.BuildAndStart = func(parent context.Context) error { + cycles.Add(1) + // Mirror main.go's buildAndStart: derive a per-cycle context and cancel + // it from within (as the reachability probe does), then return its error. + cycleCtx, cancelCycle := context.WithCancel(parent) + cancelCycle() + return cycleCtx.Err() + } + runAsync(t, ctx, o) + + // A cycle that self-cancels and returns while the parent is live must be + // rebuilt, not end the supervision loop. + waitFor(t, func() bool { return cycles.Load() >= 3 }, "manager to be rebuilt after an internal per-cycle cancel") +} + // waitFor polls cond up to ~2s, failing the test if it never becomes true. func waitFor(t *testing.T, cond func() bool, what string) { t.Helper() From 2d3af7e95a161c768aad4f06368c738d0e58a0a6 Mon Sep 17 00:00:00 2001 From: "cortex-ai-agents[bot]" <279748396+cortex-ai-agents[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2026 13:41:07 +0200 Subject: [PATCH 7/7] Release cortex v0.4.1, cortex-shim v0.1.17 (#1196) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Bump library charts: cortex 0.4.0→0.4.1, cortex-shim 0.1.16→0.1.17 - Bump all dependent bundle charts (cortex-nova, cortex-cinder, cortex-manila, cortex-crds, cortex-ironcore, cortex-pods to 0.0.90; cortex-placement-shim to 0.1.17) - Add changelog entry for this release ## Chart bumps | Chart | Previous | New | |---|---|---| | `cortex` (library) | `0.4.0` / `sha-91df27a0` | `0.4.1` / `sha-cd38777a` | | `cortex-shim` (library) | `0.1.16` / `sha-b577e306` | `0.1.17` / `sha-cd38777a` | | `cortex-placement-shim` (bundle) | `0.1.16` | `0.1.17` | | `cortex-nova` (bundle) | `0.0.89` | `0.0.90` | | `cortex-cinder` (bundle) | `0.0.89` | `0.0.90` | | `cortex-manila` (bundle) | `0.0.89` | `0.0.90` | | `cortex-crds` (bundle) | `0.0.89` | `0.0.90` | | `cortex-ironcore` (bundle) | `0.0.89` | `0.0.90` | | `cortex-pods` (bundle) | `0.0.89` | `0.0.90` | No bumps for: cortex-postgres. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: cortex-ai-agents[bot] <279748396+cortex-ai-agents[bot]@users.noreply.github.com> Co-authored-by: juliusclausnitzer Co-authored-by: Claude Opus 4.7 --- CHANGELOG.md | 52 +++++++++++++++++++ helm/bundles/cortex-cinder/Chart.yaml | 6 +-- helm/bundles/cortex-crds/Chart.yaml | 4 +- helm/bundles/cortex-ironcore/Chart.yaml | 4 +- helm/bundles/cortex-manila/Chart.yaml | 6 +-- helm/bundles/cortex-nova/Chart.yaml | 6 +-- helm/bundles/cortex-placement-shim/Chart.yaml | 4 +- helm/bundles/cortex-pods/Chart.yaml | 4 +- helm/library/cortex-shim/Chart.yaml | 4 +- helm/library/cortex/Chart.yaml | 4 +- 10 files changed, 73 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6a29becc..8c5a05502 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,57 @@ # Changelog +## 2026-09-07 — [#1195](https://github.com/cobaltcore-dev/cortex/pull/1195) + +### cortex-shim v0.1.17 (sha-cd38777a) + +New features: +- Remote apiserver liveness probe — adds a per-remote reachability probe (`GET /readyz`) that detects when a remote apiserver becomes unreachable after its informer cache has synced; after a configurable failure threshold (default 3 × 10s), the probe cancels the manager cycle context so the existing self-healing supervisor rebuilds the manager with current config ([#1190](https://github.com/cobaltcore-dev/cortex/pull/1190)) +- `cortex_multicluster_remote_apiserver_reachable{host}` gauge — exposes per-remote apiserver reachability on the process-lifetime monitor, surviving manager rebuilds ([#1190](https://github.com/cobaltcore-dev/cortex/pull/1190)) +- `CortexPlacementShimRemoteApiserverUnreachable` alert — fires when a remote apiserver is unreachable ([#1190](https://github.com/cobaltcore-dev/cortex/pull/1190)) + +Non-breaking changes: +- Fix multicluster recorder for controller-runtime v0.25.0 `EventRecorder` interface change — adds `AnnotatedEventf` method to `MultiClusterRecorder` to satisfy the wider `recorder.EventRecorder` interface ([#1191](https://github.com/cobaltcore-dev/cortex/pull/1191)) +- Update `sigs.k8s.io/controller-runtime` to v0.25.0 ([#1188](https://github.com/cobaltcore-dev/cortex/pull/1188)) +- Update `sigs.k8s.io/controller-tools` to v0.22.0 (CRD annotation bump) ([#1186](https://github.com/cobaltcore-dev/cortex/pull/1186)) +- Update `github.com/sapcc/go-bits` ([#1187](https://github.com/cobaltcore-dev/cortex/pull/1187)) +- Update `kube-prometheus-stack` to v89 ([#1189](https://github.com/cobaltcore-dev/cortex/pull/1189)) + +### cortex v0.4.1 (sha-cd38777a) + +Non-breaking changes: +- Fix multicluster recorder for controller-runtime v0.25.0 `EventRecorder` interface change ([#1191](https://github.com/cobaltcore-dev/cortex/pull/1191)) +- CRDs regenerated with controller-tools v0.22.0 ([#1186](https://github.com/cobaltcore-dev/cortex/pull/1186)) +- Update `sigs.k8s.io/controller-runtime` to v0.25.0 ([#1188](https://github.com/cobaltcore-dev/cortex/pull/1188)) +- Update `github.com/sapcc/go-bits` ([#1187](https://github.com/cobaltcore-dev/cortex/pull/1187)) + +### cortex-placement-shim v0.1.17 + +Includes updated chart cortex-shim v0.1.17. + +### cortex-nova v0.0.90 + +Includes updated chart cortex v0.4.1. + +### cortex-cinder v0.0.90 + +Includes updated chart cortex v0.4.1. + +### cortex-manila v0.0.90 + +Includes updated chart cortex v0.4.1. + +### cortex-crds v0.0.90 + +Includes updated chart cortex v0.4.1. + +### cortex-ironcore v0.0.90 + +Includes updated chart cortex v0.4.1. + +### cortex-pods v0.0.90 + +Includes updated chart cortex v0.4.1. + ## 2026-09-02 — [#1184](https://github.com/cobaltcore-dev/cortex/pull/1184) ### cortex-shim v0.1.16 (sha-b577e306) diff --git a/helm/bundles/cortex-cinder/Chart.yaml b/helm/bundles/cortex-cinder/Chart.yaml index bd7b362fd..3e38986a9 100644 --- a/helm/bundles/cortex-cinder/Chart.yaml +++ b/helm/bundles/cortex-cinder/Chart.yaml @@ -5,7 +5,7 @@ apiVersion: v2 name: cortex-cinder description: A Helm chart deploying Cortex for Cinder. type: application -version: 0.0.89 +version: 0.0.90 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex-postgres @@ -16,12 +16,12 @@ dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.4.0 + version: 0.4.1 alias: cortex-knowledge-controllers # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.4.0 + version: 0.4.1 alias: cortex-scheduling-controllers # Owner info adds a configmap to the kubernetes cluster with information on diff --git a/helm/bundles/cortex-crds/Chart.yaml b/helm/bundles/cortex-crds/Chart.yaml index 5a4259d43..387f7f3c6 100644 --- a/helm/bundles/cortex-crds/Chart.yaml +++ b/helm/bundles/cortex-crds/Chart.yaml @@ -5,13 +5,13 @@ apiVersion: v2 name: cortex-crds description: A Helm chart deploying Cortex CRDs. type: application -version: 0.0.89 +version: 0.0.90 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.4.0 + version: 0.4.1 # Owner info adds a configmap to the kubernetes cluster with information on # the service owner. This makes it easier to find out who to contact in case diff --git a/helm/bundles/cortex-ironcore/Chart.yaml b/helm/bundles/cortex-ironcore/Chart.yaml index 9897d7257..8d6b7c3d4 100644 --- a/helm/bundles/cortex-ironcore/Chart.yaml +++ b/helm/bundles/cortex-ironcore/Chart.yaml @@ -5,13 +5,13 @@ apiVersion: v2 name: cortex-ironcore description: A Helm chart deploying Cortex for IronCore. type: application -version: 0.0.89 +version: 0.0.90 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.4.0 + version: 0.4.1 # Owner info adds a configmap to the kubernetes cluster with information on # the service owner. This makes it easier to find out who to contact in case diff --git a/helm/bundles/cortex-manila/Chart.yaml b/helm/bundles/cortex-manila/Chart.yaml index 12b1e3b07..122928b1a 100644 --- a/helm/bundles/cortex-manila/Chart.yaml +++ b/helm/bundles/cortex-manila/Chart.yaml @@ -5,7 +5,7 @@ apiVersion: v2 name: cortex-manila description: A Helm chart deploying Cortex for Manila. type: application -version: 0.0.89 +version: 0.0.90 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex-postgres @@ -16,12 +16,12 @@ dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.4.0 + version: 0.4.1 alias: cortex-knowledge-controllers # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.4.0 + version: 0.4.1 alias: cortex-scheduling-controllers # Owner info adds a configmap to the kubernetes cluster with information on diff --git a/helm/bundles/cortex-nova/Chart.yaml b/helm/bundles/cortex-nova/Chart.yaml index aeee5b049..20627b22c 100644 --- a/helm/bundles/cortex-nova/Chart.yaml +++ b/helm/bundles/cortex-nova/Chart.yaml @@ -5,7 +5,7 @@ apiVersion: v2 name: cortex-nova description: A Helm chart deploying Cortex for Nova. type: application -version: 0.0.89 +version: 0.0.90 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex-postgres @@ -16,12 +16,12 @@ dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.4.0 + version: 0.4.1 alias: cortex-knowledge-controllers # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.4.0 + version: 0.4.1 alias: cortex-scheduling-controllers # Owner info adds a configmap to the kubernetes cluster with information on diff --git a/helm/bundles/cortex-placement-shim/Chart.yaml b/helm/bundles/cortex-placement-shim/Chart.yaml index 0418984e7..545915da1 100644 --- a/helm/bundles/cortex-placement-shim/Chart.yaml +++ b/helm/bundles/cortex-placement-shim/Chart.yaml @@ -5,13 +5,13 @@ apiVersion: v2 name: cortex-placement-shim description: A Helm chart deploying the Cortex placement shim. type: application -version: 0.1.16 +version: 0.1.17 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex-shim - name: cortex-shim repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.1.16 + version: 0.1.17 # Owner info adds a configmap to the kubernetes cluster with information on # the service owner. This makes it easier to find out who to contact in case # of issues. See: https://github.com/sapcc/helm-charts/pkgs/container/helm-charts%2Fowner-info diff --git a/helm/bundles/cortex-pods/Chart.yaml b/helm/bundles/cortex-pods/Chart.yaml index e496f3387..6375357ca 100644 --- a/helm/bundles/cortex-pods/Chart.yaml +++ b/helm/bundles/cortex-pods/Chart.yaml @@ -5,13 +5,13 @@ apiVersion: v2 name: cortex-pods description: A Helm chart deploying Cortex for Pods. type: application -version: 0.0.89 +version: 0.0.90 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.4.0 + version: 0.4.1 # Owner info adds a configmap to the kubernetes cluster with information on # the service owner. This makes it easier to find out who to contact in case diff --git a/helm/library/cortex-shim/Chart.yaml b/helm/library/cortex-shim/Chart.yaml index e7b4e4acb..860b5d022 100644 --- a/helm/library/cortex-shim/Chart.yaml +++ b/helm/library/cortex-shim/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: cortex-shim description: A Helm chart to distribute cortex shims. type: application -version: 0.1.16 -appVersion: "sha-b577e306" +version: 0.1.17 +appVersion: "sha-cd38777a" icon: "https://example.com/icon.png" dependencies: [] diff --git a/helm/library/cortex/Chart.yaml b/helm/library/cortex/Chart.yaml index b49790ae6..7ccbf72ea 100644 --- a/helm/library/cortex/Chart.yaml +++ b/helm/library/cortex/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: cortex description: A Helm chart to distribute cortex. type: application -version: 0.4.0 -appVersion: "sha-91df27a0" +version: 0.4.1 +appVersion: "sha-cd38777a" icon: "https://example.com/icon.png" dependencies: []