in src/Azure.Deployments.Extensibility.Extensions.Kubernetes/Client/K8sClientFactory.cs [14:39]
public async Task<IK8sClient> CreateAsync(JsonObject? config)
{
ArgumentNullException.ThrowIfNull(config, nameof(config));
try
{
var kubeConfig = config["kubeConfig"]?.GetValue<string>() ?? throw new InvalidOperationException("Expected kubeConfig to be non-null.");
var kubeConfigBytes = Convert.FromBase64String(kubeConfig);
var kubeConfigStream = new MemoryStream(kubeConfigBytes);
var currentContext = config["context"]?.GetValue<string>();
var clientConfiguration = await KubernetesClientConfiguration.BuildConfigFromConfigFileAsync(kubeConfigStream, currentContext: currentContext);
if (config["namespace"]?.GetValue<string>() is { } namespaceOverride)
{
clientConfiguration.Namespace = namespaceOverride;
}
var kubernetes = new k8s.Kubernetes(clientConfiguration);
return new K8sClient(clientConfiguration);
}
catch (KubeConfigException exception)
{
throw new ErrorResponseException("InvalidKubeConfig", exception.Message, JsonPointer.Create("config", "kubeConfig"));
}
}