KubernetesCRDModelGen.Tool 1.6.12

dotnet tool install --global KubernetesCRDModelGen.Tool --version 1.6.12
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local KubernetesCRDModelGen.Tool --version 1.6.12
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=KubernetesCRDModelGen.Tool&version=1.6.12
                    
nuke :add-package KubernetesCRDModelGen.Tool --version 1.6.12
                    

KubernetesCRDModelGen

NugetNuget) codecov

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

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

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 premade packages for popular projects at the following repo:

KubernetesCRDModelGen.Models

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 string
Product 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.

This package has no dependencies.

Version Downloads Last Updated
1.6.12 119 7/15/2026
1.6.11 121 7/14/2026
1.6.10 117 7/6/2026
1.6.9 117 7/2/2026
1.6.8 124 6/12/2026
1.6.6 115 6/11/2026
1.6.5 125 6/1/2026
1.6.4 128 5/29/2026
1.6.3 112 5/26/2026
1.6.2 130 5/14/2026
1.6.1 121 5/12/2026
1.6.0 134 4/27/2026
1.5.3 127 4/27/2026
1.5.2 141 4/15/2026
1.5.1 133 4/14/2026
1.5.0 151 3/29/2026
1.4.0 132 3/28/2026
1.3.0 154 3/28/2026
1.2.9 152 3/27/2026
1.2.8 134 3/16/2026
Loading failed