diff --git a/instrumentor/controllers/instrumentationdevice/common.go b/instrumentor/controllers/instrumentationdevice/common.go index 203a7a890e..ce2502a0b7 100644 --- a/instrumentor/controllers/instrumentationdevice/common.go +++ b/instrumentor/controllers/instrumentationdevice/common.go @@ -6,7 +6,6 @@ import ( "github.com/odigos-io/odigos/api/k8sconsts" odigosv1 "github.com/odigos-io/odigos/api/odigos/v1alpha1" - "github.com/odigos-io/odigos/instrumentor/controllers/utils" "github.com/odigos-io/odigos/instrumentor/controllers/utils/versionsupport" "github.com/odigos-io/odigos/instrumentor/instrumentation" "github.com/odigos-io/odigos/instrumentor/sdks" @@ -64,52 +63,15 @@ func isDataCollectionReady(ctx context.Context, c client.Client) bool { return nodeCollectorsGroup.Status.Ready } -func addInstrumentationDeviceToWorkload(ctx context.Context, kubeClient client.Client, instConfig *odigosv1.InstrumentationConfig) (error, bool) { - // devicePartiallyApplied is used to indicate that the instrumentation device was partially applied for some of the containers. - devicePartiallyApplied := false - deviceNotAppliedDueToPresenceOfAnotherAgent := false +func enableOdigosInstrumentation(ctx context.Context, kubeClient client.Client, instConfig *odigosv1.InstrumentationConfig) error { + + foundContainerWithSupportedLanguage := false + instrumentationSkippedDueToOtherAgent := false logger := log.FromContext(ctx) obj, err := getWorkloadObject(ctx, kubeClient, instConfig) if err != nil { - return err, false - } - - workload := k8sconsts.PodWorkload{ - Name: obj.GetName(), - Namespace: obj.GetNamespace(), - Kind: k8sconsts.WorkloadKind(obj.GetObjectKind().GroupVersionKind().Kind), - } - - // build an otel sdk map from instrumentation rules first, and merge it with the default otel sdk map - // this way, we can override the default otel sdk with the instrumentation rules - instrumentationRules := odigosv1.InstrumentationRuleList{} - err = kubeClient.List(ctx, &instrumentationRules) - if err != nil { - return err, false - } - - // default otel sdk map according to Odigos tier - otelSdkToUse := GetDefaultSDKs() - - for i := range instrumentationRules.Items { - instrumentationRule := &instrumentationRules.Items[i] - if instrumentationRule.Spec.Disabled || instrumentationRule.Spec.OtelSdks == nil { - // we only care about rules that have otel sdks configuration - continue - } - - participating := utils.IsWorkloadParticipatingInRule(workload, instrumentationRule) - if !participating { - // filter rules that do not apply to the workload - continue - } - - for lang, otelSdk := range instrumentationRule.Spec.OtelSdks.OtelSdkByLanguage { - // languages can override the default otel sdk or another rule. - // there is not check or warning if a language is defined in multiple rules at the moment. - otelSdkToUse[lang] = otelSdk - } + return err } result, err := controllerutil.CreateOrPatch(ctx, kubeClient, obj, func() error { @@ -131,39 +93,34 @@ func addInstrumentationDeviceToWorkload(ctx context.Context, kubeClient client.C agentsCanRunConcurrently = *odigosConfiguration.AllowConcurrentAgents } - err, deviceApplied, deviceSkippedDueToOtherAgent := instrumentation.ApplyInstrumentationDevicesToPodTemplate(podSpec, instConfig.Status.RuntimeDetailsByContainer, otelSdkToUse, obj, logger, agentsCanRunConcurrently) + instrumentationSkippedDueToOtherAgent, foundContainerWithSupportedLanguage, err = instrumentation.ConfigureInstrumentationForPod(podSpec, instConfig.Status.RuntimeDetailsByContainer, obj, logger, agentsCanRunConcurrently) if err != nil { return err } - // if non of the devices were applied due to the presence of another agent, return an error. - if !deviceApplied && deviceSkippedDueToOtherAgent { - deviceNotAppliedDueToPresenceOfAnotherAgent = true - } - devicePartiallyApplied = deviceSkippedDueToOtherAgent && deviceApplied - // If instrumentation device is applied successfully, add odigos.io/inject-instrumentation label to enable the webhook - if deviceApplied { + if !instrumentationSkippedDueToOtherAgent && foundContainerWithSupportedLanguage { + // add odigos.io/inject-instrumentation label to enable the webhook instrumentation.SetInjectInstrumentationLabel(podSpec) } - return nil + }) // if non of the devices were applied due to the presence of another agent, return an error. - if deviceNotAppliedDueToPresenceOfAnotherAgent { - return k8sutils.OtherAgentRunError, false + if instrumentationSkippedDueToOtherAgent { + return k8sutils.OtherAgentRunError } if err != nil { - return err, false + return err } modified := result != controllerutil.OperationResultNone if modified { - logger.V(0).Info("added instrumentation device to workload", "name", obj.GetName(), "namespace", obj.GetNamespace()) + logger.V(0).Info("inject instrumentation label to workload pod template", "name", obj.GetName(), "namespace", obj.GetNamespace()) } - return nil, devicePartiallyApplied + return nil } func removeInstrumentationDeviceFromWorkload(ctx context.Context, kubeClient client.Client, namespace string, workloadKind k8sconsts.WorkloadKind, workloadName string, uninstrumentReason ApplyInstrumentationDeviceReason) error { @@ -278,17 +235,18 @@ func reconcileSingleWorkload(ctx context.Context, kubeClient client.Client, inst return nil } - err, devicePartiallyApplied := addInstrumentationDeviceToWorkload(ctx, kubeClient, instrumentationConfig) - if err == nil { - var successMessage string - if devicePartiallyApplied { - successMessage = "Instrumentation device partially applied" - } else { - successMessage = "Instrumentation device applied successfully" - } - conditions.UpdateStatusConditions(ctx, kubeClient, instrumentationConfig, &instrumentationConfig.Status.Conditions, metav1.ConditionTrue, appliedInstrumentationDeviceType, "InstrumentationDeviceApplied", successMessage) + err = enableOdigosInstrumentation(ctx, kubeClient, instrumentationConfig) + if err != nil { + + conditions.UpdateStatusConditions(ctx, kubeClient, instrumentationConfig, &instrumentationConfig.Status.Conditions, + metav1.ConditionFalse, appliedInstrumentationDeviceType, string(ApplyInstrumentationDeviceReasonErrApplying), + "Odigos instrumentation failed to apply") } else { - conditions.UpdateStatusConditions(ctx, kubeClient, instrumentationConfig, &instrumentationConfig.Status.Conditions, metav1.ConditionFalse, appliedInstrumentationDeviceType, string(ApplyInstrumentationDeviceReasonErrApplying), err.Error()) + + enabledMessage := "Odigos instrumentation is enabled" + conditions.UpdateStatusConditions(ctx, kubeClient, instrumentationConfig, &instrumentationConfig.Status.Conditions, + metav1.ConditionTrue, appliedInstrumentationDeviceType, "InstrumentationEnabled", enabledMessage) } + return err } diff --git a/instrumentor/controllers/instrumentationdevice/pods_webhook.go b/instrumentor/controllers/instrumentationdevice/pods_webhook.go index 1862977561..c1f0689846 100644 --- a/instrumentor/controllers/instrumentationdevice/pods_webhook.go +++ b/instrumentor/controllers/instrumentationdevice/pods_webhook.go @@ -7,20 +7,22 @@ import ( "github.com/go-logr/logr" "github.com/odigos-io/odigos/api/k8sconsts" + odigosv1 "github.com/odigos-io/odigos/api/odigos/v1alpha1" "github.com/odigos-io/odigos/common" + "github.com/odigos-io/odigos/instrumentor/controllers/utils" + webhookdeviceinjector "github.com/odigos-io/odigos/instrumentor/internal/webhook_device_injector" webhookenvinjector "github.com/odigos-io/odigos/instrumentor/internal/webhook_env_injector" - containerutils "github.com/odigos-io/odigos/k8sutils/pkg/container" + "github.com/odigos-io/odigos/instrumentor/sdks" sourceutils "github.com/odigos-io/odigos/k8sutils/pkg/source" "github.com/odigos-io/odigos/k8sutils/pkg/workload" "go.opentelemetry.io/otel/attribute" semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook/admission" - - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/runtime" ) const otelServiceNameEnvVarName = "OTEL_SERVICE_NAME" @@ -49,11 +51,11 @@ func (p *PodsWebhook) Default(ctx context.Context, obj runtime.Object) error { pod.Annotations = map[string]string{} } - // Inject ODIGOS environment variables into all containers - return p.injectOdigosEnvVars(ctx, logger, pod) + // Inject ODIGOS environment variables and instrumentation device into all containers + return p.injectOdigosInstrumentation(ctx, logger, pod) } -func (p *PodsWebhook) injectOdigosEnvVars(ctx context.Context, logger logr.Logger, pod *corev1.Pod) error { +func (p *PodsWebhook) injectOdigosInstrumentation(ctx context.Context, logger logr.Logger, pod *corev1.Pod) error { // Environment variables that remain consistent across all containers commonEnvVars := getCommonEnvVars() @@ -79,19 +81,39 @@ func (p *PodsWebhook) injectOdigosEnvVars(ctx context.Context, logger logr.Logge return fmt.Errorf("namespace is empty for pod %s/%s, Skipping Injection of ODIGOS environment variables", pod.Namespace, pod.Name) } } + var workloadInstrumentationConfig odigosv1.InstrumentationConfig + instrumentationConfigName := workload.CalculateWorkloadRuntimeObjectName(podWorkload.Name, podWorkload.Kind) + + if err := p.Get(ctx, client.ObjectKey{Namespace: podWorkload.Namespace, Name: instrumentationConfigName}, &workloadInstrumentationConfig); err != nil { + return fmt.Errorf("failed to get instrumentationConfig: %w", err) + } + + otelSdkToUse, err := getRelevantOtelSDKs(ctx, p.Client, *podWorkload) + if err != nil { + return fmt.Errorf("failed to determine OpenTelemetry SDKs: %w", err) + } var serviceName *string var serviceNameEnv *corev1.EnvVar for i := range pod.Spec.Containers { container := &pod.Spec.Containers[i] + runtimeDetails := workloadInstrumentationConfig.Status.GetRuntimeDetailsForContainer(*container) + if runtimeDetails == nil { + continue + } + + if runtimeDetails.Language == common.UnknownProgrammingLanguage { + continue + } - pl, otelsdk, found := containerutils.GetLanguageAndOtelSdk(container) + otelSdk, found := otelSdkToUse[runtimeDetails.Language] if !found { continue } - webhookenvinjector.InjectOdigosAgentEnvVars(ctx, p.Client, logger, *podWorkload, container, pl, otelsdk) + webhookdeviceinjector.InjectOdigosInstrumentationDevice(*podWorkload, container, otelSdk, runtimeDetails) + webhookenvinjector.InjectOdigosAgentEnvVars(logger, *podWorkload, container, otelSdk, runtimeDetails) // Check if the environment variables are already present, if so skip inject them again. if envVarsExist(container.Env, commonEnvVars) { @@ -101,7 +123,7 @@ func (p *PodsWebhook) injectOdigosEnvVars(ctx context.Context, logger logr.Logge containerNameEnv := corev1.EnvVar{Name: k8sconsts.OdigosEnvVarContainerName, Value: container.Name} container.Env = append(container.Env, append(commonEnvVars, containerNameEnv)...) - if shouldInjectServiceName(pl, otelsdk) { + if shouldInjectServiceName(runtimeDetails.Language, otelSdk) { // Ensure the serviceName is fetched only once per pod if serviceName == nil { serviceName = p.getServiceNameForEnv(ctx, logger, podWorkload) @@ -251,3 +273,33 @@ func (p *PodsWebhook) getServiceNameForEnv(ctx context.Context, logger logr.Logg return &resolvedServiceName } + +func getRelevantOtelSDKs(ctx context.Context, kubeClient client.Client, podWorkload k8sconsts.PodWorkload) (map[common.ProgrammingLanguage]common.OtelSdk, error) { + + instrumentationRules := odigosv1.InstrumentationRuleList{} + if err := kubeClient.List(ctx, &instrumentationRules); err != nil { + return nil, err + } + + otelSdkToUse := sdks.GetDefaultSDKs() + for i := range instrumentationRules.Items { + rule := &instrumentationRules.Items[i] + if rule.Spec.Disabled || rule.Spec.OtelSdks == nil { + // we only care about rules that have otel sdks configuration + continue + } + + if !utils.IsWorkloadParticipatingInRule(podWorkload, rule) { + // filter rules that do not apply to the workload + continue + } + + for lang, otelSdk := range rule.Spec.OtelSdks.OtelSdkByLanguage { + // languages can override the default otel sdk or another rule. + // there is not check or warning if a language is defined in multiple rules at the moment. + otelSdkToUse[lang] = otelSdk + } + } + + return otelSdkToUse, nil +} diff --git a/instrumentor/instrumentation/instrumentation.go b/instrumentor/instrumentation/instrumentation.go index 100ba72ad9..a2aad955cf 100644 --- a/instrumentor/instrumentation/instrumentation.go +++ b/instrumentor/instrumentation/instrumentation.go @@ -2,7 +2,6 @@ package instrumentation import ( "errors" - "fmt" "strings" "github.com/go-logr/logr" @@ -12,37 +11,35 @@ import ( "github.com/odigos-io/odigos/common" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" ) var ( ErrNoDefaultSDK = errors.New("no default sdks found") ) -func ApplyInstrumentationDevicesToPodTemplate(original *corev1.PodTemplateSpec, runtimeDetails []odigosv1.RuntimeDetailsByContainer, defaultSdks map[common.ProgrammingLanguage]common.OtelSdk, targetObj client.Object, - logger logr.Logger, agentsCanRunConcurrently bool) (error, bool, bool) { +func ConfigureInstrumentationForPod(original *corev1.PodTemplateSpec, runtimeDetails []odigosv1.RuntimeDetailsByContainer, targetObj client.Object, + logger logr.Logger, agentsCanRunConcurrently bool) (bool, bool, error) { // delete any existing instrumentation devices. // this is necessary for example when migrating from community to enterprise, // and we need to cleanup the community device before adding the enterprise one. RevertInstrumentationDevices(original) - deviceApplied := false - deviceSkippedDueToOtherAgent := false + foundContainerWithSupportedLanguage := false + instrumentationSkippedDueToOtherAgent := false var modifiedContainers []corev1.Container for _, container := range original.Spec.Containers { containerLanguage := getLanguageOfContainer(runtimeDetails, container.Name) containerHaveOtherAgent := getContainerOtherAgents(runtimeDetails, container.Name) - libcType := getLibCTypeOfContainer(runtimeDetails, container.Name) // By default, Odigos does not run alongside other agents. // However, if configured in the odigos-config, it can be allowed to run in parallel. if containerHaveOtherAgent != nil && !agentsCanRunConcurrently { - logger.Info("Container is running other agent, skip applying instrumentation device", "agent", containerHaveOtherAgent.Name, "container", container.Name) + logger.Info("Container is running other agent, skip applying instrumentation label", "agent", containerHaveOtherAgent.Name, "container", container.Name) // Not actually modifying the container, but we need to append it to the list. modifiedContainers = append(modifiedContainers, container) - deviceSkippedDueToOtherAgent = true + instrumentationSkippedDueToOtherAgent = true continue } @@ -53,22 +50,10 @@ func ApplyInstrumentationDevicesToPodTemplate(original *corev1.PodTemplateSpec, // TODO: this will make it look as if instrumentation device is applied, // which is incorrect modifiedContainers = append(modifiedContainers, container) - continue - } - - // Find and apply the appropriate SDK for the container language. - otelSdk, found := defaultSdks[containerLanguage] - if !found { - return fmt.Errorf("%w for language: %s, container:%s", ErrNoDefaultSDK, containerLanguage, container.Name), deviceApplied, deviceSkippedDueToOtherAgent - } - instrumentationDeviceName := common.InstrumentationDeviceName(containerLanguage, otelSdk, libcType) - if container.Resources.Limits == nil { - container.Resources.Limits = make(map[corev1.ResourceName]resource.Quantity) + continue } - container.Resources.Limits[corev1.ResourceName(instrumentationDeviceName)] = resource.MustParse("1") - deviceApplied = true - + foundContainerWithSupportedLanguage = true modifiedContainers = append(modifiedContainers, container) } @@ -76,7 +61,7 @@ func ApplyInstrumentationDevicesToPodTemplate(original *corev1.PodTemplateSpec, original.Spec.Containers = modifiedContainers } - return nil, deviceApplied, deviceSkippedDueToOtherAgent + return instrumentationSkippedDueToOtherAgent, foundContainerWithSupportedLanguage, nil } func RevertInstrumentationDevices(original *corev1.PodTemplateSpec) bool { @@ -120,16 +105,6 @@ func getContainerOtherAgents(runtimeDetails []odigosv1.RuntimeDetailsByContainer return nil } -func getLibCTypeOfContainer(runtimeDetails []odigosv1.RuntimeDetailsByContainer, containerName string) *common.LibCType { - for _, rd := range runtimeDetails { - if rd.ContainerName == containerName { - return rd.LibCType - } - } - - return nil -} - func SetInjectInstrumentationLabel(original *corev1.PodTemplateSpec) { if original.Labels == nil { diff --git a/instrumentor/internal/webhook_device_injector/webhook_device_injector.go b/instrumentor/internal/webhook_device_injector/webhook_device_injector.go new file mode 100644 index 0000000000..92adeeae38 --- /dev/null +++ b/instrumentor/internal/webhook_device_injector/webhook_device_injector.go @@ -0,0 +1,39 @@ +package webhookdeviceinjector + +import ( + "github.com/odigos-io/odigos/api/k8sconsts" + v1alpha1 "github.com/odigos-io/odigos/api/odigos/v1alpha1" + "github.com/odigos-io/odigos/common" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" +) + +func InjectOdigosInstrumentationDevice( + podWorkload k8sconsts.PodWorkload, + container *corev1.Container, + otelSdk common.OtelSdk, + runtimeDetails *v1alpha1.RuntimeDetailsByContainer, +) error { + libcType := runtimeDetails.LibCType + instrumentationDeviceName := common.InstrumentationDeviceName(runtimeDetails.Language, otelSdk, libcType) + + if instrumentationDeviceName == "" { + return nil + } + + ensureResourceListsInitialized(container) + + container.Resources.Limits[corev1.ResourceName(instrumentationDeviceName)] = resource.MustParse("1") + container.Resources.Requests[corev1.ResourceName(instrumentationDeviceName)] = resource.MustParse("1") + + return nil +} + +func ensureResourceListsInitialized(container *corev1.Container) { + if container.Resources.Limits == nil { + container.Resources.Limits = make(corev1.ResourceList) + } + if container.Resources.Requests == nil { + container.Resources.Requests = make(corev1.ResourceList) + } +} diff --git a/instrumentor/internal/webhook_env_injector/webhook_env_injector.go b/instrumentor/internal/webhook_env_injector/webhook_env_injector.go index 25ad420ba2..8834ca16d5 100644 --- a/instrumentor/internal/webhook_env_injector/webhook_env_injector.go +++ b/instrumentor/internal/webhook_env_injector/webhook_env_injector.go @@ -1,24 +1,20 @@ package webhookenvinjector import ( - "context" - "fmt" "strings" "github.com/go-logr/logr" "github.com/odigos-io/odigos/common" "github.com/odigos-io/odigos/common/envOverwrite" - "github.com/odigos-io/odigos/k8sutils/pkg/workload" corev1 "k8s.io/api/core/v1" - "sigs.k8s.io/controller-runtime/pkg/client" "github.com/odigos-io/odigos/api/k8sconsts" v1alpha1 "github.com/odigos-io/odigos/api/odigos/v1alpha1" ) -func InjectOdigosAgentEnvVars(ctx context.Context, p client.Client, logger logr.Logger, podWorkload k8sconsts.PodWorkload, container *corev1.Container, - pl common.ProgrammingLanguage, otelsdk common.OtelSdk) { - envVarsPerLanguage := getEnvVarNamesForLanguage(pl) +func InjectOdigosAgentEnvVars(logger logr.Logger, podWorkload k8sconsts.PodWorkload, container *corev1.Container, + otelsdk common.OtelSdk, runtimeDetails *v1alpha1.RuntimeDetailsByContainer) { + envVarsPerLanguage := getEnvVarNamesForLanguage(runtimeDetails.Language) if envVarsPerLanguage == nil { return } @@ -28,7 +24,7 @@ func InjectOdigosAgentEnvVars(ctx context.Context, p client.Client, logger logr. continue } - err := injectEnvVarsFromRuntime(ctx, p, logger, podWorkload, container, envVarName, otelsdk) + err := injectEnvVarsFromRuntime(logger, container, envVarName, otelsdk, runtimeDetails) if err != nil { logger.Error(err, "failed to inject environment variables for container", "container", container.Name) } @@ -67,23 +63,10 @@ func handleManifestEnvVar(container *corev1.Container, envVarName string, otelsd return true // Handled, no need for further processing } -func injectEnvVarsFromRuntime(ctx context.Context, p client.Client, logger logr.Logger, podWorkload k8sconsts.PodWorkload, - container *corev1.Container, envVarName string, otelsdk common.OtelSdk) error { +func injectEnvVarsFromRuntime(logger logr.Logger, container *corev1.Container, envVarName string, + otelsdk common.OtelSdk, runtimeDetails *v1alpha1.RuntimeDetailsByContainer) error { logger.Info("Inject Odigos values based on runtime details", "envVarName", envVarName, "container", container.Name) - var workloadInstrumentationConfig v1alpha1.InstrumentationConfig - instrumentationConfigName := workload.CalculateWorkloadRuntimeObjectName(podWorkload.Name, podWorkload.Kind) - - if err := p.Get(ctx, client.ObjectKey{Namespace: podWorkload.Namespace, Name: instrumentationConfigName}, &workloadInstrumentationConfig); err != nil { - return fmt.Errorf("failed to get instrumentationConfig: %w", err) - } - - runtimeDetails := workloadInstrumentationConfig.Status.GetRuntimeDetailsForContainer(*container) - if runtimeDetails == nil { - logger.Error(nil, "failed to get runtime details for container", "container", container.Name) - return nil - } - if !shouldInject(runtimeDetails, logger, container.Name) { return nil } diff --git a/instrumentor/main.go b/instrumentor/main.go index d575245aae..c4f2b29bcc 100644 --- a/instrumentor/main.go +++ b/instrumentor/main.go @@ -25,8 +25,8 @@ import ( "github.com/odigos-io/odigos/k8sutils/pkg/env" "github.com/odigos-io/odigos/instrumentor/controllers/instrumentationconfig" - "github.com/odigos-io/odigos/instrumentor/controllers/workloadmigrations" "github.com/odigos-io/odigos/instrumentor/controllers/startlangdetection" + "github.com/odigos-io/odigos/instrumentor/controllers/workloadmigrations" "github.com/odigos-io/odigos/instrumentor/sdks" corev1 "k8s.io/api/core/v1" diff --git a/tests/e2e/workload-lifecycle/01-assert-instrumented.yaml b/tests/e2e/workload-lifecycle/01-assert-instrumented.yaml index 1c24b23a96..3954c790cd 100644 --- a/tests/e2e/workload-lifecycle/01-assert-instrumented.yaml +++ b/tests/e2e/workload-lifecycle/01-assert-instrumented.yaml @@ -5,11 +5,12 @@ metadata: name: deployment-nodejs-unsupported-version status: conditions: - - message: "javascript runtime version not supported by OpenTelemetry SDK. Found: - 8.17.0, supports: 14.0.0" + - message: + 'javascript runtime version not supported by OpenTelemetry SDK. Found: + 8.17.0, supports: 14.0.0' (observedGeneration != null): true reason: RuntimeVersionNotSupported - status: "False" + status: 'False' type: AppliedInstrumentationDevice --- # expecting injection of instrumentation device to be successful since the runtime version was not detected @@ -20,10 +21,10 @@ metadata: name: deployment-nodejs-very-old-version status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- # expecting injection of instrumentation device to be successful since the runtime version is supported @@ -34,10 +35,10 @@ metadata: name: deployment-nodejs-minimum-version status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -54,7 +55,7 @@ status: - key: telemetry.sdk.language value: nodejs - key: process.runtime.version - value: "14.0.0" + value: '14.0.0' - key: telemetry.distro.version value: e2e-test - key: process.pid @@ -64,7 +65,7 @@ status: - key: k8s.container.name (value != null): true - key: k8s.pod.name - (value != null): true + (value != null): true --- apiVersion: odigos.io/v1alpha1 kind: InstrumentationConfig @@ -73,10 +74,10 @@ metadata: name: deployment-nodejs-latest-version status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -103,7 +104,7 @@ status: - key: k8s.container.name (value != null): true - key: k8s.pod.name - (value != null): true + (value != null): true --- apiVersion: odigos.io/v1alpha1 kind: InstrumentationConfig @@ -112,10 +113,10 @@ metadata: name: deployment-nodejs-dockerfile-env status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -132,7 +133,7 @@ status: - key: telemetry.sdk.language value: nodejs - key: process.runtime.version - value: "20.17.0" + value: '20.17.0' - key: telemetry.distro.version value: e2e-test - key: process.pid @@ -142,7 +143,7 @@ status: - key: k8s.container.name (value != null): true - key: k8s.pod.name - (value != null): true + (value != null): true --- apiVersion: odigos.io/v1alpha1 kind: InstrumentationConfig @@ -151,10 +152,10 @@ metadata: name: deployment-nodejs-manifest-env status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -171,7 +172,7 @@ status: - key: telemetry.sdk.language value: nodejs - key: process.runtime.version - value: "20.17.0" + value: '20.17.0' - key: telemetry.distro.version value: e2e-test - key: process.pid @@ -181,7 +182,7 @@ status: - key: k8s.container.name (value != null): true - key: k8s.pod.name - (value != null): true + (value != null): true --- apiVersion: odigos.io/v1alpha1 kind: InstrumentationConfig @@ -190,10 +191,10 @@ metadata: name: deployment-cpp-http-server status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -203,10 +204,10 @@ metadata: name: deployment-java-supported-version status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -216,10 +217,10 @@ metadata: name: deployment-java-azul status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -229,10 +230,10 @@ metadata: name: deployment-java-supported-docker-env status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -242,10 +243,10 @@ metadata: name: deployment-java-supported-manifest-env status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -255,10 +256,10 @@ metadata: name: deployment-java-latest-version status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -268,10 +269,10 @@ metadata: name: deployment-java-old-version status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -281,10 +282,10 @@ metadata: name: deployment-python-alpine status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -294,10 +295,10 @@ metadata: name: deployment-python-latest-version status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -307,10 +308,10 @@ metadata: name: deployment-python-min-version status: conditions: - - message: "Instrumentation device applied successfully" + - message: 'Odigos instrumentation is enabled' (observedGeneration != null): true - reason: InstrumentationDeviceApplied - status: "True" + reason: InstrumentationEnabled + status: 'True' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -320,10 +321,10 @@ metadata: name: deployment-python-not-supported status: conditions: - - message: "python runtime version not supported by OpenTelemetry SDK. Found: 3.6.15, supports: 3.8.0" + - message: 'python runtime version not supported by OpenTelemetry SDK. Found: 3.6.15, supports: 3.8.0' (observedGeneration != null): true reason: RuntimeVersionNotSupported - status: "False" + status: 'False' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -333,10 +334,10 @@ metadata: name: deployment-python-other-agent status: conditions: - - message: "device not added to any container due to the presence of another agent" + - message: 'Odigos instrumentation failed to apply' (observedGeneration != null): true reason: ErrApplyingInstrumentationDevice - status: "False" + status: 'False' type: AppliedInstrumentationDevice --- apiVersion: odigos.io/v1alpha1 @@ -353,13 +354,13 @@ status: - key: process.pid (value != null): true - key: telemetry.sdk.language - value: python + value: python - key: k8s.namespace.name (value != null): true - key: k8s.container.name (value != null): true - key: k8s.pod.name - (value != null): true + (value != null): true --- apiVersion: odigos.io/v1alpha1 kind: InstrumentationInstance @@ -381,7 +382,7 @@ status: - key: k8s.container.name (value != null): true - key: k8s.pod.name - (value != null): true + (value != null): true --- apiVersion: odigos.io/v1alpha1 kind: InstrumentationInstance @@ -403,4 +404,4 @@ status: - key: k8s.container.name (value != null): true - key: k8s.pod.name - (value != null): true \ No newline at end of file + (value != null): true diff --git a/tests/e2e/workload-lifecycle/01-assert-workloads.yaml b/tests/e2e/workload-lifecycle/01-assert-workloads.yaml index 0da0e39cd4..2f5067c522 100644 --- a/tests/e2e/workload-lifecycle/01-assert-workloads.yaml +++ b/tests/e2e/workload-lifecycle/01-assert-workloads.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "1" + deployment.kubernetes.io/revision: '1' generation: 1 labels: app: nodejs-unsupported-version @@ -15,9 +15,9 @@ spec: template: spec: containers: - - image: nodejs-unsupported-version:v0.0.1 - name: nodejs-unsupported-version - resources: {} + - image: nodejs-unsupported-version:v0.0.1 + name: nodejs-unsupported-version + resources: {} status: availableReplicas: 1 observedGeneration: 1 @@ -29,7 +29,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: nodejs-very-old-version @@ -42,11 +42,8 @@ spec: template: spec: containers: - - image: nodejs-very-old-version:v0.0.1 - name: nodejs-very-old-version - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - image: nodejs-very-old-version:v0.0.1 + name: nodejs-very-old-version status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -58,7 +55,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: nodejs-minimum-version @@ -71,10 +68,7 @@ spec: template: spec: containers: - - name: nodejs-minimum-version - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - name: nodejs-minimum-version status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -86,7 +80,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: nodejs-latest-version @@ -99,10 +93,7 @@ spec: template: spec: containers: - - name: nodejs-latest-version - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - name: nodejs-latest-version status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -114,7 +105,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: nodejs-dockerfile-env @@ -127,10 +118,7 @@ spec: template: spec: containers: - - name: nodejs-dockerfile-env - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - name: nodejs-dockerfile-env status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -142,7 +130,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: nodejs-manifest-env @@ -155,10 +143,7 @@ spec: template: spec: containers: - - name: nodejs-manifest-env - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - name: nodejs-manifest-env status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -170,7 +155,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "1" + deployment.kubernetes.io/revision: '1' generation: 1 labels: app: cpp-http-server @@ -183,9 +168,9 @@ spec: template: spec: containers: - - image: cpp-http-server:v0.0.1 - name: cpp-http-server - resources: {} + - image: cpp-http-server:v0.0.1 + name: cpp-http-server + resources: {} status: availableReplicas: 1 observedGeneration: 1 @@ -197,7 +182,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" + deployment.kubernetes.io/revision: '2' generation: 2 labels: app: java-supported-version @@ -215,9 +200,6 @@ spec: ports: - containerPort: 3000 protocol: TCP - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 @@ -229,7 +211,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" + deployment.kubernetes.io/revision: '2' generation: 2 labels: app: java-azul @@ -247,9 +229,6 @@ spec: ports: - containerPort: 3000 protocol: TCP - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 @@ -261,7 +240,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" + deployment.kubernetes.io/revision: '2' generation: 2 labels: app: java-supported-docker-env @@ -279,9 +258,6 @@ spec: ports: - containerPort: 3000 protocol: TCP - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 @@ -293,7 +269,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" + deployment.kubernetes.io/revision: '2' generation: 2 labels: app: java-supported-manifest-env @@ -311,9 +287,6 @@ spec: ports: - containerPort: 3000 protocol: TCP - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 @@ -325,7 +298,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" + deployment.kubernetes.io/revision: '2' generation: 2 labels: app: java-latest-version @@ -343,9 +316,6 @@ spec: ports: - containerPort: 3000 protocol: TCP - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 @@ -357,7 +327,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" + deployment.kubernetes.io/revision: '2' generation: 2 labels: app: java-old-version @@ -375,9 +345,6 @@ spec: ports: - containerPort: 3000 protocol: TCP - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 @@ -389,7 +356,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: python-latest-version @@ -402,11 +369,8 @@ spec: template: spec: containers: - - image: python-latest-version:v0.0.1 - name: python-latest-version - resources: - limits: - instrumentation.odigos.io/python-native-community: "1" + - image: python-latest-version:v0.0.1 + name: python-latest-version status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -418,7 +382,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: python-alpine @@ -431,11 +395,8 @@ spec: template: spec: containers: - - image: python-alpine:v0.0.1 - name: python-alpine - resources: - limits: - instrumentation.odigos.io/python-native-community: "1" + - image: python-alpine:v0.0.1 + name: python-alpine status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -447,7 +408,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "1" + deployment.kubernetes.io/revision: '1' generation: 1 labels: app: python-not-supported @@ -460,8 +421,8 @@ spec: template: spec: containers: - - image: python-not-supported:v0.0.1 - name: python-not-supported + - image: python-not-supported:v0.0.1 + name: python-not-supported status: availableReplicas: 1 observedGeneration: 1 @@ -473,7 +434,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: python-min-version @@ -486,11 +447,8 @@ spec: template: spec: containers: - - image: python-min-version:v0.0.1 - name: python-min-version - resources: - limits: - instrumentation.odigos.io/python-native-community: "1" + - image: python-min-version:v0.0.1 + name: python-min-version status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -502,7 +460,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: dotnet8-musl @@ -517,9 +475,6 @@ spec: containers: - image: dotnet8-musl:v0.0.1 name: dotnet8-musl - resources: - limits: - instrumentation.odigos.io/musl-dotnet-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -531,7 +486,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: dotnet6-musl @@ -546,9 +501,6 @@ spec: containers: - image: dotnet6-musl:v0.0.1 name: dotnet6-musl - resources: - limits: - instrumentation.odigos.io/musl-dotnet-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -560,7 +512,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: dotnet8-glibc @@ -575,9 +527,6 @@ spec: containers: - image: dotnet8-glibc:v0.0.1 name: dotnet8-glibc - resources: - limits: - instrumentation.odigos.io/dotnet-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added @@ -589,7 +538,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - deployment.kubernetes.io/revision: "2" # the deployment spec changed when odigos resource was added + deployment.kubernetes.io/revision: '2' # the deployment spec changed when odigos resource was added generation: 2 # the deployment spec changed when odigos resource was added labels: app: dotnet6-glibc @@ -604,12 +553,9 @@ spec: containers: - image: dotnet6-glibc:v0.0.1 name: dotnet6-glibc - resources: - limits: - instrumentation.odigos.io/dotnet-native-community: "1" status: availableReplicas: 1 observedGeneration: 2 # the deployment spec changed when odigos resource was added readyReplicas: 1 replicas: 1 - updatedReplicas: 1 \ No newline at end of file + updatedReplicas: 1 diff --git a/tests/e2e/workload-lifecycle/02-assert-workload-update.yaml b/tests/e2e/workload-lifecycle/02-assert-workload-update.yaml index 1630046fbc..c4b3a07f1e 100644 --- a/tests/e2e/workload-lifecycle/02-assert-workload-update.yaml +++ b/tests/e2e/workload-lifecycle/02-assert-workload-update.yaml @@ -13,9 +13,9 @@ spec: template: spec: containers: - - image: nodejs-unsupported-version:v0.0.1 - name: nodejs-unsupported-version - resources: {} + - image: nodejs-unsupported-version:v0.0.1 + name: nodejs-unsupported-version + resources: {} status: availableReplicas: 1 observedGeneration: 2 @@ -26,7 +26,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # step 02 updates the manifest (2->3), then odigos update it again (3->4) + generation: 3 labels: app: nodejs-very-old-version name: nodejs-very-old-version @@ -38,14 +38,11 @@ spec: template: spec: containers: - - image: nodejs-very-old-version:v0.0.1 - name: nodejs-very-old-version - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - image: nodejs-very-old-version:v0.0.1 + name: nodejs-very-old-version status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -53,7 +50,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # step 02 updates the manifest (2->3), then odigos update it again (3->4) + generation: 3 labels: app: nodejs-minimum-version name: nodejs-minimum-version @@ -65,13 +62,10 @@ spec: template: spec: containers: - - name: nodejs-minimum-version - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - name: nodejs-minimum-version status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -79,7 +73,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # step 02 updates the manifest (2->3), then odigos update it again (3->4) + generation: 3 labels: app: nodejs-latest-version name: nodejs-latest-version @@ -91,13 +85,10 @@ spec: template: spec: containers: - - name: nodejs-latest-version - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - name: nodejs-latest-version status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -105,7 +96,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # step 02 updates the manifest (2->3), then odigos update it again (3->4) + generation: 3 labels: app: nodejs-dockerfile-env name: nodejs-dockerfile-env @@ -117,13 +108,10 @@ spec: template: spec: containers: - - name: nodejs-dockerfile-env - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - name: nodejs-dockerfile-env status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -131,7 +119,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # step 02 updates the manifest (2->3), then odigos update it again (3->4) + generation: 3 labels: app: nodejs-manifest-env name: nodejs-manifest-env @@ -143,13 +131,10 @@ spec: template: spec: containers: - - name: nodejs-manifest-env - resources: - limits: - instrumentation.odigos.io/javascript-native-community: "1" + - name: nodejs-manifest-env status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -169,9 +154,9 @@ spec: template: spec: containers: - - image: cpp-http-server:v0.0.1 - name: cpp-http-server - resources: {} + - image: cpp-http-server:v0.0.1 + name: cpp-http-server + resources: {} status: availableReplicas: 1 observedGeneration: 2 @@ -182,7 +167,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # on step 2, the manifest was updated (1->2) + generation: 3 labels: app: java-supported-version name: java-supported-version @@ -196,12 +181,9 @@ spec: containers: - image: java-supported-version:v0.0.1 name: java-supported-version - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -209,7 +191,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # on step 2, the manifest was updated (1->2) + generation: 3 labels: app: java-azul name: java-azul @@ -223,12 +205,9 @@ spec: containers: - image: java-azul:v0.0.1 name: java-azul - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -236,7 +215,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # on step 2, the manifest was updated (1->2) + generation: 3 labels: app: java-supported-docker-env name: java-supported-docker-env @@ -250,12 +229,9 @@ spec: containers: - image: java-supported-docker-env:v0.0.1 name: java-supported-docker-env - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -264,7 +240,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # on step 2, the manifest was updated (1->2) + generation: 3 labels: app: java-supported-manifest-env name: java-supported-manifest-env @@ -278,12 +254,9 @@ spec: containers: - image: java-supported-manifest-env:v0.0.1 name: java-supported-manifest-env - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -291,7 +264,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # on step 2, the manifest was updated (1->2) + generation: 3 labels: app: java-latest-version name: java-latest-version @@ -305,12 +278,9 @@ spec: containers: - image: java-latest-version:v0.0.1 name: java-latest-version - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -318,7 +288,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # on step 2, the manifest was updated (1->2) + generation: 3 labels: app: java-old-version name: java-old-version @@ -332,12 +302,9 @@ spec: containers: - image: java-old-version:v0.0.1 name: java-old-version - resources: - limits: - instrumentation.odigos.io/java-native-community: "1" status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -345,7 +312,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # on step 2, the manifest was updated (1->2) + generation: 3 labels: app: python-latest-version name: python-latest-version @@ -357,14 +324,11 @@ spec: template: spec: containers: - - image: python-latest-version:v0.0.1 - name: python-latest-version - resources: - limits: - instrumentation.odigos.io/python-native-community: "1" + - image: python-latest-version:v0.0.1 + name: python-latest-version status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -372,7 +336,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # on step 2, the manifest was updated (1->2) + generation: 3 labels: app: python-alpine name: python-alpine @@ -383,15 +347,12 @@ spec: app: python-alpine template: spec: - containers: - - image: python-alpine:v0.0.1 - name: python-alpine - resources: - limits: - instrumentation.odigos.io/python-native-community: "1" + containers: + - image: python-alpine:v0.0.1 + name: python-alpine status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -399,7 +360,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 # on step 2, the manifest was updated (1->2) + generation: 3 labels: app: python-min-version name: python-min-version @@ -411,14 +372,11 @@ spec: template: spec: containers: - - image: python-min-version:v0.0.1 - name: python-min-version - resources: - limits: - instrumentation.odigos.io/python-native-community: "1" + - image: python-min-version:v0.0.1 + name: python-min-version status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -438,9 +396,9 @@ spec: template: spec: containers: - - image: python-not-supported:v0.0.1 - name: python-not-supported - resources: {} + - image: python-not-supported:v0.0.1 + name: python-not-supported + resources: {} status: availableReplicas: 1 observedGeneration: 2 @@ -451,7 +409,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 + generation: 3 name: dotnet8-musl namespace: default labels: @@ -465,7 +423,7 @@ spec: labels: app: dotnet8-musl annotations: - odigos-test-step: "2" + odigos-test-step: '2' spec: containers: - name: dotnet8-musl @@ -478,7 +436,7 @@ spec: port: 8080 status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -486,7 +444,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 + generation: 3 name: dotnet6-musl namespace: default labels: @@ -500,7 +458,7 @@ spec: labels: app: dotnet6-musl annotations: - odigos-test-step: "2" + odigos-test-step: '2' spec: containers: - name: dotnet6-musl @@ -513,7 +471,7 @@ spec: port: 8080 status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -521,7 +479,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 + generation: 3 name: dotnet8-glibc namespace: default labels: @@ -535,7 +493,7 @@ spec: labels: app: dotnet8-glibc annotations: - odigos-test-step: "2" + odigos-test-step: '2' spec: containers: - name: dotnet8-glibc @@ -548,7 +506,7 @@ spec: port: 8080 status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 updatedReplicas: 1 @@ -556,7 +514,7 @@ status: apiVersion: apps/v1 kind: Deployment metadata: - generation: 4 + generation: 3 name: dotnet6-glibc namespace: default labels: @@ -570,7 +528,7 @@ spec: labels: app: dotnet6-glibc annotations: - odigos-test-step: "2" + odigos-test-step: '2' spec: containers: - name: dotnet6-glibc @@ -583,7 +541,7 @@ spec: port: 8080 status: availableReplicas: 1 - observedGeneration: 4 + observedGeneration: 3 readyReplicas: 1 replicas: 1 - updatedReplicas: 1 \ No newline at end of file + updatedReplicas: 1