Skip to content

feat(kubernetes): fall back to system CA roots when no CA is configured#5961

Merged
Skarlso merged 3 commits intoexternal-secrets:mainfrom
rajsinghtech:feat/kubernetes-system-ca-roots
Feb 27, 2026
Merged

feat(kubernetes): fall back to system CA roots when no CA is configured#5961
Skarlso merged 3 commits intoexternal-secrets:mainfrom
rajsinghtech:feat/kubernetes-system-ca-roots

Conversation

@rajsinghtech
Copy link
Copy Markdown
Contributor

@rajsinghtech rajsinghtech commented Feb 16, 2026

Closes #5960. Replaces #5904 / #5905.

When no caBundle or caProvider is configured, fall back to system certificate roots instead of rejecting the configuration. Emits an admission warning so users know system roots are being used.

Changes

  • validate.go: Replace hard error with admission warning when no CA is configured
  • validate_test.go: Update test expectations
  • kubernetes.md: Document system CA root fallback

Summary

Allows the Kubernetes provider to fall back to system certificate roots when neither caBundle nor caProvider is configured, instead of rejecting the configuration. An admission warning (warnNoCAConfigured) is emitted to inform users that system roots are being used.

Changes

  • providers/v1/kubernetes/validate.go

    • Emit a non-fatal admission warning (warnNoCAConfigured) when no CA is configured and accumulate warnings in ValidateStore so callers can observe warnings alongside errors.
    • Replace hard errors with warnings where appropriate (no-CA case); still return errors for genuine validation failures (CAProvider namespace checks, auth (client cert / token) validation, secret selector validation, service-account validation).
    • Adds public constant warnNoCAConfigured.
  • providers/v1/kubernetes/validate_test.go

    • Tests updated to capture and assert warnings in addition to errors.
    • New/updated test cases: missing CA yields a warning; authRef suppresses the warning; token auth without CA returns only a warning; warnings returned alongside other validation errors.
  • docs/provider/kubernetes.md

    • Document system CA root fallback, clarifying when explicit caBundle/caProvider is required (internal/self-signed API servers) and when it can be omitted (remote servers with well-known CAs).
    • Add examples showing SecretStore relying on system roots and guidance for inline caBundle or using kube-root-ca.crt via caProvider.

Notes

  • Behavior change is non-breaking: configurations previously rejected for missing CA are now accepted with an admission warning to improve usability for remote API servers using standard CAs.

@github-actions github-actions bot added area/kubernetes Issues / Pull Requests related to kubernetes kind/feature Categorizes issue or PR as related to a new feature. kind/documentation Categorizes issue or PR as related to documentation. size/s labels Feb 16, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Feb 16, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Validation for the Kubernetes provider now returns non-fatal warnings (e.g., when no CA is configured) alongside errors; docs updated to clarify optional CA usage, differences between system/well-known and internal/self-signed CAs, and to add examples for omitting or providing caBundle/caProvider.

Changes

Cohort / File(s) Summary
Kubernetes Provider Documentation
docs/provider/kubernetes.md
Clarifies Target API-Server CA behavior: system/well-known CAs may be used when caBundle/caProvider omitted; notes internal/self-signed CA requirements; adds examples for omitting CA, inline caBundle, and caProvider via ConfigMap.
Kubernetes Provider Validation logic
providers/v1/kubernetes/validate.go
Validation now accumulates and returns non-fatal warnings instead of failing when no CA config is provided; adds exported constant warnNoCAConfigured; propagates warnings through CAProvider namespace checks and various auth/secret validations.
Kubernetes Provider Validation tests
providers/v1/kubernetes/validate_test.go
Tests updated to receive and assert on (warnings, error) from ValidateStore; new/adjusted cases check presence, absence, and content of warnings (including suppression when authRef is used) while preserving error checks.
🚥 Pre-merge checks | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Merge Conflict Detection ⚠️ Warning ❌ Merge conflicts detected (7 files):

⚔️ .github/workflows/codeql.yml (content)
⚔️ .github/workflows/publish.yml (content)
⚔️ .github/workflows/scorecard.yml (content)
⚔️ docs/provider/kubernetes.md (content)
⚔️ hack/api-docs/requirements.txt (content)
⚔️ providers/v1/kubernetes/validate.go (content)
⚔️ providers/v1/kubernetes/validate_test.go (content)

These conflicts must be resolved before merging into main.
Resolve conflicts locally and push changes to this branch.

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


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

❤️ Share

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

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
providers/v1/kubernetes/validate_test.go (1)

281-300: Consider adding a test for warning + error coexistence.

The "valid auth" case has CABundle set so no warning fires. There's no test where CA is absent and another field is invalid — which would return both a warning and an error. This would strengthen coverage of the warnings-propagation logic.

Example test case
+		{
+			name: "empty ca with invalid auth returns warning and error",
+			store: &esv1.SecretStore{
+				Spec: esv1.SecretStoreSpec{
+					Provider: &esv1.SecretStoreProvider{
+						Kubernetes: &esv1.KubernetesProvider{
+							Auth: &esv1.KubernetesAuth{
+								Token: &esv1.TokenAuth{
+									BearerToken: v1.SecretKeySelector{
+										Name: "",
+									},
+								},
+							},
+						},
+					},
+				},
+			},
+			wantErr:     true,
+			wantWarning: true,
+		},

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
providers/v1/kubernetes/validate_test.go (1)

346-354: Warning assertions look correct but could be slightly more robust.

The three-part assertion (expected-but-missing, wrong-content, unexpected) covers the current single-warning scenario well. One optional improvement: if additional warning types are introduced later, checking only warnings[0] on Line 349 may miss regressions. You could assert on the full slice (e.g., slices.Contains) instead.

♻️ Optional: use contains check for future-proofing
-			if tt.wantWarning && len(warnings) > 0 && warnings[0] != warnNoCAConfigured {
-				t.Errorf("ProviderKubernetes.ValidateStore() warning = %q, want %q", warnings[0], warnNoCAConfigured)
+			if tt.wantWarning && len(warnings) > 0 && !slices.Contains(warnings, warnNoCAConfigured) {
+				t.Errorf("ProviderKubernetes.ValidateStore() warnings = %v, expected to contain %q", warnings, warnNoCAConfigured)
 			}

@rajsinghtech rajsinghtech force-pushed the feat/kubernetes-system-ca-roots branch from b149c8c to 77fba17 Compare February 16, 2026 02:26
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
providers/v1/kubernetes/validate_test.go (1)

346-354: Warning assertions don't check the total count.

When wantWarning is true, the test verifies warnings[0] but doesn't assert len(warnings) == 1. If a future change accidentally appends extra warnings, these tests won't catch it.

💡 Suggested tightening
 			if tt.wantWarning && len(warnings) == 0 {
 				t.Error("ProviderKubernetes.ValidateStore() expected warnings but got none")
 			}
+			if tt.wantWarning && len(warnings) != 1 {
+				t.Errorf("ProviderKubernetes.ValidateStore() expected exactly 1 warning, got %d: %v", len(warnings), warnings)
+			}
 			if tt.wantWarning && len(warnings) > 0 && warnings[0] != warnNoCAConfigured {

@rajsinghtech rajsinghtech force-pushed the feat/kubernetes-system-ca-roots branch from 77fba17 to 2b8a1e0 Compare February 16, 2026 18:27
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
providers/v1/kubernetes/validate_test.go (1)

367-375: Consider using t.Fatal on the first guard or restructuring as if/else.

Because t.Error does not stop execution, when wantWarning is true and len(warnings) == 0, both Line 368 and Line 370 are evaluated (the second is a no-op since len(warnings) > 0 is false). This is harmless but could be clearer:

♻️ Optional: simplify with early return
-			if tt.wantWarning && len(warnings) == 0 {
-				t.Error("ProviderKubernetes.ValidateStore() expected warnings but got none")
-			}
-			if tt.wantWarning && len(warnings) > 0 && warnings[0] != warnNoCAConfigured {
-				t.Errorf("ProviderKubernetes.ValidateStore() warning = %q, want %q", warnings[0], warnNoCAConfigured)
-			}
-			if !tt.wantWarning && len(warnings) > 0 {
-				t.Errorf("ProviderKubernetes.ValidateStore() unexpected warnings: %v", warnings)
+			if tt.wantWarning {
+				if len(warnings) == 0 {
+					t.Fatal("ProviderKubernetes.ValidateStore() expected warnings but got none")
+				}
+				if warnings[0] != warnNoCAConfigured {
+					t.Errorf("ProviderKubernetes.ValidateStore() warning = %q, want %q", warnings[0], warnNoCAConfigured)
+				}
+			} else if len(warnings) > 0 {
+				t.Errorf("ProviderKubernetes.ValidateStore() unexpected warnings: %v", warnings)
 			}

@rajsinghtech rajsinghtech force-pushed the feat/kubernetes-system-ca-roots branch from 2b8a1e0 to 1c2e4b0 Compare February 16, 2026 18:39
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
providers/v1/kubernetes/validate_test.go (1)

367-376: Consider asserting the exact warning count for tighter coverage.

The current check verifies len(warnings) > 0 and inspects only warnings[0]. If the validation logic accidentally appends duplicate or spurious warnings, this won't catch it. A stricter assertion would guard against regressions.

🔧 Proposed tightening of the assertion
 			if tt.wantWarning {
-				if len(warnings) == 0 {
-					t.Fatal("ProviderKubernetes.ValidateStore() expected warnings but got none")
+				if len(warnings) != 1 {
+					t.Fatalf("ProviderKubernetes.ValidateStore() expected exactly 1 warning, got %d: %v", len(warnings), warnings)
 				}
 				if warnings[0] != warnNoCAConfigured {
 					t.Errorf("ProviderKubernetes.ValidateStore() warning = %q, want %q", warnings[0], warnNoCAConfigured)

@rajsinghtech rajsinghtech force-pushed the feat/kubernetes-system-ca-roots branch from 1c2e4b0 to 622b38b Compare February 16, 2026 18:46
@rajsinghtech rajsinghtech force-pushed the feat/kubernetes-system-ca-roots branch from 622b38b to 20d9b25 Compare February 17, 2026 17:07
@sonarqubecloud
Copy link
Copy Markdown

@Skarlso Skarlso merged commit 1dd00cf into external-secrets:main Feb 27, 2026
29 checks passed
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Mar 6, 2026
…2.1.0 (#4491)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [external-secrets/external-secrets](https://github.com/external-secrets/external-secrets) | minor | `v2.0.1` → `v2.1.0` |

---

### Release Notes

<details>
<summary>external-secrets/external-secrets (external-secrets/external-secrets)</summary>

### [`v2.1.0`](https://github.com/external-secrets/external-secrets/releases/tag/v2.1.0)

[Compare Source](external-secrets/external-secrets@v2.0.1...v2.1.0)

Image: `ghcr.io/external-secrets/external-secrets:v2.1.0`
Image: `ghcr.io/external-secrets/external-secrets:v2.1.0-ubi`
Image: `ghcr.io/external-secrets/external-secrets:v2.1.0-ubi-boringssl`

<!-- Release notes generated using configuration in .github/release.yml at main -->

#### What's Changed

##### General

- chore(release): Update helm chart by [@&#8203;evrardj-roche](https://github.com/evrardj-roche) in [#&#8203;5981](external-secrets/external-secrets#5981)
- fix: cosign verify does not use signing config by [@&#8203;gusfcarvalho](https://github.com/gusfcarvalho) in [#&#8203;5982](external-secrets/external-secrets#5982)
- docs: Update release process by [@&#8203;evrardj-roche](https://github.com/evrardj-roche) in [#&#8203;5980](external-secrets/external-secrets#5980)
- fix: allow cross-namespace push with ClusterSecretStore objects by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5998](external-secrets/external-secrets#5998)
- feat(charts): add new flag enable leader for cert-manager by [@&#8203;nutmos](https://github.com/nutmos) in [#&#8203;5863](external-secrets/external-secrets#5863)
- feat(kubernetes): fall back to system CA roots when no CA is configured by [@&#8203;rajsinghtech](https://github.com/rajsinghtech) in [#&#8203;5961](external-secrets/external-secrets#5961)
- feat: dedup sbom but keep it monolithic by [@&#8203;moolen](https://github.com/moolen) in [#&#8203;6004](external-secrets/external-secrets#6004)
- fix: add missing metrics and fundamentally fix the caching logic by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5894](external-secrets/external-secrets#5894)
- docs: designate Oracle Vault provider as 'stable' by [@&#8203;anders-swanson](https://github.com/anders-swanson) in [#&#8203;6020](external-secrets/external-secrets#6020)
- docs: Oracle Vault provider capabilities by [@&#8203;anders-swanson](https://github.com/anders-swanson) in [#&#8203;6023](external-secrets/external-secrets#6023)
- docs(azurekv): cert-manager pushsecret example and cleanups by [@&#8203;illrill](https://github.com/illrill) in [#&#8203;5972](external-secrets/external-secrets#5972)
- feat(kubernetes): implement SecretExists by [@&#8203;Saku2](https://github.com/Saku2) in [#&#8203;5973](external-secrets/external-secrets#5973)
- fix(charts): Fix wrongly set annotations for cert-controller metrics service by [@&#8203;josemaia](https://github.com/josemaia) in [#&#8203;6029](external-secrets/external-secrets#6029)
- feat(providers): Nebius MysteryBox integration by [@&#8203;greenmapc](https://github.com/greenmapc) in [#&#8203;5868](external-secrets/external-secrets#5868)

##### Dependencies

- chore(deps): bump aquasecurity/trivy-action from 0.34.0 to 0.34.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5986](external-secrets/external-secrets#5986)
- chore(deps): bump mkdocs-material from 9.7.1 to 9.7.2 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5992](external-secrets/external-secrets#5992)
- chore(deps): bump ubi9/ubi from `b8923f5` to `cecb1cd` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5984](external-secrets/external-secrets#5984)
- chore(deps): bump helm/kind-action from 1.13.0 to 1.14.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5985](external-secrets/external-secrets#5985)
- chore(deps): bump actions/dependency-review-action from 4.8.2 to 4.8.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5990](external-secrets/external-secrets#5990)
- chore(deps): bump github/codeql-action from 4.32.3 to 4.32.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5989](external-secrets/external-secrets#5989)
- chore(deps): bump goreleaser/goreleaser-action from 6.4.0 to 7.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5987](external-secrets/external-secrets#5987)
- chore(deps): bump regex from 2026.1.15 to 2026.2.19 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5991](external-secrets/external-secrets#5991)
- chore(deps): bump actions/stale from 10.1.1 to 10.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5988](external-secrets/external-secrets#5988)
- chore(deps): bump regex from 2026.2.19 to 2026.2.28 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6012](external-secrets/external-secrets#6012)
- chore(deps): bump mkdocs-material from 9.7.2 to 9.7.3 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6014](external-secrets/external-secrets#6014)
- chore(deps): bump step-security/harden-runner from 2.14.2 to 2.15.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6015](external-secrets/external-secrets#6015)
- chore(deps): bump anchore/sbom-action from 0.22.2 to 0.23.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6016](external-secrets/external-secrets#6016)
- chore(deps): bump certifi from 2026.1.4 to 2026.2.25 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6013](external-secrets/external-secrets#6013)
- chore(deps): bump actions/setup-go from 6.2.0 to 6.3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6010](external-secrets/external-secrets#6010)
- chore(deps): bump hashicorp/setup-terraform from [`ce70bcf`](external-secrets/external-secrets@ce70bcf) to [`5e8dbf3`](external-secrets/external-secrets@5e8dbf3) by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6011](external-secrets/external-secrets#6011)
- chore(deps): bump actions/attest-build-provenance from 3.2.0 to 4.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6009](external-secrets/external-secrets#6009)
- chore(deps): bump distroless/static from `972618c` to `28efbe9` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6008](external-secrets/external-secrets#6008)

#### New Contributors

- [@&#8203;nutmos](https://github.com/nutmos) made their first contribution in [#&#8203;5863](external-secrets/external-secrets#5863)
- [@&#8203;rajsinghtech](https://github.com/rajsinghtech) made their first contribution in [#&#8203;5961](external-secrets/external-secrets#5961)
- [@&#8203;illrill](https://github.com/illrill) made their first contribution in [#&#8203;5972](external-secrets/external-secrets#5972)
- [@&#8203;Saku2](https://github.com/Saku2) made their first contribution in [#&#8203;5973](external-secrets/external-secrets#5973)
- [@&#8203;greenmapc](https://github.com/greenmapc) made their first contribution in [#&#8203;5868](external-secrets/external-secrets#5868)

**Full Changelog**: <external-secrets/external-secrets@v2.0.1...v2.1.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **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.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41MS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4491
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Mar 7, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [external-secrets](https://github.com/external-secrets/external-secrets) | minor | `2.0.1` → `2.1.0` |

---

### Release Notes

<details>
<summary>external-secrets/external-secrets (external-secrets)</summary>

### [`v2.1.0`](https://github.com/external-secrets/external-secrets/releases/tag/v2.1.0)

[Compare Source](external-secrets/external-secrets@v2.0.1...v2.1.0)

Image: `ghcr.io/external-secrets/external-secrets:v2.1.0`
Image: `ghcr.io/external-secrets/external-secrets:v2.1.0-ubi`
Image: `ghcr.io/external-secrets/external-secrets:v2.1.0-ubi-boringssl`

<!-- Release notes generated using configuration in .github/release.yml at main -->

#### What's Changed

##### General

- chore(release): Update helm chart by [@&#8203;evrardj-roche](https://github.com/evrardj-roche) in [#&#8203;5981](external-secrets/external-secrets#5981)
- fix: cosign verify does not use signing config by [@&#8203;gusfcarvalho](https://github.com/gusfcarvalho) in [#&#8203;5982](external-secrets/external-secrets#5982)
- docs: Update release process by [@&#8203;evrardj-roche](https://github.com/evrardj-roche) in [#&#8203;5980](external-secrets/external-secrets#5980)
- fix: allow cross-namespace push with ClusterSecretStore objects by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5998](external-secrets/external-secrets#5998)
- feat(charts): add new flag enable leader for cert-manager by [@&#8203;nutmos](https://github.com/nutmos) in [#&#8203;5863](external-secrets/external-secrets#5863)
- feat(kubernetes): fall back to system CA roots when no CA is configured by [@&#8203;rajsinghtech](https://github.com/rajsinghtech) in [#&#8203;5961](external-secrets/external-secrets#5961)
- feat: dedup sbom but keep it monolithic by [@&#8203;moolen](https://github.com/moolen) in [#&#8203;6004](external-secrets/external-secrets#6004)
- fix: add missing metrics and fundamentally fix the caching logic by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5894](external-secrets/external-secrets#5894)
- docs: designate Oracle Vault provider as 'stable' by [@&#8203;anders-swanson](https://github.com/anders-swanson) in [#&#8203;6020](external-secrets/external-secrets#6020)
- docs: Oracle Vault provider capabilities by [@&#8203;anders-swanson](https://github.com/anders-swanson) in [#&#8203;6023](external-secrets/external-secrets#6023)
- docs(azurekv): cert-manager pushsecret example and cleanups by [@&#8203;illrill](https://github.com/illrill) in [#&#8203;5972](external-secrets/external-secrets#5972)
- feat(kubernetes): implement SecretExists by [@&#8203;Saku2](https://github.com/Saku2) in [#&#8203;5973](external-secrets/external-secrets#5973)
- fix(charts): Fix wrongly set annotations for cert-controller metrics service by [@&#8203;josemaia](https://github.com/josemaia) in [#&#8203;6029](external-secrets/external-secrets#6029)
- feat(providers): Nebius MysteryBox integration by [@&#8203;greenmapc](https://github.com/greenmapc) in [#&#8203;5868](external-secrets/external-secrets#5868)

##### Dependencies

- chore(deps): bump aquasecurity/trivy-action from 0.34.0 to 0.34.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5986](external-secrets/external-secrets#5986)
- chore(deps): bump mkdocs-material from 9.7.1 to 9.7.2 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5992](external-secrets/external-secrets#5992)
- chore(deps): bump ubi9/ubi from `b8923f5` to `cecb1cd` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5984](external-secrets/external-secrets#5984)
- chore(deps): bump helm/kind-action from 1.13.0 to 1.14.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5985](external-secrets/external-secrets#5985)
- chore(deps): bump actions/dependency-review-action from 4.8.2 to 4.8.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5990](external-secrets/external-secrets#5990)
- chore(deps): bump github/codeql-action from 4.32.3 to 4.32.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5989](external-secrets/external-secrets#5989)
- chore(deps): bump goreleaser/goreleaser-action from 6.4.0 to 7.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5987](external-secrets/external-secrets#5987)
- chore(deps): bump regex from 2026.1.15 to 2026.2.19 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5991](external-secrets/external-secrets#5991)
- chore(deps): bump actions/stale from 10.1.1 to 10.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5988](external-secrets/external-secrets#5988)
- chore(deps): bump regex from 2026.2.19 to 2026.2.28 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6012](external-secrets/external-secrets#6012)
- chore(deps): bump mkdocs-material from 9.7.2 to 9.7.3 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6014](external-secrets/external-secrets#6014)
- chore(deps): bump step-security/harden-runner from 2.14.2 to 2.15.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6015](external-secrets/external-secrets#6015)
- chore(deps): bump anchore/sbom-action from 0.22.2 to 0.23.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6016](external-secrets/external-secrets#6016)
- chore(deps): bump certifi from 2026.1.4 to 2026.2.25 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6013](external-secrets/external-secrets#6013)
- chore(deps): bump actions/setup-go from 6.2.0 to 6.3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6010](external-secrets/external-secrets#6010)
- chore(deps): bump hashicorp/setup-terraform from [`ce70bcf`](external-secrets/external-secrets@ce70bcf) to [`5e8dbf3`](external-secrets/external-secrets@5e8dbf3) by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6011](external-secrets/external-secrets#6011)
- chore(deps): bump actions/attest-build-provenance from 3.2.0 to 4.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6009](external-secrets/external-secrets#6009)
- chore(deps): bump distroless/static from `972618c` to `28efbe9` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;6008](external-secrets/external-secrets#6008)

#### New Contributors

- [@&#8203;nutmos](https://github.com/nutmos) made their first contribution in [#&#8203;5863](external-secrets/external-secrets#5863)
- [@&#8203;rajsinghtech](https://github.com/rajsinghtech) made their first contribution in [#&#8203;5961](external-secrets/external-secrets#5961)
- [@&#8203;illrill](https://github.com/illrill) made their first contribution in [#&#8203;5972](external-secrets/external-secrets#5972)
- [@&#8203;Saku2](https://github.com/Saku2) made their first contribution in [#&#8203;5973](external-secrets/external-secrets#5973)
- [@&#8203;greenmapc](https://github.com/greenmapc) made their first contribution in [#&#8203;5868](external-secrets/external-secrets#5868)

**Full Changelog**: <external-secrets/external-secrets@v2.0.1...v2.1.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **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.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4516
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
AlexOQ pushed a commit to AlexOQ/external-secrets that referenced this pull request Mar 18, 2026
…ed (external-secrets#5961)

Co-authored-by: Gergely Bräutigam <gergely.brautigam@sap.com>
Signed-off-by: AlexOQ <30403857+AlexOQ@users.noreply.github.com>
dsp0x4 pushed a commit to dsp0x4/external-secrets that referenced this pull request Mar 22, 2026
…ed (external-secrets#5961)

Co-authored-by: Gergely Bräutigam <gergely.brautigam@sap.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/kubernetes Issues / Pull Requests related to kubernetes kind/documentation Categorizes issue or PR as related to documentation. kind/feature Categorizes issue or PR as related to a new feature. size/m size/s

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

feat(kubernetes): fall back to system CA roots when no CA is configured

5 participants