diff --git a/src/Aspire.Hosting.Kubernetes/Extensions/HelmExtensions.cs b/src/Aspire.Hosting.Kubernetes/Extensions/HelmExtensions.cs index 02a5997fa50..421cfd1d4f8 100644 --- a/src/Aspire.Hosting.Kubernetes/Extensions/HelmExtensions.cs +++ b/src/Aspire.Hosting.Kubernetes/Extensions/HelmExtensions.cs @@ -27,13 +27,16 @@ public static string ToHelmValuesSectionName(this string resourceName) => $"{resourceName.Replace("-", "_")}"; public static string ToHelmParameterExpression(this string parameterName, string resourceName) - => $"{{{{ {ValuesSegment}.{ParametersKey}.{resourceName.ToHelmValuesSectionName()}.{parameterName} }}}}"; + => $"{{{{ {ValuesSegment}.{ParametersKey}.{resourceName}.{parameterName} }}}}".ToHelmValuesSectionName(); public static string ToHelmSecretExpression(this string parameterName, string resourceName) - => $"{{{{ {ValuesSegment}.{SecretsKey}.{resourceName.ToHelmValuesSectionName()}.{parameterName} }}}}"; + => $"{{{{ {ValuesSegment}.{SecretsKey}.{resourceName}.{parameterName} }}}}".ToHelmValuesSectionName(); public static string ToHelmConfigExpression(this string parameterName, string resourceName) - => $"{{{{ {ValuesSegment}.{ConfigKey}.{resourceName.ToHelmValuesSectionName()}.{parameterName} }}}}"; + => $"{{{{ {ValuesSegment}.{ConfigKey}.{resourceName}.{parameterName} }}}}".ToHelmValuesSectionName(); + + public static string ToHelmChartName(this string applicationName) + => applicationName.ToLower().Replace("_", "-").Replace(".", "-"); /// /// Converts the specified resource name into a Kubernetes resource name. diff --git a/src/Aspire.Hosting.Kubernetes/Extensions/ResourceExtensions.cs b/src/Aspire.Hosting.Kubernetes/Extensions/ResourceExtensions.cs index 42e06aa0d55..2ae4836f422 100644 --- a/src/Aspire.Hosting.Kubernetes/Extensions/ResourceExtensions.cs +++ b/src/Aspire.Hosting.Kubernetes/Extensions/ResourceExtensions.cs @@ -15,6 +15,7 @@ internal static Deployment ToDeployment(this IResource resource, KubernetesResou Metadata = { Name = resource.Name.ToDeploymentName(), + Labels = context.Labels.ToDictionary(), }, Spec = { @@ -43,6 +44,7 @@ internal static StatefulSet ToStatefulSet(this IResource resource, KubernetesRes Metadata = { Name = resource.Name.ToStatefulSetName(), + Labels = context.Labels.ToDictionary(), }, Spec = { @@ -125,6 +127,7 @@ internal static StatefulSet ToStatefulSet(this IResource resource, KubernetesRes Metadata = { Name = resource.Name.ToServiceName(), + Labels = context.Labels.ToDictionary(), }, Spec = { diff --git a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs index 00769320050..c564353463f 100644 --- a/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs +++ b/src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs @@ -3,6 +3,7 @@ using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Kubernetes; +using Aspire.Hosting.Kubernetes.Extensions; using Aspire.Hosting.Lifecycle; namespace Aspire.Hosting; @@ -34,7 +35,10 @@ public static IResourceBuilder AddKubernetesEnvir builder.AddKubernetesInfrastructureCore(); - var resource = new KubernetesEnvironmentResource(name); + var resource = new KubernetesEnvironmentResource(name) + { + HelmChartName = builder.Environment.ApplicationName.ToHelmChartName() + }; if (builder.ExecutionContext.IsRunMode) { diff --git a/src/Aspire.Hosting.Kubernetes/KubernetesResource.cs b/src/Aspire.Hosting.Kubernetes/KubernetesResource.cs index f6c243836d7..6528721b0ad 100644 --- a/src/Aspire.Hosting.Kubernetes/KubernetesResource.cs +++ b/src/Aspire.Hosting.Kubernetes/KubernetesResource.cs @@ -88,6 +88,11 @@ internal IEnumerable GetTemplatedResources() foreach (var resource in AdditionalResources) { + foreach(var label in Labels) + { + resource.Metadata.Labels.TryAdd(label.Key, label.Value); + } + yield return resource; } } @@ -105,8 +110,9 @@ private void SetLabels() { Labels = new() { - ["app"] = "aspire", - ["component"] = resource.Name, + ["app.kubernetes.io/name"] = Parent.HelmChartName, + ["app.kubernetes.io/component"] = resource.Name, + ["app.kubernetes.io/instance"] = "{{.Release.Name}}", }; } diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesPublisherTests.cs b/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesPublisherTests.cs index ccf2efe0519..f522d302337 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesPublisherTests.cs +++ b/tests/Aspire.Hosting.Kubernetes.Tests/KubernetesPublisherTests.cs @@ -176,7 +176,8 @@ public async Task PublishAsync_HandlesSpecialResourceName() using var tempDir = new TempDirectory(); var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, "default", outputPath: tempDir.Path); - builder.AddKubernetesEnvironment("env"); + builder.AddKubernetesEnvironment("env") + .WithProperties(k => k.HelmChartName = "my-chart"); var param0 = builder.AddParameter("param0"); var param1 = builder.AddParameter("param1", secret: true); diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/Chart.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/Chart.verified.yaml index 6d8f50771e9..d05c0dbf228 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/Chart.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/Chart.verified.yaml @@ -1,5 +1,5 @@ apiVersion: "v2" -name: "aspire" +name: "aspire-hosting-tests" version: "0.1.0" kubeVersion: ">= 1.18.0-0" description: "Aspire Helm Chart" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/config.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/config.verified.yaml index 55b78b42c3d..1b773183653 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/config.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/config.verified.yaml @@ -4,8 +4,9 @@ kind: "ConfigMap" metadata: name: "servicea-config" labels: - app: "aspire" - component: "ServiceA" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceA" + app.kubernetes.io/instance: "{{.Release.Name}}" data: ASPNETCORE_URLS: "{{ .Values.config.ServiceA.ASPNETCORE_URLS }}" OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "{{ .Values.config.ServiceA.OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES }}" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/deployment.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/deployment.verified.yaml index 93d76bc7388..1363d058c9d 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/deployment.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/deployment.verified.yaml @@ -3,12 +3,17 @@ apiVersion: "apps/v1" kind: "Deployment" metadata: name: "servicea-deployment" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceA" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: template: metadata: labels: - app: "aspire" - component: "ServiceA" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceA" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: containers: - image: "{{ .Values.parameters.ServiceA.ServiceA_image }}" @@ -26,8 +31,9 @@ spec: imagePullPolicy: "IfNotPresent" selector: matchLabels: - app: "aspire" - component: "ServiceA" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceA" + app.kubernetes.io/instance: "{{.Release.Name}}" replicas: 1 revisionHistoryLimit: 3 strategy: diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/service.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/service.verified.yaml index bd2d3d25f12..917f2bf144f 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/service.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/ServiceA/service.verified.yaml @@ -3,11 +3,16 @@ apiVersion: "v1" kind: "Service" metadata: name: "servicea-service" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceA" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: type: "ClusterIP" selector: - app: "aspire" - component: "ServiceA" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceA" + app.kubernetes.io/instance: "{{.Release.Name}}" ports: - name: "http" protocol: "TCP" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/Chart.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/Chart.verified.yaml index 6d8f50771e9..d05c0dbf228 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/Chart.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/Chart.verified.yaml @@ -1,5 +1,5 @@ apiVersion: "v2" -name: "aspire" +name: "aspire-hosting-tests" version: "0.1.0" kubeVersion: ">= 1.18.0-0" description: "Aspire Helm Chart" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/config.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/config.verified.yaml index b2617dc1fe2..670f172f6bd 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/config.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/config.verified.yaml @@ -4,8 +4,9 @@ kind: "ConfigMap" metadata: name: "serviceb-config" labels: - app: "aspire" - component: "ServiceB" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceB" + app.kubernetes.io/instance: "{{.Release.Name}}" data: ASPNETCORE_URLS: "{{ .Values.config.ServiceB.ASPNETCORE_URLS }}" OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "{{ .Values.config.ServiceB.OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES }}" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/deployment.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/deployment.verified.yaml index 52d8465ca0b..5b897be7371 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/deployment.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/deployment.verified.yaml @@ -3,12 +3,17 @@ apiVersion: "apps/v1" kind: "Deployment" metadata: name: "serviceb-deployment" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceB" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: template: metadata: labels: - app: "aspire" - component: "ServiceB" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceB" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: containers: - image: "{{ .Values.parameters.ServiceB.ServiceB_image }}" @@ -26,8 +31,9 @@ spec: imagePullPolicy: "IfNotPresent" selector: matchLabels: - app: "aspire" - component: "ServiceB" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceB" + app.kubernetes.io/instance: "{{.Release.Name}}" replicas: 1 revisionHistoryLimit: 3 strategy: diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/service.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/service.verified.yaml index 38b06e30ece..2e67523ac19 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/service.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/ServiceB/service.verified.yaml @@ -3,11 +3,16 @@ apiVersion: "v1" kind: "Service" metadata: name: "serviceb-service" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceB" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: type: "ClusterIP" selector: - app: "aspire" - component: "ServiceB" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "ServiceB" + app.kubernetes.io/instance: "{{.Release.Name}}" ports: - name: "http" protocol: "TCP" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#00.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#00.verified.yaml index 6d8f50771e9..d05c0dbf228 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#00.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#00.verified.yaml @@ -1,5 +1,5 @@ apiVersion: "v2" -name: "aspire" +name: "aspire-hosting-tests" version: "0.1.0" kubeVersion: ">= 1.18.0-0" description: "Aspire Helm Chart" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#02.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#02.verified.yaml index a74f59397d6..62b3a954f25 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#02.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#02.verified.yaml @@ -3,12 +3,17 @@ apiVersion: "apps/v1" kind: "Deployment" metadata: name: "service-deployment" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "service" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: template: metadata: labels: - app: "aspire" - component: "service" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "service" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: containers: - image: "nginx:latest" @@ -16,8 +21,9 @@ spec: imagePullPolicy: "IfNotPresent" selector: matchLabels: - app: "aspire" - component: "service" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "service" + app.kubernetes.io/instance: "{{.Release.Name}}" replicas: 1 revisionHistoryLimit: 3 strategy: diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAppliesServiceCustomizations.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAppliesServiceCustomizations.verified.yaml index a7795faf5cf..4073fe66451 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAppliesServiceCustomizations.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAppliesServiceCustomizations.verified.yaml @@ -3,12 +3,17 @@ apiVersion: "apps/v1" kind: "Deployment" metadata: name: "service-deployment" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "service" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: template: metadata: labels: - app: "aspire" - component: "service" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "service" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: containers: - image: "nginx:latest" @@ -19,8 +24,9 @@ spec: imagePullPolicy: "Always" selector: matchLabels: - app: "aspire" - component: "service" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "service" + app.kubernetes.io/instance: "{{.Release.Name}}" replicas: 1 revisionHistoryLimit: 5 strategy: diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#00.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#00.verified.yaml index 5a1d07a4bbb..e4179697054 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#00.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#00.verified.yaml @@ -1,5 +1,5 @@ apiVersion: "v2" -name: "aspire" +name: "aspire-hosting-tests" version: "0.1.0" kubeVersion: ">= 1.18.0-0" description: "Aspire Helm Chart" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#02.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#02.verified.yaml index 52fd5c7740c..9f872dfbd2f 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#02.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#02.verified.yaml @@ -4,15 +4,17 @@ kind: "Rollout" metadata: name: "myapp-rollout" labels: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: replicas: 1 template: metadata: labels: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: containers: - image: "mcr.microsoft.com/dotnet/aspnet:8.0" @@ -27,5 +29,6 @@ spec: imagePullPolicy: "IfNotPresent" selector: matchLabels: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#03.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#03.verified.yaml index c7d5d58c445..9b7033ec1e7 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#03.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#03.verified.yaml @@ -3,11 +3,16 @@ apiVersion: "v1" kind: "Service" metadata: name: "myapp-service" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: type: "ClusterIP" selector: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" ports: - name: "http" protocol: "TCP" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#04.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#04.verified.yaml index 203331c7af1..2409d563462 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#04.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#04.verified.yaml @@ -4,7 +4,8 @@ kind: "ConfigMap" metadata: name: "myapp-config" labels: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" data: ASPNETCORE_ENVIRONMENT: "{{ .Values.config.myapp.ASPNETCORE_ENVIRONMENT }}" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#05.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#05.verified.yaml index c212395cc53..b2115e61aec 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#05.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#05.verified.yaml @@ -3,6 +3,10 @@ apiVersion: "keda.sh/v1alpha1" kind: "ScaledObject" metadata: name: "myapp-scaler" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: scaleTargetRef: name: "myapp-rollout" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#00.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#00.verified.yaml index 6d8f50771e9..d05c0dbf228 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#00.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#00.verified.yaml @@ -1,5 +1,5 @@ apiVersion: "v2" -name: "aspire" +name: "aspire-hosting-tests" version: "0.1.0" kubeVersion: ">= 1.18.0-0" description: "Aspire Helm Chart" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#02.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#02.verified.yaml index cb76ce15d7c..7dc5f30d0b7 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#02.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#02.verified.yaml @@ -3,12 +3,17 @@ apiVersion: "apps/v1" kind: "Deployment" metadata: name: "project1-deployment" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "project1" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: template: metadata: labels: - app: "aspire" - component: "project1" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "project1" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: containers: - image: "{{ .Values.parameters.project1.project1_image }}" @@ -19,8 +24,9 @@ spec: imagePullPolicy: "IfNotPresent" selector: matchLabels: - app: "aspire" - component: "project1" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "project1" + app.kubernetes.io/instance: "{{.Release.Name}}" replicas: 1 revisionHistoryLimit: 3 strategy: diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#03.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#03.verified.yaml index f9303640c17..87cf962641c 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#03.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#03.verified.yaml @@ -4,8 +4,9 @@ kind: "ConfigMap" metadata: name: "project1-config" labels: - app: "aspire" - component: "project1" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "project1" + app.kubernetes.io/instance: "{{.Release.Name}}" data: OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "{{ .Values.config.project1.OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES }}" OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "{{ .Values.config.project1.OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES }}" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#04.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#04.verified.yaml index 8d5c32c0f1a..44d724df36c 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#04.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#04.verified.yaml @@ -3,12 +3,17 @@ apiVersion: "apps/v1" kind: "Deployment" metadata: name: "myapp-deployment" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: template: metadata: labels: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: containers: - image: "mcr.microsoft.com/dotnet/aspnet:8.0" @@ -34,8 +39,9 @@ spec: emptyDir: {} selector: matchLabels: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" replicas: 1 revisionHistoryLimit: 3 strategy: diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#05.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#05.verified.yaml index 103b90e38e5..c99349b7434 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#05.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#05.verified.yaml @@ -3,11 +3,16 @@ apiVersion: "v1" kind: "Service" metadata: name: "myapp-service" + labels: + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: type: "ClusterIP" selector: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" ports: - name: "http" protocol: "TCP" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#06.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#06.verified.yaml index 619dce3f71e..3bbdfbfd216 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#06.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#06.verified.yaml @@ -4,8 +4,9 @@ kind: "ConfigMap" metadata: name: "myapp-config" labels: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" data: ASPNETCORE_ENVIRONMENT: "{{ .Values.config.myapp.ASPNETCORE_ENVIRONMENT }}" param0: "{{ .Values.config.myapp.param0 }}" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#07.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#07.verified.yaml index 3c4d659238c..5715e2127da 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#07.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#07.verified.yaml @@ -4,8 +4,9 @@ kind: "Secret" metadata: name: "myapp-secrets" labels: - app: "aspire" - component: "myapp" + app.kubernetes.io/name: "aspire-hosting-tests" + app.kubernetes.io/component: "myapp" + app.kubernetes.io/instance: "{{.Release.Name}}" stringData: param1: "{{ .Values.secrets.myapp.param1 }}" param3: "{{ .Values.secrets.myapp.param3 }}" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#00.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#00.verified.yaml index 5a1d07a4bbb..665b6bea8ce 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#00.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#00.verified.yaml @@ -1,5 +1,5 @@ apiVersion: "v2" -name: "aspire" +name: "my-chart" version: "0.1.0" kubeVersion: ">= 1.18.0-0" description: "Aspire Helm Chart" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#02.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#02.verified.yaml index fbf1147d9da..aacecc363fb 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#02.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#02.verified.yaml @@ -3,12 +3,17 @@ apiVersion: "apps/v1" kind: "Deployment" metadata: name: "special-app-deployment" + labels: + app.kubernetes.io/name: "my-chart" + app.kubernetes.io/component: "SpeciaL-ApP" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: template: metadata: labels: - app: "aspire" - component: "SpeciaL-ApP" + app.kubernetes.io/name: "my-chart" + app.kubernetes.io/component: "SpeciaL-ApP" + app.kubernetes.io/instance: "{{.Release.Name}}" spec: containers: - image: "{{ .Values.parameters.SpeciaL_ApP.SpeciaL_ApP_image }}" @@ -21,8 +26,9 @@ spec: imagePullPolicy: "IfNotPresent" selector: matchLabels: - app: "aspire" - component: "SpeciaL-ApP" + app.kubernetes.io/name: "my-chart" + app.kubernetes.io/component: "SpeciaL-ApP" + app.kubernetes.io/instance: "{{.Release.Name}}" replicas: 1 revisionHistoryLimit: 3 strategy: diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#03.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#03.verified.yaml index 16d39b1b0b7..4d50167c5b9 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#03.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#03.verified.yaml @@ -4,8 +4,9 @@ kind: "ConfigMap" metadata: name: "special-app-config" labels: - app: "aspire" - component: "SpeciaL-ApP" + app.kubernetes.io/name: "my-chart" + app.kubernetes.io/component: "SpeciaL-ApP" + app.kubernetes.io/instance: "{{.Release.Name}}" data: OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "{{ .Values.config.SpeciaL_ApP.OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES }}" OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "{{ .Values.config.SpeciaL_ApP.OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES }}" diff --git a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#04.verified.yaml b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#04.verified.yaml index 4b133f38cf0..b959b404a96 100644 --- a/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#04.verified.yaml +++ b/tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#04.verified.yaml @@ -4,8 +4,9 @@ kind: "Secret" metadata: name: "special-app-secrets" labels: - app: "aspire" - component: "SpeciaL-ApP" + app.kubernetes.io/name: "my-chart" + app.kubernetes.io/component: "SpeciaL-ApP" + app.kubernetes.io/instance: "{{.Release.Name}}" stringData: param3: "{{ .Values.secrets.SpeciaL_ApP.param3 }}" ConnectionStrings__api-cs: "Url={{ .Values.config.SpeciaL_ApP.param0 }}, Secret={{ .Values.secrets.SpeciaL_ApP.param1 }}"