Skip to content

Commit 46e69be

Browse files
author
Christoph Bühler
committed
feat: use DotnetKubernetesClient instead of own implementation
1 parent 285c92d commit 46e69be

33 files changed

+68
-560
lines changed

src/KubeOps.Testing/KubernetesOperatorFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System;
2+
using DotnetKubernetesClient;
23
using k8s;
34
using k8s.Models;
4-
using KubeOps.Operator.Client;
55
using KubeOps.Operator.Queue;
66
using Microsoft.AspNetCore.Hosting;
77
using Microsoft.AspNetCore.Mvc.Testing;

src/KubeOps.Testing/MockKubernetesClient.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
using System.IO;
44
using System.Threading;
55
using System.Threading.Tasks;
6+
using DotnetKubernetesClient;
7+
using DotnetKubernetesClient.LabelSelectors;
68
using k8s;
79
using k8s.Models;
8-
using KubeOps.Operator.Client;
9-
using KubeOps.Operator.Client.LabelSelectors;
1010

1111
namespace KubeOps.Testing
1212
{
@@ -53,7 +53,8 @@ public Task<TResource> Update<TResource>(TResource resource)
5353
where TResource : IKubernetesObject<V1ObjectMeta>
5454
=> Task.FromResult((TResource)UpdateResult!)!;
5555

56-
public Task UpdateStatus<TStatus>(IStatus<TStatus> resource)
56+
public Task UpdateStatus<TResource>(TResource resource)
57+
where TResource : IKubernetesObject<V1ObjectMeta>, IStatus<object>
5758
=> Task.CompletedTask;
5859

5960
public Task Delete<TResource>(TResource resource)

src/KubeOps/Build/KubeOps.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@
3636
<KubeOpsInstallerDir Condition="'$(KubeOpsInstallerDir)' == ''">$(KubeOpsConfigRoot)\install</KubeOpsInstallerDir>
3737
<KubeOpsInstallerFormat Condition="'$(KubeOpsInstallerFormat)' == ''">Yaml</KubeOpsInstallerFormat>
3838
</PropertyGroup>
39-
</Project>
39+
</Project>

src/KubeOps/Build/KubeOps.targets

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,55 @@
11
<Project DefaultTargets="GenerateAfterBuild">
22
<Target Name="GenerateDockerfile">
3-
<Message Text="Generating Dockerfile" Importance="high"/>
4-
<Message Text="Dockerfile path: $(KubeOpsDockerfilePath)" Importance="normal"/>
3+
<Message Text="Generating Dockerfile" Importance="high" />
4+
<Message Text="Dockerfile path: $(KubeOpsDockerfilePath)" Importance="normal" />
55

6-
<Message Condition="Exists('$(KubeOpsDockerfilePath)')" Text="Dockerfile already exists. Don't overwrite." Importance="high"/>
6+
<Message Condition="Exists('$(KubeOpsDockerfilePath)')" Text="Dockerfile already exists. Don't overwrite."
7+
Importance="high" />
78
<Exec Condition="!Exists('$(KubeOpsDockerfilePath)')"
8-
Command="dotnet $(OutputPath)$(TargetFileName) generator docker --out $(KubeOpsDockerfilePath) --dotnet-tag $(KubeOpsDockerTag) --solution-dir $(SolutionDir) --target-file $(TargetFileName) --project-path $(ProjectPath)"/>
9+
Command="dotnet $(OutputPath)$(TargetFileName) generator docker --out $(KubeOpsDockerfilePath) --dotnet-tag $(KubeOpsDockerTag) --solution-dir $(SolutionDir) --target-file $(TargetFileName) --project-path $(ProjectPath)" />
910
</Target>
1011

1112
<Target Name="GenerateCrds">
12-
<Message Text="Generating CRDs" Importance="high"/>
13-
<Message Text="Configuration path: $(KubeOpsCrdDir)" Importance="normal"/>
13+
<Message Text="Generating CRDs" Importance="high" />
14+
<Message Text="Configuration path: $(KubeOpsCrdDir)" Importance="normal" />
1415

15-
<Exec Condition="'$(KubeOpsCrdUseOldCrds)' == 'false'" Command="dotnet $(OutputPath)$(TargetFileName) generator crds --out $(KubeOpsCrdDir) --format $(KubeOpsCrdFormat)"/>
16-
<Exec Condition="'$(KubeOpsCrdUseOldCrds)' == 'true'" Command="dotnet $(OutputPath)$(TargetFileName) generator crds --out $(KubeOpsCrdDir) --format $(KubeOpsCrdFormat) --use-old-crds"/>
16+
<Exec Condition="'$(KubeOpsCrdUseOldCrds)' == 'false'"
17+
Command="dotnet $(OutputPath)$(TargetFileName) generator crds --out $(KubeOpsCrdDir) --format $(KubeOpsCrdFormat)" />
18+
<Exec Condition="'$(KubeOpsCrdUseOldCrds)' == 'true'"
19+
Command="dotnet $(OutputPath)$(TargetFileName) generator crds --out $(KubeOpsCrdDir) --format $(KubeOpsCrdFormat) --use-old-crds" />
1720
</Target>
1821

1922
<Target Name="GenerateRbac">
20-
<Message Text="Generating Rbac roles" Importance="high"/>
21-
<Message Text="Configuration path: $(KubeOpsRbacDir)" Importance="normal"/>
23+
<Message Text="Generating Rbac roles" Importance="high" />
24+
<Message Text="Configuration path: $(KubeOpsRbacDir)" Importance="normal" />
2225

23-
<Exec Command="dotnet $(OutputPath)$(TargetFileName) generator rbac --out $(KubeOpsRbacDir) --format $(KubeOpsRbacFormat)"/>
26+
<Exec
27+
Command="dotnet $(OutputPath)$(TargetFileName) generator rbac --out $(KubeOpsRbacDir) --format $(KubeOpsRbacFormat)" />
2428
</Target>
2529

2630
<Target Name="GenerateOperator">
27-
<Message Text="Generating Operator yamls" Importance="high"/>
28-
<Message Text="Configuration path: $(KubeOpsOperatorDir)" Importance="normal"/>
31+
<Message Text="Generating Operator yamls" Importance="high" />
32+
<Message Text="Configuration path: $(KubeOpsOperatorDir)" Importance="normal" />
2933

30-
<Exec Command="dotnet $(OutputPath)$(TargetFileName) generator operator --out $(KubeOpsOperatorDir) --format $(KubeOpsOperatorFormat)"/>
34+
<Exec
35+
Command="dotnet $(OutputPath)$(TargetFileName) generator operator --out $(KubeOpsOperatorDir) --format $(KubeOpsOperatorFormat)" />
3136
</Target>
3237

3338
<Target Name="GenerateInstaller">
34-
<Message Text="Generating Installer yamls" Importance="high"/>
35-
<Message Text="Configuration path: $(KubeOpsInstallerDir)" Importance="normal"/>
39+
<Message Text="Generating Installer yamls" Importance="high" />
40+
<Message Text="Configuration path: $(KubeOpsInstallerDir)" Importance="normal" />
3641

37-
<Message Condition="Exists('$(KubeOpsInstallerDir)')" Text="Installer dir exists, don't overwrite contents." Importance="high"/>
42+
<Message Condition="Exists('$(KubeOpsInstallerDir)')" Text="Installer dir exists, don't overwrite contents."
43+
Importance="high" />
3844
<Exec Condition="!Exists('$(KubeOpsInstallerDir)')"
39-
Command="dotnet $(OutputPath)$(TargetFileName) generator installer --out $(KubeOpsInstallerDir) --format $(KubeOpsInstallerFormat) --crds-dir $(KubeOpsCrdDir) --rbac-dir $(KubeOpsRbacDir) --operator-dir $(KubeOpsOperatorDir)"/>
45+
Command="dotnet $(OutputPath)$(TargetFileName) generator installer --out $(KubeOpsInstallerDir) --format $(KubeOpsInstallerFormat) --crds-dir $(KubeOpsCrdDir) --rbac-dir $(KubeOpsRbacDir) --operator-dir $(KubeOpsOperatorDir)" />
4046
</Target>
4147

4248
<Target Name="GenerateAfterBuild" AfterTargets="Build">
43-
<CallTarget Condition="'$(KubeOpsSkipDockerfile)' == ''" Targets="GenerateDockerfile"/>
44-
<CallTarget Condition="'$(KubeOpsSkipCrds)' == ''" Targets="GenerateCrds"/>
45-
<CallTarget Condition="'$(KubeOpsSkipRbac)' == ''" Targets="GenerateRbac"/>
46-
<CallTarget Condition="'$(KubeOpsSkipOperator)' == ''" Targets="GenerateOperator"/>
47-
<CallTarget Condition="'$(KubeOpsSkipInstaller)' == ''" Targets="GenerateInstaller"/>
49+
<CallTarget Condition="'$(KubeOpsSkipDockerfile)' == ''" Targets="GenerateDockerfile" />
50+
<CallTarget Condition="'$(KubeOpsSkipCrds)' == ''" Targets="GenerateCrds" />
51+
<CallTarget Condition="'$(KubeOpsSkipRbac)' == ''" Targets="GenerateRbac" />
52+
<CallTarget Condition="'$(KubeOpsSkipOperator)' == ''" Targets="GenerateOperator" />
53+
<CallTarget Condition="'$(KubeOpsSkipInstaller)' == ''" Targets="GenerateInstaller" />
4854
</Target>
49-
</Project>
55+
</Project>

src/KubeOps/Build/Program.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Threading.Tasks;
2-
using KubeOps.Operator;
32

43
namespace KubeOps.Build
54
{

src/KubeOps/KubeOps.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
<ItemGroup>
2727
<PackageReference Include="CompareNETObjects" Version="4.67.0" />
28-
<PackageReference Include="KubernetesClient" Version="3.0.12" />
28+
<PackageReference Include="DotnetKubernetesClient" Version="1.0.0" />
2929
<PackageReference Include="McMaster.Extensions.CommandLineUtils" Version="3.0.0" />
3030
<PackageReference Include="McMaster.Extensions.Hosting.CommandLine" Version="3.0.0" />
3131
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="5.0.1" />

src/KubeOps/Operator/Builder/IOperatorBuilder.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using k8s;
2-
using k8s.Models;
32
using KubeOps.Operator.Controller;
43
using KubeOps.Operator.Finalizer;
54
using Microsoft.Extensions.DependencyInjection;

src/KubeOps/Operator/Builder/OperatorBuilder.cs

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
using System;
22
using System.Collections.Generic;
3-
using k8s;
3+
using DotnetKubernetesClient;
44
using KubeOps.Operator.Caching;
5-
using KubeOps.Operator.Client;
65
using KubeOps.Operator.Controller;
76
using KubeOps.Operator.DevOps;
87
using KubeOps.Operator.Finalizer;
@@ -16,7 +15,6 @@
1615
using Microsoft.Rest.Serialization;
1716
using Newtonsoft.Json;
1817
using Newtonsoft.Json.Converters;
19-
using Newtonsoft.Json.Serialization;
2018
using Prometheus;
2119
using YamlDotNet.Serialization;
2220

@@ -102,7 +100,7 @@ internal IOperatorBuilder AddOperatorBase(OperatorSettings settings)
102100
ContractResolver = new NamingConvention(),
103101
Converters = new List<JsonConverter>
104102
{
105-
new StringEnumConverter { NamingStrategy = new CamelCaseNamingStrategy() },
103+
new StringEnumConverter { CamelCaseText = true },
106104
new Iso8601TimeSpanConverter(),
107105
},
108106
DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.ffffffK",
@@ -120,42 +118,6 @@ internal IOperatorBuilder AddOperatorBase(OperatorSettings settings)
120118
Services.AddTransient<EntitySerializer>();
121119

122120
Services.AddTransient<IKubernetesClient, KubernetesClient>();
123-
Services.AddSingleton(KubernetesClientConfiguration.BuildDefaultConfig());
124-
Services.AddSingleton<IKubernetes>(
125-
services => new Kubernetes(
126-
services.GetRequiredService<KubernetesClientConfiguration>(),
127-
new ClientUrlFixer())
128-
{
129-
SerializationSettings =
130-
{
131-
Formatting = Formatting.Indented,
132-
DateFormatHandling = DateFormatHandling.IsoDateFormat,
133-
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
134-
NullValueHandling = NullValueHandling.Ignore,
135-
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
136-
ContractResolver = new NamingConvention(),
137-
Converters = new List<JsonConverter>
138-
{
139-
new StringEnumConverter { NamingStrategy = new CamelCaseNamingStrategy() },
140-
new Iso8601TimeSpanConverter(),
141-
},
142-
DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.ffffffK",
143-
},
144-
DeserializationSettings =
145-
{
146-
DateFormatHandling = DateFormatHandling.IsoDateFormat,
147-
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
148-
NullValueHandling = NullValueHandling.Ignore,
149-
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
150-
ContractResolver = new NamingConvention(),
151-
Converters = new List<JsonConverter>
152-
{
153-
new StringEnumConverter { NamingStrategy = new CamelCaseNamingStrategy() },
154-
new Iso8601TimeSpanConverter(),
155-
},
156-
DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.ffffffK",
157-
},
158-
});
159121

160122
Services.AddTransient(typeof(IResourceCache<>), typeof(ResourceCache<>));
161123
Services.AddTransient(typeof(IResourceWatcher<>), typeof(ResourceWatcher<>));

src/KubeOps/Operator/Client/ClientUrlFixer.cs

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/KubeOps/Operator/Client/IKubernetesClient.cs

Lines changed: 0 additions & 94 deletions
This file was deleted.

0 commit comments

Comments
 (0)