mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-06-17 13:23:20 +08:00

* 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
39 lines
1.6 KiB
C#
39 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|