mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-12-30 11:45:50 +08:00
kubernetes provider (#772)
* feat: Kubernetes ServiceDiscoveryProvider * 编写k8s测试例子 * feat:fix kube config * feat: remove port * feat : complete the k8s test * feat : add kubeserviceDiscovery test * feat : add kube provider unittest * feat :add kubetnetes docs how to use ocelot with kubetnetes docs * keep the configuration as simple as possible, no qos, no cache * fix: use http * add PollingKubeServiceDiscovery * feat : refactor logger * feat : add pollkube docs * feat:Remove unnecessary code * feat : code-block json
This commit is contained in:
committed by
Marcelo Castagna
parent
05ede70e62
commit
44dccf1fce
38
src/Ocelot.Provider.Kubernetes/KubernetesProviderFactory.cs
Normal file
38
src/Ocelot.Provider.Kubernetes/KubernetesProviderFactory.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using KubeClient;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Ocelot.Logging;
|
||||
using Ocelot.ServiceDiscovery;
|
||||
using System;
|
||||
|
||||
namespace Ocelot.Provider.Kubernetes
|
||||
{
|
||||
public static class KubernetesProviderFactory
|
||||
{
|
||||
public static ServiceDiscoveryFinderDelegate Get = (provider, config, name) =>
|
||||
{
|
||||
var factory = provider.GetService<IOcelotLoggerFactory>();
|
||||
return GetkubeProvider(provider, config, name, factory);
|
||||
};
|
||||
|
||||
private static ServiceDiscovery.Providers.IServiceDiscoveryProvider GetkubeProvider(IServiceProvider provider, Configuration.ServiceProviderConfiguration config, string name, IOcelotLoggerFactory factory)
|
||||
{
|
||||
var kubeClientFactory = provider.GetService<IKubeApiClientFactory>();
|
||||
var k8sRegistryConfiguration = new KubeRegistryConfiguration()
|
||||
{
|
||||
ApiEndPoint = new Uri($"https://{config.Host}:{config.Port}"),
|
||||
KeyOfServiceInK8s = name,
|
||||
KubeNamespace = config.Namesapce,
|
||||
AuthStrategy = KubeAuthStrategy.BearerToken,
|
||||
AccessToken = config.Token,
|
||||
AllowInsecure = true // Don't validate server certificate
|
||||
};
|
||||
|
||||
var k8sServiceDiscoveryProvider = new Kube(k8sRegistryConfiguration, factory, kubeClientFactory);
|
||||
if (config.Type?.ToLower() == "pollkube")
|
||||
{
|
||||
return new PollKube(config.PollingInterval, factory, k8sServiceDiscoveryProvider);
|
||||
}
|
||||
return k8sServiceDiscoveryProvider;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user