diff --git a/.chloggen/default_telemetry_settings.yaml b/.chloggen/default_telemetry_settings.yaml new file mode 100755 index 0000000000..cd2f0f31d8 --- /dev/null +++ b/.chloggen/default_telemetry_settings.yaml @@ -0,0 +1,19 @@ +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) +component: collector + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Expose the Collector telemetry endpoint by default. + +# One or more tracking issues related to the change +issues: [3361] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: | + The collector v0.111.0 changes the default binding of the telemetry metrics endpoint from `0.0.0.0` to `localhost`. + To avoid any disruption we fallback to "0.0.0.0:{PORT}" as default address. + Details can be found here: [opentelemetry-collector#11251](https://github.com/open-telemetry/opentelemetry-collector/pull/11251) diff --git a/apis/v1beta1/collector_webhook_test.go b/apis/v1beta1/collector_webhook_test.go index d6145543f3..a30d74a66c 100644 --- a/apis/v1beta1/collector_webhook_test.go +++ b/apis/v1beta1/collector_webhook_test.go @@ -169,7 +169,7 @@ func TestCollectorDefaultingWebhook(t *testing.T) { Mode: v1beta1.ModeDeployment, UpgradeStrategy: v1beta1.UpgradeStrategyAutomatic, Config: func() v1beta1.Config { - const input = `{"receivers":{"otlp":{"protocols":{"grpc":{"endpoint":"0.0.0.0:4317"},"http":{"endpoint":"0.0.0.0:4318"}}}},"exporters":{"debug":null},"service":{"pipelines":{"traces":{"receivers":["otlp"],"exporters":["debug"]}}}}` + const input = `{"receivers":{"otlp":{"protocols":{"grpc":{"endpoint":"0.0.0.0:4317"},"http":{"endpoint":"0.0.0.0:4318"}}}},"exporters":{"debug":null},"service":{"telemetry":{"metrics":{"address":"0.0.0.0:8888"}},"pipelines":{"traces":{"receivers":["otlp"],"exporters":["debug"]}}}}` var cfg v1beta1.Config require.NoError(t, yaml.Unmarshal([]byte(input), &cfg)) return cfg @@ -182,7 +182,7 @@ func TestCollectorDefaultingWebhook(t *testing.T) { otelcol: v1beta1.OpenTelemetryCollector{ Spec: v1beta1.OpenTelemetryCollectorSpec{ Config: func() v1beta1.Config { - const input = `{"receivers":{"otlp":{"protocols":{"grpc":{"headers":{"example":"another"}},"http":{"endpoint":"0.0.0.0:4000"}}}},"exporters":{"debug":null},"service":{"pipelines":{"traces":{"receivers":["otlp"],"exporters":["debug"]}}}}` + const input = `{"receivers":{"otlp":{"protocols":{"grpc":{"headers":{"example":"another"}},"http":{"endpoint":"0.0.0.0:4000"}}}},"exporters":{"debug":null},"service":{"telemetry":{"metrics":{"address":"1.2.3.4:7654"}},"pipelines":{"traces":{"receivers":["otlp"],"exporters":["debug"]}}}}` var cfg v1beta1.Config require.NoError(t, yaml.Unmarshal([]byte(input), &cfg)) return cfg @@ -201,7 +201,7 @@ func TestCollectorDefaultingWebhook(t *testing.T) { Mode: v1beta1.ModeDeployment, UpgradeStrategy: v1beta1.UpgradeStrategyAutomatic, Config: func() v1beta1.Config { - const input = `{"receivers":{"otlp":{"protocols":{"grpc":{"endpoint":"0.0.0.0:4317","headers":{"example":"another"}},"http":{"endpoint":"0.0.0.0:4000"}}}},"exporters":{"debug":null},"service":{"pipelines":{"traces":{"receivers":["otlp"],"exporters":["debug"]}}}}` + const input = `{"receivers":{"otlp":{"protocols":{"grpc":{"endpoint":"0.0.0.0:4317","headers":{"example":"another"}},"http":{"endpoint":"0.0.0.0:4000"}}}},"exporters":{"debug":null},"service":{"telemetry":{"metrics":{"address":"1.2.3.4:7654"}},"pipelines":{"traces":{"receivers":["otlp"],"exporters":["debug"]}}}}` var cfg v1beta1.Config require.NoError(t, yaml.Unmarshal([]byte(input), &cfg)) return cfg @@ -554,6 +554,9 @@ func TestCollectorDefaultingWebhook(t *testing.T) { ) ctx := context.Background() err := cvw.Default(ctx, &test.otelcol) + if test.expected.Spec.Config.Service.Telemetry == nil { + assert.NoError(t, test.expected.Spec.Config.Service.ApplyDefaults(), "could not apply defaults") + } assert.NoError(t, err) assert.Equal(t, test.expected, test.otelcol) }) diff --git a/apis/v1beta1/config.go b/apis/v1beta1/config.go index 2d88c7617e..549aff9815 100644 --- a/apis/v1beta1/config.go +++ b/apis/v1beta1/config.go @@ -228,6 +228,9 @@ func (c *Config) getPortsForComponentKinds(logger logr.Logger, componentKinds .. // applyDefaultForComponentKinds applies defaults to the endpoints for the given ComponentKind(s). func (c *Config) applyDefaultForComponentKinds(logger logr.Logger, componentKinds ...ComponentKind) error { + if err := c.Service.ApplyDefaults(); err != nil { + return err + } enabledComponents := c.GetEnabledComponents() for _, componentKind := range componentKinds { var retriever components.ParserRetriever @@ -371,24 +374,55 @@ type Service struct { Pipelines map[string]*Pipeline `json:"pipelines" yaml:"pipelines"` } -// MetricsPort gets the port number for the metrics endpoint from the collector config if it has been set. -func (s *Service) MetricsPort() (int32, error) { +// MetricsEndpoint gets the port number and host address for the metrics endpoint from the collector config if it has been set. +func (s *Service) MetricsEndpoint() (string, int32, error) { + defaultAddr := "0.0.0.0" if s.GetTelemetry() == nil { // telemetry isn't set, use the default - return 8888, nil + return defaultAddr, 8888, nil } - _, port, netErr := net.SplitHostPort(s.GetTelemetry().Metrics.Address) + host, port, netErr := net.SplitHostPort(s.GetTelemetry().Metrics.Address) if netErr != nil && strings.Contains(netErr.Error(), "missing port in address") { - return 8888, nil + return defaultAddr, 8888, nil } else if netErr != nil { - return 0, netErr + return "", 0, netErr } i64, err := strconv.ParseInt(port, 10, 32) if err != nil { - return 0, err + return "", 0, err + } + + if host == "" { + host = defaultAddr + } + + return host, int32(i64), nil +} + +// ApplyDefaults inserts configuration defaults if it has not been set. +func (s *Service) ApplyDefaults() error { + telemetryAddr, telemetryPort, err := s.MetricsEndpoint() + if err != nil { + return err + } + tm := &AnyConfig{ + Object: map[string]interface{}{ + "metrics": map[string]interface{}{ + "address": fmt.Sprintf("%s:%d", telemetryAddr, telemetryPort), + }, + }, } - return int32(i64), nil + if s.Telemetry == nil { + s.Telemetry = tm + return nil + } + // NOTE: Merge without overwrite. If a telemetry endpoint is specified, the defaulting + // respects the configuration and returns an equal value. + if err := mergo.Merge(s.Telemetry, tm); err != nil { + return fmt.Errorf("telemetry config merge failed: %w", err) + } + return nil } // MetricsConfig comes from the collector. diff --git a/apis/v1beta1/config_test.go b/apis/v1beta1/config_test.go index 31895b3252..44828d043b 100644 --- a/apis/v1beta1/config_test.go +++ b/apis/v1beta1/config_test.go @@ -220,11 +220,13 @@ func TestConfigToMetricsPort(t *testing.T) { for _, tt := range []struct { desc string + expectedAddr string expectedPort int32 config Service }{ { "custom port", + "0.0.0.0", 9090, Service{ Telemetry: &AnyConfig{ @@ -238,6 +240,7 @@ func TestConfigToMetricsPort(t *testing.T) { }, { "bad address", + "0.0.0.0", 8888, Service{ Telemetry: &AnyConfig{ @@ -251,6 +254,7 @@ func TestConfigToMetricsPort(t *testing.T) { }, { "missing address", + "0.0.0.0", 8888, Service{ Telemetry: &AnyConfig{ @@ -264,6 +268,7 @@ func TestConfigToMetricsPort(t *testing.T) { }, { "missing metrics", + "0.0.0.0", 8888, Service{ Telemetry: &AnyConfig{}, @@ -271,14 +276,30 @@ func TestConfigToMetricsPort(t *testing.T) { }, { "missing telemetry", + "0.0.0.0", 8888, Service{}, }, + { + "configured telemetry", + "1.2.3.4", + 4567, + Service{ + Telemetry: &AnyConfig{ + Object: map[string]interface{}{ + "metrics": map[string]interface{}{ + "address": "1.2.3.4:4567", + }, + }, + }, + }, + }, } { t.Run(tt.desc, func(t *testing.T) { // these are acceptable failures, we return to the collector's default metric port - port, err := tt.config.MetricsPort() + addr, port, err := tt.config.MetricsEndpoint() assert.NoError(t, err) + assert.Equal(t, tt.expectedAddr, addr) assert.Equal(t, tt.expectedPort, port) }) } diff --git a/internal/manifests/collector/container.go b/internal/manifests/collector/container.go index 9be69c2234..69afc65416 100644 --- a/internal/manifests/collector/container.go +++ b/internal/manifests/collector/container.go @@ -223,7 +223,7 @@ func getConfigContainerPorts(logger logr.Logger, conf v1beta1.Config) (map[strin } } - metricsPort, err := conf.Service.MetricsPort() + _, metricsPort, err := conf.Service.MetricsEndpoint() if err != nil { logger.Info("couldn't determine metrics port from configuration, using 8888 default value", "error", err) metricsPort = 8888 diff --git a/internal/manifests/collector/service.go b/internal/manifests/collector/service.go index e5d4c65ead..a7b8813f94 100644 --- a/internal/manifests/collector/service.go +++ b/internal/manifests/collector/service.go @@ -83,7 +83,7 @@ func MonitoringService(params manifests.Params) (*corev1.Service, error) { return nil, err } - metricsPort, err := params.OtelCol.Spec.Config.Service.MetricsPort() + _, metricsPort, err := params.OtelCol.Spec.Config.Service.MetricsEndpoint() if err != nil { return nil, err } diff --git a/pkg/collector/upgrade/upgrade_test.go b/pkg/collector/upgrade/upgrade_test.go index 616b58daa8..49d23af8bb 100644 --- a/pkg/collector/upgrade/upgrade_test.go +++ b/pkg/collector/upgrade/upgrade_test.go @@ -141,7 +141,7 @@ func TestEnvVarUpdates(t *testing.T) { require.Equal(t, collectorInstance.Status.Version, persisted.Status.Version) currentV := version.Get() - currentV.OpenTelemetryCollector = "0.110.0" + currentV.OpenTelemetryCollector = "0.111.0" up := &upgrade.VersionUpgrade{ Log: logger, Version: currentV, diff --git a/pkg/collector/upgrade/v0_111_0.go b/pkg/collector/upgrade/v0_111_0.go new file mode 100644 index 0000000000..5ba22efea0 --- /dev/null +++ b/pkg/collector/upgrade/v0_111_0.go @@ -0,0 +1,23 @@ +// Copyright The OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package upgrade + +import ( + "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" +) + +func upgrade0_111_0(_ VersionUpgrade, otelcol *v1beta1.OpenTelemetryCollector) (*v1beta1.OpenTelemetryCollector, error) { //nolint:unparam + return otelcol, otelcol.Spec.Config.Service.ApplyDefaults() +} diff --git a/pkg/collector/upgrade/v0_111_0_test.go b/pkg/collector/upgrade/v0_111_0_test.go new file mode 100644 index 0000000000..d8b0907e13 --- /dev/null +++ b/pkg/collector/upgrade/v0_111_0_test.go @@ -0,0 +1,98 @@ +// Copyright The OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package upgrade_test + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/tools/record" + + "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" + "github.com/open-telemetry/opentelemetry-operator/pkg/collector/upgrade" +) + +func Test0_111_0Upgrade(t *testing.T) { + + defaultCollector := v1beta1.OpenTelemetryCollector{ + ObjectMeta: metav1.ObjectMeta{ + Name: "otel-my-instance", + Namespace: "somewhere", + }, + Status: v1beta1.OpenTelemetryCollectorStatus{ + Version: "0.110.0", + }, + Spec: v1beta1.OpenTelemetryCollectorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{}, + Config: v1beta1.Config{}, + }, + } + + defaultCollectorWithConfig := defaultCollector.DeepCopy() + + defaultCollectorWithConfig.Spec.Config.Service.Telemetry = &v1beta1.AnyConfig{ + Object: map[string]interface{}{ + "metrics": map[string]interface{}{ + "address": "1.2.3.4:8888", + }, + }, + } + + tt := []struct { + name string + input v1beta1.OpenTelemetryCollector + expected v1beta1.OpenTelemetryCollector + }{ + { + name: "telemetry settings exist", + input: *defaultCollectorWithConfig, + expected: *defaultCollectorWithConfig, + }, + { + name: "telemetry settings do not exist", + input: *defaultCollector.DeepCopy(), + expected: func() v1beta1.OpenTelemetryCollector { + col := defaultCollector.DeepCopy() + col.Spec.Config.Service.Telemetry = &v1beta1.AnyConfig{ + Object: map[string]interface{}{ + "metrics": map[string]interface{}{ + "address": "0.0.0.0:8888", + }, + }, + } + return *col + }(), + }, + } + + versionUpgrade := &upgrade.VersionUpgrade{ + Log: logger, + Version: makeVersion("0.111.0"), + Client: k8sClient, + Recorder: record.NewFakeRecorder(upgrade.RecordBufferSize), + } + + for _, tc := range tt { + t.Run(tc.name, func(t *testing.T) { + col, err := versionUpgrade.ManagedInstance(context.Background(), tc.input) + if err != nil { + t.Errorf("expect err: nil but got: %v", err) + } + assert.Equal(t, tc.expected.Spec.Config.Service.Telemetry, col.Spec.Config.Service.Telemetry) + }) + } +} diff --git a/pkg/collector/upgrade/versions.go b/pkg/collector/upgrade/versions.go index 2d856c4a1f..d493583478 100644 --- a/pkg/collector/upgrade/versions.go +++ b/pkg/collector/upgrade/versions.go @@ -106,6 +106,10 @@ var ( Version: *semver.MustParse("0.110.0"), upgradeV1beta1: upgrade0_110_0, }, + { + Version: *semver.MustParse("0.111.0"), + upgradeV1beta1: upgrade0_111_0, + }, } // Latest represents the latest version that we need to upgrade. This is not necessarily the latest known version. diff --git a/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer-go/02-assert.yaml b/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer-go/02-assert.yaml index 63c9e239e3..6fd04f5d65 100644 --- a/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer-go/02-assert.yaml +++ b/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer-go/02-assert.yaml @@ -92,6 +92,9 @@ spec: exporters: debug: null service: + telemetry: + metrics: + address: 0.0.0.0:8888 pipelines: traces: exporters: diff --git a/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer/01-assert.yaml b/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer/01-assert.yaml index b0edc6701f..3ba921ada1 100644 --- a/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer/01-assert.yaml +++ b/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer/01-assert.yaml @@ -331,6 +331,9 @@ spec: exporters: debug: null service: + telemetry: + metrics: + address: 0.0.0.0:8888 pipelines: traces: exporters: diff --git a/tests/e2e-ta-collector-mtls/ta-collector-mtls/00-assert.yaml b/tests/e2e-ta-collector-mtls/ta-collector-mtls/00-assert.yaml index 08aacf33b6..db11c838bd 100644 --- a/tests/e2e-ta-collector-mtls/ta-collector-mtls/00-assert.yaml +++ b/tests/e2e-ta-collector-mtls/ta-collector-mtls/00-assert.yaml @@ -59,9 +59,12 @@ data: - prometheus receivers: - prometheus + telemetry: + metrics: + address: 0.0.0.0:8888 kind: ConfigMap metadata: - name: prometheus-cr-collector-52e1d2ae + name: prometheus-cr-collector-19c94a81 --- apiVersion: v1 kind: Pod @@ -83,4 +86,4 @@ kind: Job metadata: name: check-ta-serving-over-https status: - succeeded: 1 \ No newline at end of file + succeeded: 1 diff --git a/tests/e2e-targetallocator/targetallocator-features/00-assert.yaml b/tests/e2e-targetallocator/targetallocator-features/00-assert.yaml index fb1aaebc23..e89f3f31eb 100644 --- a/tests/e2e-targetallocator/targetallocator-features/00-assert.yaml +++ b/tests/e2e-targetallocator/targetallocator-features/00-assert.yaml @@ -20,7 +20,7 @@ spec: items: - key: collector.yaml path: collector.yaml - name: stateful-collector-85dbe673 + name: stateful-collector-c055e8e3 name: otc-internal - emptyDir: {} name: testvolume diff --git a/tests/e2e-targetallocator/targetallocator-kubernetessd/00-assert.yaml b/tests/e2e-targetallocator/targetallocator-kubernetessd/00-assert.yaml index 93f7e176a2..1a5b0b9dab 100644 --- a/tests/e2e-targetallocator/targetallocator-kubernetessd/00-assert.yaml +++ b/tests/e2e-targetallocator/targetallocator-kubernetessd/00-assert.yaml @@ -15,7 +15,7 @@ metadata: apiVersion: v1 kind: ConfigMap metadata: - name: prometheus-kubernetessd-collector-699cdaa1 + name: prometheus-kubernetessd-collector-9c184e3a data: collector.yaml: | exporters: @@ -35,6 +35,9 @@ data: - prometheus receivers: - prometheus + telemetry: + metrics: + address: 0.0.0.0:8888 --- apiVersion: apps/v1 kind: DaemonSet diff --git a/tests/e2e-targetallocator/targetallocator-prometheuscr/00-assert.yaml b/tests/e2e-targetallocator/targetallocator-prometheuscr/00-assert.yaml index dd705e927b..5185c911cb 100644 --- a/tests/e2e-targetallocator/targetallocator-prometheuscr/00-assert.yaml +++ b/tests/e2e-targetallocator/targetallocator-prometheuscr/00-assert.yaml @@ -40,6 +40,9 @@ data: - prometheus receivers: - prometheus + telemetry: + metrics: + address: 0.0.0.0:8888 kind: ConfigMap metadata: - name: prometheus-cr-collector-52e1d2ae + name: prometheus-cr-collector-19c94a81 diff --git a/tests/e2e/managed-reconcile/02-assert.yaml b/tests/e2e/managed-reconcile/02-assert.yaml index 0a8f5c29bf..e9bb69b67d 100644 --- a/tests/e2e/managed-reconcile/02-assert.yaml +++ b/tests/e2e/managed-reconcile/02-assert.yaml @@ -52,7 +52,7 @@ spec: apiVersion: v1 kind: ConfigMap metadata: - name: simplest-collector-a85e451c + name: simplest-collector-aec5aa11 data: collector.yaml: | receivers: @@ -65,6 +65,9 @@ data: exporters: debug: null service: + telemetry: + metrics: + address: 0.0.0.0:8888 pipelines: traces: exporters: diff --git a/tests/e2e/multiple-configmaps/00-assert.yaml b/tests/e2e/multiple-configmaps/00-assert.yaml index 54fca05399..8ff6b44ab5 100644 --- a/tests/e2e/multiple-configmaps/00-assert.yaml +++ b/tests/e2e/multiple-configmaps/00-assert.yaml @@ -25,7 +25,7 @@ spec: volumes: - name: otc-internal configMap: - name: simplest-with-configmaps-collector-a85e451c + name: simplest-with-configmaps-collector-aec5aa11 items: - key: collector.yaml path: collector.yaml diff --git a/tests/e2e/smoke-targetallocator/00-assert.yaml b/tests/e2e/smoke-targetallocator/00-assert.yaml index aa86ab8094..1ba3d195e3 100644 --- a/tests/e2e/smoke-targetallocator/00-assert.yaml +++ b/tests/e2e/smoke-targetallocator/00-assert.yaml @@ -50,6 +50,9 @@ data: - debug receivers: - jaeger + telemetry: + metrics: + address: 0.0.0.0:8888 kind: ConfigMap metadata: - name: stateful-collector-57180221 + name: stateful-collector-7a42612e diff --git a/tests/e2e/statefulset-features/00-assert.yaml b/tests/e2e/statefulset-features/00-assert.yaml index b80a130bf6..b4e2d060b8 100644 --- a/tests/e2e/statefulset-features/00-assert.yaml +++ b/tests/e2e/statefulset-features/00-assert.yaml @@ -20,7 +20,7 @@ spec: items: - key: collector.yaml path: collector.yaml - name: stateful-collector-4b08af22 + name: stateful-collector-52b86f05 name: otc-internal - emptyDir: {} name: testvolume diff --git a/tests/e2e/statefulset-features/01-assert.yaml b/tests/e2e/statefulset-features/01-assert.yaml index 45584c25f3..9630e500d6 100644 --- a/tests/e2e/statefulset-features/01-assert.yaml +++ b/tests/e2e/statefulset-features/01-assert.yaml @@ -20,7 +20,7 @@ spec: items: - key: collector.yaml path: collector.yaml - name: stateful-collector-4b08af22 + name: stateful-collector-52b86f05 name: otc-internal - emptyDir: {} name: testvolume diff --git a/tests/e2e/versioned-configmaps/00-assert.yaml b/tests/e2e/versioned-configmaps/00-assert.yaml index a1b499db1f..d0fcfd2a28 100644 --- a/tests/e2e/versioned-configmaps/00-assert.yaml +++ b/tests/e2e/versioned-configmaps/00-assert.yaml @@ -9,11 +9,11 @@ spec: volumes: - name: otc-internal configMap: - name: simple-collector-bf36603a + name: simple-collector-de9b8847 status: readyReplicas: 1 --- apiVersion: v1 kind: ConfigMap metadata: - name: simple-collector-bf36603a + name: simple-collector-de9b8847 diff --git a/tests/e2e/versioned-configmaps/01-assert.yaml b/tests/e2e/versioned-configmaps/01-assert.yaml index 169568e53a..1e291a0cb2 100644 --- a/tests/e2e/versioned-configmaps/01-assert.yaml +++ b/tests/e2e/versioned-configmaps/01-assert.yaml @@ -9,16 +9,16 @@ spec: volumes: - name: otc-internal configMap: - name: simple-collector-024c6417 + name: simple-collector-3f453d89 status: readyReplicas: 1 --- apiVersion: v1 kind: ConfigMap metadata: - name: simple-collector-024c6417 + name: simple-collector-3f453d89 --- apiVersion: v1 kind: ConfigMap metadata: - name: simple-collector-bf36603a + name: simple-collector-de9b8847