tag:github.com,2008:https://github.com/dotnet/dotnet-operator-sdk/releases
Tags from dotnet-operator-sdk
2026-05-21T13:27:29Z
tag:github.com,2008:Repository/261514821/v11.1.0-prerelease.1
2026-05-21T13:29:24Z
v11.1.0-prerelease.1
<p>feat: Add extension points for resource generation (<a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1118">#1118</a>)</p>
<p><span class="issue-keyword tooltipped tooltipped-se">Closes</span> <a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/issues/1114">#1114</a></p>
<p>### Summary</p>
<p>Introduces factory interfaces that let operators customize how CRDs,
<br />events, and webhook configurations are generated. All factories are
<br />registered with `TryAdd`, so users can register their own
<br />implementations before calling `AddKubernetesOperator()` /
<br />`AddDevelopmentTunnel()` / `UseCertificateProvider()` to override the
<br />defaults.</p>
<p>### New abstractions (`KubeOps.Abstractions`)</p>
<p>| Interface | Purpose |
<br />|---|---|
<br />| `ICrdResourceFactory` | Controls how `V1CustomResourceDefinition`
<br />resources are created from entity types |
<br />| `IEventResourceFactory` | Controls how `Corev1Event` instances are
<br />constructed when publishing events |
<br />| `IWebhookConfigurationFactory` | Controls how
<br />`V1MutatingWebhookConfiguration` and `V1ValidatingWebhookConfiguration`
<br />are built |</p>
<p>Supporting types: `MutatingWebhookRegistration`,
<br />`ValidatingWebhookRegistration` (records carrying entity metadata, URI,
<br />and CA bundle).</p>
<p>### Default implementations</p>
<p>- **`KubeOpsCrdResourceFactory`** — Uses the transpiler with a single
<br />shared `MetadataLoadContext` across all entity types. Exposes
<br />`CreateCrdForEntityType()` as a virtual override point.
<br />- **`KubeOpsEventResourceFactory`** — Builds `Corev1Event` with a
<br />SHA-512 hashed name for Kubernetes naming compliance.
<br />- **`KubeOpsWebhookConfigurationFactory`** — Constructs webhook configs
<br />with virtual `CreateMutatingWebhook()` / `CreateValidatingWebhook()`
<br />methods for per-webhook customization.</p>
<p>### Other changes</p>
<p>- **`IWebhookAttribute`** interface added to `KubeOps.Operator.Web` —
<br />implemented by `MutationWebhookAttribute`, `ValidationWebhookAttribute`,
<br />and `ConversionWebhookAttribute`. `WebhookServiceBase.GetWebHookUri()`
<br />falls back to `RouteAttribute.Template` for backward compatibility with
<br />custom attributes.
<br />- **`CrdInstaller`** refactored to accept `ICrdResourceFactory` via DI
<br />and includes retry logic with exponential backoff for transient API
<br />server errors.
<br />- **`KubeOpsEventPublisherFactory`** simplified — event construction
<br />delegated to `IEventResourceFactory`; the publisher only handles
<br />get-or-create, count increment, and save.
<br />- Event name hashing and `originalName` annotation logic moved from the
<br />publisher into `KubeOpsEventResourceFactory`.</p>
<p>### Breaking changes</p>
<p>None. All modified constructors are `internal`. New interfaces and types
<br />are purely additive.</p>
<p>### Tests</p>
<p>- `CrdInstallerTest` — verifies custom factory DI override, transient
<br />error retry, non-transient error handling, and stop cancellation.
<br />- `KubeOpsCrdResourceFactoryTest` — verifies default CRD transpilation.
<br />- `KubeOpsEventResourceFactoryTest` — verifies event properties and
<br />namespace defaulting.
<br />- `EventPublisherCustomResourceFactoryTest` — end-to-end test verifying
<br />custom factory output flows through the publisher to the Kubernetes
<br />client.</p>
github-actions
tag:github.com,2008:Repository/261514821/v11.0.1-prerelease.1
2026-05-20T06:08:44Z
v11.0.1-prerelease.1
<p>deps(core): update dependency sonaranalyzer.csharp to 10.26.0.140279 (<a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1124">#…</a></p>
<p><a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1124">…1124</a>)</p>
<p>This PR contains the following updates:</p>
<p>| Package | Change |
<br />[Age](<a href="https://docs.renovatebot.com/merge-confidence/">https://docs.renovatebot.com/merge-confidence/</a>) |
<br />[Confidence](<a href="https://docs.renovatebot.com/merge-confidence/">https://docs.renovatebot.com/merge-confidence/</a>) |
<br />|---|---|---|---|
<br />|
<br />[SonarAnalyzer.CSharp](<a href="https://redirect.sonarsource.com/doc/sonar-visualstudio.html">https://redirect.sonarsource.com/doc/sonar-visualstudio.html</a>)
<br />([source](<a href="https://redirect.github.com/SonarSource/sonar-dotnet">https://redirect.github.com/SonarSource/sonar-dotnet</a>)) |
<br />`10.25.0.139117` → `10.26.0.140279` |
<br />
<br />|
<br />
<br />|</p>
<p>---</p>
<p>### Release Notes</p>
<p><details>
<br /><summary>SonarSource/sonar-dotnet (SonarAnalyzer.CSharp)</summary></p>
<p>###
<br />[`v10.26.0.140279`](<a href="https://redirect.github.com/SonarSource/sonar-dotnet/releases/tag/10.26.0.140279">https://redirect.github.com/SonarSource/sonar-dotnet/releases/tag/10.26.0.140279</a>)</p>
<p>[Compare
<br />Source](<a href="https://redirect.github.com/SonarSource/sonar-dotnet/compare/10.25.0.139117...10.26.0.140279">https://redirect.github.com/SonarSource/sonar-dotnet/compare/10.25.0.139117...10.26.0.140279</a>)</p>
<p>### Release notes - .NET Analyzers - 10.26</p>
<p>##### Feature</p>
<p>[NET-3694](<a href="https://sonarsource.atlassian.net/browse/NET-3694">https://sonarsource.atlassian.net/browse/NET-3694</a>) Update
<br />RSPEC before 10.26 release</p>
<p>##### False Positive</p>
<p>[NET-2346](<a href="https://sonarsource.atlassian.net/browse/NET-2346">https://sonarsource.atlassian.net/browse/NET-2346</a>) Fix S1854
<br />FP: Variable used after another assignment in finally
<br />[NET-2347](<a href="https://sonarsource.atlassian.net/browse/NET-2347">https://sonarsource.atlassian.net/browse/NET-2347</a>) Fix S1168
<br />FP: Do not report on value types
<br />[NET-3698](<a href="https://sonarsource.atlassian.net/browse/NET-3698">https://sonarsource.atlassian.net/browse/NET-3698</a>) Fix S1210
<br />FP: file-scoped types should be exempt</p>
<p>##### False Negative</p>
<p>[NET-1265](<a href="https://sonarsource.atlassian.net/browse/NET-1265">https://sonarsource.atlassian.net/browse/NET-1265</a>) Fix S2930
<br />FN: raise issues on non-disposed RegistryKeys
<br />[NET-2685](<a href="https://sonarsource.atlassian.net/browse/NET-2685">https://sonarsource.atlassian.net/browse/NET-2685</a>) Fix S3604
<br />FN: Field Keyword, Partial Constructors, NullConditional Assignment
<br />[NET-2812](<a href="https://sonarsource.atlassian.net/browse/NET-2812">https://sonarsource.atlassian.net/browse/NET-2812</a>) Fix S4275
<br />FN: Field Keyword
<br />[NET-2999](<a href="https://sonarsource.atlassian.net/browse/NET-2999">https://sonarsource.atlassian.net/browse/NET-2999</a>) Fix S6672
<br />FN: Mismatch in primary constructor is not recognized</p>
<p></details></p>
<p>---</p>
<p>### Configuration</p>
<p>📅 **Schedule**: (in timezone Europe/Zurich)</p>
<p>- Branch creation
<br /> - "after 9pm,before 6am"
<br />- Automerge
<br /> - At any time (no schedule defined)</p>
<p>🚦 **Automerge**: Enabled.</p>
<p>♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
<br />rebase/retry checkbox.</p>
<p>🔕 **Ignore**: Close this PR and you won't be reminded about this update
<br />again.</p>
<p>---</p>
<p>- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
<br />this box</p>
<p>---</p>
<p>This PR was generated by [Mend Renovate](<a href="https://mend.io/renovate/">https://mend.io/renovate/</a>).
<br />View the [repository job
<br />log](<a href="https://developer.mend.io/github/dotnet/dotnet-operator-sdk">https://developer.mend.io/github/dotnet/dotnet-operator-sdk</a>).</p>
<p><!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xODUuMSIsInVwZGF0ZWRJblZlciI6IjQzLjE4NS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--></p>
<p>---------</p>
<p>Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
<br />Co-authored-by: Marcus Kimpenhaus <kimpenhaus@devil-engineering.de></p>
github-actions
tag:github.com,2008:Repository/261514821/v11.0.0
2026-05-19T12:56:03Z
v11.0.0
<p>deps(test): update dependency coverlet.collector to 10.0.1 (<a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1123">#1123</a>)</p>
<p>This PR contains the following updates:</p>
<p>| Package | Change |
<br />[Age](<a href="https://docs.renovatebot.com/merge-confidence/">https://docs.renovatebot.com/merge-confidence/</a>) |
<br />[Confidence](<a href="https://docs.renovatebot.com/merge-confidence/">https://docs.renovatebot.com/merge-confidence/</a>) |
<br />|---|---|---|---|
<br />|
<br />[coverlet.collector](<a href="https://redirect.github.com/coverlet-coverage/coverlet">https://redirect.github.com/coverlet-coverage/coverlet</a>)
<br />| `10.0.0` → `10.0.1` |
<br />
<br />|
<br />
<br />|</p>
<p>---</p>
<p>### Release Notes</p>
<p><details>
<br /><summary>coverlet-coverage/coverlet (coverlet.collector)</summary></p>
<p>###
<br />[`v10.0.1`](<a href="https://redirect.github.com/coverlet-coverage/coverlet/releases/tag/v10.0.1">https://redirect.github.com/coverlet-coverage/coverlet/releases/tag/v10.0.1</a>)</p>
<p>##### Improvements</p>
<p>- Coverlet with MTP 2 doesn't show test coverage statistic in console
<br />[#&#8203;1907](<a href="https://redirect.github.com/coverlet-coverage/coverlet/issues/1907">https://redirect.github.com/coverlet-coverage/coverlet/issues/1907</a>)
<br />- Avoid unnecessary testhost restarts
<br />[#&#8203;1912](<a href="https://redirect.github.com/coverlet-coverage/coverlet/issues/1912">https://redirect.github.com/coverlet-coverage/coverlet/issues/1912</a>)
<br />by <<a href="https://github.com/mawosoft">https://github.com/mawosoft</a>></p>
<p>##### Fixed</p>
<p>- Fix inconsistent paths in cobertura reports
<br />[#&#8203;1723](<a href="https://redirect.github.com/coverlet-coverage/coverlet/issues/1723">https://redirect.github.com/coverlet-coverage/coverlet/issues/1723</a>)
<br />- Fix when using "is" with "and" in pattern matching, branch coverage is
<br />lower than normal
<br />[#&#8203;1313](<a href="https://redirect.github.com/coverlet-coverage/coverlet/issues/1313">https://redirect.github.com/coverlet-coverage/coverlet/issues/1313</a>)
<br />- Fix Coverlet flagging a branch for an async functions finally block
<br />where none exists
<br />[#&#8203;1337](<a href="https://redirect.github.com/coverlet-coverage/coverlet/issues/1337">https://redirect.github.com/coverlet-coverage/coverlet/issues/1337</a>)
<br />- Fix Coverlet Tracker Missing CompilerGeneratedAttribute
<br />[#&#8203;1828](<a href="https://redirect.github.com/coverlet-coverage/coverlet/issues/1828">https://redirect.github.com/coverlet-coverage/coverlet/issues/1828</a>)</p>
<p>##### Maintenance</p>
<p>- Add architecture docs and diagrams for all integrations
<br />[#&#8203;1927](<a href="https://redirect.github.com/coverlet-coverage/coverlet/pull/1927">https://redirect.github.com/coverlet-coverage/coverlet/pull/1927</a>)
<br />- Update NuGet packages and .NET SDK versions
<br />[#&#8203;1933](<a href="https://redirect.github.com/coverlet-coverage/coverlet/pull/1933">https://redirect.github.com/coverlet-coverage/coverlet/pull/1933</a>)</p>
<p>[Diff between 10.0.0 and
<br />10.0.1](<a href="https://redirect.github.com/coverlet-coverage/coverlet/compare/v10.0.0...v10.0.1">https://redirect.github.com/coverlet-coverage/coverlet/compare/v10.0.0...v10.0.1</a>)</p>
<p></details></p>
<p>---</p>
<p>### Configuration</p>
<p>📅 **Schedule**: (in timezone Europe/Zurich)</p>
<p>- Branch creation
<br /> - "after 9pm,before 6am"
<br />- Automerge
<br /> - At any time (no schedule defined)</p>
<p>🚦 **Automerge**: Enabled.</p>
<p>♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
<br />rebase/retry checkbox.</p>
<p>🔕 **Ignore**: Close this PR and you won't be reminded about this update
<br />again.</p>
<p>---</p>
<p>- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
<br />this box</p>
<p>---</p>
<p>This PR was generated by [Mend Renovate](<a href="https://mend.io/renovate/">https://mend.io/renovate/</a>).
<br />View the [repository job
<br />log](<a href="https://developer.mend.io/github/dotnet/dotnet-operator-sdk">https://developer.mend.io/github/dotnet/dotnet-operator-sdk</a>).</p>
<p><!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xODIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE4Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--></p>
<p>Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com></p>
github-actions
tag:github.com,2008:Repository/261514821/v11.0.0-prerelease.1
2026-05-15T12:40:05Z
v11.0.0-prerelease.1
<p>feat(kubernetes-client): add field selector support (<a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1094">#1094</a>)</p>
<p>- Replaced individual label selector classes with a unified
<br />`LabelSelector` hierarchy under `Selectors` namespace.
<br />- Added `FieldSelector` hierarchy following a similar model to support
<br />field-based filtering.
<br />- Extended `KubernetesClient` and `ResourceWatcher` to handle both label
<br />and field selectors for enhanced query capabilities.
<br />- Updated `OperatorBuilder` with methods to register custom label and
<br />field selectors for controllers.
<br />- Improved test coverage with label and field selector functionality
<br />verification.
<br />- Removed obsolete or redundant selector implementations.</p>
<p>BREAKING CHANGE:
<br />The `LabelSelectors` namespace is renamed to `Selectors`.
<br />To migrate, rename the namespaces.</p>
<p>BREAKING CHANGE:
<br />The `DefaultEntityLabelSelector` class is now sealed instead
<br />of public. To mitigate, use the implementation with the interface
<br />(intended way) instead of subclassing the default selector.</p>
github-actions
tag:github.com,2008:Repository/261514821/v10.6.0-prerelease.1
2026-05-14T17:52:39Z
v10.6.0-prerelease.1
<p>feat: Add `ToIdentifierString` overloads (<a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1120">#1120</a>)</p>
<p>This is for convenience and consistency when the operator needs to log
<br />some object identity or reference.</p>
github-actions
tag:github.com,2008:Repository/261514821/v10.5.0
2026-05-12T12:33:49Z
v10.5.0
<p>feat(crds): introduce retry with backoff pattern to crd-installer (<a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1103">#1103</a></p>
<p><a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1103"></a>)</p>
<p>- Introduced retry mechanism with exponential backoff for CRD
<br />installation to handle transient errors.
<br />- Added `CrdInstallerSettingsBuilder` for configuring
<br />`CrdInstallerSettings` using a fluent API.
<br />- Updated templates and documentation to reflect new
<br />`WithOverwriteExisting` and `WithDeleteOnShutdown` APIs.
<br />- Added extensive unit tests for new settings, builder, and CRD
<br />installer behavior to ensure stability.</p>
github-actions
tag:github.com,2008:Repository/261514821/v10.5.0-prerelease.5
2026-05-12T07:58:14Z
v10.5.0-prerelease.5
<p>feat(crds): introduce retry with backoff pattern to crd-installer (<a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1103">#1103</a></p>
<p><a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1103"></a>)</p>
<p>- Introduced retry mechanism with exponential backoff for CRD
<br />installation to handle transient errors.
<br />- Added `CrdInstallerSettingsBuilder` for configuring
<br />`CrdInstallerSettings` using a fluent API.
<br />- Updated templates and documentation to reflect new
<br />`WithOverwriteExisting` and `WithDeleteOnShutdown` APIs.
<br />- Added extensive unit tests for new settings, builder, and CRD
<br />installer behavior to ensure stability.</p>
github-actions
tag:github.com,2008:Repository/261514821/v10.5.0-prerelease.4
2026-05-08T14:23:15Z
v10.5.0-prerelease.4
github-actions
tag:github.com,2008:Repository/261514821/v10.5.0-prerelease.3
2026-05-08T06:07:13Z
v10.5.0-prerelease.3
<p>feat(CRDS): add ScaleSubresourceAttribute for enabling HPA scaling (<a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1095">#…</a></p>
<p><a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1095">…1095</a>)</p>
<p>- Introduced `ScaleSubresourceAttribute` to facilitate HPA scaling by
<br />enabling scale subresources on CRDs.
<br />- Updated transpiler logic and tests to ensure compatibility with scale
<br />subresources, including verification for replicas and label selectors.</p>
<p><span class="issue-keyword tooltipped tooltipped-se">fixes</span> <a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/issues/924">#924</a></p>
github-actions
tag:github.com,2008:Repository/261514821/v10.5.0-prerelease.2
2026-05-08T05:32:29Z
v10.5.0-prerelease.2
<p>feat(crds): add support for marking `spec` as required via `[Required…</p>
<p>…]` attribute at class level or by auto-infer from direct nested required properties (<a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/pull/1097">#1097</a>)</p>
<p><span class="issue-keyword tooltipped tooltipped-se">fixes</span> <a class="issue-link js-issue-link" href="https://github.com/dotnet/dotnet-operator-sdk/issues/885">#885</a></p>
github-actions