KubeOps.Abstractions
9.5.0
dotnet add package KubeOps.Abstractions --version 9.5.0
NuGet\Install-Package KubeOps.Abstractions -Version 9.5.0
<PackageReference Include="KubeOps.Abstractions" Version="9.5.0" />
<PackageVersion Include="KubeOps.Abstractions" Version="9.5.0" />
<PackageReference Include="KubeOps.Abstractions" />
paket add KubeOps.Abstractions --version 9.5.0
#r "nuget: KubeOps.Abstractions, 9.5.0"
#addin nuget:?package=KubeOps.Abstractions&version=9.5.0
#tool nuget:?package=KubeOps.Abstractions&version=9.5.0
KubeOps.Abstractions
This package provides the fundamental building blocks for the KubeOps SDK. It defines the core interfaces, abstract base classes, and .NET attributes used throughout the operator framework.
Think of this package as the contract definition for key KubeOps components.
Key Components
The primary abstractions defined here include:
- Entities:
CustomKubernetesEntity<TSpec, TStatus>
: The base class for defining your Custom Resources.CustomKubernetesEntity<TSpec>
: A simpler base class for entities that do not require a.status
subresource.[KubernetesEntity]
: Attribute to mark a C# class as a Kubernetes entity and define its Group, Version, and Kind (GVK).[EntityScope]
: Attribute to define whether an entity isNamespaced
orCluster
-scoped.- Various validation attributes (
[Description]
,[RangeMaximum]
,[Pattern]
, etc.) used to generate OpenAPI validation rules for the CRD. See .NET Data Annotations for common attributes. [EntityRbac]
: Attribute applied to Controllers and Webhooks to declare the RBAC permissions required by the operator for a specific entity type. Processed by the CLI/Generators.- See: Defining Custom Entities
- Controllers:
IResourceController<TEntity>
: The interface that must be implemented by controllers to handle the reconciliation logic for a specific entity type.- See: Implementing Controllers
- Finalizers:
IResourceFinalizer<TEntity>
: The interface for implementing cleanup logic that runs before an entity is deleted.[ResourceFinalizerMetadata]
: Attribute to associate a unique identifier with a finalizer implementation.- See: Using Finalizers
- Webhooks:
IAdmissionWebhook<TEntity, TOperation>
: Base interface for admission webhooks.IMutationWebhook<TEntity, TOperation>
: Interface for webhooks that can modify entities during admission.IValidationWebhook<TEntity, TOperation>
: Interface for webhooks that validate entities during admission.IConversionWebhook<TFrom, TTo>
: Interface for implementing CRD conversion between different API versions.- See: Admission Webhooks
- Common Utilities: Various helper methods and base types used internally by the SDK.
When to Use
Most projects building a KubeOps operator will reference the main KubeOps.Operator
package, which includes this abstractions package as a dependency.
By depending only on this package, you can define your entities and interfaces without pulling in the full operator runtime or Kubernetes client logic, promoting better separation of concerns. This is primarily useful if you want to:
- Define your CRD entity classes in a separate library, shared between your operator and potentially other applications.
- Build tools that need to understand KubeOps entity definitions without needing the operator runtime.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- KubernetesClient (>= 16.0.7)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.4)
-
net9.0
- KubernetesClient (>= 16.0.7)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.4)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on KubeOps.Abstractions:
Package | Downloads |
---|---|
KubeOps.KubernetesClient
Kubernetes Client written in DotNet. Based on the implementation of Google (https://github.com/kubernetes-client/csharp) but with dotnet native language features like generics. Internally uses the "GenericClient" of the Google KubernetesClient. However, wraps the methods around with true generics. |
|
KubeOps.Transpiler
Transpilation elements for the Kubernetes Operator SDK. Enables the developer to create CRDs from types and other Kubernetes related elements via reflection. |
|
KubeOps.Operator
This is an operator sdk written in c#. It enables a developer to create a custom controller for CRDs (CustomResourceDefinitions) that runs on kubernetes. This operator may run without ASP.net but needs the IHost of dotnet to run. |
|
KubeOps.Operator.Web
This is an operator sdk written in c#. It enables a developer to create a custom controller for CRDs (CustomResourceDefinitions) that runs on kubernetes. This operator uses ASP.net to support webhooks and external access to the operator. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
9.5.0 | 712 | 5/8/2025 |
9.4.1 | 1,107 | 4/29/2025 |
9.4.0 | 288 | 4/28/2025 |
9.3.0 | 7,431 | 3/26/2025 |
9.2.0 | 11,779 | 1/24/2025 |
9.1.5 | 45,901 | 9/10/2024 |
9.1.4 | 1,723 | 8/26/2024 |
9.1.3 | 20,693 | 6/28/2024 |
9.1.2 | 12,186 | 6/20/2024 |
9.1.1 | 5,678 | 5/22/2024 |
9.1.0 | 2,691 | 5/15/2024 |
9.0.2 | 314 | 5/13/2024 |
9.0.0 | 29,116 | 3/13/2024 |
9.0.0-pre.4 | 78 | 4/19/2024 |
9.0.0-pre.3 | 90 | 3/21/2024 |
9.0.0-pre.2 | 72 | 3/13/2024 |
9.0.0-pre.1 | 96 | 3/7/2024 |
8.0.2-pre.2 | 86 | 2/21/2024 |
8.0.2-pre.1 | 79 | 2/19/2024 |
8.0.1 | 11,776 | 2/13/2024 |
8.0.1-pre.7 | 75 | 2/12/2024 |
8.0.1-pre.6 | 80 | 2/7/2024 |
8.0.1-pre.5 | 81 | 2/5/2024 |
8.0.1-pre.4 | 78 | 1/31/2024 |
8.0.1-pre.3 | 71 | 1/26/2024 |
8.0.1-pre.2 | 70 | 1/25/2024 |
8.0.1-pre.1 | 71 | 1/18/2024 |
8.0.0 | 1,150 | 1/17/2024 |
8.0.0-pre.45 | 73 | 1/17/2024 |
8.0.0-pre.44 | 80 | 1/16/2024 |
8.0.0-pre.43 | 77 | 1/16/2024 |
8.0.0-pre.42 | 966 | 1/10/2024 |
8.0.0-pre.41 | 318 | 1/2/2024 |
8.0.0-pre.40 | 178 | 12/27/2023 |
8.0.0-pre.39 | 90 | 12/21/2023 |
8.0.0-pre.38 | 434 | 12/6/2023 |
8.0.0-pre.37 | 135 | 12/6/2023 |
8.0.0-pre.36 | 162 | 12/3/2023 |
8.0.0-pre.35 | 114 | 11/28/2023 |
8.0.0-pre.34 | 120 | 11/24/2023 |
8.0.0-pre.33 | 86 | 11/24/2023 |
8.0.0-pre.32 | 83 | 11/23/2023 |
8.0.0-pre.31 | 81 | 11/23/2023 |
8.0.0-pre.30 | 93 | 11/23/2023 |
8.0.0-pre.29 | 977 | 11/11/2023 |
8.0.0-pre.28 | 107 | 11/8/2023 |
8.0.0-pre.27 | 590 | 10/23/2023 |
8.0.0-pre.26 | 119 | 10/19/2023 |
8.0.0-pre.25 | 89 | 10/18/2023 |
8.0.0-pre.24 | 100 | 10/13/2023 |
8.0.0-pre.23 | 90 | 10/13/2023 |
8.0.0-pre.22 | 93 | 10/13/2023 |
8.0.0-pre.21 | 94 | 10/12/2023 |
8.0.0-pre.20 | 101 | 10/11/2023 |
8.0.0-pre.19 | 102 | 10/9/2023 |
8.0.0-pre.18 | 84 | 10/9/2023 |
8.0.0-pre.17 | 88 | 10/7/2023 |
8.0.0-pre.16 | 114 | 10/6/2023 |
8.0.0-pre.15 | 84 | 10/6/2023 |
8.0.0-pre.14 | 90 | 10/5/2023 |
8.0.0-pre.13 | 77 | 10/5/2023 |
8.0.0-pre.12 | 88 | 10/4/2023 |
8.0.0-pre.11 | 87 | 10/3/2023 |
8.0.0-pre.10 | 88 | 10/3/2023 |
8.0.0-pre.9 | 86 | 10/3/2023 |
8.0.0-pre.8 | 83 | 10/2/2023 |
8.0.0-pre.7 | 84 | 10/2/2023 |
8.0.0-pre.6 | 92 | 9/29/2023 |
8.0.0-pre.5 | 90 | 9/28/2023 |
8.0.0-pre.4 | 86 | 9/28/2023 |
8.0.0-pre.3 | 90 | 9/27/2023 |
8.0.0-pre.2 | 76 | 9/26/2023 |
8.0.0-pre.1 | 83 | 9/22/2023 |
'# [9.5.0](https://github.com/buehler/dotnet-operator-sdk/compare/v9.4.1...v9.5.0) (2025-05-08)
### Bug Fixes
* Change the labels to an array ([#881](https://github.com/buehler/dotnet-operator-sdk/issues/881)) ([4e0c205](https://github.com/buehler/dotnet-operator-sdk/commit/4e0c2054f9a6bc10ac694c04c68e518c1357c687)), closes [/#diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L39-R45](https://github.com///issues/diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L39-R45) [/#diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L54-R62](https://github.com///issues/diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L54-R62) [/#diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L74-R109](https://github.com///issues/diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L74-R109) [/#diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L159-R159](https://github.com///issues/diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L159-R159) [/#diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L170-R174](https://github.com///issues/diff-cf95f5a9676479797ff0ade11e4dd8d679dd1974142058976f3a35ca6a63b4f2L170-R174)
* **deps:** update dependencies ([#853](https://github.com/buehler/dotnet-operator-sdk/issues/853)) ([5a99011](https://github.com/buehler/dotnet-operator-sdk/commit/5a99011c33bc87daa49e7ce1c8d7d4fb62663ed9))
* **deps:** update dependency sonaranalyzer.csharp to 10.9.0.115408 ([#878](https://github.com/buehler/dotnet-operator-sdk/issues/878)) ([74c0a66](https://github.com/buehler/dotnet-operator-sdk/commit/74c0a66e502431d4f372d32b6d118e9f7d9426fa))
### Features
* Add `AllExplicit` RBAC verb & state all default V1Lease RBAC verbs explicitly ([#879](https://github.com/buehler/dotnet-operator-sdk/issues/879)) ([92063d8](https://github.com/buehler/dotnet-operator-sdk/commit/92063d8b7a8f5d45f6c79e0e1a85101370679255))
'