KubernetesCRDModelGen 1.5.0
dotnet add package KubernetesCRDModelGen --version 1.5.0
NuGet\Install-Package KubernetesCRDModelGen -Version 1.5.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="KubernetesCRDModelGen" Version="1.5.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="KubernetesCRDModelGen" Version="1.5.0" />
<PackageReference Include="KubernetesCRDModelGen" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add KubernetesCRDModelGen --version 1.5.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: KubernetesCRDModelGen, 1.5.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package KubernetesCRDModelGen@1.5.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=KubernetesCRDModelGen&version=1.5.0
#tool nuget:?package=KubernetesCRDModelGen&version=1.5.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
KubernetesCRDModelGen
What is this?
This project contains components which allow generation of C# Classes/Assemblies from Kubernetes Custom Resource Definitions.
- KubernetesCRDModelGen
- Custom Resource Definition to C# Class/Assembly Generator
- KubernetesCRDModelGen.SourceGenerator
- Yaml to C# Source Generator
- KubernetesCRDModelGen.Tool
- Yaml to C# Class Generator
- KubernetesCRDModelGen.Sync
- Synchronizes Custom Resource Definitions from numerous sources
How to use
- Programmatically
var crd = KubernetesYaml.LoadAllFromString(yaml); var generator = new Generator(); var code = generator.GenerateCode(crd); var result = generator.GenerateAssembly(crd); using var unloadHandle = result.UnloadHandle; if (!result.Success) { foreach (var diagnostic in result.Diagnostics) { Console.WriteLine($"{diagnostic.Severity}: {diagnostic.Id}: {diagnostic.Message}"); } } else { var assembly = result.Assembly; var xml = result.XmlDocumentation; } - CLI
- Install .Net Tool
dotnet tool install --global KubernetesCRDModelGen.Tool
- Run
KubernetesCRDModelGen --FolderPath /path/to/yamls --Namespace Namespace
- Install .Net Tool
How to use the Source Generator
Create a C# Class Library Project and add some CRD yaml files to the project. Update the .csproj with the following settings. The Models will be generated in the "KubernetesCRDModelGen.Models.{CRD Group Name}" namespace.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net10.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="KubernetesClient" Version="19.0.2" />
<PackageReference Include="KubernetesCRDModelGen.SourceGenerator" Version="2.*" />
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="*.yaml" />
</ItemGroup>
<ItemGroup>
<CRDYamlSourceUrls>https://app1.com/crd.yaml,https://app2.com/crd.yaml</CRDYamlSourceUrls>
<CRDYamlSourceUrls>https://app1.com/crd.yaml</CRDYamlSourceUrls>
<CRDYamlSourceUrls>$(CRDYamlSourceUrls),https://app2.com/crd.yaml</CRDYamlSourceUrls>
</ItemGroup>
</Project>
Published Packages
We publish the following premade packages
| Group | NuGet |
|---|---|
| aquasecurity.github.io | Link |
| argoproj.io | Link |
| aws.upbound.io | Link |
| azapi.upbound.io | Link |
| azure.com | Link |
| azure.upbound.io | Link |
| azuread.upbound.io | Link |
| cnrm.cloud.google.com | Link |
| crossplane.io | Link |
| databricks.crossplane.io | Link |
| databricks.upbound.io | Link |
| fluxcd.io | Link |
| gateway.networking.k8s.io | Link |
| gcp.upbound.io | Link |
| github.upbound.io | Link |
| helm.crossplane.io | Link |
| http.crossplane.io | Link |
| istio.io | Link |
| jetstack.io | Link |
| keda.sh | Link |
| knative.dev | Link |
| kubernetes.crossplane.io | Link |
| kubevirt.io | Link |
| longhorn.io | Link |
| opentofu.upbound.io | Link |
| postgresql.cnpg.io | Link |
| projectcalico.org | Link |
| secrets-store.csi.x-k8s.io | Link |
| storage.k8s.io | Link |
| tf.upbound.io | Link |
| traefik.io | Link |
| upbound.io | Link |
| vault.upbound.io | Link |
Type Mappings
| OpenAPIv3 type | This library emits |
|---|---|
'object' with Properties |
generated class |
'object' with AdditionalProperties |
IDictionary<string, TValue> |
'object' with x-kubernetes-embedded-resource |
generated class, with implicit apiVersion, kind, and metadata properties added when missing |
'object' with x-kubernetes-preserve-unknown-fields |
JsonNode, plus JsonExtensionData at object roots with the extension |
x-kubernetes-int-or-string |
k8s.Models.IntOrString |
'array' |
IList<T> |
'array' with x-kubernetes-list-type=atomic |
IList<T> |
'array' with x-kubernetes-list-type=map |
IList<T> |
'array' with x-kubernetes-list-type=set |
IList<T> |
'boolean' |
bool |
'number' with format=float |
float |
'number' default / format=double |
double |
'integer' default / format=int32 |
int |
'integer' with format=int64 |
long |
'null' |
nullable reference/value type when combined with another schema type |
'string' |
string |
'string' with format=binary |
byte[] |
'string' with format=byte (base64 encoded) |
byte[] |
'string' with format=date |
DateTime |
'string' with format=date-time |
DateTime |
'string' with format=duration |
TimeSpan |
| 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 is compatible. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- KubernetesClient (>= 19.0.2)
- KubernetesCRDModelGen.Base (>= 1.5.0)
-
net8.0
- KubernetesClient (>= 19.0.2)
- KubernetesCRDModelGen.Base (>= 1.5.0)
-
net9.0
- KubernetesClient (>= 19.0.2)
- KubernetesCRDModelGen.Base (>= 1.5.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on KubernetesCRDModelGen:
| Repository | Stars |
|---|---|
|
IvanJosipovic/KubeUI
Kubernetes User Interface
|
| Version | Downloads | Last Updated |
|---|---|---|
| 1.5.0 | 941 | 3/29/2026 |
| 1.4.0 | 88 | 3/28/2026 |
| 1.3.0 | 107 | 3/28/2026 |
| 1.2.9 | 156 | 3/27/2026 |
| 1.2.8 | 765 | 3/16/2026 |
| 1.2.7 | 324 | 3/15/2026 |
| 1.2.6 | 228 | 3/12/2026 |
| 1.2.5 | 454 | 3/5/2026 |
| 1.2.4 | 93 | 3/5/2026 |
| 1.2.3 | 2,196 | 1/19/2026 |
| 1.2.2 | 599 | 12/23/2025 |
| 1.2.1 | 397 | 12/17/2025 |
| 1.2.0 | 349,914 | 11/15/2025 |
| 1.1.2 | 317 | 11/11/2025 |
| 1.1.1 | 308 | 11/11/2025 |
| 1.1.0 | 367 | 10/20/2025 |
| 1.0.1 | 688 | 9/25/2025 |
| 1.0.0-alpha.624 | 175 | 9/25/2025 |
| 1.0.0-alpha.623 | 167 | 9/25/2025 |
| 1.0.0-alpha.622 | 162 | 9/25/2025 |
Loading failed