mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 15:30:49 +08:00 
			
		
		
		
	编写k8s测试例子
This commit is contained in:
		
							
								
								
									
										9
									
								
								samples/OelotKube/.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								samples/OelotKube/.dockerignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					.dockerignore
 | 
				
			||||||
 | 
					.env
 | 
				
			||||||
 | 
					.git
 | 
				
			||||||
 | 
					.gitignore
 | 
				
			||||||
 | 
					.vs
 | 
				
			||||||
 | 
					.vscode
 | 
				
			||||||
 | 
					*/bin
 | 
				
			||||||
 | 
					*/obj
 | 
				
			||||||
 | 
					**/.toolstarget
 | 
				
			||||||
							
								
								
									
										21
									
								
								samples/OelotKube/ApiGateway/ApiGateway.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								samples/OelotKube/ApiGateway/ApiGateway.csproj
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					<Project Sdk="Microsoft.NET.Sdk.Web">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <PropertyGroup>
 | 
				
			||||||
 | 
					    <TargetFramework>netcoreapp2.1</TargetFramework>
 | 
				
			||||||
 | 
					    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
 | 
				
			||||||
 | 
					    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <PackageReference Include="Microsoft.AspNetCore.App" />
 | 
				
			||||||
 | 
					    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.1" PrivateAssets="All" />
 | 
				
			||||||
 | 
					    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.1.1" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\..\..\src\Ocelot.Provider.Kubernetes\Ocelot.Provider.Kubernetes.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\..\..\src\Ocelot.Provider.Polly\Ocelot.Provider.Polly.csproj" />
 | 
				
			||||||
 | 
					    <ProjectReference Include="..\..\..\src\Ocelot\Ocelot.csproj" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
							
								
								
									
										19
									
								
								samples/OelotKube/ApiGateway/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								samples/OelotKube/ApiGateway/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
 | 
				
			||||||
 | 
					WORKDIR /app
 | 
				
			||||||
 | 
					EXPOSE 80
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM microsoft/dotnet:2.2-sdk AS build
 | 
				
			||||||
 | 
					WORKDIR /src
 | 
				
			||||||
 | 
					COPY ["ApiGateway/ApiGateway.csproj", "ApiGateway/"]
 | 
				
			||||||
 | 
					RUN dotnet restore "ApiGateway/ApiGateway.csproj"
 | 
				
			||||||
 | 
					COPY . .
 | 
				
			||||||
 | 
					WORKDIR "/src/ApiGateway"
 | 
				
			||||||
 | 
					RUN dotnet build "ApiGateway.csproj" -c Release -o /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM build AS publish
 | 
				
			||||||
 | 
					RUN dotnet publish "ApiGateway.csproj" -c Release -o /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM base AS final
 | 
				
			||||||
 | 
					WORKDIR /app
 | 
				
			||||||
 | 
					COPY --from=publish /app .
 | 
				
			||||||
 | 
					ENTRYPOINT ["dotnet", "ApiGateway.dll"]
 | 
				
			||||||
							
								
								
									
										33
									
								
								samples/OelotKube/ApiGateway/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								samples/OelotKube/ApiGateway/Program.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					using Microsoft.AspNetCore;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Hosting;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.Configuration;
 | 
				
			||||||
 | 
					using Ocelot.DependencyInjection;
 | 
				
			||||||
 | 
					using Ocelot.Middleware;
 | 
				
			||||||
 | 
					using Ocelot.Provider.Kubernetes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace ApiGateway
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class Program
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static void Main(string[] args)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            BuildWebHost(args).Run();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static IWebHost BuildWebHost(string[] args) =>
 | 
				
			||||||
 | 
					            WebHost.CreateDefaultBuilder(args)
 | 
				
			||||||
 | 
					                .UseUrls("http://localhost:5000")
 | 
				
			||||||
 | 
					                .ConfigureAppConfiguration((hostingContext, config) =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    config
 | 
				
			||||||
 | 
					                        .SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
 | 
				
			||||||
 | 
					                        .AddJsonFile("appsettings.json", true, true)
 | 
				
			||||||
 | 
					                        .AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", true, true)
 | 
				
			||||||
 | 
					                        .AddJsonFile("ocelot.json", false, false)
 | 
				
			||||||
 | 
					                        .AddEnvironmentVariables();
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					            .UseStartup<Startup>()
 | 
				
			||||||
 | 
					            .Build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								samples/OelotKube/ApiGateway/Properties/launchSettings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								samples/OelotKube/ApiGateway/Properties/launchSettings.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "iisSettings": {
 | 
				
			||||||
 | 
					    "windowsAuthentication": false,
 | 
				
			||||||
 | 
					    "anonymousAuthentication": true,
 | 
				
			||||||
 | 
					    "iisExpress": {
 | 
				
			||||||
 | 
					      "applicationUrl": "http://localhost:52363",
 | 
				
			||||||
 | 
					      "sslPort": 0
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "profiles": {
 | 
				
			||||||
 | 
					    "IIS Express": {
 | 
				
			||||||
 | 
					      "commandName": "IISExpress",
 | 
				
			||||||
 | 
					      "launchBrowser": true,
 | 
				
			||||||
 | 
					      "environmentVariables": {
 | 
				
			||||||
 | 
					        "ASPNETCORE_ENVIRONMENT": "Development"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "ApiGateway": {
 | 
				
			||||||
 | 
					      "commandName": "Project",
 | 
				
			||||||
 | 
					      "launchBrowser": true,
 | 
				
			||||||
 | 
					      "environmentVariables": {
 | 
				
			||||||
 | 
					        "ASPNETCORE_ENVIRONMENT": "Development"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "applicationUrl": "http://localhost:5000"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "Docker": {
 | 
				
			||||||
 | 
					      "commandName": "Docker",
 | 
				
			||||||
 | 
					      "launchBrowser": true,
 | 
				
			||||||
 | 
					      "launchUrl": "{Scheme}://localhost:{ServicePort}"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										38
									
								
								samples/OelotKube/ApiGateway/Startup.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								samples/OelotKube/ApiGateway/Startup.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Builder;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Hosting;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Http;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.DependencyInjection;
 | 
				
			||||||
 | 
					using Ocelot.DependencyInjection;
 | 
				
			||||||
 | 
					using Ocelot.Middleware;
 | 
				
			||||||
 | 
					using Ocelot.Provider.Kubernetes;
 | 
				
			||||||
 | 
					using Ocelot.Provider.Polly;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace ApiGateway
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class Startup
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // This method gets called by the runtime. Use this method to add services to the container.
 | 
				
			||||||
 | 
					        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
 | 
				
			||||||
 | 
					        public void ConfigureServices(IServiceCollection services)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            services.AddOcelot()
 | 
				
			||||||
 | 
					                .AddPolly()
 | 
				
			||||||
 | 
					                .AddKubernetes();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
 | 
				
			||||||
 | 
					        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (env.IsDevelopment())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                app.UseDeveloperExceptionPage();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            app.UseOcelot().Wait();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "Logging": {
 | 
				
			||||||
 | 
					    "LogLevel": {
 | 
				
			||||||
 | 
					      "Default": "Debug",
 | 
				
			||||||
 | 
					      "System": "Information",
 | 
				
			||||||
 | 
					      "Microsoft": "Information"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										8
									
								
								samples/OelotKube/ApiGateway/appsettings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								samples/OelotKube/ApiGateway/appsettings.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "Logging": {
 | 
				
			||||||
 | 
					    "LogLevel": {
 | 
				
			||||||
 | 
					      "Default": "Warning"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "AllowedHosts": "*"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										27
									
								
								samples/OelotKube/ApiGateway/ocelot.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								samples/OelotKube/ApiGateway/ocelot.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "ReRoutes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "DownstreamPathTemplate": "/api/Category",
 | 
				
			||||||
 | 
					      "DownstreamScheme": "http",
 | 
				
			||||||
 | 
					      "UpstreamPathTemplate": "/Category",
 | 
				
			||||||
 | 
					      "ServiceName": "DownstreamService",
 | 
				
			||||||
 | 
					      "UpstreamHttpMethod": [ "Get" ],
 | 
				
			||||||
 | 
					      "QoSOptions": {
 | 
				
			||||||
 | 
					        "ExceptionsAllowedBeforeBreaking": 3,
 | 
				
			||||||
 | 
					        "DurationOfBreak": 10000,
 | 
				
			||||||
 | 
					        "TimeoutValue": 5000
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "FileCacheOptions": { "TtlSeconds": 15 }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "GlobalConfiguration": {
 | 
				
			||||||
 | 
					    "RequestIdKey": "OcRequestId",
 | 
				
			||||||
 | 
					    "AdministrationPath": "/administration",
 | 
				
			||||||
 | 
					    "ServiceDiscoveryProvider": {
 | 
				
			||||||
 | 
					      "Host": "localhost",
 | 
				
			||||||
 | 
					      "Port": 8001,
 | 
				
			||||||
 | 
					      "Namesapce": "dev",
 | 
				
			||||||
 | 
					      "Type": "k8s"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Mvc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DownstreamService.Controllers
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [Route("api/[controller]")]
 | 
				
			||||||
 | 
					    [ApiController]
 | 
				
			||||||
 | 
					    public class ValuesController : ControllerBase
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // GET api/values
 | 
				
			||||||
 | 
					        [HttpGet]
 | 
				
			||||||
 | 
					        public ActionResult<IEnumerable<string>> Get()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return new string[] { "value1", "value2" };
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // GET api/values/5
 | 
				
			||||||
 | 
					        [HttpGet("{id}")]
 | 
				
			||||||
 | 
					        public ActionResult<string> Get(int id)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return "value";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // POST api/values
 | 
				
			||||||
 | 
					        [HttpPost]
 | 
				
			||||||
 | 
					        public void Post([FromBody] string value)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // PUT api/values/5
 | 
				
			||||||
 | 
					        [HttpPut("{id}")]
 | 
				
			||||||
 | 
					        public void Put(int id, [FromBody] string value)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // DELETE api/values/5
 | 
				
			||||||
 | 
					        [HttpDelete("{id}")]
 | 
				
			||||||
 | 
					        public void Delete(int id)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								samples/OelotKube/DownstreamService/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								samples/OelotKube/DownstreamService/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
 | 
				
			||||||
 | 
					WORKDIR /app
 | 
				
			||||||
 | 
					EXPOSE 80
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM microsoft/dotnet:2.2-sdk AS build
 | 
				
			||||||
 | 
					WORKDIR /src
 | 
				
			||||||
 | 
					COPY ["DownstreamService/DownstreamService.csproj", "DownstreamService/"]
 | 
				
			||||||
 | 
					RUN dotnet restore "DownstreamService/DownstreamService.csproj"
 | 
				
			||||||
 | 
					COPY . .
 | 
				
			||||||
 | 
					WORKDIR "/src/DownstreamService"
 | 
				
			||||||
 | 
					RUN dotnet build "DownstreamService.csproj" -c Release -o /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM build AS publish
 | 
				
			||||||
 | 
					RUN dotnet publish "DownstreamService.csproj" -c Release -o /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FROM base AS final
 | 
				
			||||||
 | 
					WORKDIR /app
 | 
				
			||||||
 | 
					COPY --from=publish /app .
 | 
				
			||||||
 | 
					ENTRYPOINT ["dotnet", "DownstreamService.dll"]
 | 
				
			||||||
							
								
								
									
										15
									
								
								samples/OelotKube/DownstreamService/DownstreamService.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								samples/OelotKube/DownstreamService/DownstreamService.csproj
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					<Project Sdk="Microsoft.NET.Sdk.Web">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <PropertyGroup>
 | 
				
			||||||
 | 
					    <TargetFramework>netcoreapp2.1</TargetFramework>
 | 
				
			||||||
 | 
					    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
 | 
				
			||||||
 | 
					    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <PackageReference Include="Microsoft.AspNetCore.App" />
 | 
				
			||||||
 | 
					    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
 | 
				
			||||||
 | 
					    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.1.1" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
							
								
								
									
										24
									
								
								samples/OelotKube/DownstreamService/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								samples/OelotKube/DownstreamService/Program.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.IO;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Hosting;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.Configuration;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DownstreamService
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class Program
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static void Main(string[] args)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CreateWebHostBuilder(args).Build().Run();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
 | 
				
			||||||
 | 
					            WebHost.CreateDefaultBuilder(args)
 | 
				
			||||||
 | 
					                .UseStartup<Startup>();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "iisSettings": {
 | 
				
			||||||
 | 
					    "windowsAuthentication": false,
 | 
				
			||||||
 | 
					    "anonymousAuthentication": true,
 | 
				
			||||||
 | 
					    "iisExpress": {
 | 
				
			||||||
 | 
					      "applicationUrl": "http://localhost:56411",
 | 
				
			||||||
 | 
					      "sslPort": 0
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "$schema": "http://json.schemastore.org/launchsettings.json",
 | 
				
			||||||
 | 
					  "profiles": {
 | 
				
			||||||
 | 
					    "IIS Express": {
 | 
				
			||||||
 | 
					      "commandName": "IISExpress",
 | 
				
			||||||
 | 
					      "launchBrowser": true,
 | 
				
			||||||
 | 
					      "launchUrl": "api/values",
 | 
				
			||||||
 | 
					      "environmentVariables": {
 | 
				
			||||||
 | 
					        "ASPNETCORE_ENVIRONMENT": "Development"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "DownstreamService": {
 | 
				
			||||||
 | 
					      "commandName": "Project",
 | 
				
			||||||
 | 
					      "launchBrowser": true,
 | 
				
			||||||
 | 
					      "launchUrl": "api/values",
 | 
				
			||||||
 | 
					      "environmentVariables": {
 | 
				
			||||||
 | 
					        "ASPNETCORE_ENVIRONMENT": "Development"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "applicationUrl": "http://localhost:5000"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "Docker": {
 | 
				
			||||||
 | 
					      "commandName": "Docker",
 | 
				
			||||||
 | 
					      "launchBrowser": true,
 | 
				
			||||||
 | 
					      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										41
									
								
								samples/OelotKube/DownstreamService/Startup.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								samples/OelotKube/DownstreamService/Startup.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Builder;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Hosting;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Mvc;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.Configuration;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.DependencyInjection;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.Options;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DownstreamService
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class Startup
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public Startup(IConfiguration configuration)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Configuration = configuration;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public IConfiguration Configuration { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // This method gets called by the runtime. Use this method to add services to the container.
 | 
				
			||||||
 | 
					        public void ConfigureServices(IServiceCollection services)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
 | 
				
			||||||
 | 
					        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (env.IsDevelopment())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                app.UseDeveloperExceptionPage();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            app.UseMvc();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "Logging": {
 | 
				
			||||||
 | 
					    "LogLevel": {
 | 
				
			||||||
 | 
					      "Default": "Debug",
 | 
				
			||||||
 | 
					      "System": "Information",
 | 
				
			||||||
 | 
					      "Microsoft": "Information"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										8
									
								
								samples/OelotKube/DownstreamService/appsettings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								samples/OelotKube/DownstreamService/appsettings.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "Logging": {
 | 
				
			||||||
 | 
					    "LogLevel": {
 | 
				
			||||||
 | 
					      "Default": "Warning"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "AllowedHosts": "*"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										49
									
								
								samples/OelotKube/OelotKube.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								samples/OelotKube/OelotKube.sln
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					Microsoft Visual Studio Solution File, Format Version 12.00
 | 
				
			||||||
 | 
					# Visual Studio 15
 | 
				
			||||||
 | 
					VisualStudioVersion = 15.0.28010.2048
 | 
				
			||||||
 | 
					MinimumVisualStudioVersion = 10.0.40219.1
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApiGateway", "ApiGateway\ApiGateway.csproj", "{E9AFBFD7-EF20-48E5-BB30-5C63C59D7C1C}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ocelot", "..\..\src\Ocelot\Ocelot.csproj", "{E8551073-622E-45FA-AD09-038EB8AAFFBC}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ocelot.Provider.Kubernetes", "..\..\src\Ocelot.Provider.Kubernetes\Ocelot.Provider.Kubernetes.csproj", "{EF973868-98A6-4864-BF66-65B5A8C123FE}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ocelot.Provider.Polly", "..\..\src\Ocelot.Provider.Polly\Ocelot.Provider.Polly.csproj", "{323055CB-BF62-4A31-A619-A4444B633CDB}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DownstreamService", "DownstreamService\DownstreamService.csproj", "{86FFAE3C-648F-4CDE-A260-37C8EBFBF4F2}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Global
 | 
				
			||||||
 | 
						GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
				
			||||||
 | 
							Debug|Any CPU = Debug|Any CPU
 | 
				
			||||||
 | 
							Release|Any CPU = Release|Any CPU
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
						GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
				
			||||||
 | 
							{E9AFBFD7-EF20-48E5-BB30-5C63C59D7C1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{E9AFBFD7-EF20-48E5-BB30-5C63C59D7C1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{E9AFBFD7-EF20-48E5-BB30-5C63C59D7C1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{E9AFBFD7-EF20-48E5-BB30-5C63C59D7C1C}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{E8551073-622E-45FA-AD09-038EB8AAFFBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{E8551073-622E-45FA-AD09-038EB8AAFFBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{E8551073-622E-45FA-AD09-038EB8AAFFBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{E8551073-622E-45FA-AD09-038EB8AAFFBC}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{EF973868-98A6-4864-BF66-65B5A8C123FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{EF973868-98A6-4864-BF66-65B5A8C123FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{EF973868-98A6-4864-BF66-65B5A8C123FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{EF973868-98A6-4864-BF66-65B5A8C123FE}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{323055CB-BF62-4A31-A619-A4444B633CDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{323055CB-BF62-4A31-A619-A4444B633CDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{323055CB-BF62-4A31-A619-A4444B633CDB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{323055CB-BF62-4A31-A619-A4444B633CDB}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{86FFAE3C-648F-4CDE-A260-37C8EBFBF4F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{86FFAE3C-648F-4CDE-A260-37C8EBFBF4F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{86FFAE3C-648F-4CDE-A260-37C8EBFBF4F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{86FFAE3C-648F-4CDE-A260-37C8EBFBF4F2}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
						GlobalSection(SolutionProperties) = preSolution
 | 
				
			||||||
 | 
							HideSolutionNode = FALSE
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
						GlobalSection(ExtensibilityGlobals) = postSolution
 | 
				
			||||||
 | 
							SolutionGuid = {D29790E8-4BA9-4E60-8D7D-327E21320CC9}
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
					EndGlobal
 | 
				
			||||||
@@ -11,10 +11,18 @@ namespace Ocelot.Provider.Kubernetes
 | 
				
			|||||||
        public static ServiceDiscoveryFinderDelegate Get = (provider, config, name) =>
 | 
					        public static ServiceDiscoveryFinderDelegate Get = (provider, config, name) =>
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var factory = provider.GetService<IOcelotLoggerFactory>();
 | 
					            var factory = provider.GetService<IOcelotLoggerFactory>();
 | 
				
			||||||
 | 
					            if (config.Type?.ToLower() == "k8s")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return GetkubeProvider(provider, config, name, factory);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private static ServiceDiscovery.Providers.IServiceDiscoveryProvider GetkubeProvider(IServiceProvider provider, Configuration.ServiceProviderConfiguration config, string name, IOcelotLoggerFactory factory)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            var kubeClientFactory = provider.GetService<IKubeApiClientFactory>();
 | 
					            var kubeClientFactory = provider.GetService<IKubeApiClientFactory>();
 | 
				
			||||||
 | 
					            var k8sRegistryConfiguration = new KubeRegistryConfiguration()
 | 
				
			||||||
            var k8sRegistryConfiguration = new KubeRegistryConfiguration() {
 | 
					            {
 | 
				
			||||||
                ApiEndPoint = new Uri($"http://{config.Host}:{config.Port}"),
 | 
					                ApiEndPoint = new Uri($"http://{config.Host}:{config.Port}"),
 | 
				
			||||||
                KeyOfServiceInK8s = name,
 | 
					                KeyOfServiceInK8s = name,
 | 
				
			||||||
                KubeNamespace = config.Namesapce,
 | 
					                KubeNamespace = config.Namesapce,
 | 
				
			||||||
@@ -26,6 +34,6 @@ namespace Ocelot.Provider.Kubernetes
 | 
				
			|||||||
            var k8sServiceDiscoveryProvider = new KubeProvider(k8sRegistryConfiguration, factory, kubeClientFactory);
 | 
					            var k8sServiceDiscoveryProvider = new KubeProvider(k8sRegistryConfiguration, factory, kubeClientFactory);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return k8sServiceDiscoveryProvider;
 | 
					            return k8sServiceDiscoveryProvider;
 | 
				
			||||||
        };
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user