Browse Source

Add basic zipkin extension

This starts the zipkin container, but `--dtrace zipkin=...` is still
needed for now.
davidfowl/ingress-changes
Ryan Nowak 7 years ago
parent
commit
6dfde68572
  1. 2
      src/Microsoft.Tye.Extensions/WellKnownExtensions.cs
  2. 45
      src/Microsoft.Tye.Extensions/Zipkin/ZipkinExtension.cs

2
src/Microsoft.Tye.Extensions/WellKnownExtensions.cs

@ -5,6 +5,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Microsoft.Tye.Extensions.Dapr; using Microsoft.Tye.Extensions.Dapr;
using Microsoft.Tye.Extensions.Zipkin;
namespace Microsoft.Tye.Extensions namespace Microsoft.Tye.Extensions
{ {
@ -13,6 +14,7 @@ namespace Microsoft.Tye.Extensions
public static IReadOnlyDictionary<string, Extension> Extensions = new Dictionary<string, Extension>(StringComparer.InvariantCultureIgnoreCase) public static IReadOnlyDictionary<string, Extension> Extensions = new Dictionary<string, Extension>(StringComparer.InvariantCultureIgnoreCase)
{ {
{ "dapr", new DaprExtension() }, { "dapr", new DaprExtension() },
{ "zipkin", new ZipkinExtension() },
}; };
} }
} }

45
src/Microsoft.Tye.Extensions/Zipkin/ZipkinExtension.cs

@ -0,0 +1,45 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace Microsoft.Tye.Extensions.Zipkin
{
internal sealed class ZipkinExtension : Extension
{
public override string Name => "zipkin";
public override Task ProcessAsync(ExtensionContext context, ExtensionConfiguration config)
{
if (context.Application.Services.Any(s => s.Name == "zipkin"))
{
context.Output.WriteDebugLine("Zipkin service already configured. Skipping...");
return Task.CompletedTask;
}
if (context.Operation == ExtensionContext.OperationKind.LocalRun)
{
var service = new ContainerServiceBuilder("zipkin", "openzipkin/zipkin")
{
Bindings =
{
new BindingBuilder()
{
Port = 9411,
ContainerPort = 9411,
Protocol = "http",
},
},
};
context.Application.Services.Add(service);
}
return Task.CompletedTask;
}
}
}
Loading…
Cancel
Save