diff --git a/Devantler.KubernetesProvisioner.Resource.Native/Devantler.KubernetesProvisioner.Resource.Native.csproj b/Devantler.KubernetesProvisioner.Resource.Native/Devantler.KubernetesProvisioner.Resource.Native.csproj
new file mode 100644
index 0000000..4a9fd12
--- /dev/null
+++ b/Devantler.KubernetesProvisioner.Resource.Native/Devantler.KubernetesProvisioner.Resource.Native.csproj
@@ -0,0 +1,18 @@
+
+
+
+ net8.0
+ enable
+ enable
+ preview-all
+ true
+ true
+ true
+ false
+
+
+
+
+
+
+
diff --git a/Devantler.KubernetesProvisioner.Resource.Native/KubernetesResourceProvisioner.cs b/Devantler.KubernetesProvisioner.Resource.Native/KubernetesResourceProvisioner.cs
new file mode 100644
index 0000000..98cca58
--- /dev/null
+++ b/Devantler.KubernetesProvisioner.Resource.Native/KubernetesResourceProvisioner.cs
@@ -0,0 +1,49 @@
+using k8s;
+using k8s.Models;
+
+namespace Devantler.KubernetesProvisioner.Resource.Native;
+
+///
+/// A class that provisions resources in a Kubernetes cluster.
+///
+public sealed class KubernetesResourceProvisioner : IDisposable
+{
+ readonly Kubernetes? _kubernetesClient;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ public KubernetesResourceProvisioner(string context)
+ {
+ var kubeConfig = KubernetesClientConfiguration.LoadKubeConfigAsync().Result;
+ var config = KubernetesClientConfiguration.BuildConfigFromConfigObject(kubeConfig, context);
+ _kubernetesClient = new Kubernetes(config);
+ }
+
+ ///
+ /// Creates a namespace in the Kubernetes cluster.
+ ///
+ ///
+ ///
+ public async Task CreateNamespaceAsync(V1Namespace @namespace) =>
+ await _kubernetesClient.CreateNamespaceAsync(@namespace).ConfigureAwait(false);
+
+ ///
+ /// Creates a secret in the Kubernetes cluster.
+ ///
+ ///
+ ///
+ ///
+ public async Task CreateSecretAsync(V1Secret secret, string @namespace) =>
+ await _kubernetesClient.CreateNamespacedSecretAsync(secret, @namespace).ConfigureAwait(false);
+
+ ///
+ /// Disposes the resources used by the .
+ ///
+ public void Dispose()
+ {
+ _kubernetesClient?.Dispose();
+ GC.SuppressFinalize(this);
+ }
+}
diff --git a/Devantler.KubernetesProvisioner.sln b/Devantler.KubernetesProvisioner.sln
index 15d74f9..32bd2cf 100644
--- a/Devantler.KubernetesProvisioner.sln
+++ b/Devantler.KubernetesProvisioner.sln
@@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Devantler.KubernetesProvisi
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Devantler.KubernetesProvisioner.Cluster.Kind.Tests", "Devantler.KubernetesProvisioner.Cluster.Kind.Tests\Devantler.KubernetesProvisioner.Cluster.Kind.Tests.csproj", "{D61BE646-1573-45DE-95DC-53698B68377E}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Devantler.KubernetesProvisioner.Resource.Native", "Devantler.KubernetesProvisioner.Resource.Native\Devantler.KubernetesProvisioner.Resource.Native.csproj", "{C8BDA408-0E9E-480D-B243-618E0E0579AE}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -42,5 +44,9 @@ Global
{D61BE646-1573-45DE-95DC-53698B68377E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D61BE646-1573-45DE-95DC-53698B68377E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D61BE646-1573-45DE-95DC-53698B68377E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C8BDA408-0E9E-480D-B243-618E0E0579AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C8BDA408-0E9E-480D-B243-618E0E0579AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C8BDA408-0E9E-480D-B243-618E0E0579AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C8BDA408-0E9E-480D-B243-618E0E0579AE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal