Skip to content

Commit 163148e

Browse files
committed
Use the new WithHttpsCertificateConfiguration apis for Otel Collector
Use the new `WithHttpsCertificateConfiguration` apis in 13.1 rather than the previous custom implementation of exporting the dev cert.
1 parent ed6333d commit 163148e

File tree

5 files changed

+27
-383
lines changed

5 files changed

+27
-383
lines changed

examples/opentelemetry-collector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.AppHost/AppHost.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
builder.AddProject<Projects.CommunityToolkit_Aspire_Hosting_OpenTelemetryCollector_Api>("api");
44

5-
builder.AddOpenTelemetryCollector("opentelemetry-collector")
5+
var collector = builder.AddOpenTelemetryCollector("opentelemetry-collector")
66
.WithAppForwarding()
77
.WithConfig("./config.yaml");
88

99
builder.Build().Run();
10+

src/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector.csproj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,4 @@
99
<PackageReference Include="Aspire.Hosting" />
1010
</ItemGroup>
1111

12-
<ItemGroup>
13-
<Compile Include="$(SharedDir)\DevCertHostingExtensions.cs" Link="Utils\DevCertHostingExtensions.cs" />
14-
</ItemGroup>
15-
1612
</Project>

src/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector/OpenTelemetryCollectorExtensions.cs

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -34,42 +34,20 @@ public static IResourceBuilder<OpenTelemetryCollectorResource> AddOpenTelemetryC
3434
var settings = new OpenTelemetryCollectorSettings();
3535
configureSettings?.Invoke(settings);
3636

37-
var isHttpsEnabled = !settings.ForceNonSecureReceiver && url.StartsWith("https", StringComparison.OrdinalIgnoreCase);
38-
3937
var resource = new OpenTelemetryCollectorResource(name);
4038
var resourceBuilder = builder.AddResource(resource)
4139
.WithImage(settings.CollectorImage, settings.CollectorTag)
4240
.WithEnvironment("ASPIRE_ENDPOINT", new HostUrl(url))
4341
.WithEnvironment("ASPIRE_API_KEY", builder.Configuration[DashboardOtlpApiKeyVariableName])
4442
.WithIconName("DesktopPulse");
4543

46-
if (settings.EnableGrpcEndpoint)
47-
resourceBuilder.WithEndpoint(targetPort: 4317, name: OpenTelemetryCollectorResource.GrpcEndpointName, scheme: isHttpsEnabled ? "https" : "http");
48-
if (settings.EnableHttpEndpoint)
49-
resourceBuilder.WithEndpoint(targetPort: 4318, name: OpenTelemetryCollectorResource.HttpEndpointName, scheme: isHttpsEnabled ? "https" : "http");
50-
51-
52-
if (!settings.ForceNonSecureReceiver && isHttpsEnabled && builder.ExecutionContext.IsRunMode)
53-
{
54-
resourceBuilder.RunWithHttpsDevCertificate();
44+
var useHttpsForReceivers = !settings.ForceNonSecureReceiver && url.StartsWith("https", StringComparison.OrdinalIgnoreCase);
5545

56-
// Not using `Path.Combine` as we MUST use unix style paths in the container
57-
var certFilePath = $"{DevCertHostingExtensions.DEV_CERT_BIND_MOUNT_DEST_DIR}/{DevCertHostingExtensions.CERT_FILE_NAME}";
58-
var certKeyPath = $"{DevCertHostingExtensions.DEV_CERT_BIND_MOUNT_DEST_DIR}/{DevCertHostingExtensions.CERT_KEY_FILE_NAME}";
46+
if (settings.EnableGrpcEndpoint)
47+
ConfigureReceiver(4317, OpenTelemetryCollectorResource.GrpcEndpointName);
5948

60-
if (settings.EnableHttpEndpoint)
61-
{
62-
resourceBuilder.WithArgs(
63-
$@"--config=yaml:receivers::otlp::protocols::http::tls::cert_file: ""{certFilePath}""",
64-
$@"--config=yaml:receivers::otlp::protocols::http::tls::key_file: ""{certKeyPath}""");
65-
}
66-
if (settings.EnableGrpcEndpoint)
67-
{
68-
resourceBuilder.WithArgs(
69-
$@"--config=yaml:receivers::otlp::protocols::grpc::tls::cert_file: ""{certFilePath}""",
70-
$@"--config=yaml:receivers::otlp::protocols::grpc::tls::key_file: ""{certKeyPath}""");
71-
}
72-
}
49+
if (settings.EnableHttpEndpoint)
50+
ConfigureReceiver(4318, OpenTelemetryCollectorResource.HttpEndpointName);
7351

7452
if (!settings.DisableHealthcheck)
7553
{
@@ -83,6 +61,26 @@ public static IResourceBuilder<OpenTelemetryCollectorResource> AddOpenTelemetryC
8361
);
8462
}
8563
return resourceBuilder;
64+
65+
void ConfigureReceiver(int port, string protocol)
66+
{
67+
var scheme = useHttpsForReceivers ? "https" : "http";
68+
resourceBuilder.WithEndpoint(targetPort: port, name: protocol, scheme: scheme);
69+
70+
if (!useHttpsForReceivers)
71+
{
72+
return;
73+
}
74+
75+
#pragma warning disable ASPIRECERTIFICATES001 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
76+
resourceBuilder.WithHttpsCertificateConfiguration(ctx =>
77+
{
78+
ctx.Arguments.Add(ReferenceExpression.Create($@"--config=yaml:receivers::otlp::protocols::{protocol}::tls::cert_file: ""{ctx.CertificatePath}"""));
79+
ctx.Arguments.Add(ReferenceExpression.Create($@"--config=yaml:receivers::otlp::protocols::{protocol}::tls::key_file: ""{ctx.KeyPath}"""));
80+
return Task.CompletedTask;
81+
});
82+
#pragma warning restore ASPIRECERTIFICATES001 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
83+
}
8684
}
8785

8886
/// <summary>
@@ -123,5 +121,4 @@ public static IResourceBuilder<OpenTelemetryCollectorResource> WithConfig(this I
123121
return builder.WithBindMount(configPath, $"/config/{configFileInfo.Name}")
124122
.WithArgs($"--config=/config/{configFileInfo.Name}");
125123
}
126-
127124
}

src/Shared/DevCertHostingExtensions.cs

Lines changed: 0 additions & 152 deletions
This file was deleted.

0 commit comments

Comments
 (0)