diff --git a/.chloggen/feat_drop-lease-on-exit.yaml b/.chloggen/feat_drop-lease-on-exit.yaml new file mode 100755 index 0000000000..a2cfbf1c58 --- /dev/null +++ b/.chloggen/feat_drop-lease-on-exit.yaml @@ -0,0 +1,16 @@ +# 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: operator + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Release leader election lease on exit + +# One or more tracking issues related to the change +issues: [3058] + +# (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: diff --git a/.chloggen/fix-otelcol-crd.yaml b/.chloggen/fix-otelcol-crd.yaml new file mode 100755 index 0000000000..5de9dc6152 --- /dev/null +++ b/.chloggen/fix-otelcol-crd.yaml @@ -0,0 +1,18 @@ +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: bug_fix + +# 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: "Fix deletion issue of `otelcol` CR by making `spec.config.service.pipelines.processors` optional" + +# One or more tracking issues related to the change +issues: [3075] + +# (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: | + This change makes `spec.config.service.pipelines.processors` in `OpenTelemetryCollector` CRD optional, aligning with OTel Collector best practices. It resolves deletion issues by providing flexibility in CRD configuration, addressing conflicts between strict validation and practical uses. + Note: Updating the `opentelemetrycollectors.opentelemetry.io` CRD resource is required. diff --git a/.chloggen/implement-dnsconfig.yaml b/.chloggen/implement-dnsconfig.yaml new file mode 100755 index 0000000000..534238afb7 --- /dev/null +++ b/.chloggen/implement-dnsconfig.yaml @@ -0,0 +1,16 @@ +# 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, target allocator, opamp + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Enabling PodDnsConfig for OpenTelemetry Collector, TargetAllocator and OpAMPBridge. + +# One or more tracking issues related to the change +issues: [2658] + +# (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: \ No newline at end of file diff --git a/.chloggen/make-otelcol-mode-immutable.yaml b/.chloggen/make-otelcol-mode-immutable.yaml new file mode 100755 index 0000000000..260b54569d --- /dev/null +++ b/.chloggen/make-otelcol-mode-immutable.yaml @@ -0,0 +1,16 @@ +# 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: "Make the `spec.mode` field of the `OpenTelemetryCollector` Custom Resource (CR) immutable" + +# One or more tracking issues related to the change +issues: [3055] + +# (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: diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 2e322eac9c..a1b79caf43 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -60,7 +60,7 @@ jobs: path: bin key: ${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('Makefile') }}-${{ steps.setup-go.outputs.go-version }} - name: Install chainsaw - uses: kyverno/action-install-chainsaw@v0.2.4 + uses: kyverno/action-install-chainsaw@v0.2.5 - name: Install tools run: make install-tools - name: Prepare e2e tests diff --git a/.github/workflows/publish-autoinstrumentation-apache-httpd.yaml b/.github/workflows/publish-autoinstrumentation-apache-httpd.yaml index 39e14bb41a..82874bba85 100644 --- a/.github/workflows/publish-autoinstrumentation-apache-httpd.yaml +++ b/.github/workflows/publish-autoinstrumentation-apache-httpd.yaml @@ -57,7 +57,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: autoinstrumentation/apache-httpd platforms: linux/amd64 diff --git a/.github/workflows/publish-autoinstrumentation-dotnet.yaml b/.github/workflows/publish-autoinstrumentation-dotnet.yaml index 693c98905b..dfe4813068 100644 --- a/.github/workflows/publish-autoinstrumentation-dotnet.yaml +++ b/.github/workflows/publish-autoinstrumentation-dotnet.yaml @@ -67,7 +67,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: autoinstrumentation/dotnet platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/publish-autoinstrumentation-e2e-images.yaml b/.github/workflows/publish-autoinstrumentation-e2e-images.yaml deleted file mode 100644 index b911d44ab2..0000000000 --- a/.github/workflows/publish-autoinstrumentation-e2e-images.yaml +++ /dev/null @@ -1,50 +0,0 @@ -name: "Publish instrumentation E2E images" - -on: - push: - paths: - - 'tests/instrumentation-e2e-apps/**' - - '.github/workflows/publish-autoinstrumentation-e2e-images.yaml' - branches: - - main - pull_request: - paths: - - 'tests/instrumentation-e2e-apps/**' - - '.github/workflows/publish-autoinstrumentation-e2e-images.yaml' - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - golang: - uses: ./.github/workflows/reusable-publish-autoinstrumentation-e2e-images.yaml - with: - language: golang - platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le - python: - uses: ./.github/workflows/reusable-publish-autoinstrumentation-e2e-images.yaml - with: - language: python - platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le - java: - uses: ./.github/workflows/reusable-publish-autoinstrumentation-e2e-images.yaml - with: - language: java - platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le - apache-httpd: - uses: ./.github/workflows/reusable-publish-autoinstrumentation-e2e-images.yaml - with: - language: apache-httpd - platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le - dotnet: - uses: ./.github/workflows/reusable-publish-autoinstrumentation-e2e-images.yaml - with: - language: dotnet - platforms: linux/arm64,linux/amd64 - nodejs: - uses: ./.github/workflows/reusable-publish-autoinstrumentation-e2e-images.yaml - with: - language: nodejs - platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le diff --git a/.github/workflows/publish-autoinstrumentation-java.yaml b/.github/workflows/publish-autoinstrumentation-java.yaml index c05f3e534c..dda8385143 100644 --- a/.github/workflows/publish-autoinstrumentation-java.yaml +++ b/.github/workflows/publish-autoinstrumentation-java.yaml @@ -68,7 +68,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: autoinstrumentation/java platforms: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le diff --git a/.github/workflows/publish-autoinstrumentation-nodejs.yaml b/.github/workflows/publish-autoinstrumentation-nodejs.yaml index 7f65ca3b72..45b368fbf6 100644 --- a/.github/workflows/publish-autoinstrumentation-nodejs.yaml +++ b/.github/workflows/publish-autoinstrumentation-nodejs.yaml @@ -68,7 +68,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: autoinstrumentation/nodejs platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/publish-autoinstrumentation-python.yaml b/.github/workflows/publish-autoinstrumentation-python.yaml index 85a727a751..1697342e84 100644 --- a/.github/workflows/publish-autoinstrumentation-python.yaml +++ b/.github/workflows/publish-autoinstrumentation-python.yaml @@ -68,7 +68,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: autoinstrumentation/python platforms: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le diff --git a/.github/workflows/publish-images.yaml b/.github/workflows/publish-images.yaml index 827bcda84b..3c5fa49108 100644 --- a/.github/workflows/publish-images.yaml +++ b/.github/workflows/publish-images.yaml @@ -19,12 +19,12 @@ jobs: - uses: actions/setup-go@v5 with: - go-version: '~1.21.3' + go-version: '~1.22.4' - - name: Unshallow + - name: Unshallow run: git fetch --prune --unshallow - - name: Describe the current state + - name: Describe the current state run: git describe --tags - name: Set env vars for the job @@ -41,7 +41,7 @@ jobs: grep -v '\#' versions.txt | grep autoinstrumentation-nginx | awk -F= '{print "AUTO_INSTRUMENTATION_NGINX_VERSION="$2}' >> $GITHUB_ENV echo "VERSION_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV echo "VERSION=$(git describe --tags | sed 's/^v//')" >> $GITHUB_ENV - + - name: Build the binary for each supported architecture run: | for platform in $(echo $PLATFORMS | tr "," "\n"); do @@ -49,7 +49,7 @@ jobs: echo "Building manager for $arch" make manager ARCH=$arch done - + - name: Docker meta id: docker_meta uses: docker/metadata-action@v5 @@ -93,7 +93,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Operator image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: ./Dockerfile diff --git a/.github/workflows/publish-operator-bundle.yaml b/.github/workflows/publish-operator-bundle.yaml index c2b7ca0a83..14e8616a82 100644 --- a/.github/workflows/publish-operator-bundle.yaml +++ b/.github/workflows/publish-operator-bundle.yaml @@ -67,7 +67,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Operator image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: ./bundle.Dockerfile diff --git a/.github/workflows/publish-operator-opamp-bridge.yaml b/.github/workflows/publish-operator-opamp-bridge.yaml index f51e53bff9..170f10fc16 100644 --- a/.github/workflows/publish-operator-opamp-bridge.yaml +++ b/.github/workflows/publish-operator-opamp-bridge.yaml @@ -20,10 +20,10 @@ jobs: steps: - uses: actions/checkout@v4 - + - uses: actions/setup-go@v5 with: - go-version: '~1.21.3' + go-version: '~1.22.4' # TODO: We're currently not using this. Should we? - name: Read version @@ -82,7 +82,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: cmd/operator-opamp-bridge platforms: ${{ env.PLATFORMS }} diff --git a/.github/workflows/publish-target-allocator.yaml b/.github/workflows/publish-target-allocator.yaml index d177ee7291..9869cd547d 100644 --- a/.github/workflows/publish-target-allocator.yaml +++ b/.github/workflows/publish-target-allocator.yaml @@ -23,7 +23,7 @@ jobs: - uses: actions/setup-go@v5 with: - go-version: '~1.21.3' + go-version: '~1.22.4' # TODO: We're currently not using this. Should we? - name: Read version @@ -82,7 +82,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: cmd/otel-allocator platforms: ${{ env.PLATFORMS }} diff --git a/.github/workflows/publish-test-e2e-images.yaml b/.github/workflows/publish-test-e2e-images.yaml new file mode 100644 index 0000000000..aee5d03ec1 --- /dev/null +++ b/.github/workflows/publish-test-e2e-images.yaml @@ -0,0 +1,55 @@ +name: "Publish Test E2E images" + +on: + push: + paths: + - 'tests/test-e2e-apps/**' + - '.github/workflows/publish-test-e2e-images.yaml' + branches: + - main + pull_request: + paths: + - 'tests/test-e2e-apps/**' + - '.github/workflows/publish-test-e2e-images.yaml' + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + bridge-server: + uses: ./.github/workflows/reusable-publish-test-e2e-images.yaml + with: + path: bridge-server + platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le + golang: + uses: ./.github/workflows/reusable-publish-test-e2e-images.yaml + with: + path: golang + platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le + python: + uses: ./.github/workflows/reusable-publish-test-e2e-images.yaml + with: + path: python + platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le + java: + uses: ./.github/workflows/reusable-publish-test-e2e-images.yaml + with: + path: java + platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le + apache-httpd: + uses: ./.github/workflows/reusable-publish-test-e2e-images.yaml + with: + path: apache-httpd + platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le + dotnet: + uses: ./.github/workflows/reusable-publish-test-e2e-images.yaml + with: + path: dotnet + platforms: linux/arm64,linux/amd64 + nodejs: + uses: ./.github/workflows/reusable-publish-test-e2e-images.yaml + with: + path: nodejs + platforms: linux/arm64,linux/amd64,linux/s390x,linux/ppc64le diff --git a/.github/workflows/reusable-operator-hub-release.yaml b/.github/workflows/reusable-operator-hub-release.yaml index 948d2df208..1ecdfdf793 100644 --- a/.github/workflows/reusable-operator-hub-release.yaml +++ b/.github/workflows/reusable-operator-hub-release.yaml @@ -70,7 +70,7 @@ jobs: message="Update the opentelemetry to $VERSION" body="Release opentelemetry-operator \`$VERSION\`. - cc @pavolloffay @frzifus @yuriolisa @jaronoff97 @TylerHelmuth @swiatekm-sumo + cc @pavolloffay @frzifus @yuriolisa @jaronoff97 @TylerHelmuth @swiatekm " branch="update-opentelemetry-operator-to-${VERSION}" diff --git a/.github/workflows/reusable-publish-autoinstrumentation-e2e-images.yaml b/.github/workflows/reusable-publish-test-e2e-images.yaml similarity index 89% rename from .github/workflows/reusable-publish-autoinstrumentation-e2e-images.yaml rename to .github/workflows/reusable-publish-test-e2e-images.yaml index 9819caa56c..d69e404465 100644 --- a/.github/workflows/reusable-publish-autoinstrumentation-e2e-images.yaml +++ b/.github/workflows/reusable-publish-test-e2e-images.yaml @@ -3,7 +3,7 @@ name: Reusable - Publish autoinstrumentation E2E images on: workflow_call: inputs: - language: + path: type: string required: true platforms: @@ -22,7 +22,7 @@ jobs: uses: docker/metadata-action@v5 with: images: | - ghcr.io/open-telemetry/opentelemetry-operator/e2e-test-app-${{ inputs.language }} + ghcr.io/open-telemetry/opentelemetry-operator/e2e-test-app-${{ inputs.path }} tags: | type=ref,event=branch @@ -48,10 +48,10 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: tags: ${{ steps.meta.outputs.tags }} - context: tests/instrumentation-e2e-apps/${{ inputs.language }} + context: tests/test-e2e-apps/${{ inputs.path }} platforms: ${{ inputs.platforms }} push: ${{ github.event_name == 'push' }} cache-from: type=local,src=/tmp/.buildx-cache diff --git a/CHANGELOG.md b/CHANGELOG.md index 39b6677d59..9c4fcac59c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,31 @@ +## 0.103.0 + +### 💡 Enhancements 💡 + +- `collector, target allocator, opamp`: Require Go 1.22 for building the operator (#2757) + +### 🧰 Bug fixes 🧰 + +- `auto-instrumentation`: Fix webserver instrumentation log file name (#2978) + + Since webserver instrumentation 1.0.4, the configuration log file has been renamed from appdynamics_sdk_log4cxx.xml.template to opentelemetry_sdk_log4cxx.xml.template. The operator upgraded the webserver instrumentation version but haven't change the configuration file name. +- `target-allocator`: Fixes a bug that didn't automatically create a PDB for a TA with per-node strategy (#2900) + +### Components + +* [OpenTelemetry Collector - v0.103.0](https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.103.0) +* [OpenTelemetry Contrib - v0.103.0](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.103.0) +* [Java auto-instrumentation - v1.32.1](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v1.32.1) +* [.NET auto-instrumentation - v1.2.0](https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/tag/v1.2.0) +* [Node.JS - v0.51.0](https://github.com/open-telemetry/opentelemetry-js/releases/tag/experimental%2Fv0.51.0) +* [Python - v0.46b0](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.46b0) +* [Go - v0.13.0-alpha](https://github.com/open-telemetry/opentelemetry-go-instrumentation/releases/tag/v0.13.0-alpha) +* [ApacheHTTPD - 1.0.4](https://github.com/open-telemetry/opentelemetry-cpp-contrib/releases/tag/webserver%2Fv1.0.4) +* [Nginx - 1.0.4](https://github.com/open-telemetry/opentelemetry-cpp-contrib/releases/tag/webserver%2Fv1.0.4) + ## 0.102.0 ### 💡 Enhancements 💡 diff --git a/Makefile b/Makefile index 5dcda85099..7096dac42c 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ endif # Image URL to use all building/pushing image targets DOCKER_USER ?= open-telemetry -IMG_PREFIX ?= ghcr.io/${DOCKER_USER}/opentelemetry-operator +IMG_PREFIX ?= opentelemetry-operator IMG_REPO ?= opentelemetry-operator IMG ?= ${IMG_PREFIX}/${IMG_REPO}:${VERSION} BUNDLE_IMG ?= ${IMG_PREFIX}/${IMG_REPO}-bundle:${VERSION} @@ -109,17 +109,17 @@ ci: generate fmt vet test ensure-generate-is-noop # Build manager binary .PHONY: manager manager: generate - CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(ARCH) go build -o bin/manager_${ARCH} -ldflags "${COMMON_LDFLAGS} ${OPERATOR_LDFLAGS}" main.go + CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) go build -o bin/manager_${ARCH} -ldflags "${COMMON_LDFLAGS} ${OPERATOR_LDFLAGS}" main.go # Build target allocator binary .PHONY: targetallocator targetallocator: - CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(ARCH) go build -o cmd/otel-allocator/bin/targetallocator_${ARCH} -ldflags "${COMMON_LDFLAGS}" ./cmd/otel-allocator + CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) go build -o cmd/otel-allocator/bin/targetallocator_${ARCH} -ldflags "${COMMON_LDFLAGS}" ./cmd/otel-allocator # Build opamp bridge binary .PHONY: operator-opamp-bridge operator-opamp-bridge: generate - CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(ARCH) go build -o cmd/operator-opamp-bridge/bin/opampbridge_${ARCH} -ldflags "${COMMON_LDFLAGS}" ./cmd/operator-opamp-bridge + CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) go build -o cmd/operator-opamp-bridge/bin/opampbridge_${ARCH} -ldflags "${COMMON_LDFLAGS}" ./cmd/operator-opamp-bridge # Run against the configured Kubernetes cluster in ~/.kube/config .PHONY: run @@ -175,6 +175,10 @@ add-rbac-permissions-to-operator: manifests kustomize # Deploy controller in the current Kubernetes context, configured in ~/.kube/config .PHONY: deploy deploy: set-image-controller + docker build -t ${IMG} . + docker build -t ${TARGETALLOCATOR_IMG} cmd/otel-allocator + k3d image import ${IMG} -c otel + k3d image import ${TARGETALLOCATOR_IMG} -c otel $(KUSTOMIZE) build config/default | kubectl apply -f - go run hack/check-operator-ready.go 300 @@ -308,11 +312,11 @@ container: manager # Push the container image, used only for local dev purposes .PHONY: container-push container-push: - docker push ${IMG} + k3d image import ${IMG} -c otel .PHONY: container-target-allocator-push container-target-allocator-push: - docker push ${TARGETALLOCATOR_IMG} + k3d image import ${TARGETALLOCATOR_IMG} -c otel .PHONY: container-operator-opamp-bridge-push container-operator-opamp-bridge-push: diff --git a/README.md b/README.md index a688ed1b00..f95945a5fd 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,6 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] EOF @@ -629,7 +628,6 @@ spec: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [debug] EOF ``` @@ -654,7 +652,6 @@ service: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [debug] ``` @@ -713,7 +710,6 @@ spec: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [debug] EOF ``` @@ -728,39 +724,42 @@ By default, the OpenTelemetry Operator ensures consistent versioning between its When a custom `Spec.Image` is used with an `OpenTelemetryCollector` resource, the OpenTelemetry Operator will not manage this versioning and upgrading. In this scenario, it is best practice that the OpenTelemetry Operator version should match the underlying core version. Given a `OpenTelemetryCollector` resource with a `Spec.Image` configured to a custom image based on underlying OpenTelemetry Collector at version `0.40.0`, it is recommended that the OpenTelemetry Operator is kept at version `0.40.0`. -### OpenTelemetry Operator vs. Kubernetes vs. Cert Manager +### OpenTelemetry Operator vs. Kubernetes vs. Cert Manager vs Prometheus Operator We strive to be compatible with the widest range of Kubernetes versions as possible, but some changes to Kubernetes itself require us to break compatibility with older Kubernetes versions, be it because of code incompatibilities, or in the name of maintainability. Every released operator will support a specific range of Kubernetes versions, to be determined at the latest during the release. We use `cert-manager` for some features of this operator and the third column shows the versions of the `cert-manager` that are known to work with this operator's versions. +The Target Allocator supports prometheus-operator CRDs like ServiceMonitor, and it does so by using packages imported from prometheus-operator itself. The table shows which version is shipped with a given operator version. +Generally speaking, these are backwards compatible, but specific features require the appropriate package versions. + The OpenTelemetry Operator _might_ work on versions outside of the given range, but when opening new issues, please make sure to test your scenario on a supported version. -| OpenTelemetry Operator | Kubernetes | Cert-Manager | -|------------------------|----------------| ------------ | -| v0.102.0 | v1.23 to v1.30 | v1 | -| v0.101.0 | v1.23 to v1.30 | v1 | -| v0.100.0 | v1.23 to v1.29 | v1 | -| v0.99.0 | v1.23 to v1.29 | v1 | -| v0.98.0 | v1.23 to v1.29 | v1 | -| v0.97.0 | v1.23 to v1.29 | v1 | -| v0.96.0 | v1.23 to v1.29 | v1 | -| v0.95.0 | v1.23 to v1.29 | v1 | -| v0.94.0 | v1.23 to v1.29 | v1 | -| v0.93.0 | v1.23 to v1.29 | v1 | -| v0.92.0 | v1.23 to v1.29 | v1 | -| v0.91.0 | v1.23 to v1.29 | v1 | -| v0.90.0 | v1.23 to v1.28 | v1 | -| v0.89.0 | v1.23 to v1.28 | v1 | -| v0.88.0 | v1.23 to v1.28 | v1 | -| v0.87.0 | v1.23 to v1.28 | v1 | -| v0.86.0 | v1.23 to v1.28 | v1 | -| v0.85.0 | v1.19 to v1.28 | v1 | -| v0.84.0 | v1.19 to v1.28 | v1 | -| v0.83.0 | v1.19 to v1.27 | v1 | -| v0.82.0 | v1.19 to v1.27 | v1 | -| v0.81.0 | v1.19 to v1.27 | v1 | -| v0.80.0 | v1.19 to v1.27 | v1 | +| OpenTelemetry Operator | Kubernetes | Cert-Manager | Prometheus-Operator | +|------------------------|----------------| ------------ |---------------------| +| v0.103.0 | v1.23 to v1.30 | v1 | v0.74.0 | +| v0.102.0 | v1.23 to v1.30 | v1 | v0.71.2 | +| v0.101.0 | v1.23 to v1.30 | v1 | v0.71.2 | +| v0.100.0 | v1.23 to v1.29 | v1 | v0.71.2 | +| v0.99.0 | v1.23 to v1.29 | v1 | v0.71.2 | +| v0.98.0 | v1.23 to v1.29 | v1 | v0.71.2 | +| v0.97.0 | v1.23 to v1.29 | v1 | v0.71.2 | +| v0.96.0 | v1.23 to v1.29 | v1 | v0.71.2 | +| v0.95.0 | v1.23 to v1.29 | v1 | v0.71.2 | +| v0.94.0 | v1.23 to v1.29 | v1 | v0.71.0 | +| v0.93.0 | v1.23 to v1.29 | v1 | v0.71.0 | +| v0.92.0 | v1.23 to v1.29 | v1 | v0.71.0 | +| v0.91.0 | v1.23 to v1.29 | v1 | v0.70.0 | +| v0.90.0 | v1.23 to v1.28 | v1 | v0.69.1 | +| v0.89.0 | v1.23 to v1.28 | v1 | v0.69.1 | +| v0.88.0 | v1.23 to v1.28 | v1 | v0.68.0 | +| v0.87.0 | v1.23 to v1.28 | v1 | v0.68.0 | +| v0.86.0 | v1.23 to v1.28 | v1 | v0.68.0 | +| v0.85.0 | v1.19 to v1.28 | v1 | v0.67.1 | +| v0.84.0 | v1.19 to v1.28 | v1 | v0.67.1 | +| v0.83.0 | v1.19 to v1.27 | v1 | v0.67.1 | +| v0.82.0 | v1.19 to v1.27 | v1 | v0.67.1 | +| v0.81.0 | v1.19 to v1.27 | v1 | v0.66.0 | ## Contributing and Developing @@ -795,7 +794,7 @@ Emeritus Target Allocator Maintainers Maintainers ([@open-telemetry/operator-maintainers](https://github.com/orgs/open-telemetry/teams/operator-maintainers)): - [Jacob Aronoff](https://github.com/jaronoff97), Lightstep -- [Mikołaj Świątek](https://github.com/swiatekm-sumo), Sumo Logic +- [Mikołaj Świątek](https://github.com/swiatekm), Sumo Logic - [Pavol Loffay](https://github.com/pavolloffay), Red Hat Emeritus Maintainers diff --git a/RELEASE.md b/RELEASE.md index 0eb6d4c313..c0e3fd9d83 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -44,9 +44,9 @@ The operator should be released within a week after the [OpenTelemetry collector | Version | Release manager | |----------|-----------------| -| v0.103.0 | @swiatekm-sumo | | v0.104.0 | @frzifus | | v0.105.0 | @pavolloffay | | v0.106.0 | @yuriolisa | | v0.107.0 | @TylerHelmuth | -| v0.108.0 | @jaronoff97 | \ No newline at end of file +| v0.108.0 | @jaronoff97 | +| v0.109.0 | @swiatekm | \ No newline at end of file diff --git a/apis/v1alpha1/opampbridge_types.go b/apis/v1alpha1/opampbridge_types.go index 0479b10198..e8ee0e52e6 100644 --- a/apis/v1alpha1/opampbridge_types.go +++ b/apis/v1alpha1/opampbridge_types.go @@ -105,6 +105,8 @@ type OpAMPBridgeSpec struct { // https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ // +optional TopologySpreadConstraints []v1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"` + // PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. + PodDNSConfig v1.PodDNSConfig `json:"podDnsConfig,omitempty"` } // OpAMPBridgeStatus defines the observed state of OpAMPBridge. diff --git a/apis/v1alpha1/targetallocator_types.go b/apis/v1alpha1/targetallocator_types.go index f4acfae76b..54df8a9a2d 100644 --- a/apis/v1alpha1/targetallocator_types.go +++ b/apis/v1alpha1/targetallocator_types.go @@ -60,8 +60,6 @@ type TargetAllocatorStatus struct { type TargetAllocatorSpec struct { // Common defines fields that are common to all OpenTelemetry CRD workloads. v1beta1.OpenTelemetryCommonFields `json:",inline"` - // CollectorSelector is the selector for Collector Pods the target allocator will allocate targets to. - CollectorSelector metav1.LabelSelector `json:"collectorSelector,omitempty"` // AllocationStrategy determines which strategy the target allocator should use for allocation. // The current options are least-weighted, consistent-hashing and per-node. The default is // consistent-hashing. diff --git a/apis/v1alpha1/zz_generated.deepcopy.go b/apis/v1alpha1/zz_generated.deepcopy.go index ef6579f898..086fafcfd2 100644 --- a/apis/v1alpha1/zz_generated.deepcopy.go +++ b/apis/v1alpha1/zz_generated.deepcopy.go @@ -680,6 +680,7 @@ func (in *OpAMPBridgeSpec) DeepCopyInto(out *OpAMPBridgeSpec) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + in.PodDNSConfig.DeepCopyInto(&out.PodDNSConfig) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpAMPBridgeSpec. @@ -1308,7 +1309,6 @@ func (in *TargetAllocatorList) DeepCopyObject() runtime.Object { func (in *TargetAllocatorSpec) DeepCopyInto(out *TargetAllocatorSpec) { *out = *in in.OpenTelemetryCommonFields.DeepCopyInto(&out.OpenTelemetryCommonFields) - in.CollectorSelector.DeepCopyInto(&out.CollectorSelector) if in.ScrapeConfigs != nil { in, out := &in.ScrapeConfigs, &out.ScrapeConfigs *out = make([]v1beta1.AnyConfig, len(*in)) diff --git a/apis/v1beta1/collector_webhook.go b/apis/v1beta1/collector_webhook.go index ffe4eff5e5..47d8528144 100644 --- a/apis/v1beta1/collector_webhook.go +++ b/apis/v1beta1/collector_webhook.go @@ -133,12 +133,12 @@ func (c CollectorWebhook) Default(_ context.Context, obj runtime.Object) error { } // if pdb isn't provided for target allocator and it's enabled - // using a valid strategy (consistent-hashing), + // using a valid strategy (consistent-hashing, per-node), // we set MaxUnavailable 1, which will work even if there is // just one replica, not blocking node drains but preventing // out-of-the-box from disruption generated by them with replicas > 1 if otelcol.Spec.TargetAllocator.Enabled && - otelcol.Spec.TargetAllocator.AllocationStrategy == TargetAllocatorAllocationStrategyConsistentHashing && + otelcol.Spec.TargetAllocator.AllocationStrategy != TargetAllocatorAllocationStrategyLeastWeighted && otelcol.Spec.TargetAllocator.PodDisruptionBudget == nil { otelcol.Spec.TargetAllocator.PodDisruptionBudget = &PodDisruptionBudgetSpec{ MaxUnavailable: &intstr.IntOrString{ @@ -190,6 +190,9 @@ func (c CollectorWebhook) ValidateUpdate(ctx context.Context, oldObj, newObj run return nil, fmt.Errorf("expected an OpenTelemetryCollector, received %T", oldObj) } + if otelcolOld.Spec.Mode != otelcol.Spec.Mode { + return admission.Warnings{}, fmt.Errorf("the OpenTelemetry Collector mode is set to %s, which does not support modification", otelcolOld.Spec.Mode) + } warnings, err := c.validate(ctx, otelcol) if err != nil { return warnings, err diff --git a/apis/v1beta1/collector_webhook_test.go b/apis/v1beta1/collector_webhook_test.go index d2376934ae..1baeb2c08e 100644 --- a/apis/v1beta1/collector_webhook_test.go +++ b/apis/v1beta1/collector_webhook_test.go @@ -360,6 +360,56 @@ func TestCollectorDefaultingWebhook(t *testing.T) { }, }, }, + { + name: "Defined PDB for target allocator per-node", + otelcol: OpenTelemetryCollector{ + Spec: OpenTelemetryCollectorSpec{ + Mode: ModeDeployment, + TargetAllocator: TargetAllocatorEmbedded{ + Enabled: true, + AllocationStrategy: TargetAllocatorAllocationStrategyPerNode, + PodDisruptionBudget: &PodDisruptionBudgetSpec{ + MinAvailable: &intstr.IntOrString{ + Type: intstr.String, + StrVal: "10%", + }, + }, + }, + }, + }, + expected: OpenTelemetryCollector{ + ObjectMeta: metav1.ObjectMeta{ + Labels: map[string]string{ + "app.kubernetes.io/managed-by": "opentelemetry-operator", + }, + }, + Spec: OpenTelemetryCollectorSpec{ + Mode: ModeDeployment, + OpenTelemetryCommonFields: OpenTelemetryCommonFields{ + Replicas: &one, + ManagementState: ManagementStateManaged, + PodDisruptionBudget: &PodDisruptionBudgetSpec{ + MaxUnavailable: &intstr.IntOrString{ + Type: intstr.Int, + IntVal: 1, + }, + }, + }, + UpgradeStrategy: UpgradeStrategyAutomatic, + TargetAllocator: TargetAllocatorEmbedded{ + Enabled: true, + Replicas: &one, + AllocationStrategy: TargetAllocatorAllocationStrategyPerNode, + PodDisruptionBudget: &PodDisruptionBudgetSpec{ + MinAvailable: &intstr.IntOrString{ + Type: intstr.String, + StrVal: "10%", + }, + }, + }, + }, + }, + }, { name: "Undefined PDB for target allocator and consistent-hashing strategy", otelcol: OpenTelemetryCollector{ @@ -1211,6 +1261,51 @@ func TestOTELColValidatingWebhook(t *testing.T) { } } +func TestOTELColValidateUpdateWebhook(t *testing.T) { + tests := []struct { //nolint:govet + name string + otelcolOld OpenTelemetryCollector + otelcolNew OpenTelemetryCollector + expectedErr string + expectedWarnings []string + shouldFailSar bool + }{ + { + name: "mode should not be changed", + otelcolOld: OpenTelemetryCollector{ + Spec: OpenTelemetryCollectorSpec{Mode: ModeStatefulSet}, + }, + otelcolNew: OpenTelemetryCollector{ + Spec: OpenTelemetryCollectorSpec{Mode: ModeDeployment}, + }, + expectedErr: "which does not support modification", + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + cvw := &CollectorWebhook{ + logger: logr.Discard(), + scheme: testScheme, + cfg: config.New( + config.WithCollectorImage("collector:v0.0.0"), + config.WithTargetAllocatorImage("ta:v0.0.0"), + ), + reviewer: getReviewer(test.shouldFailSar), + } + ctx := context.Background() + warnings, err := cvw.ValidateUpdate(ctx, &test.otelcolOld, &test.otelcolNew) + if test.expectedErr == "" { + assert.NoError(t, err) + } else { + assert.ErrorContains(t, err, test.expectedErr) + } + assert.Equal(t, len(test.expectedWarnings), len(warnings)) + assert.ElementsMatch(t, warnings, test.expectedWarnings) + }) + } +} + func getReviewer(shouldFailSAR bool) *rbac.Reviewer { c := fake.NewSimpleClientset() c.PrependReactor("create", "subjectaccessreviews", func(action kubeTesting.Action) (handled bool, ret runtime.Object, err error) { diff --git a/apis/v1beta1/common.go b/apis/v1beta1/common.go index e91b0e6de7..374f5a2a82 100644 --- a/apis/v1beta1/common.go +++ b/apis/v1beta1/common.go @@ -224,6 +224,8 @@ type OpenTelemetryCommonFields struct { // // +optional AdditionalContainers []v1.Container `json:"additionalContainers,omitempty"` + // PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. + PodDNSConfig v1.PodDNSConfig `json:"podDnsConfig,omitempty"` } type StatefulSetCommonFields struct { diff --git a/apis/v1beta1/config.go b/apis/v1beta1/config.go index eaaa5a3d42..dbe9c43efd 100644 --- a/apis/v1beta1/config.go +++ b/apis/v1beta1/config.go @@ -90,7 +90,7 @@ func (c *AnyConfig) MarshalJSON() ([]byte, error) { // Pipeline is a struct of component type to a list of component IDs. type Pipeline struct { Exporters []string `json:"exporters" yaml:"exporters"` - Processors []string `json:"processors" yaml:"processors"` + Processors []string `json:"processors,omitempty" yaml:"processors,omitempty"` Receivers []string `json:"receivers" yaml:"receivers"` } diff --git a/apis/v1beta1/testdata/otelcol-connectors.yaml b/apis/v1beta1/testdata/otelcol-connectors.yaml index 74f65eb2a8..edc1d017f5 100644 --- a/apis/v1beta1/testdata/otelcol-connectors.yaml +++ b/apis/v1beta1/testdata/otelcol-connectors.yaml @@ -17,9 +17,7 @@ service: pipelines: traces: receivers: [foo] - processors: [] exporters: [count] metrics: receivers: [count] - processors: [] exporters: [bar] diff --git a/apis/v1beta1/testdata/otelcol-extensions.yaml b/apis/v1beta1/testdata/otelcol-extensions.yaml index 5646d68c67..cbae6f14d4 100644 --- a/apis/v1beta1/testdata/otelcol-extensions.yaml +++ b/apis/v1beta1/testdata/otelcol-extensions.yaml @@ -23,6 +23,5 @@ service: traces: receivers: - otlp - processors: [] exporters: - otlp/auth diff --git a/apis/v1beta1/testdata/otelcol-filelog.yaml b/apis/v1beta1/testdata/otelcol-filelog.yaml index 283bfc9184..eaa18e2404 100644 --- a/apis/v1beta1/testdata/otelcol-filelog.yaml +++ b/apis/v1beta1/testdata/otelcol-filelog.yaml @@ -81,5 +81,4 @@ service: pipelines: logs: receivers: [filelog] - processors: [] exporters: [debug] diff --git a/apis/v1beta1/testdata/otelcol-pipelines.yaml b/apis/v1beta1/testdata/otelcol-pipelines.yaml new file mode 100644 index 0000000000..6fd980e47c --- /dev/null +++ b/apis/v1beta1/testdata/otelcol-pipelines.yaml @@ -0,0 +1,14 @@ +receivers: + otlp: + protocols: + grpc: + http: +exporters: + debug: +service: + pipelines: + traces: + receivers: + - otlp + exporters: + - debug \ No newline at end of file diff --git a/apis/v1beta1/zz_generated.deepcopy.go b/apis/v1beta1/zz_generated.deepcopy.go index e5fb8ef086..cff0c978e3 100644 --- a/apis/v1beta1/zz_generated.deepcopy.go +++ b/apis/v1beta1/zz_generated.deepcopy.go @@ -476,6 +476,7 @@ func (in *OpenTelemetryCommonFields) DeepCopyInto(out *OpenTelemetryCommonFields (*in)[i].DeepCopyInto(&(*out)[i]) } } + in.PodDNSConfig.DeepCopyInto(&out.PodDNSConfig) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTelemetryCommonFields. diff --git a/autoinstrumentation/dotnet/version.txt b/autoinstrumentation/dotnet/version.txt index dc1e644a10..bd8bf882d0 100644 --- a/autoinstrumentation/dotnet/version.txt +++ b/autoinstrumentation/dotnet/version.txt @@ -1 +1 @@ -1.6.0 +1.7.0 diff --git a/autoinstrumentation/java/version.txt b/autoinstrumentation/java/version.txt index 197c4d5c2d..437459cd94 100644 --- a/autoinstrumentation/java/version.txt +++ b/autoinstrumentation/java/version.txt @@ -1 +1 @@ -2.4.0 +2.5.0 diff --git a/autoinstrumentation/python/requirements.txt b/autoinstrumentation/python/requirements.txt index 56e3e8405e..75e86f8ba0 100644 --- a/autoinstrumentation/python/requirements.txt +++ b/autoinstrumentation/python/requirements.txt @@ -1,59 +1,60 @@ -opentelemetry-distro==0.45b0 +opentelemetry-distro==0.46b0 # We don't use the distro[otlp] option which automatically includes exporters since gRPC is not appropriate for # injected auto-instrumentation, where it has a strict dependency on the OS / Python version the artifact is built for. -opentelemetry-exporter-otlp-proto-http==1.24.0 +opentelemetry-exporter-otlp-proto-http==1.25.0 -opentelemetry-propagator-b3==1.24.0 -opentelemetry-propagator-jaeger==1.24.0 +opentelemetry-propagator-b3==1.25.0 +opentelemetry-propagator-jaeger==1.25.0 opentelemetry-propagator-aws-xray==1.0.1 -opentelemetry-instrumentation==0.45b0 -opentelemetry-propagator-ot-trace==0.45b0 +opentelemetry-instrumentation==0.46b0 +opentelemetry-propagator-ot-trace==0.46b0 # Copied in from https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation -# except for aws-lambda -opentelemetry-instrumentation-aio-pika==0.45b0 -opentelemetry-instrumentation-aiohttp-client==0.45b0 -opentelemetry-instrumentation-aiopg==0.45b0 -opentelemetry-instrumentation-asgi==0.45b0 -opentelemetry-instrumentation-asyncio==0.45b0 -opentelemetry-instrumentation-asyncpg==0.45b0 -opentelemetry-instrumentation-boto==0.45b0 -opentelemetry-instrumentation-boto3sqs==0.45b0 -opentelemetry-instrumentation-botocore==0.45b0 -opentelemetry-instrumentation-cassandra==0.45b0 -opentelemetry-instrumentation-celery==0.45b0 -opentelemetry-instrumentation-confluent-kafka==0.45b0 -opentelemetry-instrumentation-dbapi==0.45b0 -opentelemetry-instrumentation-django==0.45b0 -opentelemetry-instrumentation-elasticsearch==0.45b0 -opentelemetry-instrumentation-falcon==0.45b0 -opentelemetry-instrumentation-fastapi==0.45b0 -opentelemetry-instrumentation-flask==0.45b0 -opentelemetry-instrumentation-grpc==0.45b0 -opentelemetry-instrumentation-httpx==0.45b0 -opentelemetry-instrumentation-jinja2==0.45b0 -opentelemetry-instrumentation-kafka-python==0.45b0 -opentelemetry-instrumentation-logging==0.45b0 -opentelemetry-instrumentation-mysql==0.45b0 -opentelemetry-instrumentation-mysqlclient==0.45b0 -opentelemetry-instrumentation-pika==0.45b0 -opentelemetry-instrumentation-psycopg==0.45b0 -opentelemetry-instrumentation-psycopg2==0.45b0 -opentelemetry-instrumentation-pymemcache==0.45b0 -opentelemetry-instrumentation-pymongo==0.45b0 -opentelemetry-instrumentation-pymysql==0.45b0 -opentelemetry-instrumentation-pyramid==0.45b0 -opentelemetry-instrumentation-redis==0.45b0 -opentelemetry-instrumentation-remoulade==0.45b0 -opentelemetry-instrumentation-requests==0.45b0 -opentelemetry-instrumentation-sklearn==0.45b0 -opentelemetry-instrumentation-sqlalchemy==0.45b0 -opentelemetry-instrumentation-sqlite3==0.45b0 -opentelemetry-instrumentation-starlette==0.45b0 -opentelemetry-instrumentation-system-metrics==0.45b0 -opentelemetry-instrumentation-tornado==0.45b0 -opentelemetry-instrumentation-tortoiseorm==0.45b0 -opentelemetry-instrumentation-urllib==0.45b0 -opentelemetry-instrumentation-urllib3==0.45b0 -opentelemetry-instrumentation-wsgi==0.45b0 +opentelemetry-instrumentation-aio-pika==0.46b0 +opentelemetry-instrumentation-aiohttp-client==0.46b0 +opentelemetry-instrumentation-aiopg==0.46b0 +opentelemetry-instrumentation-asgi==0.46b0 +opentelemetry-instrumentation-asyncio==0.46b0 +opentelemetry-instrumentation-asyncpg==0.46b0 +opentelemetry-instrumentation-aws-lambda==0.46b0 +opentelemetry-instrumentation-boto==0.46b0 +opentelemetry-instrumentation-boto3sqs==0.46b0 +opentelemetry-instrumentation-botocore==0.46b0 +opentelemetry-instrumentation-cassandra==0.46b0 +opentelemetry-instrumentation-celery==0.46b0 +opentelemetry-instrumentation-confluent-kafka==0.46b0 +opentelemetry-instrumentation-dbapi==0.46b0 +opentelemetry-instrumentation-django==0.46b0 +opentelemetry-instrumentation-elasticsearch==0.46b0 +opentelemetry-instrumentation-falcon==0.46b0 +opentelemetry-instrumentation-fastapi==0.46b0 +opentelemetry-instrumentation-flask==0.46b0 +opentelemetry-instrumentation-grpc==0.46b0 +opentelemetry-instrumentation-httpx==0.46b0 +opentelemetry-instrumentation-jinja2==0.46b0 +opentelemetry-instrumentation-kafka-python==0.46b0 +opentelemetry-instrumentation-logging==0.46b0 +opentelemetry-instrumentation-mysql==0.46b0 +opentelemetry-instrumentation-mysqlclient==0.46b0 +opentelemetry-instrumentation-pika==0.46b0 +opentelemetry-instrumentation-psycopg==0.46b0 +opentelemetry-instrumentation-psycopg2==0.46b0 +opentelemetry-instrumentation-pymemcache==0.46b0 +opentelemetry-instrumentation-pymongo==0.46b0 +opentelemetry-instrumentation-pymysql==0.46b0 +opentelemetry-instrumentation-pyramid==0.46b0 +opentelemetry-instrumentation-redis==0.46b0 +opentelemetry-instrumentation-remoulade==0.46b0 +opentelemetry-instrumentation-requests==0.46b0 +opentelemetry-instrumentation-sklearn==0.46b0 +opentelemetry-instrumentation-sqlalchemy==0.46b0 +opentelemetry-instrumentation-sqlite3==0.46b0 +opentelemetry-instrumentation-starlette==0.46b0 +opentelemetry-instrumentation-system-metrics==0.46b0 +opentelemetry-instrumentation-threading==0.46b0 +opentelemetry-instrumentation-tornado==0.46b0 +opentelemetry-instrumentation-tortoiseorm==0.46b0 +opentelemetry-instrumentation-urllib==0.46b0 +opentelemetry-instrumentation-urllib3==0.46b0 +opentelemetry-instrumentation-wsgi==0.46b0 diff --git a/bundle/manifests/opentelemetry-operator.clusterserviceversion.yaml b/bundle/manifests/opentelemetry-operator.clusterserviceversion.yaml index a404a30ec1..cbb2a798d3 100644 --- a/bundle/manifests/opentelemetry-operator.clusterserviceversion.yaml +++ b/bundle/manifests/opentelemetry-operator.clusterserviceversion.yaml @@ -99,13 +99,13 @@ metadata: categories: Logging & Tracing,Monitoring certified: "false" containerImage: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator - createdAt: "2024-06-05T18:27:00Z" + createdAt: "2024-06-25T12:03:57Z" description: Provides the OpenTelemetry components, including the Collector operators.operatorframework.io/builder: operator-sdk-v1.29.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 repository: github.com/open-telemetry/opentelemetry-operator support: OpenTelemetry Community - name: opentelemetry-operator.v0.102.0 + name: opentelemetry-operator.v0.103.0 namespace: placeholder spec: apiservicedefinitions: {} @@ -504,7 +504,7 @@ spec: valueFrom: fieldRef: fieldPath: spec.serviceAccountName - image: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator:0.102.0 + image: ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator:0.103.0 livenessProbe: httpGet: path: /healthz @@ -612,7 +612,7 @@ spec: minKubeVersion: 1.23.0 provider: name: OpenTelemetry Community - version: 0.102.0 + version: 0.103.0 webhookdefinitions: - admissionReviewVersions: - v1alpha1 diff --git a/bundle/manifests/opentelemetry.io_instrumentations.yaml b/bundle/manifests/opentelemetry.io_instrumentations.yaml index 4fd5de9a21..a4da85a238 100644 --- a/bundle/manifests/opentelemetry.io_instrumentations.yaml +++ b/bundle/manifests/opentelemetry.io_instrumentations.yaml @@ -60,6 +60,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -98,6 +99,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -126,6 +128,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -164,6 +167,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -234,6 +238,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -272,6 +277,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -338,6 +344,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -376,6 +383,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -409,6 +417,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -447,6 +456,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -515,6 +525,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -553,6 +564,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -633,6 +645,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -671,6 +684,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -699,6 +713,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -737,6 +752,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -805,6 +821,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -843,6 +860,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -924,6 +942,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -962,6 +981,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean diff --git a/bundle/manifests/opentelemetry.io_opampbridges.yaml b/bundle/manifests/opentelemetry.io_opampbridges.yaml index 55301d2d9b..6e7a42fd34 100644 --- a/bundle/manifests/opentelemetry.io_opampbridges.yaml +++ b/bundle/manifests/opentelemetry.io_opampbridges.yaml @@ -60,11 +60,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -76,11 +78,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -91,6 +95,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -107,11 +112,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -123,14 +130,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -156,11 +166,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -190,11 +202,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -205,6 +219,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -218,6 +233,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -234,11 +250,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -268,11 +286,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -283,12 +303,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -310,11 +332,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -344,11 +368,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -359,6 +385,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -372,6 +399,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -388,11 +416,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -422,11 +452,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -437,12 +469,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object capabilities: @@ -471,6 +505,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -509,6 +544,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -527,6 +563,7 @@ spec: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -537,6 +574,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -562,8 +600,40 @@ spec: additionalProperties: type: string type: object + podDnsConfig: + properties: + nameservers: + items: + type: string + type: array + x-kubernetes-list-type: atomic + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + x-kubernetes-list-type: atomic + searches: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -602,6 +672,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -614,6 +685,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -693,16 +765,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -784,11 +867,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -836,6 +921,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -899,6 +986,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic path: type: string readOnly: @@ -908,6 +996,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -925,6 +1014,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -953,7 +1043,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -968,6 +1060,7 @@ spec: nodePublishSecretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1023,6 +1116,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object emptyDir: properties: @@ -1064,6 +1158,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -1123,11 +1218,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1160,10 +1257,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic wwids: items: type: string type: array + x-kubernetes-list-type: atomic type: object flexVolume: properties: @@ -1180,6 +1279,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1260,11 +1360,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic readOnly: type: boolean secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1341,11 +1443,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1380,7 +1484,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -1426,6 +1532,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object secret: properties: @@ -1444,7 +1551,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -1464,6 +1573,7 @@ spec: type: object type: object type: array + x-kubernetes-list-type: atomic type: object quobyte: properties: @@ -1495,6 +1605,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic pool: type: string readOnly: @@ -1502,6 +1613,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1524,6 +1636,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1562,6 +1675,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic optional: type: boolean secretName: @@ -1576,6 +1690,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic diff --git a/bundle/manifests/opentelemetry.io_opentelemetrycollectors.yaml b/bundle/manifests/opentelemetry.io_opentelemetrycollectors.yaml index c7b60afc4f..9569d7fb6c 100644 --- a/bundle/manifests/opentelemetry.io_opentelemetrycollectors.yaml +++ b/bundle/manifests/opentelemetry.io_opentelemetrycollectors.yaml @@ -75,10 +75,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -93,6 +95,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -131,6 +134,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -143,12 +147,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -159,6 +167,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -166,6 +175,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -180,6 +190,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -197,6 +208,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -238,6 +250,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -255,6 +268,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -297,6 +311,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -327,6 +342,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -401,6 +417,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -431,6 +448,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -521,16 +539,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -586,6 +615,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -616,6 +646,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -678,6 +709,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -689,6 +723,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -698,6 +734,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -724,11 +763,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -740,11 +781,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -755,6 +798,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -771,11 +815,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -787,14 +833,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -820,11 +869,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -854,11 +905,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -869,6 +922,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -882,6 +936,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -898,11 +953,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -932,11 +989,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -947,12 +1006,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -974,11 +1035,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1008,11 +1071,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1023,6 +1088,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -1036,6 +1102,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -1052,11 +1119,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1086,11 +1155,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1101,12 +1172,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object args: @@ -1195,11 +1268,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1297,6 +1372,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1335,6 +1411,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1353,6 +1430,7 @@ spec: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -1363,6 +1441,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -1426,10 +1505,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -1444,6 +1525,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1482,6 +1564,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1494,12 +1577,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -1510,6 +1597,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -1517,6 +1605,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -1531,6 +1620,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1548,6 +1638,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1589,6 +1680,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1606,6 +1698,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1648,6 +1741,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -1678,6 +1772,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1752,6 +1847,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -1782,6 +1878,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1872,16 +1969,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -1937,6 +2045,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -1967,6 +2076,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -2029,6 +2139,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -2040,6 +2153,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -2049,6 +2164,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -2065,6 +2183,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -2082,6 +2201,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -2123,6 +2243,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -2140,6 +2261,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -2247,6 +2369,15 @@ spec: type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -2285,6 +2416,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -2297,6 +2429,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -2378,16 +2511,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -2461,11 +2605,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -2477,11 +2623,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -2492,6 +2640,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -2508,11 +2657,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -2524,14 +2675,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -2557,11 +2711,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2591,11 +2747,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2606,6 +2764,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -2619,6 +2778,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -2635,11 +2795,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2669,11 +2831,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2684,12 +2848,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -2711,11 +2877,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2745,11 +2913,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2760,6 +2930,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -2773,6 +2944,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -2789,11 +2961,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2823,11 +2997,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2838,12 +3014,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object allocationStrategy: @@ -2869,6 +3047,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -2907,6 +3086,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -2953,6 +3133,15 @@ spec: type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -2991,6 +3180,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -3003,6 +3193,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -3070,16 +3261,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -3161,11 +3363,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -3233,11 +3437,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -3324,6 +3530,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -3383,11 +3590,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -3409,6 +3618,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic allocatedResourceStatuses: additionalProperties: type: string @@ -3452,6 +3662,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map currentVolumeAttributesClassName: type: string modifyVolumeStatus: @@ -3480,6 +3693,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -3543,6 +3758,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic path: type: string readOnly: @@ -3552,6 +3768,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3569,6 +3786,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3597,7 +3815,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -3612,6 +3832,7 @@ spec: nodePublishSecretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3667,6 +3888,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object emptyDir: properties: @@ -3708,6 +3930,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -3767,11 +3990,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -3804,10 +4029,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic wwids: items: type: string type: array + x-kubernetes-list-type: atomic type: object flexVolume: properties: @@ -3824,6 +4051,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3904,11 +4132,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic readOnly: type: boolean secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3985,11 +4215,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -4024,7 +4256,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -4070,6 +4304,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object secret: properties: @@ -4088,7 +4323,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -4108,6 +4345,7 @@ spec: type: object type: object type: array + x-kubernetes-list-type: atomic type: object quobyte: properties: @@ -4139,6 +4377,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic pool: type: string readOnly: @@ -4146,6 +4385,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -4168,6 +4408,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -4206,6 +4447,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic optional: type: boolean secretName: @@ -4220,6 +4462,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -4322,10 +4565,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -4340,6 +4585,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -4378,6 +4624,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -4390,12 +4637,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -4406,6 +4657,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -4413,6 +4665,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -4427,6 +4680,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -4444,6 +4698,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4485,6 +4740,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -4502,6 +4758,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4544,6 +4801,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -4574,6 +4832,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4648,6 +4907,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -4678,6 +4938,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4768,16 +5029,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -4833,6 +5105,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -4863,6 +5136,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4925,6 +5199,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -4936,6 +5213,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4945,6 +5224,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -4971,11 +5253,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -4987,11 +5271,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -5002,6 +5288,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -5018,11 +5305,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -5034,14 +5323,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -5067,11 +5359,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5101,11 +5395,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5116,6 +5412,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -5129,6 +5426,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -5145,11 +5443,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5179,11 +5479,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5194,12 +5496,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -5221,11 +5525,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5255,11 +5561,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5270,6 +5578,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -5283,6 +5592,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -5299,11 +5609,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5333,11 +5645,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5348,12 +5662,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object args: @@ -5442,11 +5758,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5538,7 +5856,6 @@ spec: type: array required: - exporters - - processors - receivers type: object type: object @@ -5621,6 +5938,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5659,6 +5977,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5677,6 +5996,7 @@ spec: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -5687,6 +6007,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -5750,10 +6071,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -5768,6 +6091,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5806,6 +6130,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5818,12 +6143,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -5834,6 +6163,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -5841,6 +6171,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -5855,6 +6186,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -5872,6 +6204,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -5913,6 +6246,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -5930,6 +6264,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -5972,6 +6307,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -6002,6 +6338,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6076,6 +6413,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -6106,6 +6444,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6196,16 +6535,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -6261,6 +6611,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -6291,6 +6642,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6353,6 +6705,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -6364,6 +6719,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -6373,6 +6730,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -6389,6 +6749,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -6406,6 +6767,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6447,6 +6809,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -6464,6 +6827,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6563,8 +6927,40 @@ spec: - type: string x-kubernetes-int-or-string: true type: object + podDnsConfig: + properties: + nameservers: + items: + type: string + type: array + x-kubernetes-list-type: atomic + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + x-kubernetes-list-type: atomic + searches: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -6603,6 +6999,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -6615,6 +7012,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -6717,16 +7115,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -6800,11 +7209,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -6816,11 +7227,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -6831,6 +7244,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -6847,11 +7261,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -6863,14 +7279,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -6896,11 +7315,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -6930,11 +7351,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -6945,6 +7368,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -6958,6 +7382,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -6974,11 +7399,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7008,11 +7435,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7023,12 +7452,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -7050,11 +7481,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7084,11 +7517,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7099,6 +7534,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -7112,6 +7548,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -7128,11 +7565,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7162,11 +7601,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7177,12 +7618,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object allocationStrategy: @@ -7208,6 +7651,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -7246,6 +7690,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -7295,6 +7740,15 @@ spec: type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -7333,6 +7787,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -7345,6 +7800,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -7374,11 +7830,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7402,11 +7860,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7452,16 +7912,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -7543,11 +8014,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7615,11 +8088,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7688,6 +8163,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -7747,11 +8223,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7773,6 +8251,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic allocatedResourceStatuses: additionalProperties: type: string @@ -7816,6 +8295,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map currentVolumeAttributesClassName: type: string modifyVolumeStatus: @@ -7844,6 +8326,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -7907,6 +8391,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic path: type: string readOnly: @@ -7916,6 +8401,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -7933,6 +8419,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -7961,7 +8448,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -7976,6 +8465,7 @@ spec: nodePublishSecretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8031,6 +8521,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object emptyDir: properties: @@ -8072,6 +8563,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -8131,11 +8623,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -8168,10 +8662,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic wwids: items: type: string type: array + x-kubernetes-list-type: atomic type: object flexVolume: properties: @@ -8188,6 +8684,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8268,11 +8765,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic readOnly: type: boolean secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8349,11 +8848,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -8388,7 +8889,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -8434,6 +8937,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object secret: properties: @@ -8452,7 +8956,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -8472,6 +8978,7 @@ spec: type: object type: object type: array + x-kubernetes-list-type: atomic type: object quobyte: properties: @@ -8503,6 +9010,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic pool: type: string readOnly: @@ -8510,6 +9018,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8532,6 +9041,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8570,6 +9080,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic optional: type: boolean secretName: @@ -8584,6 +9095,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic diff --git a/cmd/operator-opamp-bridge/agent/agent_test.go b/cmd/operator-opamp-bridge/agent/agent_test.go index 75d533eae1..703a83c6ee 100644 --- a/cmd/operator-opamp-bridge/agent/agent_test.go +++ b/cmd/operator-opamp-bridge/agent/agent_test.go @@ -642,7 +642,6 @@ func TestAgent_onMessage(t *testing.T) { "name: " + testCollectorName, "namespace: " + testNamespace, "send_batch_size: 10000", - "processors: []", "status:", }, }, @@ -688,7 +687,6 @@ func TestAgent_onMessage(t *testing.T) { "name: " + testCollectorName, "namespace: " + testNamespace, "send_batch_size: 10000", - "processors: []", "status:", }, }, @@ -702,7 +700,6 @@ func TestAgent_onMessage(t *testing.T) { "name: " + testCollectorName, "namespace: " + testNamespace, "send_batch_size: 10000", - "processors: []", "status:", }, }, @@ -735,7 +732,6 @@ func TestAgent_onMessage(t *testing.T) { "name: " + testCollectorName, "namespace: " + testNamespace, "send_batch_size: 10000", - "processors: []", "status:", }, }, @@ -749,7 +745,6 @@ func TestAgent_onMessage(t *testing.T) { "name: " + testCollectorName, "namespace: " + testNamespace, "send_batch_size: 10000", - "processors: []", "status:", }, otherCollectorKey: { @@ -786,7 +781,6 @@ func TestAgent_onMessage(t *testing.T) { "name: " + testCollectorName, "namespace: " + testNamespace, "send_batch_size: 10000", - "processors: []", "status:", }, }, diff --git a/cmd/operator-opamp-bridge/agent/testdata/basic.yaml b/cmd/operator-opamp-bridge/agent/testdata/basic.yaml index 410a328edd..39b009e448 100644 --- a/cmd/operator-opamp-bridge/agent/testdata/basic.yaml +++ b/cmd/operator-opamp-bridge/agent/testdata/basic.yaml @@ -26,5 +26,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/cmd/operator-opamp-bridge/agent/testdata/invalid.yaml b/cmd/operator-opamp-bridge/agent/testdata/invalid.yaml index 2a060581f4..7d00f3d9f1 100644 --- a/cmd/operator-opamp-bridge/agent/testdata/invalid.yaml +++ b/cmd/operator-opamp-bridge/agent/testdata/invalid.yaml @@ -26,5 +26,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/cmd/operator-opamp-bridge/operator/client_test.go b/cmd/operator-opamp-bridge/operator/client_test.go index a5f000b877..a6b4c2a56d 100644 --- a/cmd/operator-opamp-bridge/operator/client_test.go +++ b/cmd/operator-opamp-bridge/operator/client_test.go @@ -177,9 +177,8 @@ func Test_collectorUpdate(t *testing.T) { require.NoError(t, err, "Should apply base config") // Get the newly created collector - instance, err := c.GetInstance(name, namespace) + _, err = c.GetInstance(name, namespace) require.NoError(t, err, "Should be able to get the newly created instance") - assert.Contains(t, instance.Spec.Config, "processors: []") // Try updating with an invalid one configmap.Body = []byte("empty, invalid!") @@ -224,9 +223,8 @@ func Test_collectorDelete(t *testing.T) { require.NoError(t, err, "Should apply base config") // Get the newly created collector - instance, err := c.GetInstance(name, namespace) + _, err = c.GetInstance(name, namespace) require.NoError(t, err, "Should be able to get the newly created instance") - assert.Contains(t, instance.Spec.Config, "processors: []") // Delete it err = c.Delete(name, namespace) diff --git a/cmd/operator-opamp-bridge/operator/testdata/collector.yaml b/cmd/operator-opamp-bridge/operator/testdata/collector.yaml index c77c64c488..c3f7f985dd 100644 --- a/cmd/operator-opamp-bridge/operator/testdata/collector.yaml +++ b/cmd/operator-opamp-bridge/operator/testdata/collector.yaml @@ -27,5 +27,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/cmd/operator-opamp-bridge/operator/testdata/invalid-collector.yaml b/cmd/operator-opamp-bridge/operator/testdata/invalid-collector.yaml index f64ebcedf4..f0676be161 100644 --- a/cmd/operator-opamp-bridge/operator/testdata/invalid-collector.yaml +++ b/cmd/operator-opamp-bridge/operator/testdata/invalid-collector.yaml @@ -24,5 +24,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/cmd/operator-opamp-bridge/operator/testdata/reporting-collector.yaml b/cmd/operator-opamp-bridge/operator/testdata/reporting-collector.yaml index 3b0a925464..578e1df2bf 100644 --- a/cmd/operator-opamp-bridge/operator/testdata/reporting-collector.yaml +++ b/cmd/operator-opamp-bridge/operator/testdata/reporting-collector.yaml @@ -27,5 +27,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/cmd/operator-opamp-bridge/operator/testdata/unmanaged-collector.yaml b/cmd/operator-opamp-bridge/operator/testdata/unmanaged-collector.yaml index 48b793f98d..22982f203b 100644 --- a/cmd/operator-opamp-bridge/operator/testdata/unmanaged-collector.yaml +++ b/cmd/operator-opamp-bridge/operator/testdata/unmanaged-collector.yaml @@ -27,5 +27,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/cmd/otel-allocator/README.md b/cmd/otel-allocator/README.md index e8f72af35f..230ec8f269 100644 --- a/cmd/otel-allocator/README.md +++ b/cmd/otel-allocator/README.md @@ -98,7 +98,7 @@ spec: mode: statefulset targetAllocator: enabled: true - config: | + config: receivers: prometheus: config: @@ -109,13 +109,12 @@ spec: - targets: [ '0.0.0.0:8888' ] exporters: - logging: + logging: {} service: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [logging] ``` diff --git a/cmd/otel-allocator/collector/collector_test.go b/cmd/otel-allocator/collector/collector_test.go index 6bffd83212..ed5ac364fc 100644 --- a/cmd/otel-allocator/collector/collector_test.go +++ b/cmd/otel-allocator/collector/collector_test.go @@ -158,13 +158,11 @@ func Test_runWatch(t *testing.T) { assert.EventuallyWithT(t, func(collect *assert.CollectT) { mapMutex.Lock() + defer mapMutex.Unlock() assert.Len(collect, actual, len(tt.want)) assert.Equal(collect, actual, tt.want) - defer mapMutex.Unlock() - }, time.Second, time.Millisecond) - - // check if the metrics were emitted correctly - assert.Equal(t, testutil.ToFloat64(collectorsDiscovered), float64(len(actual))) + assert.Equal(collect, testutil.ToFloat64(collectorsDiscovered), float64(len(actual))) + }, time.Second*3, time.Millisecond) }) } } diff --git a/cmd/otel-allocator/config/config_test.go b/cmd/otel-allocator/config/config_test.go index 603dcd50f6..53ddc52a49 100644 --- a/cmd/otel-allocator/config/config_test.go +++ b/cmd/otel-allocator/config/config_test.go @@ -75,6 +75,7 @@ func TestLoad(t *testing.T) { ScrapeTimeout: model.Duration(10 * time.Second), EvaluationInterval: model.Duration(60 * time.Second), }, + Runtime: promconfig.DefaultRuntimeConfig, ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "prometheus", @@ -156,6 +157,7 @@ func TestLoad(t *testing.T) { ScrapeTimeout: model.Duration(10 * time.Second), EvaluationInterval: model.Duration(60 * time.Second), }, + Runtime: promconfig.DefaultRuntimeConfig, ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "prometheus", diff --git a/cmd/otel-allocator/watcher/promOperator.go b/cmd/otel-allocator/watcher/promOperator.go index b38fed9099..790c6c36cf 100644 --- a/cmd/otel-allocator/watcher/promOperator.go +++ b/cmd/otel-allocator/watcher/promOperator.go @@ -88,10 +88,11 @@ func NewPrometheusCRWatcher(ctx context.Context, logger logr.Logger, cfg allocat return nil, err } - store := assets.NewStore(clientset.CoreV1(), clientset.CoreV1()) + store := assets.NewStoreBuilder(clientset.CoreV1(), clientset.CoreV1()) promRegisterer := prometheusgoclient.NewRegistry() operatorMetrics := operator.NewMetrics(promRegisterer) - eventRecorder := operator.NewEventRecorder(clientset, "target-allocator") + eventRecorderFactory := operator.NewEventRecorderFactory(false) + eventRecorder := eventRecorderFactory(clientset, "target-allocator") nsMonInf, err := getNamespaceInformer(ctx, map[string]struct{}{v1.NamespaceAll: {}}, promOperatorLogger, clientset, operatorMetrics) if err != nil { @@ -131,7 +132,7 @@ type PrometheusCRWatcher struct { podMonitorNamespaceSelector *metav1.LabelSelector serviceMonitorNamespaceSelector *metav1.LabelSelector resourceSelector *prometheus.ResourceSelector - store *assets.Store + store *assets.StoreBuilder } func getNamespaceInformer(ctx context.Context, allowList map[string]struct{}, promOperatorLogger log.Logger, clientset kubernetes.Interface, operatorMetrics *operator.Metrics) (cache.SharedIndexInformer, error) { @@ -319,7 +320,6 @@ func (w *PrometheusCRWatcher) LoadConfig(ctx context.Context) (*promconfig.Confi } generatedConfig, err := w.configGenerator.GenerateServerConfiguration( - ctx, "30s", "", nil, diff --git a/cmd/otel-allocator/watcher/promOperator_test.go b/cmd/otel-allocator/watcher/promOperator_test.go index e6297648ed..180d34acd3 100644 --- a/cmd/otel-allocator/watcher/promOperator_test.go +++ b/cmd/otel-allocator/watcher/promOperator_test.go @@ -41,6 +41,7 @@ import ( "k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/tools/cache" fcache "k8s.io/client-go/tools/cache/testing" + "k8s.io/utils/ptr" allocatorconfig "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/config" ) @@ -339,11 +340,11 @@ func TestLoadConfig(t *testing.T) { PodMetricsEndpoints: []monitoringv1.PodMetricsEndpoint{ { Port: "web", - RelabelConfigs: []*monitoringv1.RelabelConfig{ + RelabelConfigs: []monitoringv1.RelabelConfig{ { Action: "keep", Regex: ".*(", - Replacement: "invalid", + Replacement: ptr.To("invalid"), TargetLabel: "city", }, }, @@ -434,11 +435,11 @@ func TestLoadConfig(t *testing.T) { Endpoints: []monitoringv1.Endpoint{ { Port: "web", - RelabelConfigs: []*monitoringv1.RelabelConfig{ + RelabelConfigs: []monitoringv1.RelabelConfig{ { Action: "keep", Regex: ".*(", - Replacement: "invalid", + Replacement: ptr.To("invalid"), TargetLabel: "city", }, }, @@ -1103,10 +1104,11 @@ func getTestPrometheusCRWatcher(t *testing.T, svcMonitors []*monitoringv1.Servic t.Fatal(t, err) } - store := assets.NewStore(k8sClient.CoreV1(), k8sClient.CoreV1()) + store := assets.NewStoreBuilder(k8sClient.CoreV1(), k8sClient.CoreV1()) promRegisterer := prometheusgoclient.NewRegistry() operatorMetrics := operator.NewMetrics(promRegisterer) - eventRecorder := operator.NewEventRecorder(k8sClient, "target-allocator") + recorderFactory := operator.NewEventRecorderFactory(false) + eventRecorder := recorderFactory(k8sClient, "target-allocator") source := fcache.NewFakeControllerSource() source.Add(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "test"}}) diff --git a/config/crd/bases/opentelemetry.io_instrumentations.yaml b/config/crd/bases/opentelemetry.io_instrumentations.yaml index b88d086f5b..3a25df25ae 100644 --- a/config/crd/bases/opentelemetry.io_instrumentations.yaml +++ b/config/crd/bases/opentelemetry.io_instrumentations.yaml @@ -58,6 +58,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -96,6 +97,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -124,6 +126,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -162,6 +165,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -232,6 +236,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -270,6 +275,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -336,6 +342,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -374,6 +381,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -407,6 +415,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -445,6 +454,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -513,6 +523,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -551,6 +562,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -631,6 +643,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -669,6 +682,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -697,6 +711,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -735,6 +750,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -803,6 +819,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -841,6 +858,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -922,6 +940,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -960,6 +979,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean diff --git a/config/crd/bases/opentelemetry.io_opampbridges.yaml b/config/crd/bases/opentelemetry.io_opampbridges.yaml index 33cd7ed639..181f2f2d1c 100644 --- a/config/crd/bases/opentelemetry.io_opampbridges.yaml +++ b/config/crd/bases/opentelemetry.io_opampbridges.yaml @@ -57,11 +57,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -73,11 +75,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -88,6 +92,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -104,11 +109,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -120,14 +127,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -153,11 +163,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -187,11 +199,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -202,6 +216,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -215,6 +230,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -231,11 +247,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -265,11 +283,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -280,12 +300,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -307,11 +329,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -341,11 +365,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -356,6 +382,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -369,6 +396,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -385,11 +413,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -419,11 +449,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -434,12 +466,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object capabilities: @@ -468,6 +502,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -506,6 +541,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -524,6 +560,7 @@ spec: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -534,6 +571,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -559,8 +597,40 @@ spec: additionalProperties: type: string type: object + podDnsConfig: + properties: + nameservers: + items: + type: string + type: array + x-kubernetes-list-type: atomic + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + x-kubernetes-list-type: atomic + searches: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -599,6 +669,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -611,6 +682,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -690,16 +762,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -781,11 +864,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -833,6 +918,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -896,6 +983,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic path: type: string readOnly: @@ -905,6 +993,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -922,6 +1011,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -950,7 +1040,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -965,6 +1057,7 @@ spec: nodePublishSecretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1020,6 +1113,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object emptyDir: properties: @@ -1061,6 +1155,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -1120,11 +1215,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1157,10 +1254,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic wwids: items: type: string type: array + x-kubernetes-list-type: atomic type: object flexVolume: properties: @@ -1177,6 +1276,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1257,11 +1357,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic readOnly: type: boolean secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1338,11 +1440,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1377,7 +1481,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -1423,6 +1529,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object secret: properties: @@ -1441,7 +1548,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -1461,6 +1570,7 @@ spec: type: object type: object type: array + x-kubernetes-list-type: atomic type: object quobyte: properties: @@ -1492,6 +1602,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic pool: type: string readOnly: @@ -1499,6 +1610,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1521,6 +1633,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1559,6 +1672,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic optional: type: boolean secretName: @@ -1573,6 +1687,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic diff --git a/config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml b/config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml index e1121c60af..44110368ad 100644 --- a/config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml +++ b/config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml @@ -61,10 +61,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -79,6 +81,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -117,6 +120,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -129,12 +133,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -145,6 +153,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -152,6 +161,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -166,6 +176,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -183,6 +194,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -224,6 +236,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -241,6 +254,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -283,6 +297,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -313,6 +328,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -387,6 +403,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -417,6 +434,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -507,16 +525,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -572,6 +601,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -602,6 +632,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -664,6 +695,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -675,6 +709,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -684,6 +720,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -710,11 +749,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -726,11 +767,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -741,6 +784,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -757,11 +801,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -773,14 +819,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -806,11 +855,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -840,11 +891,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -855,6 +908,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -868,6 +922,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -884,11 +939,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -918,11 +975,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -933,12 +992,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -960,11 +1021,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -994,11 +1057,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1009,6 +1074,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -1022,6 +1088,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -1038,11 +1105,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1072,11 +1141,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1087,12 +1158,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object args: @@ -1181,11 +1254,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1283,6 +1358,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1321,6 +1397,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1339,6 +1416,7 @@ spec: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -1349,6 +1427,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -1412,10 +1491,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -1430,6 +1511,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1468,6 +1550,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1480,12 +1563,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -1496,6 +1583,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -1503,6 +1591,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -1517,6 +1606,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1534,6 +1624,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1575,6 +1666,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1592,6 +1684,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1634,6 +1727,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -1664,6 +1758,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1738,6 +1833,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -1768,6 +1864,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1858,16 +1955,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -1923,6 +2031,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -1953,6 +2062,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -2015,6 +2125,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -2026,6 +2139,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -2035,6 +2150,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -2051,6 +2169,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -2068,6 +2187,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -2109,6 +2229,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -2126,6 +2247,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -2233,6 +2355,15 @@ spec: type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -2271,6 +2402,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -2283,6 +2415,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -2364,16 +2497,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -2447,11 +2591,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -2463,11 +2609,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -2478,6 +2626,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -2494,11 +2643,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -2510,14 +2661,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -2543,11 +2697,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2577,11 +2733,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2592,6 +2750,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -2605,6 +2764,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -2621,11 +2781,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2655,11 +2817,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2670,12 +2834,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -2697,11 +2863,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2731,11 +2899,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2746,6 +2916,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -2759,6 +2930,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -2775,11 +2947,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2809,11 +2983,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2824,12 +3000,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object allocationStrategy: @@ -2855,6 +3033,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -2893,6 +3072,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -2939,6 +3119,15 @@ spec: type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -2977,6 +3166,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -2989,6 +3179,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -3056,16 +3247,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -3147,11 +3349,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -3219,11 +3423,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -3310,6 +3516,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -3369,11 +3576,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -3395,6 +3604,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic allocatedResourceStatuses: additionalProperties: type: string @@ -3438,6 +3648,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map currentVolumeAttributesClassName: type: string modifyVolumeStatus: @@ -3466,6 +3679,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -3529,6 +3744,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic path: type: string readOnly: @@ -3538,6 +3754,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3555,6 +3772,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3583,7 +3801,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -3598,6 +3818,7 @@ spec: nodePublishSecretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3653,6 +3874,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object emptyDir: properties: @@ -3694,6 +3916,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -3753,11 +3976,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -3790,10 +4015,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic wwids: items: type: string type: array + x-kubernetes-list-type: atomic type: object flexVolume: properties: @@ -3810,6 +4037,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3890,11 +4118,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic readOnly: type: boolean secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3971,11 +4201,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -4010,7 +4242,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -4056,6 +4290,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object secret: properties: @@ -4074,7 +4309,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -4094,6 +4331,7 @@ spec: type: object type: object type: array + x-kubernetes-list-type: atomic type: object quobyte: properties: @@ -4125,6 +4363,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic pool: type: string readOnly: @@ -4132,6 +4371,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -4154,6 +4394,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -4192,6 +4433,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic optional: type: boolean secretName: @@ -4206,6 +4448,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -4308,10 +4551,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -4326,6 +4571,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -4364,6 +4610,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -4376,12 +4623,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -4392,6 +4643,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -4399,6 +4651,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -4413,6 +4666,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -4430,6 +4684,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4471,6 +4726,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -4488,6 +4744,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4530,6 +4787,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -4560,6 +4818,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4634,6 +4893,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -4664,6 +4924,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4754,16 +5015,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -4819,6 +5091,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -4849,6 +5122,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -4911,6 +5185,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -4922,6 +5199,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4931,6 +5210,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -4957,11 +5239,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -4973,11 +5257,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -4988,6 +5274,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -5004,11 +5291,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -5020,14 +5309,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -5053,11 +5345,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5087,11 +5381,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5102,6 +5398,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -5115,6 +5412,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -5131,11 +5429,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5165,11 +5465,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5180,12 +5482,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -5207,11 +5511,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5241,11 +5547,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5256,6 +5564,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -5269,6 +5578,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -5285,11 +5595,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5319,11 +5631,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5334,12 +5648,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object args: @@ -5428,11 +5744,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5524,7 +5842,6 @@ spec: type: array required: - exporters - - processors - receivers type: object type: object @@ -5607,6 +5924,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5645,6 +5963,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5663,6 +5982,7 @@ spec: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -5673,6 +5993,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -5736,10 +6057,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -5754,6 +6077,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5792,6 +6116,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5804,12 +6129,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -5820,6 +6149,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -5827,6 +6157,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -5841,6 +6172,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -5858,6 +6190,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -5899,6 +6232,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -5916,6 +6250,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -5958,6 +6293,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -5988,6 +6324,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6062,6 +6399,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -6092,6 +6430,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6182,16 +6521,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -6247,6 +6597,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -6277,6 +6628,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6339,6 +6691,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -6350,6 +6705,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -6359,6 +6716,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -6375,6 +6735,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -6392,6 +6753,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6433,6 +6795,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -6450,6 +6813,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -6549,8 +6913,40 @@ spec: - type: string x-kubernetes-int-or-string: true type: object + podDnsConfig: + properties: + nameservers: + items: + type: string + type: array + x-kubernetes-list-type: atomic + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + x-kubernetes-list-type: atomic + searches: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -6589,6 +6985,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -6601,6 +6998,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -6703,16 +7101,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -6786,11 +7195,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -6802,11 +7213,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -6817,6 +7230,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -6833,11 +7247,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -6849,14 +7265,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -6882,11 +7301,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -6916,11 +7337,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -6931,6 +7354,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -6944,6 +7368,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -6960,11 +7385,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -6994,11 +7421,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7009,12 +7438,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -7036,11 +7467,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7070,11 +7503,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7085,6 +7520,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -7098,6 +7534,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -7114,11 +7551,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7148,11 +7587,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7163,12 +7604,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object allocationStrategy: @@ -7194,6 +7637,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -7232,6 +7676,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -7281,6 +7726,15 @@ spec: type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -7319,6 +7773,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -7331,6 +7786,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -7360,11 +7816,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7388,11 +7846,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7438,16 +7898,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -7529,11 +8000,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7601,11 +8074,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7674,6 +8149,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -7733,11 +8209,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -7759,6 +8237,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic allocatedResourceStatuses: additionalProperties: type: string @@ -7802,6 +8281,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map currentVolumeAttributesClassName: type: string modifyVolumeStatus: @@ -7830,6 +8312,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -7893,6 +8377,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic path: type: string readOnly: @@ -7902,6 +8387,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -7919,6 +8405,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -7947,7 +8434,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -7962,6 +8451,7 @@ spec: nodePublishSecretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8017,6 +8507,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object emptyDir: properties: @@ -8058,6 +8549,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -8117,11 +8609,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -8154,10 +8648,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic wwids: items: type: string type: array + x-kubernetes-list-type: atomic type: object flexVolume: properties: @@ -8174,6 +8670,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8254,11 +8751,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic readOnly: type: boolean secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8335,11 +8834,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -8374,7 +8875,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -8420,6 +8923,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object secret: properties: @@ -8438,7 +8942,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -8458,6 +8964,7 @@ spec: type: object type: object type: array + x-kubernetes-list-type: atomic type: object quobyte: properties: @@ -8489,6 +8996,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic pool: type: string readOnly: @@ -8496,6 +9004,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8518,6 +9027,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -8556,6 +9066,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic optional: type: boolean secretName: @@ -8570,6 +9081,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic diff --git a/config/crd/bases/opentelemetry.io_targetallocators.yaml b/config/crd/bases/opentelemetry.io_targetallocators.yaml index f4e8d8f61a..27e6c74678 100644 --- a/config/crd/bases/opentelemetry.io_targetallocators.yaml +++ b/config/crd/bases/opentelemetry.io_targetallocators.yaml @@ -33,10 +33,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -51,6 +53,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -89,6 +92,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -101,12 +105,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -117,6 +125,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -124,6 +133,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -138,6 +148,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -155,6 +166,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -196,6 +208,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -213,6 +226,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -255,6 +269,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -285,6 +300,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -359,6 +375,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -389,6 +406,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -479,16 +497,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -544,6 +573,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -574,6 +604,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -636,6 +667,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -647,6 +681,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -656,6 +692,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -682,11 +721,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -698,11 +739,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic weight: @@ -713,6 +756,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -729,11 +773,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchFields: items: properties: @@ -745,14 +791,17 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic type: object x-kubernetes-map-type: atomic type: array + x-kubernetes-list-type: atomic required: - nodeSelectorTerms type: object @@ -778,11 +827,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -812,11 +863,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -827,6 +880,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -840,6 +894,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -856,11 +911,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -890,11 +947,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -905,12 +964,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object podAntiAffinity: properties: @@ -932,11 +993,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -966,11 +1029,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -981,6 +1046,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: @@ -994,6 +1060,7 @@ spec: - weight type: object type: array + x-kubernetes-list-type: atomic requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -1010,11 +1077,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1044,11 +1113,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1059,12 +1130,14 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic topologyKey: type: string required: - topologyKey type: object type: array + x-kubernetes-list-type: atomic type: object type: object allocationStrategy: @@ -1078,30 +1151,6 @@ spec: additionalProperties: type: string type: object - collectorSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic env: items: properties: @@ -1116,6 +1165,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1154,6 +1204,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1172,6 +1223,7 @@ spec: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -1182,6 +1234,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -1208,10 +1261,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic command: items: type: string type: array + x-kubernetes-list-type: atomic env: items: properties: @@ -1226,6 +1281,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1264,6 +1320,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1276,12 +1333,16 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map envFrom: items: properties: configMapRef: properties: name: + default: "" type: string optional: type: boolean @@ -1292,6 +1353,7 @@ spec: secretRef: properties: name: + default: "" type: string optional: type: boolean @@ -1299,6 +1361,7 @@ spec: x-kubernetes-map-type: atomic type: object type: array + x-kubernetes-list-type: atomic image: type: string imagePullPolicy: @@ -1313,6 +1376,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1330,6 +1394,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1371,6 +1436,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1388,6 +1454,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1430,6 +1497,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -1460,6 +1528,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1534,6 +1603,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -1564,6 +1634,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1654,16 +1725,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -1719,6 +1801,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object failureThreshold: format: int32 @@ -1749,6 +1832,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1811,6 +1895,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - devicePath + x-kubernetes-list-type: map volumeMounts: items: properties: @@ -1822,6 +1909,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1831,6 +1920,9 @@ spec: - name type: object type: array + x-kubernetes-list-map-keys: + - mountPath + x-kubernetes-list-type: map workingDir: type: string required: @@ -1847,6 +1939,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1864,6 +1957,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1905,6 +1999,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1922,6 +2017,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1993,8 +2089,40 @@ spec: - type: string x-kubernetes-int-or-string: true type: object + podDnsConfig: + properties: + nameservers: + items: + type: string + type: array + x-kubernetes-list-type: atomic + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + x-kubernetes-list-type: atomic + searches: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object fsGroup: format: int64 type: integer @@ -2033,6 +2161,7 @@ spec: format: int64 type: integer type: array + x-kubernetes-list-type: atomic sysctls: items: properties: @@ -2045,6 +2174,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic windowsOptions: properties: gmsaCredentialSpec: @@ -2105,11 +2235,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2133,11 +2265,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2189,16 +2323,27 @@ spec: properties: allowPrivilegeEscalation: type: boolean + appArmorProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object capabilities: properties: add: items: type: string type: array + x-kubernetes-list-type: atomic drop: items: type: string type: array + x-kubernetes-list-type: atomic type: object privileged: type: boolean @@ -2285,11 +2430,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2332,6 +2479,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -2395,6 +2544,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic path: type: string readOnly: @@ -2404,6 +2554,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -2421,6 +2572,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -2449,7 +2601,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -2464,6 +2618,7 @@ spec: nodePublishSecretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -2519,6 +2674,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object emptyDir: properties: @@ -2560,6 +2716,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -2619,11 +2776,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2656,10 +2815,12 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic wwids: items: type: string type: array + x-kubernetes-list-type: atomic type: object flexVolume: properties: @@ -2676,6 +2837,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -2756,11 +2918,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic readOnly: type: boolean secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -2837,11 +3001,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2876,7 +3042,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -2922,6 +3090,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic type: object secret: properties: @@ -2940,7 +3109,9 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic name: + default: "" type: string optional: type: boolean @@ -2960,6 +3131,7 @@ spec: type: object type: object type: array + x-kubernetes-list-type: atomic type: object quobyte: properties: @@ -2991,6 +3163,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic pool: type: string readOnly: @@ -2998,6 +3171,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3020,6 +3194,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -3058,6 +3233,7 @@ spec: - path type: object type: array + x-kubernetes-list-type: atomic optional: type: boolean secretName: @@ -3072,6 +3248,7 @@ spec: secretRef: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 5c5f0b84cb..ee4c8ade43 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -1,2 +1,15 @@ resources: - manager.yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +images: +- name: controller + newName: opentelemetry-operator/opentelemetry-operator + newTag: 0.102.0-72-g2ef561bc +patches: +- patch: '[{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--target-allocator-image=opentelemetry-operator/target-allocator:v0.102.0-72-g2ef561bc"}]' + target: + kind: Deployment +- patch: '[{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--operator-opamp-bridge-image=opentelemetry-operator/operator-opamp-bridge:v0.102.0-72-g2ef561bc"}]' + target: + kind: Deployment diff --git a/controllers/builder_test.go b/controllers/builder_test.go index 0396cc7567..3735b3c76c 100644 --- a/controllers/builder_test.go +++ b/controllers/builder_test.go @@ -134,7 +134,7 @@ service: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401", + "opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -156,7 +156,7 @@ service: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401", + "opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -221,6 +221,7 @@ service: }, ShareProcessNamespace: ptr.To(false), DNSPolicy: "ClusterFirst", + DNSConfig: &corev1.PodDNSConfig{}, ServiceAccountName: "test-collector", }, }, @@ -241,7 +242,7 @@ service: Annotations: nil, }, Data: map[string]string{ - "collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - examplereceiver\n", + "collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - examplereceiver\n", }, }, &corev1.ServiceAccount{ @@ -384,7 +385,7 @@ service: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401", + "opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -406,7 +407,7 @@ service: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401", + "opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -471,6 +472,7 @@ service: }, ShareProcessNamespace: ptr.To(false), DNSPolicy: "ClusterFirst", + DNSConfig: &corev1.PodDNSConfig{}, ServiceAccountName: "test-collector", }, }, @@ -491,7 +493,7 @@ service: Annotations: nil, }, Data: map[string]string{ - "collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - examplereceiver\n", + "collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - examplereceiver\n", }, }, &corev1.ServiceAccount{ @@ -670,7 +672,7 @@ service: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401", + "opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -692,7 +694,7 @@ service: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "8f1dbf79c3a8d89f9799abcb169581e2de70318e00e10cac1cd71fe234185401", + "opentelemetry-operator-config/sha256": "6f6f11da374b2c1e42fc78fbe55e2d9bcc2f5998ab63a631b49c478e8c0f6af8", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -757,6 +759,7 @@ service: }, ShareProcessNamespace: ptr.To(false), DNSPolicy: "ClusterFirst", + DNSConfig: &corev1.PodDNSConfig{}, ServiceAccountName: "my-special-sa", }, }, @@ -777,7 +780,7 @@ service: Annotations: nil, }, Data: map[string]string{ - "collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - examplereceiver\n", + "collector.yaml": "receivers:\n examplereceiver:\n endpoint: 0.0.0.0:12345\nexporters:\n logging: null\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - examplereceiver\n", }, }, &corev1.Service{ @@ -1005,6 +1008,7 @@ func TestBuildAll_OpAMPBridge(t *testing.T) { }, }, DNSPolicy: "ClusterFirst", + DNSConfig: &corev1.PodDNSConfig{}, ServiceAccountName: "test-opamp-bridge", }, }, @@ -1198,7 +1202,7 @@ service: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "57434ab43283b8d3cd0b8584aad7f05226ec24225f28d93b3969d3d2ccf7d009", + "opentelemetry-operator-config/sha256": "39cae697770f9d7e183e8fa9ba56043315b62e19c7231537870acfaaabc30a43", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -1221,7 +1225,7 @@ service: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "57434ab43283b8d3cd0b8584aad7f05226ec24225f28d93b3969d3d2ccf7d009", + "opentelemetry-operator-config/sha256": "39cae697770f9d7e183e8fa9ba56043315b62e19c7231537870acfaaabc30a43", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -1285,6 +1289,7 @@ service: }, ShareProcessNamespace: ptr.To(false), DNSPolicy: "ClusterFirst", + DNSConfig: &corev1.PodDNSConfig{}, ServiceAccountName: "test-collector", }, }, @@ -1306,7 +1311,7 @@ service: Annotations: nil, }, Data: map[string]string{ - "collector.yaml": "exporters:\n logging: null\nreceivers:\n prometheus:\n config: {}\n target_allocator:\n collector_id: ${POD_NAME}\n endpoint: http://test-targetallocator:80\n interval: 30s\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - prometheus\n", + "collector.yaml": "exporters:\n logging: null\nreceivers:\n prometheus:\n config: {}\n target_allocator:\n collector_id: ${POD_NAME}\n endpoint: http://test-targetallocator:80\n interval: 30s\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - prometheus\n", }, }, &corev1.ServiceAccount{ @@ -1495,8 +1500,10 @@ prometheus_cr: }, }, }, - DNSPolicy: "", - ServiceAccountName: "test-targetallocator", + DNSPolicy: "ClusterFirst", + DNSConfig: &corev1.PodDNSConfig{}, + ShareProcessNamespace: ptr.To(false), + ServiceAccountName: "test-targetallocator", }, }, }, @@ -1591,7 +1598,7 @@ prometheus_cr: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "57434ab43283b8d3cd0b8584aad7f05226ec24225f28d93b3969d3d2ccf7d009", + "opentelemetry-operator-config/sha256": "39cae697770f9d7e183e8fa9ba56043315b62e19c7231537870acfaaabc30a43", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -1614,7 +1621,7 @@ prometheus_cr: "app.kubernetes.io/version": "latest", }, Annotations: map[string]string{ - "opentelemetry-operator-config/sha256": "57434ab43283b8d3cd0b8584aad7f05226ec24225f28d93b3969d3d2ccf7d009", + "opentelemetry-operator-config/sha256": "39cae697770f9d7e183e8fa9ba56043315b62e19c7231537870acfaaabc30a43", "prometheus.io/path": "/metrics", "prometheus.io/port": "8888", "prometheus.io/scrape": "true", @@ -1678,6 +1685,7 @@ prometheus_cr: }, ShareProcessNamespace: ptr.To(false), DNSPolicy: "ClusterFirst", + DNSConfig: &corev1.PodDNSConfig{}, ServiceAccountName: "test-collector", }, }, @@ -1699,7 +1707,7 @@ prometheus_cr: Annotations: nil, }, Data: map[string]string{ - "collector.yaml": "exporters:\n logging: null\nreceivers:\n prometheus:\n config: {}\n target_allocator:\n collector_id: ${POD_NAME}\n endpoint: http://test-targetallocator:80\n interval: 30s\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n processors: []\n receivers:\n - prometheus\n", + "collector.yaml": "exporters:\n logging: null\nreceivers:\n prometheus:\n config: {}\n target_allocator:\n collector_id: ${POD_NAME}\n endpoint: http://test-targetallocator:80\n interval: 30s\nservice:\n pipelines:\n metrics:\n exporters:\n - logging\n receivers:\n - prometheus\n", }, }, &corev1.ServiceAccount{ @@ -1888,8 +1896,10 @@ prometheus_cr: }, }, }, - DNSPolicy: "", - ServiceAccountName: "test-targetallocator", + DNSPolicy: "ClusterFirst", + DNSConfig: &corev1.PodDNSConfig{}, + ShareProcessNamespace: ptr.To(false), + ServiceAccountName: "test-targetallocator", }, }, }, @@ -1986,7 +1996,7 @@ prometheus_cr: } targetAllocator, err := collector.TargetAllocator(params) require.NoError(t, err) - params.TargetAllocator = *targetAllocator + params.TargetAllocator = targetAllocator if len(tt.featuregates) > 0 { fg := strings.Join(tt.featuregates, ",") flagset := featuregate.Flags(colfeaturegate.GlobalRegistry()) diff --git a/controllers/common.go b/controllers/common.go index 1be956b8b4..31a84bfd39 100644 --- a/controllers/common.go +++ b/controllers/common.go @@ -48,9 +48,8 @@ func isNamespaceScoped(obj client.Object) bool { // BuildCollector returns the generation and collected errors of all manifests for a given instance. func BuildCollector(params manifests.Params) ([]client.Object, error) { - builders := []manifests.Builder{ + builders := []manifests.Builder[manifests.Params]{ collector.Build, - targetallocator.Build, } var resources []client.Object for _, builder := range builders { @@ -60,12 +59,29 @@ func BuildCollector(params manifests.Params) ([]client.Object, error) { } resources = append(resources, objs...) } + // TODO: Remove this after TargetAllocator CRD is reconciled + if params.TargetAllocator != nil { + taParams := targetallocator.Params{ + Client: params.Client, + Scheme: params.Scheme, + Recorder: params.Recorder, + Log: params.Log, + Config: params.Config, + Collector: params.OtelCol, + TargetAllocator: *params.TargetAllocator, + } + taResources, err := BuildTargetAllocator(taParams) + if err != nil { + return nil, err + } + resources = append(resources, taResources...) + } return resources, nil } // BuildOpAMPBridge returns the generation and collected errors of all manifests for a given instance. func BuildOpAMPBridge(params manifests.Params) ([]client.Object, error) { - builders := []manifests.Builder{ + builders := []manifests.Builder[manifests.Params]{ opampbridge.Build, } var resources []client.Object @@ -79,6 +95,22 @@ func BuildOpAMPBridge(params manifests.Params) ([]client.Object, error) { return resources, nil } +// BuildTargetAllocator returns the generation and collected errors of all manifests for a given instance. +func BuildTargetAllocator(params targetallocator.Params) ([]client.Object, error) { + builders := []manifests.Builder[targetallocator.Params]{ + targetallocator.Build, + } + var resources []client.Object + for _, builder := range builders { + objs, err := builder(params) + if err != nil { + return nil, err + } + resources = append(resources, objs...) + } + return resources, nil +} + // getList queries the Kubernetes API to list the requested resource, setting the list l of type T. func getList[T client.Object](ctx context.Context, cl client.Client, l T, options ...client.ListOption) (map[types.UID]client.Object, error) { ownedObjects := map[types.UID]client.Object{} diff --git a/controllers/opentelemetrycollector_controller.go b/controllers/opentelemetrycollector_controller.go index b005728199..ea6f8908d6 100644 --- a/controllers/opentelemetrycollector_controller.go +++ b/controllers/opentelemetrycollector_controller.go @@ -183,9 +183,7 @@ func (r *OpenTelemetryCollectorReconciler) getParams(instance v1beta1.OpenTeleme if err != nil { return p, err } - if targetAllocator != nil { - p.TargetAllocator = *targetAllocator - } + p.TargetAllocator = targetAllocator return p, nil } diff --git a/controllers/testdata/test.yaml b/controllers/testdata/test.yaml index abba475c08..d23cad6f44 100644 --- a/controllers/testdata/test.yaml +++ b/controllers/testdata/test.yaml @@ -18,5 +18,4 @@ service: pipelines: metrics: receivers: [prometheus, jaeger] - processors: [] exporters: [logging] \ No newline at end of file diff --git a/controllers/testdata/test_ta_update.yaml b/controllers/testdata/test_ta_update.yaml index b024fede61..57677928d5 100644 --- a/controllers/testdata/test_ta_update.yaml +++ b/controllers/testdata/test_ta_update.yaml @@ -18,5 +18,4 @@ service: pipelines: metrics: receivers: [prometheus, jaeger] - processors: [] exporters: [logging] \ No newline at end of file diff --git a/docs/api.md b/docs/api.md index d355d2e32d..0f84f1f75e 100644 --- a/docs/api.md +++ b/docs/api.md @@ -385,8 +385,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -505,8 +511,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -647,8 +659,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -767,8 +785,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -1042,8 +1066,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -1162,8 +1192,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -1386,8 +1422,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -1506,8 +1548,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -1729,8 +1777,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -1849,8 +1903,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -2132,8 +2192,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -2252,8 +2318,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -2578,8 +2650,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -2698,8 +2776,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -2840,8 +2924,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -2960,8 +3050,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -3235,8 +3331,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -3355,8 +3457,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -3630,8 +3738,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -3750,8 +3864,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -4078,6 +4198,13 @@ typically used to set access tokens or other authorization headers.
OpAMPBridge pods.
false + + podDnsConfig + object + + PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.
+ + false podSecurityContext object @@ -4716,12 +4843,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -4731,12 +4858,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -4980,12 +5107,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -4995,12 +5122,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -5324,12 +5451,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -5339,12 +5466,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -5588,12 +5715,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -5603,12 +5730,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -5933,8 +6060,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -6053,8 +6186,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -6130,8 +6269,14 @@ The ConfigMap to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -6166,8 +6311,14 @@ The Secret to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -6181,6 +6332,88 @@ TODO: Add other useful fields. apiVersion, kind, uid?
+### OpAMPBridge.spec.podDnsConfig +[↩ Parent](#opampbridgespec) + + + +PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
nameservers[]string + A list of DNS name server IP addresses. +This will be appended to the base nameservers generated from DNSPolicy. +Duplicated nameservers will be removed.
+
false
options[]object + A list of DNS resolver options. +This will be merged with the base options generated from DNSPolicy. +Duplicated entries will be removed. Resolution options given in Options +will override those that appear in the base DNSPolicy.
+
false
searches[]string + A list of DNS search domains for host-name lookup. +This will be appended to the base search paths generated from DNSPolicy. +Duplicated search paths will be removed.
+
false
+ + +### OpAMPBridge.spec.podDnsConfig.options[index] +[↩ Parent](#opampbridgespecpoddnsconfig) + + + +PodDNSConfigOption defines DNS resolver options of a pod. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring + Required.
+
false
valuestring +
+
false
+ + ### OpAMPBridge.spec.podSecurityContext [↩ Parent](#opampbridgespec) @@ -6198,6 +6431,14 @@ PodSecurityContext will be set as the pod security context. + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows.
+ + false + fsGroup integer @@ -6326,6 +6567,48 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpAMPBridge.spec.podSecurityContext.appArmorProfile +[↩ Parent](#opampbridgespecpodsecuritycontext) + + + +appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpAMPBridge.spec.podSecurityContext.seLinuxOptions [↩ Parent](#opampbridgespecpodsecuritycontext) @@ -6729,6 +7012,15 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN +Note that this field cannot be set when spec.os.name is windows.
+ + false + + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.
false @@ -6844,6 +7136,49 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpAMPBridge.spec.securityContext.appArmorProfile +[↩ Parent](#opampbridgespecsecuritycontext) + + + +appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpAMPBridge.spec.securityContext.capabilities [↩ Parent](#opampbridgespecsecuritycontext) @@ -7394,7 +7729,9 @@ not contain ':'.
mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. -This field is beta in 1.10.
+This field is beta in 1.10. +When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified +(which defaults to None).
false @@ -7405,6 +7742,32 @@ This field is beta in 1.10.
Defaults to false.
false + + recursiveReadOnly + string + + RecursiveReadOnly specifies whether read-only mounts should be handled +recursively. + + +If ReadOnly is false, this field has no meaning and must be unspecified. + + +If ReadOnly is true, and this field is set to Disabled, the mount is not made +recursively read-only. If this field is set to IfPossible, the mount is made +recursively read-only, if it is supported by the container runtime. If this +field is set to Enabled, the mount is made recursively read-only if it is +supported by the container runtime, otherwise the pod will not be started and +an error will be generated to indicate the reason. + + +If this field is set to IfPossible or Enabled, MountPropagation must be set to +None (or be unspecified, which defaults to None). + + +If this field is not specified, it is treated as an equivalent of Disabled.
+ + false subPath string @@ -7969,8 +8332,14 @@ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -8055,8 +8424,14 @@ to OpenStack. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -8112,8 +8487,14 @@ relative and may not contain the '..' path or start with '..'.
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -8267,8 +8648,14 @@ secret object contains more than one secret, all secret references are passed. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -8345,7 +8732,7 @@ DownwardAPIVolumeFile represents information to create the file containing the p fieldRef object - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
+ Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
false @@ -8379,7 +8766,7 @@ mode, like fsGroup, and the result can be other mode bits set.
-Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. @@ -8735,7 +9122,7 @@ will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. -More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass +More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
@@ -9206,8 +9593,14 @@ scripts. @@ -9582,8 +9975,14 @@ secretRef is the CHAP Secret for iSCSI target and initiator authentication @@ -10064,8 +10463,14 @@ relative and may not contain the '..' path or start with '..'.
@@ -10184,7 +10589,7 @@ DownwardAPIVolumeFile represents information to create the file containing the p @@ -10218,7 +10623,7 @@ mode, like fsGroup, and the result can be other mode bits set.
-Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
falsestring Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
fieldRef object - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
+ Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
false
@@ -10323,8 +10728,14 @@ relative and may not contain the '..' path or start with '..'.
@@ -10627,8 +11038,14 @@ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it @@ -10754,8 +11171,14 @@ sensitive information. If this is not provided, Login operation will fail. @@ -10964,8 +11387,14 @@ credentials. If not specified, default values will be attempted. @@ -11890,8 +12319,14 @@ Selects a key of a ConfigMap. @@ -12010,8 +12445,14 @@ Selects a key of a secret in the pod's namespace @@ -12087,8 +12528,14 @@ The ConfigMap to select from @@ -12123,8 +12570,14 @@ The Secret to select from @@ -13537,6 +13990,15 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN +Note that this field cannot be set when spec.os.name is windows.
+ + + + + + @@ -13652,6 +14114,49 @@ Note that this field cannot be set when spec.os.name is linux.
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
false
appArmorProfileobject + appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.
false
+### OpenTelemetryCollector.spec.additionalContainers[index].securityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspecadditionalcontainersindexsecuritycontext) + + + +appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.additionalContainers[index].securityContext.capabilities [↩ Parent](#opentelemetrycollectorspecadditionalcontainersindexsecuritycontext) @@ -14241,7 +14746,9 @@ not contain ':'.
mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. -This field is beta in 1.10.
+This field is beta in 1.10. +When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified +(which defaults to None).
false @@ -14252,6 +14759,32 @@ This field is beta in 1.10.
Defaults to false.
false + + recursiveReadOnly + string + + RecursiveReadOnly specifies whether read-only mounts should be handled +recursively. + + +If ReadOnly is false, this field has no meaning and must be unspecified. + + +If ReadOnly is true, and this field is set to Disabled, the mount is not made +recursively read-only. If this field is set to IfPossible, the mount is made +recursively read-only, if it is supported by the container runtime. If this +field is set to Enabled, the mount is made recursively read-only if it is +supported by the container runtime, otherwise the pod will not be started and +an error will be generated to indicate the reason. + + +If this field is set to IfPossible or Enabled, MountPropagation must be set to +None (or be unspecified, which defaults to None). + + +If this field is not specified, it is treated as an equivalent of Disabled.
+ + false subPath string @@ -14813,12 +15346,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -14828,12 +15361,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -15077,12 +15610,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -15092,12 +15625,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -15421,12 +15954,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -15436,12 +15969,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -15685,12 +16218,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -15700,12 +16233,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -16729,8 +17262,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -16849,8 +17388,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -16926,8 +17471,14 @@ The ConfigMap to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -16962,8 +17513,14 @@ The Secret to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -17537,8 +18094,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -17657,8 +18220,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -17734,8 +18303,14 @@ The ConfigMap to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -17770,8 +18345,14 @@ The Secret to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -19184,6 +19765,15 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN +Note that this field cannot be set when spec.os.name is windows.
+ + false + + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.
false @@ -19299,6 +19889,49 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.initContainers[index].securityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspecinitcontainersindexsecuritycontext) + + + +appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.initContainers[index].securityContext.capabilities [↩ Parent](#opentelemetrycollectorspecinitcontainersindexsecuritycontext) @@ -19888,7 +20521,9 @@ not contain ':'.
mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. -This field is beta in 1.10.
+This field is beta in 1.10. +When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified +(which defaults to None).
false @@ -19899,6 +20534,32 @@ This field is beta in 1.10.
Defaults to false.
false + + recursiveReadOnly + string + + RecursiveReadOnly specifies whether read-only mounts should be handled +recursively. + + +If ReadOnly is false, this field has no meaning and must be unspecified. + + +If ReadOnly is true, and this field is set to Disabled, the mount is not made +recursively read-only. If this field is set to IfPossible, the mount is made +recursively read-only, if it is supported by the container runtime. If this +field is set to Enabled, the mount is made recursively read-only if it is +supported by the container runtime, otherwise the pod will not be started and +an error will be generated to indicate the reason. + + +If this field is set to IfPossible or Enabled, MountPropagation must be set to +None (or be unspecified, which defaults to None). + + +If this field is not specified, it is treated as an equivalent of Disabled.
+ + false subPath string @@ -20678,6 +21339,14 @@ In sidecar mode, the opentelemetry-operator will ignore this setting. + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows.
+ + false + fsGroup integer @@ -20806,6 +21475,48 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.podSecurityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspecpodsecuritycontext) + + + +appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.podSecurityContext.seLinuxOptions [↩ Parent](#opentelemetrycollectorspecpodsecuritycontext) @@ -21228,6 +21939,15 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN +Note that this field cannot be set when spec.os.name is windows.
+ + false + + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.
false @@ -21343,6 +22063,49 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.securityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspecsecuritycontext) + + + +appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.securityContext.capabilities [↩ Parent](#opentelemetrycollectorspecsecuritycontext) @@ -22238,12 +23001,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -22253,12 +23016,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -22502,12 +23265,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -22517,12 +23280,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -22846,12 +23609,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -22861,12 +23624,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -23110,12 +23873,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -23125,12 +23888,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -23455,8 +24218,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -23575,8 +24344,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -23712,6 +24487,14 @@ targetallocator. + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows.
+ + false + fsGroup integer @@ -23840,6 +24623,48 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.targetAllocator.podSecurityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspectargetallocatorpodsecuritycontext) + + + +appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.targetAllocator.podSecurityContext.seLinuxOptions [↩ Parent](#opentelemetrycollectorspectargetallocatorpodsecuritycontext) @@ -24200,6 +25025,15 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN +Note that this field cannot be set when spec.os.name is windows.
+ + false + + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.
false @@ -24315,6 +25149,49 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.targetAllocator.securityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspectargetallocatorsecuritycontext) + + + +appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.targetAllocator.securityContext.capabilities [↩ Parent](#opentelemetrycollectorspectargetallocatorsecuritycontext) @@ -25473,7 +26350,7 @@ will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. -More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass +More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
false @@ -25829,7 +26706,7 @@ should ignore the update for the purpose it was designed.
[]object conditions is the current Condition of persistent volume claim. If underlying persistent volume is being -resized then the Condition will be set to 'ResizeStarted'.
+resized then the Condition will be set to 'Resizing'.
false @@ -25921,7 +26798,7 @@ PersistentVolumeClaimCondition contains details about state of pvc string reason is a unique, this should be a short, machine understandable string that gives the reason -for condition's last transition. If it reports "ResizeStarted" that means the underlying +for condition's last transition. If it reports "Resizing" that means the underlying persistent volume is being resized.
false @@ -26012,7 +26889,9 @@ not contain ':'.
mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. -This field is beta in 1.10.
+This field is beta in 1.10. +When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified +(which defaults to None).
false @@ -26023,6 +26902,32 @@ This field is beta in 1.10.
Defaults to false.
false + + recursiveReadOnly + string + + RecursiveReadOnly specifies whether read-only mounts should be handled +recursively. + + +If ReadOnly is false, this field has no meaning and must be unspecified. + + +If ReadOnly is true, and this field is set to Disabled, the mount is not made +recursively read-only. If this field is set to IfPossible, the mount is made +recursively read-only, if it is supported by the container runtime. If this +field is set to Enabled, the mount is made recursively read-only if it is +supported by the container runtime, otherwise the pod will not be started and +an error will be generated to indicate the reason. + + +If this field is set to IfPossible or Enabled, MountPropagation must be set to +None (or be unspecified, which defaults to None). + + +If this field is not specified, it is treated as an equivalent of Disabled.
+ + false subPath string @@ -26587,8 +27492,14 @@ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -26673,8 +27584,14 @@ to OpenStack. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -26730,8 +27647,14 @@ relative and may not contain the '..' path or start with '..'.
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -26885,8 +27808,14 @@ secret object contains more than one secret, all secret references are passed. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -26963,7 +27892,7 @@ DownwardAPIVolumeFile represents information to create the file containing the p fieldRef object - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
+ Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
false @@ -26997,7 +27926,7 @@ mode, like fsGroup, and the result can be other mode bits set.
-Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. @@ -27353,7 +28282,7 @@ will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. -More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass +More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
@@ -27824,8 +28753,14 @@ scripts. @@ -28200,8 +29135,14 @@ secretRef is the CHAP Secret for iSCSI target and initiator authentication @@ -28682,8 +29623,14 @@ relative and may not contain the '..' path or start with '..'.
@@ -28802,7 +29749,7 @@ DownwardAPIVolumeFile represents information to create the file containing the p @@ -28836,7 +29783,7 @@ mode, like fsGroup, and the result can be other mode bits set.
-Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
falsestring Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
fieldRef object - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
+ Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
false
@@ -28941,8 +29888,14 @@ relative and may not contain the '..' path or start with '..'.
@@ -29245,8 +30198,14 @@ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it @@ -29372,8 +30331,14 @@ sensitive information. If this is not provided, Login operation will fail. @@ -29582,8 +30547,14 @@ credentials. If not specified, default values will be attempted. @@ -30031,6 +31002,13 @@ the generated pods.
for the generated workload.
+ + + + + @@ -30315,19 +31293,19 @@ Pipeline is a struct of component type to a list of component IDs. - + - + - +
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
false
podDnsConfigobject + PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.
+
false
podSecurityContext object true
processorsreceivers []string
true
receiversprocessors []string
truefalse
@@ -30738,8 +31716,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -30858,8 +31842,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -30935,8 +31925,14 @@ The ConfigMap to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -30971,8 +31967,14 @@ The Secret to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -32385,6 +33387,15 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN +Note that this field cannot be set when spec.os.name is windows.
+ + false + + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.
false @@ -32500,6 +33511,49 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.additionalContainers[index].securityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspecadditionalcontainersindexsecuritycontext-1) + + + +appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.additionalContainers[index].securityContext.capabilities [↩ Parent](#opentelemetrycollectorspecadditionalcontainersindexsecuritycontext-1) @@ -33089,7 +34143,9 @@ not contain ':'.
mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. -This field is beta in 1.10.
+This field is beta in 1.10. +When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified +(which defaults to None).
false @@ -33100,6 +34156,32 @@ This field is beta in 1.10.
Defaults to false.
false + + recursiveReadOnly + string + + RecursiveReadOnly specifies whether read-only mounts should be handled +recursively. + + +If ReadOnly is false, this field has no meaning and must be unspecified. + + +If ReadOnly is true, and this field is set to Disabled, the mount is not made +recursively read-only. If this field is set to IfPossible, the mount is made +recursively read-only, if it is supported by the container runtime. If this +field is set to Enabled, the mount is made recursively read-only if it is +supported by the container runtime, otherwise the pod will not be started and +an error will be generated to indicate the reason. + + +If this field is set to IfPossible or Enabled, MountPropagation must be set to +None (or be unspecified, which defaults to None). + + +If this field is not specified, it is treated as an equivalent of Disabled.
+ + false subPath string @@ -33661,12 +34743,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -33676,12 +34758,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -33925,12 +35007,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -33940,12 +35022,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -34269,12 +35351,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -34284,12 +35366,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -34533,12 +35615,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -34548,12 +35630,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -35681,8 +36763,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -35801,8 +36889,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -35878,8 +36972,14 @@ The ConfigMap to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -35914,8 +37014,14 @@ The Secret to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -36489,8 +37595,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -36609,8 +37721,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -36686,8 +37804,14 @@ The ConfigMap to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -36722,8 +37846,14 @@ The Secret to select from string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -38136,6 +39266,15 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN +Note that this field cannot be set when spec.os.name is windows.
+ + false + + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.
false @@ -38251,6 +39390,49 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.initContainers[index].securityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspecinitcontainersindexsecuritycontext-1) + + + +appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.initContainers[index].securityContext.capabilities [↩ Parent](#opentelemetrycollectorspecinitcontainersindexsecuritycontext-1) @@ -38840,7 +40022,9 @@ not contain ':'.
mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. -This field is beta in 1.10.
+This field is beta in 1.10. +When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified +(which defaults to None).
false @@ -38851,6 +40035,32 @@ This field is beta in 1.10.
Defaults to false.
false + + recursiveReadOnly + string + + RecursiveReadOnly specifies whether read-only mounts should be handled +recursively. + + +If ReadOnly is false, this field has no meaning and must be unspecified. + + +If ReadOnly is true, and this field is set to Disabled, the mount is not made +recursively read-only. If this field is set to IfPossible, the mount is made +recursively read-only, if it is supported by the container runtime. If this +field is set to Enabled, the mount is made recursively read-only if it is +supported by the container runtime, otherwise the pod will not be started and +an error will be generated to indicate the reason. + + +If this field is set to IfPossible or Enabled, MountPropagation must be set to +None (or be unspecified, which defaults to None). + + +If this field is not specified, it is treated as an equivalent of Disabled.
+ + false subPath string @@ -39608,6 +40818,88 @@ evictions by specifying "100%".
+### OpenTelemetryCollector.spec.podDnsConfig +[↩ Parent](#opentelemetrycollectorspec-1) + + + +PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
nameservers[]string + A list of DNS name server IP addresses. +This will be appended to the base nameservers generated from DNSPolicy. +Duplicated nameservers will be removed.
+
false
options[]object + A list of DNS resolver options. +This will be merged with the base options generated from DNSPolicy. +Duplicated entries will be removed. Resolution options given in Options +will override those that appear in the base DNSPolicy.
+
false
searches[]string + A list of DNS search domains for host-name lookup. +This will be appended to the base search paths generated from DNSPolicy. +Duplicated search paths will be removed.
+
false
+ + +### OpenTelemetryCollector.spec.podDnsConfig.options[index] +[↩ Parent](#opentelemetrycollectorspecpoddnsconfig) + + + +PodDNSConfigOption defines DNS resolver options of a pod. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring + Required.
+
false
valuestring +
+
false
+ + ### OpenTelemetryCollector.spec.podSecurityContext [↩ Parent](#opentelemetrycollectorspec-1) @@ -39630,6 +40922,14 @@ In sidecar mode, the opentelemetry-operator will ignore this setting. + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows.
+ + false + fsGroup integer @@ -39758,6 +41058,48 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.podSecurityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspecpodsecuritycontext-1) + + + +appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.podSecurityContext.seLinuxOptions [↩ Parent](#opentelemetrycollectorspecpodsecuritycontext-1) @@ -40271,6 +41613,15 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN +Note that this field cannot be set when spec.os.name is windows.
+ + false + + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.
false @@ -40386,6 +41737,49 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.securityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspecsecuritycontext-1) + + + +appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.securityContext.capabilities [↩ Parent](#opentelemetrycollectorspecsecuritycontext-1) @@ -41282,12 +42676,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -41297,12 +42691,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -41546,12 +42940,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -41561,12 +42955,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -41890,12 +43284,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -41905,12 +43299,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -42154,12 +43548,12 @@ If it's null, this PodAffinityTerm matches with no Pods.
MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. -Also, MatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both matchLabelKeys and labelSelector. +Also, matchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -42169,12 +43563,12 @@ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the -incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` +incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. -The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. -Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. +The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. +Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
false @@ -42499,8 +43893,14 @@ Selects a key of a ConfigMap. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -42619,8 +44019,14 @@ Selects a key of a secret in the pod's namespace string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -42756,6 +44162,14 @@ targetallocator. + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows.
+ + false + fsGroup integer @@ -42884,6 +44298,48 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.targetAllocator.podSecurityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspectargetallocatorpodsecuritycontext-1) + + + +appArmorProfile is the AppArmor options to use by the containers in this pod. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.targetAllocator.podSecurityContext.seLinuxOptions [↩ Parent](#opentelemetrycollectorspectargetallocatorpodsecuritycontext-1) @@ -43415,6 +44871,15 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN +Note that this field cannot be set when spec.os.name is windows.
+ + false + + appArmorProfile + object + + appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.
false @@ -43530,6 +44995,49 @@ Note that this field cannot be set when spec.os.name is linux.
+### OpenTelemetryCollector.spec.targetAllocator.securityContext.appArmorProfile +[↩ Parent](#opentelemetrycollectorspectargetallocatorsecuritycontext-1) + + + +appArmorProfile is the AppArmor options to use by this container. If set, this profile +overrides the pod's appArmorProfile. +Note that this field cannot be set when spec.os.name is windows. + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
typestring + type indicates which kind of AppArmor profile will be applied. +Valid options are: + Localhost - a profile pre-loaded on the node. + RuntimeDefault - the container runtime's default profile. + Unconfined - no AppArmor enforcement.
+
true
localhostProfilestring + localhostProfile indicates a profile loaded on the node that should be used. +The profile must be preconfigured on the node to work. +Must match the loaded name of the profile. +Must be set if and only if type is "Localhost".
+
false
+ + ### OpenTelemetryCollector.spec.targetAllocator.securityContext.capabilities [↩ Parent](#opentelemetrycollectorspectargetallocatorsecuritycontext-1) @@ -44584,7 +46092,7 @@ will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. -More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass +More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
false @@ -44940,7 +46448,7 @@ should ignore the update for the purpose it was designed.
[]object conditions is the current Condition of persistent volume claim. If underlying persistent volume is being -resized then the Condition will be set to 'ResizeStarted'.
+resized then the Condition will be set to 'Resizing'.
false @@ -45032,7 +46540,7 @@ PersistentVolumeClaimCondition contains details about state of pvc string reason is a unique, this should be a short, machine understandable string that gives the reason -for condition's last transition. If it reports "ResizeStarted" that means the underlying +for condition's last transition. If it reports "Resizing" that means the underlying persistent volume is being resized.
false @@ -45123,7 +46631,9 @@ not contain ':'.
mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. -This field is beta in 1.10.
+This field is beta in 1.10. +When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified +(which defaults to None).
false @@ -45134,6 +46644,32 @@ This field is beta in 1.10.
Defaults to false.
false + + recursiveReadOnly + string + + RecursiveReadOnly specifies whether read-only mounts should be handled +recursively. + + +If ReadOnly is false, this field has no meaning and must be unspecified. + + +If ReadOnly is true, and this field is set to Disabled, the mount is not made +recursively read-only. If this field is set to IfPossible, the mount is made +recursively read-only, if it is supported by the container runtime. If this +field is set to Enabled, the mount is made recursively read-only if it is +supported by the container runtime, otherwise the pod will not be started and +an error will be generated to indicate the reason. + + +If this field is set to IfPossible or Enabled, MountPropagation must be set to +None (or be unspecified, which defaults to None). + + +If this field is not specified, it is treated as an equivalent of Disabled.
+ + false subPath string @@ -45698,8 +47234,14 @@ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -45784,8 +47326,14 @@ to OpenStack. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -45841,8 +47389,14 @@ relative and may not contain the '..' path or start with '..'.
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -45996,8 +47550,14 @@ secret object contains more than one secret, all secret references are passed. string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false @@ -46074,7 +47634,7 @@ DownwardAPIVolumeFile represents information to create the file containing the p fieldRef object - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
+ Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
false @@ -46108,7 +47668,7 @@ mode, like fsGroup, and the result can be other mode bits set.
-Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. @@ -46464,7 +48024,7 @@ will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. -More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass +More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
@@ -46935,8 +48495,14 @@ scripts. @@ -47311,8 +48877,14 @@ secretRef is the CHAP Secret for iSCSI target and initiator authentication @@ -47793,8 +49365,14 @@ relative and may not contain the '..' path or start with '..'.
@@ -47913,7 +49491,7 @@ DownwardAPIVolumeFile represents information to create the file containing the p @@ -47947,7 +49525,7 @@ mode, like fsGroup, and the result can be other mode bits set.
-Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
falsestring Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
fieldRef object - Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
+ Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.
false
@@ -48052,8 +49630,14 @@ relative and may not contain the '..' path or start with '..'.
@@ -48356,8 +49940,14 @@ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it @@ -48483,8 +50073,14 @@ sensitive information. If this is not provided, Login operation will fail. @@ -48693,8 +50289,14 @@ credentials. If not specified, default values will be attempted. diff --git a/go.mod b/go.mod index fad89a9a1a..d6cb1f2ecc 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/open-telemetry/opentelemetry-operator -go 1.21.0 +go 1.22.0 retract v1.51.0 @@ -19,17 +19,17 @@ require ( github.com/oklog/ulid/v2 v2.1.0 github.com/open-telemetry/opamp-go v0.14.0 github.com/openshift/api v0.0.0-20240124164020-e2ce40831f2e - github.com/operator-framework/operator-lib v0.13.0 - github.com/prometheus-operator/prometheus-operator v0.71.2 - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.72.0 - github.com/prometheus-operator/prometheus-operator/pkg/client v0.72.0 + github.com/operator-framework/operator-lib v0.14.0 + github.com/prometheus-operator/prometheus-operator v0.75.0 + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.75.0 + github.com/prometheus-operator/prometheus-operator/pkg/client v0.75.0 github.com/prometheus/client_golang v1.19.1 - github.com/prometheus/common v0.54.0 - github.com/prometheus/prometheus v0.52.1 + github.com/prometheus/common v0.55.0 + github.com/prometheus/prometheus v0.53.0 github.com/shirou/gopsutil v3.21.11+incompatible github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.9.0 - go.opentelemetry.io/collector/featuregate v1.9.0 + go.opentelemetry.io/collector/featuregate v1.10.0 go.opentelemetry.io/otel v1.27.0 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0 go.opentelemetry.io/otel/exporters/prometheus v0.49.0 @@ -40,30 +40,28 @@ require ( go.uber.org/zap v1.27.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 - k8s.io/api v0.29.3 - k8s.io/apiextensions-apiserver v0.29.3 - k8s.io/apimachinery v0.29.3 - k8s.io/client-go v0.29.3 - k8s.io/component-base v0.29.3 - k8s.io/klog/v2 v2.120.1 - k8s.io/kubectl v0.29.3 - k8s.io/utils v0.0.0-20240102154912-e7106e64919e - sigs.k8s.io/controller-runtime v0.17.3 + k8s.io/api v0.30.2 + k8s.io/apiextensions-apiserver v0.30.2 + k8s.io/apimachinery v0.30.2 + k8s.io/client-go v0.30.2 + k8s.io/component-base v0.30.2 + k8s.io/klog/v2 v2.130.1 + k8s.io/kubectl v0.30.2 + k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 + sigs.k8s.io/controller-runtime v0.18.4 sigs.k8s.io/yaml v1.4.0 ) -require ( - cloud.google.com/go/auth v0.2.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.0 // indirect - sigs.k8s.io/gateway-api v1.0.0 // indirect -) +require sigs.k8s.io/gateway-api v1.0.0 // indirect require ( + cloud.google.com/go/auth v0.5.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.6.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect @@ -71,8 +69,7 @@ require ( github.com/alecthomas/units v0.0.0-20231202071711-9a357b53e9c9 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go v1.51.25 // indirect - github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect + github.com/aws/aws-sdk-go v1.53.16 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/bytedance/sonic v1.11.6 // indirect @@ -84,20 +81,20 @@ require ( github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dennwc/varint v1.0.0 // indirect - github.com/digitalocean/godo v1.113.0 // indirect - github.com/distribution/reference v0.5.0 // indirect - github.com/docker/docker v26.0.2+incompatible // indirect + github.com/digitalocean/godo v1.117.0 // indirect + github.com/distribution/reference v0.6.0 // indirect + github.com/docker/docker v26.1.3+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/edsrzf/mmap-go v1.1.0 // indirect github.com/efficientgo/core v1.0.0-rc.2 // indirect - github.com/emicklei/go-restful/v3 v3.11.2 // indirect + github.com/emicklei/go-restful/v3 v3.12.1 // indirect github.com/envoyproxy/go-control-plane v0.12.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.0.4 // indirect github.com/evanphx/json-patch v5.9.0+incompatible // indirect - github.com/evanphx/json-patch/v5 v5.8.0 // indirect + github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect - github.com/fatih/color v1.15.0 // indirect + github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect @@ -106,27 +103,26 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/zapr v1.3.0 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/go-openapi/analysis v0.22.2 // indirect + github.com/go-openapi/analysis v0.23.0 // indirect github.com/go-openapi/errors v0.22.0 // indirect - github.com/go-openapi/jsonpointer v0.20.2 // indirect - github.com/go-openapi/jsonreference v0.20.4 // indirect - github.com/go-openapi/loads v0.21.5 // indirect - github.com/go-openapi/runtime v0.27.1 // indirect - github.com/go-openapi/spec v0.20.14 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/loads v0.22.0 // indirect + github.com/go-openapi/runtime v0.28.0 // indirect + github.com/go-openapi/spec v0.21.0 // indirect github.com/go-openapi/strfmt v0.23.0 // indirect - github.com/go-openapi/swag v0.22.9 // indirect - github.com/go-openapi/validate v0.23.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/go-openapi/validate v0.24.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.20.0 // indirect - github.com/go-resty/resty/v2 v2.12.0 // indirect + github.com/go-resty/resty/v2 v2.13.1 // indirect github.com/go-zookeeper/zk v1.0.3 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/golang/snappy v0.0.4 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-querystring v1.1.0 // indirect @@ -134,37 +130,36 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.3 // indirect - github.com/gophercloud/gophercloud v1.11.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.4 // indirect + github.com/gophercloud/gophercloud v1.12.0 // indirect github.com/gorilla/websocket v1.5.1 // indirect - github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd // indirect + github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect - github.com/hashicorp/consul/api v1.28.2 // indirect + github.com/hashicorp/consul/api v1.29.1 // indirect github.com/hashicorp/cronexpr v1.1.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-retryablehttp v0.7.5 // indirect + github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru v0.6.0 // indirect - github.com/hashicorp/nomad/api v0.0.0-20240418183417-ea5f2f6748c7 // indirect + github.com/hashicorp/nomad/api v0.0.0-20240604134157-e73d8bb1140d // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.7.2 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.9.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ionos-cloud/sdk-go/v6 v6.1.11 // indirect github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect - github.com/klauspost/compress v1.17.8 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/linode/linodego v1.32.0 // indirect + github.com/linode/linodego v1.35.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -180,17 +175,17 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.2 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/ovh/go-ovh v1.4.3 // indirect + github.com/ovh/go-ovh v1.5.1 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus-community/prom-label-proxy v0.8.0 // indirect + github.com/prometheus-community/prom-label-proxy v0.10.0 // indirect github.com/prometheus/alertmanager v0.27.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common/sigv4 v0.1.0 // indirect - github.com/prometheus/procfs v0.15.0 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.26 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.27 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/tklauser/go-sysconf v0.3.13 // indirect github.com/tklauser/numcpus v0.7.0 // indirect @@ -200,33 +195,31 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.51.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.26.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 // indirect go.opentelemetry.io/otel/trace v1.27.0 // indirect go.opentelemetry.io/proto/otlp v1.2.0 // indirect go.uber.org/atomic v1.11.0 // indirect - go.uber.org/goleak v1.3.0 // indirect golang.org/x/arch v0.8.0 // indirect golang.org/x/crypto v0.24.0 // indirect - golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect - golang.org/x/mod v0.17.0 // indirect + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect + golang.org/x/mod v0.18.0 // indirect golang.org/x/net v0.26.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.21.0 // indirect golang.org/x/term v0.21.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect + golang.org/x/tools v0.22.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/api v0.174.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240520151616-dc85e6b867a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291 // indirect + google.golang.org/api v0.183.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect google.golang.org/grpc v1.64.0 // indirect - google.golang.org/protobuf v1.34.1 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect + k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect ) diff --git a/go.sum b/go.sum index cd00796340..5d4575d82b 100644 --- a/go.sum +++ b/go.sum @@ -13,10 +13,10 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go/auth v0.2.0 h1:y6oTcpMSbOcXbwYgUUrvI+mrQ2xbrcdpPgtVbCGTLTk= -cloud.google.com/go/auth v0.2.0/go.mod h1:+yb+oy3/P0geX6DLKlqiGHARGR6EX2GRtYCzWOCQSbU= -cloud.google.com/go/auth/oauth2adapt v0.2.0 h1:FR8zevgQwu+8CqiOT5r6xCmJa3pJC/wdXEEPF1OkNhA= -cloud.google.com/go/auth/oauth2adapt v0.2.0/go.mod h1:AfqujpDAlTfLfeCIl/HJZZlIxD8+nJoZ5e0x1IxGq5k= +cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw= +cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= +cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -45,8 +45,8 @@ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6Z github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.6.0 h1:ui3YNbxfW7J3tTFIZMH6LIGRjCngp+J+nIFlnizfNTE= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.6.0/go.mod h1:gZmgV+qBqygoznvqo2J9oKZAFziqhLZ2xE/WVUmzkHA= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 h1:bXwSugBiSbgtz7rOtbfGf+woewp4f06orW9OP5BjHLA= @@ -83,8 +83,8 @@ github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgI github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.51.25 h1:DjTT8mtmsachhV6yrXR8+yhnG6120dazr720nopRsls= -github.com/aws/aws-sdk-go v1.51.25/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/aws/aws-sdk-go v1.53.16 h1:8oZjKQO/ml1WLUZw5hvF7pvYjPf8o9f57Wldoy/q9Qc= +github.com/aws/aws-sdk-go v1.53.16/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -130,14 +130,14 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= -github.com/digitalocean/godo v1.113.0 h1:CLtCxlP4wDAjKIQ+Hshht/UNbgAp8/J/XBH1ZtDCF9Y= -github.com/digitalocean/godo v1.113.0/go.mod h1:Z2mTP848Vi3IXXl5YbPekUgr4j4tOePomA+OE1Ag98w= -github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= -github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/digitalocean/godo v1.117.0 h1:WVlTe09melDYTd7VCVyvHcNWbgB+uI1O115+5LOtdSw= +github.com/digitalocean/godo v1.117.0/go.mod h1:Vk0vpCot2HOAJwc5WE8wljZGtJ3ZtWIc8MQ8rF38sdo= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/docker v26.0.2+incompatible h1:yGVmKUFGgcxA6PXWAokO0sQL22BrQ67cgVjko8tGdXE= -github.com/docker/docker v26.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v26.1.3+incompatible h1:lLCzRbrVZrljpVNobJu1J2FHk8V0s4BawoZippkc+xo= +github.com/docker/docker v26.1.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -146,8 +146,8 @@ github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/efficientgo/core v1.0.0-rc.2 h1:7j62qHLnrZqO3V3UA0AqOGd5d5aXV3AX6m/NZBHp78I= github.com/efficientgo/core v1.0.0-rc.2/go.mod h1:FfGdkzWarkuzOlY04VY+bGfb1lWrjaL6x/GLcQ4vJps= -github.com/emicklei/go-restful/v3 v3.11.2 h1:1onLa9DcsMYO9P+CXaL0dStDqQ2EHHXLiz+BtnqkLAU= -github.com/emicklei/go-restful/v3 v3.11.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= +github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -158,15 +158,15 @@ github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro= -github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= +github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb h1:IT4JYU7k4ikYg1SCxNI1/Tieq/NFvh6dzLdgi7eu0tM= github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= @@ -201,26 +201,26 @@ github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/analysis v0.22.2 h1:ZBmNoP2h5omLKr/srIC9bfqrUGzT6g6gNv03HE9Vpj0= -github.com/go-openapi/analysis v0.22.2/go.mod h1:pDF4UbZsQTo/oNuRfAWWd4dAh4yuYf//LYorPTjrpvo= +github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= +github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= -github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= -github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= -github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= -github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= -github.com/go-openapi/loads v0.21.5 h1:jDzF4dSoHw6ZFADCGltDb2lE4F6De7aWSpe+IcsRzT0= -github.com/go-openapi/loads v0.21.5/go.mod h1:PxTsnFBoBe+z89riT+wYt3prmSBP6GDAQh2l9H1Flz8= -github.com/go-openapi/runtime v0.27.1 h1:ae53yaOoh+fx/X5Eaq8cRmavHgDma65XPZuvBqvJYto= -github.com/go-openapi/runtime v0.27.1/go.mod h1:fijeJEiEclyS8BRurYE1DE5TLb9/KZl6eAdbzjsrlLU= -github.com/go-openapi/spec v0.20.14 h1:7CBlRnw+mtjFGlPDRZmAMnq35cRzI91xj03HVyUi/Do= -github.com/go-openapi/spec v0.20.14/go.mod h1:8EOhTpBoFiask8rrgwbLC3zmJfz4zsCUueRuPM6GNkw= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco= +github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= +github.com/go-openapi/runtime v0.28.0 h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ= +github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc= +github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= +github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= -github.com/go-openapi/swag v0.22.9 h1:XX2DssF+mQKM2DHsbgZK74y/zj4mo9I99+89xUmuZCE= -github.com/go-openapi/swag v0.22.9/go.mod h1:3/OXnFfnMAwBD099SwYRk7GD3xOrr1iL7d/XNLXVVwE= -github.com/go-openapi/validate v0.23.0 h1:2l7PJLzCis4YUGEoW6eoQw3WhyM65WSIcjX6SQnlfDw= -github.com/go-openapi/validate v0.23.0/go.mod h1:EeiAZ5bmpSIOJV1WLfyYF9qp/B1ZgSaEpHTJHtN5cbE= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= +github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= @@ -229,11 +229,12 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8= github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= -github.com/go-resty/resty/v2 v2.12.0 h1:rsVL8P90LFvkUYq/V5BTVe203WfRIU4gvcf+yfzJzGA= -github.com/go-resty/resty/v2 v2.12.0/go.mod h1:o0yGPrkS3lOe1+eFajk6kBW8ScXzwU3hD69/gt2yB/0= +github.com/go-resty/resty/v2 v2.13.1 h1:x+LHXBI2nMB1vqndymf26quycC4aggYJ7DECYbiz03g= +github.com/go-resty/resty/v2 v2.13.1/go.mod h1:GznXlLxkq6Nh4sU59rPmUw3VtgpO3aS96ORAI6Q7d+0= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-zookeeper/zk v1.0.3 h1:7M2kwOsc//9VeeFiPtf+uSJlVpU66x9Ba5+8XK7/TDg= github.com/go-zookeeper/zk v1.0.3/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= @@ -308,8 +309,8 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20240416155748-26353dc0451f h1:WpZiq8iqvGjJ3m3wzAVKL6+0vz7VkE79iSy9GII00II= -github.com/google/pprof v0.0.0-20240416155748-26353dc0451f/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20240528025155-186aa0362fba h1:ql1qNgCyOB7iAEk8JTNM+zJrgIbnyCKX/wdlyPufP5g= +github.com/google/pprof v0.0.0-20240528025155-186aa0362fba/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= @@ -320,20 +321,22 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= -github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= -github.com/gophercloud/gophercloud v1.11.0 h1:ls0O747DIq1D8SUHc7r2vI8BFbMLeLFuENaAIfEx7OM= -github.com/gophercloud/gophercloud v1.11.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= +github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= +github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= +github.com/gophercloud/gophercloud v1.12.0 h1:Jrz16vPAL93l80q16fp8NplrTCp93y7rZh2P3Q4Yq7g= +github.com/gophercloud/gophercloud v1.12.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= -github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd h1:PpuIBO5P3e9hpqBD0O/HjhShYuM6XE0i/lbE6J94kww= -github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= -github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= -github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= -github.com/hashicorp/consul/sdk v0.16.0 h1:SE9m0W6DEfgIVCJX7xU+iv/hUl4m/nxqMTnCdMxDpJ8= -github.com/hashicorp/consul/sdk v0.16.0/go.mod h1:7pxqqhqoaPqnBnzXD1StKed62LqJeClzVsUEy85Zr0A= +github.com/hashicorp/consul/api v1.29.1 h1:UEwOjYJrd3lG1x5w7HxDRMGiAUPrb3f103EoeKuuEcc= +github.com/hashicorp/consul/api v1.29.1/go.mod h1:lumfRkY/coLuqMICkI7Fh3ylMG31mQSRZyef2c5YvJI= +github.com/hashicorp/consul/proto-public v0.6.1 h1:+uzH3olCrksXYWAYHKqK782CtK9scfqH+Unlw3UHhCg= +github.com/hashicorp/consul/proto-public v0.6.1/go.mod h1:cXXbOg74KBNGajC+o8RlA502Esf0R9prcoJgiOX/2Tg= +github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= +github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -342,9 +345,8 @@ github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brv github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= -github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -356,8 +358,8 @@ github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M= -github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= @@ -378,12 +380,12 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/nomad/api v0.0.0-20240418183417-ea5f2f6748c7 h1:pjE59CS2C9Bg+Xby0ROrnZSSBWtKwx3Sf9gqsrvIFSA= -github.com/hashicorp/nomad/api v0.0.0-20240418183417-ea5f2f6748c7/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= +github.com/hashicorp/nomad/api v0.0.0-20240604134157-e73d8bb1140d h1:KHq+mAzWSkumj4PDoXc5VZbycPGcmYu8tohgVLQ6SIc= +github.com/hashicorp/nomad/api v0.0.0-20240604134157-e73d8bb1140d/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hetznercloud/hcloud-go/v2 v2.7.2 h1:UlE7n1GQZacCfyjv9tDVUN7HZfOXErPIfM/M039u9A0= -github.com/hetznercloud/hcloud-go/v2 v2.7.2/go.mod h1:49tIV+pXRJTUC7fbFZ03s45LKqSQdOPP5y91eOnJo/k= +github.com/hetznercloud/hcloud-go/v2 v2.9.0 h1:s0N6R7Zoi2DPfMtUF5o9VeUBzTtHVY6MIkHOQnfu/AY= +github.com/hetznercloud/hcloud-go/v2 v2.9.0/go.mod h1:qtW/TuU7Bs16ibXl/ktJarWqU2LwHr7eGlwoilHxtgg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= @@ -436,8 +438,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/linode/linodego v1.32.0 h1:OmZzB3iON6uu84VtLFf64uKmAQqJJarvmsVguroioPI= -github.com/linode/linodego v1.32.0/go.mod h1:y8GDP9uLVH4jTB9qyrgw79qfKdYJmNCGUOJmfuiOcmI= +github.com/linode/linodego v1.35.0 h1:rIhUeCHBLEDlkoRnOTwzSGzljQ3ksXwLxacmXnrV+Do= +github.com/linode/linodego v1.35.0/go.mod h1:JxuhOEAMfSxun6RU5/MgTKH2GGTmFrhKRj3wL1NFin0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -496,10 +498,10 @@ github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU= github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= -github.com/onsi/ginkgo/v2 v2.17.1 h1:V++EzdbhI4ZV4ev0UTIj0PzhzOcReJFyJaLjtSF55M8= -github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= -github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= -github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= +github.com/onsi/ginkgo/v2 v2.17.2 h1:7eMhcy3GimbsA3hEnVKdw/PQM9XN9krpKVXsZdph0/g= +github.com/onsi/ginkgo/v2 v2.17.2/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc= +github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= +github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/open-telemetry/opamp-go v0.14.0 h1:KoziIK+wsFojhUXNTkCSTnCPf0eCMqFAaccOs0HrWIY= github.com/open-telemetry/opamp-go v0.14.0/go.mod h1:XOGCigljsLSTZ8FfLwvat0M1QDj3conIIgRa77BWrKs= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= @@ -510,10 +512,10 @@ github.com/openshift/api v0.0.0-20240124164020-e2ce40831f2e h1:cxgCNo/R769CO23AK github.com/openshift/api v0.0.0-20240124164020-e2ce40831f2e/go.mod h1:CxgbWAlvu2iQB0UmKTtRu1YfepRg1/vJ64n2DlIEVz4= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/operator-framework/operator-lib v0.13.0 h1:+TWgJhbJqyNix9m1LmHK5gY/lb3CGqZX3Wvl7K0k+6I= -github.com/operator-framework/operator-lib v0.13.0/go.mod h1:RDs1wGdOKWSMCO+BYSbqmmKGnD5jOP7TVP+KvoX8jMg= -github.com/ovh/go-ovh v1.4.3 h1:Gs3V823zwTFpzgGLZNI6ILS4rmxZgJwJCz54Er9LwD0= -github.com/ovh/go-ovh v1.4.3/go.mod h1:AkPXVtgwB6xlKblMjRKJJmjRp+ogrE7fz2lVgcQY8SY= +github.com/operator-framework/operator-lib v0.14.0 h1:er+BgZymZD1im2wytLJiPLZpGALAX6N0gXaHx3PKbO4= +github.com/operator-framework/operator-lib v0.14.0/go.mod h1:wUu4Xb9xzXnIpglvaZ3yucTMSlqGXHIoUEH9+5gWiu0= +github.com/ovh/go-ovh v1.5.1 h1:P8O+7H+NQuFK9P/j4sFW5C0fvSS2DnHYGPwdVCp45wI= +github.com/ovh/go-ovh v1.5.1/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -531,14 +533,14 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/prometheus-community/prom-label-proxy v0.8.0 h1:efT8cfKvXq6PAhbZqmuJAIxoyGAY2Ti7ox255YRfhNs= -github.com/prometheus-community/prom-label-proxy v0.8.0/go.mod h1:JX2MjqJ4/ZQfMGnVYQttGYPTonQjqKi3z4kM8nfwpyA= -github.com/prometheus-operator/prometheus-operator v0.71.2 h1:piIalYycTr6Lk23Vpu7kefEK4oYT2T1ZvGLfTtCDGx0= -github.com/prometheus-operator/prometheus-operator v0.71.2/go.mod h1:HEz8CRS7Drq764vs3HGeigx+EuUq5mYhO928cCIryOg= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.72.0 h1:9h7PxMhT1S8lOdadEKJnBh3ELMdO60XkoDV98grYjuM= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.72.0/go.mod h1:4FiLCL664L4dNGeqZewiiD0NS7hhqi/CxyM4UOq5dfM= -github.com/prometheus-operator/prometheus-operator/pkg/client v0.72.0 h1:UQT8vi8NK8Nt/wYZXY0Asx5XcGAhiQ1SQG190Ei4Pto= -github.com/prometheus-operator/prometheus-operator/pkg/client v0.72.0/go.mod h1:AYjK2t/SjtOmdEAi2CxQ/t/TOQ0j3zzuMhJ5WgM+Ok0= +github.com/prometheus-community/prom-label-proxy v0.10.0 h1:49S1uMRHuTUKoWU9Oj3hrKM2m8F3qkY3TPAOyKQnAVo= +github.com/prometheus-community/prom-label-proxy v0.10.0/go.mod h1:hUQJDmGpo2bVBA03jBur8vvicfA8dbJdDg5hCjPZPw8= +github.com/prometheus-operator/prometheus-operator v0.75.0 h1:ldUas8b691Pu/DnflWywCQkhRRzB/FKVfZ9EcvzdIo0= +github.com/prometheus-operator/prometheus-operator v0.75.0/go.mod h1:nGYa8UDIfPIh2vUf93JbS0GGucx/P6vRur0wPo2DM+s= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.75.0 h1:62MgqpTrtjNd8cc0RJSFJ1OHqgSrThgHehGVuQaF/fc= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.75.0/go.mod h1:XYrdZw5dW12Cjkt4ndbeNZZTBp4UCHtW0ccR9+sTtPU= +github.com/prometheus-operator/prometheus-operator/pkg/client v0.75.0 h1:QcchdrYyQ9qRY0KZlEjx6gYUjPOvkZDbzOlHMp4ix88= +github.com/prometheus-operator/prometheus-operator/pkg/client v0.75.0/go.mod h1:ptPuQIiTdOvagifFhojZSJ/8VinU3/l7gOQ+Y6M0aqI= github.com/prometheus/alertmanager v0.27.0 h1:V6nTa2J5V4s8TG4C4HtrBP/WNSebCCTYGGv4qecA/+I= github.com/prometheus/alertmanager v0.27.0/go.mod h1:8Ia/R3urPmbzJ8OsdvmZvIprDwvwmYCmUbwBL+jlPOE= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -560,8 +562,8 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.54.0 h1:ZlZy0BgJhTwVZUn7dLOkwCZHUkrAqd3WYtcFCWnM1D8= -github.com/prometheus/common v0.54.0/go.mod h1:/TQgMJP5CuVYveyT7n/0Ix8yLNNXy9yRSkhnLTHPDIQ= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -569,17 +571,17 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.15.0 h1:A82kmvXJq2jTu5YUhSGNlYoxh85zLnKgPz4bMZgI5Ek= -github.com/prometheus/procfs v0.15.0/go.mod h1:Y0RJ/Y5g5wJpkTisOtqwDSo4HwhGmLB4VQSw2sQJLHk= -github.com/prometheus/prometheus v0.52.1 h1:BrQ29YG+mzdGh8DgHPirHbeMGNqtL+INe0rqg7ttBJ4= -github.com/prometheus/prometheus v0.52.1/go.mod h1:3z74cVsmVH0iXOR5QBjB7Pa6A0KJeEAK5A6UsmAFb1g= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/prometheus v0.53.0 h1:vOnhpUKrDv954jnVBvhG/ZQJ3kqscnKI+Hbdwo2tAhc= +github.com/prometheus/prometheus v0.53.0/go.mod h1:RZDkzs+ShMBDkAPQkLEaLBXpjmDcjhNxU2drUVPgKUU= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.26 h1:F+GIVtGqCFxPxO46ujf8cEOP574MBoRm3gNbPXECbxs= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.26/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.27 h1:yGAraK1uUjlhSXgNMIy8o/J4LFNcy7yeipBqt9N9mVg= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.27/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= @@ -640,18 +642,18 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/collector/featuregate v1.9.0 h1:mC4/HnR5cx/kkG1RKOQAvHxxg5Ktmd9gpFdttPEXQtA= -go.opentelemetry.io/collector/featuregate v1.9.0/go.mod h1:PsOINaGgTiFc+Tzu2K/X2jP+Ngmlp7YKGV1XrnBkH7U= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.51.0 h1:Xs2Ncz0gNihqu9iosIZ5SkBbWo5T8JhhLJFMQL1qmLI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.51.0/go.mod h1:vy+2G/6NvVMpwGX/NyLqcC41fxepnuKHk16E6IZUcJc= +go.opentelemetry.io/collector/featuregate v1.10.0 h1:krSqokHTp7JthgmtewysqHuOAkcuuZl7G2n91s7HygE= +go.opentelemetry.io/collector/featuregate v1.10.0/go.mod h1:PsOINaGgTiFc+Tzu2K/X2jP+Ngmlp7YKGV1XrnBkH7U= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 h1:9l89oX4ba9kHbBol3Xin3leYJ+252h0zszDtBwyKe2A= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0/go.mod h1:XLZfZboOJWHNKUv7eH0inh0E9VV6eWDFB/9yJyTLPp0= go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg= go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0 h1:CIHWikMsN3wO+wq1Tp5VGdVRTcON+DmOJSfDjXypKOc= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0/go.mod h1:TNupZ6cxqyFEpLXAZW7On+mLFL0/g0TE3unIYL91xWc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0 h1:1u/AyyOqAWzy+SkPxDpahCNZParHV8Vid1RnI2clyDE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0/go.mod h1:z46paqbJ9l7c9fIPCXTqTGwhQZ5XoTIsfeFYWboizjs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.26.0 h1:1wp/gyxsuYtuE/JFxsQRtcCDtMrO2qMvlfXALU5wkzI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.26.0/go.mod h1:gbTHmghkGgqxMomVQQMur1Nba4M0MQ8AYThXDUjsJ38= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0 h1:R9DE4kQ4k+YtfLI2ULwX82VtNQ2J8yZmA7ZIF/D+7Mc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0/go.mod h1:OQFyQVrDlbe+R7xrEyDr/2Wr67Ol0hRUgsfA+V5A95s= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0 h1:QY7/0NeRPKlzusf40ZE4t1VlMKbqSNT7cJRYzWuja0s= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0/go.mod h1:HVkSiDhTM9BoUJU8qE6j2eSWLLXvi1USXjyd2BXT8PY= go.opentelemetry.io/otel/exporters/prometheus v0.49.0 h1:Er5I1g/YhfYv9Affk9nJLfH/+qCCVVg1f2R9AbJfqDQ= go.opentelemetry.io/otel/exporters/prometheus v0.49.0/go.mod h1:KfQ1wpjf3zsHjzP149P4LyAwWRupc6c7t1ZJ9eXpKQM= go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik= @@ -685,7 +687,7 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -698,8 +700,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -722,8 +724,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -763,7 +765,7 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -772,8 +774,8 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -847,7 +849,7 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -855,7 +857,7 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -868,6 +870,7 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -920,8 +923,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -944,8 +947,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.174.0 h1:zB1BWl7ocxfTea2aQ9mgdzXjnfPySllpPOskdnO+q34= -google.golang.org/api v0.174.0/go.mod h1:aC7tB6j0HR1Nl0ni5ghpx6iLasmAX78Zkh/wgxAAjLg= +google.golang.org/api v0.183.0 h1:PNMeRDwo1pJdgNcFQ9GstuLe/noWKIc89pRWRLMvLwE= +google.golang.org/api v0.183.0/go.mod h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -981,10 +984,10 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20240520151616-dc85e6b867a5 h1:P8OJ/WCl/Xo4E4zoe4/bifHpSmmKwARqyqE4nW6J2GQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240520151616-dc85e6b867a5/go.mod h1:RGnPtTG7r4i8sPlNyDeikXF99hMM+hN6QMm4ooG9g2g= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291 h1:AgADTJarZTBqgjiUzRgfaBchgYB3/WFTC80GPwsMcRI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1011,8 +1014,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1044,31 +1047,31 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw= -k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= -k8s.io/apiextensions-apiserver v0.29.3 h1:9HF+EtZaVpFjStakF4yVufnXGPRppWFEQ87qnO91YeI= -k8s.io/apiextensions-apiserver v0.29.3/go.mod h1:po0XiY5scnpJfFizNGo6puNU6Fq6D70UJY2Cb2KwAVc= -k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= -k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= -k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= -k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= -k8s.io/component-base v0.29.3 h1:Oq9/nddUxlnrCuuR2K/jp6aflVvc0uDvxMzAWxnGzAo= -k8s.io/component-base v0.29.3/go.mod h1:Yuj33XXjuOk2BAaHsIGHhCKZQAgYKhqIxIjIr2UXYio= -k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= -k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= -k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= -k8s.io/kubectl v0.29.3 h1:RuwyyIU42MAISRIePaa8Q7A3U74Q9P4MoJbDFz9o3us= -k8s.io/kubectl v0.29.3/go.mod h1:yCxfY1dbwgVdEt2zkJ6d5NNLOhhWgTyrqACIoFhpdd4= -k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ= -k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/api v0.30.2 h1:+ZhRj+28QT4UOH+BKznu4CBgPWgkXO7XAvMcMl0qKvI= +k8s.io/api v0.30.2/go.mod h1:ULg5g9JvOev2dG0u2hig4Z7tQ2hHIuS+m8MNZ+X6EmI= +k8s.io/apiextensions-apiserver v0.30.2 h1:l7Eue2t6QiLHErfn2vwK4KgF4NeDgjQkCXtEbOocKIE= +k8s.io/apiextensions-apiserver v0.30.2/go.mod h1:lsJFLYyK40iguuinsb3nt+Sj6CmodSI4ACDLep1rgjw= +k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg= +k8s.io/apimachinery v0.30.2/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/client-go v0.30.2 h1:sBIVJdojUNPDU/jObC+18tXWcTJVcwyqS9diGdWHk50= +k8s.io/client-go v0.30.2/go.mod h1:JglKSWULm9xlJLx4KCkfLLQ7XwtlbflV6uFFSHTMgVs= +k8s.io/component-base v0.30.2 h1:pqGBczYoW1sno8q9ObExUqrYSKhtE5rW3y6gX88GZII= +k8s.io/component-base v0.30.2/go.mod h1:yQLkQDrkK8J6NtP+MGJOws+/PPeEXNpwFixsUI7h/OE= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b h1:Q9xmGWBvOGd8UJyccgpYlLosk/JlfP3xQLNkQlHJeXw= +k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b/go.mod h1:UxDHUPsUwTOOxSU+oXURfFBcAS6JwiRXTYqYwfuGowc= +k8s.io/kubectl v0.30.2 h1:cgKNIvsOiufgcs4yjvgkK0+aPCfa8pUwzXdJtkbhsH8= +k8s.io/kubectl v0.30.2/go.mod h1:rz7GHXaxwnigrqob0lJsiA07Df8RE3n1TSaC2CTeuB4= +k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= +k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/controller-runtime v0.17.3 h1:65QmN7r3FWgTxDMz9fvGnO1kbf2nu+acg9p2R9oYYYk= -sigs.k8s.io/controller-runtime v0.17.3/go.mod h1:N0jpP5Lo7lMTF9aL56Z/B2oWBJjey6StQM0jRbKQXtY= +sigs.k8s.io/controller-runtime v0.18.4 h1:87+guW1zhvuPLh1PHybKdYFLU0YJp4FhJRmiHvm5BZw= +sigs.k8s.io/controller-runtime v0.18.4/go.mod h1:TVoGrfdpbA9VRFaRnKgk9P5/atA0pMwq+f+msb9M8Sg= sigs.k8s.io/gateway-api v1.0.0 h1:iPTStSv41+d9p0xFydll6d7f7MOBGuqXM6p2/zVYMAs= sigs.k8s.io/gateway-api v1.0.0/go.mod h1:4cUgr0Lnp5FZ0Cdq8FdRwCvpiWws7LVhLHGIudLlf4c= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= diff --git a/internal/manifests/builder.go b/internal/manifests/builder.go index 88a47ed277..e1c42df7d5 100644 --- a/internal/manifests/builder.go +++ b/internal/manifests/builder.go @@ -20,19 +20,19 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" ) -type Builder func(params Params) ([]client.Object, error) +type Builder[Params any] func(params Params) ([]client.Object, error) -type ManifestFactory[T client.Object] func(params Params) (T, error) -type SimpleManifestFactory[T client.Object] func(params Params) T -type K8sManifestFactory ManifestFactory[client.Object] +type ManifestFactory[T client.Object, Params any] func(params Params) (T, error) +type SimpleManifestFactory[T client.Object, Params any] func(params Params) T +type K8sManifestFactory[Params any] ManifestFactory[client.Object, Params] -func FactoryWithoutError[T client.Object](f SimpleManifestFactory[T]) K8sManifestFactory { +func FactoryWithoutError[T client.Object, Params any](f SimpleManifestFactory[T, Params]) K8sManifestFactory[Params] { return func(params Params) (client.Object, error) { return f(params), nil } } -func Factory[T client.Object](f ManifestFactory[T]) K8sManifestFactory { +func Factory[T client.Object, Params any](f ManifestFactory[T, Params]) K8sManifestFactory[Params] { return func(params Params) (client.Object, error) { return f(params) } diff --git a/internal/manifests/collector/collector.go b/internal/manifests/collector/collector.go index 65a19cdc9e..f8e78e5f9f 100644 --- a/internal/manifests/collector/collector.go +++ b/internal/manifests/collector/collector.go @@ -30,7 +30,7 @@ const ( // Build creates the manifest for the collector resource. func Build(params manifests.Params) ([]client.Object, error) { var resourceManifests []client.Object - var manifestFactories []manifests.K8sManifestFactory + var manifestFactories []manifests.K8sManifestFactory[manifests.Params] switch params.OtelCol.Spec.Mode { case v1beta1.ModeDeployment: manifestFactories = append(manifestFactories, manifests.Factory(Deployment)) @@ -43,7 +43,7 @@ func Build(params manifests.Params) ([]client.Object, error) { case v1beta1.ModeSidecar: params.Log.V(5).Info("not building sidecar...") } - manifestFactories = append(manifestFactories, []manifests.K8sManifestFactory{ + manifestFactories = append(manifestFactories, []manifests.K8sManifestFactory[manifests.Params]{ manifests.Factory(ConfigMap), manifests.Factory(HorizontalPodAutoscaler), manifests.Factory(ServiceAccount), diff --git a/internal/manifests/collector/config_replace.go b/internal/manifests/collector/config_replace.go index e2219f36d6..6ba35ed435 100644 --- a/internal/manifests/collector/config_replace.go +++ b/internal/manifests/collector/config_replace.go @@ -21,6 +21,7 @@ import ( _ "github.com/prometheus/prometheus/discovery/install" // Package install has the side-effect of registering all builtin. "gopkg.in/yaml.v3" + "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1" "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" "github.com/open-telemetry/opentelemetry-operator/internal/manifests/collector/adapters" ta "github.com/open-telemetry/opentelemetry-operator/internal/manifests/targetallocator/adapters" @@ -41,13 +42,15 @@ type Config struct { TargetAllocConfig *targetAllocator `yaml:"target_allocator,omitempty"` } -func ReplaceConfig(instance v1beta1.OpenTelemetryCollector, options ...ta.TAOption) (string, error) { - cfgStr, err := instance.Spec.Config.Yaml() +func ReplaceConfig(otelcol v1beta1.OpenTelemetryCollector, targetAllocator *v1alpha1.TargetAllocator, options ...ta.TAOption) (string, error) { + collectorSpec := otelcol.Spec + taEnabled := targetAllocator != nil + cfgStr, err := collectorSpec.Config.Yaml() if err != nil { return "", err } - // Check if TargetAllocator is enabled, if not, return the original config - if !instance.Spec.TargetAllocator.Enabled { + // Check if TargetAllocator is present, if not, return the original config + if !taEnabled { return cfgStr, nil } @@ -61,14 +64,14 @@ func ReplaceConfig(instance v1beta1.OpenTelemetryCollector, options ...ta.TAOpti return "", getCfgPromErr } - validateCfgPromErr := ta.ValidatePromConfig(promCfgMap, instance.Spec.TargetAllocator.Enabled) + validateCfgPromErr := ta.ValidatePromConfig(promCfgMap, taEnabled) if validateCfgPromErr != nil { return "", validateCfgPromErr } // To avoid issues caused by Prometheus validation logic, which fails regex validation when it encounters // $$ in the prom config, we update the YAML file directly without marshaling and unmarshalling. - updPromCfgMap, getCfgPromErr := ta.AddTAConfigToPromConfig(promCfgMap, naming.TAService(instance.Name), options...) + updPromCfgMap, getCfgPromErr := ta.AddTAConfigToPromConfig(promCfgMap, naming.TAService(targetAllocator.Name), options...) if getCfgPromErr != nil { return "", getCfgPromErr } diff --git a/internal/manifests/collector/config_replace_test.go b/internal/manifests/collector/config_replace_test.go index 2a97f8a008..c57c95efec 100644 --- a/internal/manifests/collector/config_replace_test.go +++ b/internal/manifests/collector/config_replace_test.go @@ -31,8 +31,7 @@ func TestPrometheusParser(t *testing.T) { t.Run("should update config with targetAllocator block if block not present", func(t *testing.T) { // Set up the test scenario - param.OtelCol.Spec.TargetAllocator.Enabled = true - actualConfig, err := ReplaceConfig(param.OtelCol) + actualConfig, err := ReplaceConfig(param.OtelCol, param.TargetAllocator) assert.NoError(t, err) // Verify the expected changes in the config @@ -57,9 +56,7 @@ func TestPrometheusParser(t *testing.T) { paramTa, err := newParams("test/test-img", "testdata/http_sd_config_ta_test.yaml") require.NoError(t, err) - paramTa.OtelCol.Spec.TargetAllocator.Enabled = true - - actualConfig, err := ReplaceConfig(paramTa.OtelCol) + actualConfig, err := ReplaceConfig(paramTa.OtelCol, param.TargetAllocator) assert.NoError(t, err) // Verify the expected changes in the config @@ -80,9 +77,7 @@ func TestPrometheusParser(t *testing.T) { }) t.Run("should not update config with http_sd_config", func(t *testing.T) { - param.OtelCol.Spec.TargetAllocator.Enabled = false - - actualConfig, err := ReplaceConfig(param.OtelCol) + actualConfig, err := ReplaceConfig(param.OtelCol, nil) assert.NoError(t, err) // prepare @@ -120,25 +115,23 @@ func TestReplaceConfig(t *testing.T) { assert.NoError(t, err) t.Run("should not modify config when TargetAllocator is disabled", func(t *testing.T) { - param.OtelCol.Spec.TargetAllocator.Enabled = false expectedConfigBytes, err := os.ReadFile("testdata/relabel_config_original.yaml") assert.NoError(t, err) expectedConfig := string(expectedConfigBytes) - actualConfig, err := ReplaceConfig(param.OtelCol) + actualConfig, err := ReplaceConfig(param.OtelCol, nil) assert.NoError(t, err) assert.YAMLEq(t, expectedConfig, actualConfig) }) t.Run("should remove scrape configs if TargetAllocator is enabled", func(t *testing.T) { - param.OtelCol.Spec.TargetAllocator.Enabled = true expectedConfigBytes, err := os.ReadFile("testdata/config_expected_targetallocator.yaml") assert.NoError(t, err) expectedConfig := string(expectedConfigBytes) - actualConfig, err := ReplaceConfig(param.OtelCol) + actualConfig, err := ReplaceConfig(param.OtelCol, param.TargetAllocator) assert.NoError(t, err) assert.YAMLEq(t, expectedConfig, actualConfig) diff --git a/internal/manifests/collector/configmap.go b/internal/manifests/collector/configmap.go index be4812acfd..def314563c 100644 --- a/internal/manifests/collector/configmap.go +++ b/internal/manifests/collector/configmap.go @@ -48,7 +48,7 @@ func ConfigMap(params manifests.Params) (*corev1.ConfigMap, error) { ) } - replacedConf, err := ReplaceConfig(params.OtelCol, replaceCfgOpts...) + replacedConf, err := ReplaceConfig(params.OtelCol, params.TargetAllocator, replaceCfgOpts...) if err != nil { params.Log.V(2).Info("failed to update prometheus config to use sharded targets: ", "err", err) return nil, err diff --git a/internal/manifests/collector/configmap_test.go b/internal/manifests/collector/configmap_test.go index d7614c8648..fc66cf3794 100644 --- a/internal/manifests/collector/configmap_test.go +++ b/internal/manifests/collector/configmap_test.go @@ -53,7 +53,6 @@ service: pipelines: metrics: receivers: [prometheus, jaeger] - processors: [] exporters: [debug]`, } @@ -92,7 +91,6 @@ service: metrics: exporters: - debug - processors: [] receivers: - prometheus `, diff --git a/internal/manifests/collector/daemonset.go b/internal/manifests/collector/daemonset.go index c006dbd10a..919c73151a 100644 --- a/internal/manifests/collector/daemonset.go +++ b/internal/manifests/collector/daemonset.go @@ -64,7 +64,8 @@ func DaemonSet(params manifests.Params) (*appsv1.DaemonSet, error) { NodeSelector: params.OtelCol.Spec.NodeSelector, HostNetwork: params.OtelCol.Spec.HostNetwork, ShareProcessNamespace: ¶ms.OtelCol.Spec.ShareProcessNamespace, - DNSPolicy: getDNSPolicy(params.OtelCol), + DNSPolicy: manifestutils.GetDNSPolicy(params.OtelCol.Spec.HostNetwork, params.OtelCol.Spec.PodDNSConfig), + DNSConfig: ¶ms.OtelCol.Spec.PodDNSConfig, SecurityContext: params.OtelCol.Spec.PodSecurityContext, PriorityClassName: params.OtelCol.Spec.PriorityClassName, Affinity: params.OtelCol.Spec.Affinity, diff --git a/internal/manifests/collector/daemonset_test.go b/internal/manifests/collector/daemonset_test.go index 778c3791f6..82e42c739c 100644 --- a/internal/manifests/collector/daemonset_test.go +++ b/internal/manifests/collector/daemonset_test.go @@ -591,3 +591,35 @@ func TestDaemonsetShareProcessNamespace(t *testing.T) { require.NoError(t, err) assert.True(t, *d2.Spec.Template.Spec.ShareProcessNamespace) } + +func TestDaemonSetDNSConfig(t *testing.T) { + // prepare + otelcol := v1beta1.OpenTelemetryCollector{ + ObjectMeta: metav1.ObjectMeta{ + Name: "my-instance", + Namespace: "my-namespace", + }, + Spec: v1beta1.OpenTelemetryCollectorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + PodDNSConfig: v1.PodDNSConfig{ + Nameservers: []string{"8.8.8.8"}, + Searches: []string{"my.dns.search.suffix"}, + }, + }, + }, + } + cfg := config.New() + + params := manifests.Params{ + Config: cfg, + OtelCol: otelcol, + Log: logger, + } + + // test + d, err := DaemonSet(params) + require.NoError(t, err) + assert.Equal(t, "my-instance-collector", d.Name) + assert.Equal(t, v1.DNSPolicy("None"), d.Spec.Template.Spec.DNSPolicy) + assert.Equal(t, d.Spec.Template.Spec.DNSConfig.Nameservers, []string{"8.8.8.8"}) +} diff --git a/internal/manifests/collector/deployment.go b/internal/manifests/collector/deployment.go index 1cc105114b..339d10c551 100644 --- a/internal/manifests/collector/deployment.go +++ b/internal/manifests/collector/deployment.go @@ -61,7 +61,8 @@ func Deployment(params manifests.Params) (*appsv1.Deployment, error) { InitContainers: params.OtelCol.Spec.InitContainers, Containers: append(params.OtelCol.Spec.AdditionalContainers, Container(params.Config, params.Log, params.OtelCol, true)), Volumes: Volumes(params.Config, params.OtelCol), - DNSPolicy: getDNSPolicy(params.OtelCol), + DNSPolicy: manifestutils.GetDNSPolicy(params.OtelCol.Spec.HostNetwork, params.OtelCol.Spec.PodDNSConfig), + DNSConfig: ¶ms.OtelCol.Spec.PodDNSConfig, HostNetwork: params.OtelCol.Spec.HostNetwork, ShareProcessNamespace: ¶ms.OtelCol.Spec.ShareProcessNamespace, Tolerations: params.OtelCol.Spec.Tolerations, diff --git a/internal/manifests/collector/deployment_test.go b/internal/manifests/collector/deployment_test.go index 0523a214b6..e4922913a6 100644 --- a/internal/manifests/collector/deployment_test.go +++ b/internal/manifests/collector/deployment_test.go @@ -705,3 +705,35 @@ func TestDeploymentShareProcessNamespace(t *testing.T) { require.NoError(t, err) assert.True(t, *d2.Spec.Template.Spec.ShareProcessNamespace) } + +func TestDeploymentDNSConfig(t *testing.T) { + // prepare + otelcol := v1beta1.OpenTelemetryCollector{ + ObjectMeta: metav1.ObjectMeta{ + Name: "my-instance", + Namespace: "my-namespace", + }, + Spec: v1beta1.OpenTelemetryCollectorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + PodDNSConfig: v1.PodDNSConfig{ + Nameservers: []string{"8.8.8.8"}, + Searches: []string{"my.dns.search.suffix"}, + }, + }, + }, + } + cfg := config.New() + + params := manifests.Params{ + Config: cfg, + OtelCol: otelcol, + Log: logger, + } + + // test + d, err := Deployment(params) + require.NoError(t, err) + assert.Equal(t, "my-instance-collector", d.Name) + assert.Equal(t, v1.DNSPolicy("None"), d.Spec.Template.Spec.DNSPolicy) + assert.Equal(t, d.Spec.Template.Spec.DNSConfig.Nameservers, []string{"8.8.8.8"}) +} diff --git a/internal/manifests/collector/statefulset.go b/internal/manifests/collector/statefulset.go index bfb3a70964..6b7e92ec05 100644 --- a/internal/manifests/collector/statefulset.go +++ b/internal/manifests/collector/statefulset.go @@ -61,7 +61,8 @@ func StatefulSet(params manifests.Params) (*appsv1.StatefulSet, error) { InitContainers: params.OtelCol.Spec.InitContainers, Containers: append(params.OtelCol.Spec.AdditionalContainers, Container(params.Config, params.Log, params.OtelCol, true)), Volumes: Volumes(params.Config, params.OtelCol), - DNSPolicy: getDNSPolicy(params.OtelCol), + DNSPolicy: manifestutils.GetDNSPolicy(params.OtelCol.Spec.HostNetwork, params.OtelCol.Spec.PodDNSConfig), + DNSConfig: ¶ms.OtelCol.Spec.PodDNSConfig, HostNetwork: params.OtelCol.Spec.HostNetwork, ShareProcessNamespace: ¶ms.OtelCol.Spec.ShareProcessNamespace, Tolerations: params.OtelCol.Spec.Tolerations, diff --git a/internal/manifests/collector/statefulset_test.go b/internal/manifests/collector/statefulset_test.go index b59cf167c0..69ad9b1649 100644 --- a/internal/manifests/collector/statefulset_test.go +++ b/internal/manifests/collector/statefulset_test.go @@ -670,3 +670,35 @@ func TestStatefulSetShareProcessNamespace(t *testing.T) { require.NoError(t, err) assert.True(t, *d2.Spec.Template.Spec.ShareProcessNamespace) } + +func TestStatefulSetDNSConfig(t *testing.T) { + // prepare + otelcol := v1beta1.OpenTelemetryCollector{ + ObjectMeta: metav1.ObjectMeta{ + Name: "my-instance", + Namespace: "my-namespace", + }, + Spec: v1beta1.OpenTelemetryCollectorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + PodDNSConfig: v1.PodDNSConfig{ + Nameservers: []string{"8.8.8.8"}, + Searches: []string{"my.dns.search.suffix"}, + }, + }, + }, + } + cfg := config.New() + + params := manifests.Params{ + Config: cfg, + OtelCol: otelcol, + Log: logger, + } + + // test + d, err := StatefulSet(params) + require.NoError(t, err) + assert.Equal(t, "my-instance-collector", d.Name) + assert.Equal(t, v1.DNSPolicy("None"), d.Spec.Template.Spec.DNSPolicy) + assert.Equal(t, d.Spec.Template.Spec.DNSConfig.Nameservers, []string{"8.8.8.8"}) +} diff --git a/internal/manifests/collector/suite_test.go b/internal/manifests/collector/suite_test.go index 1f2654ba60..b3aa3b5359 100644 --- a/internal/manifests/collector/suite_test.go +++ b/internal/manifests/collector/suite_test.go @@ -129,7 +129,7 @@ func newParams(taContainerImage string, file string, options ...config.Option) ( } cfg := config.New(append(defaultOptions, options...)...) - return manifests.Params{ + params := manifests.Params{ Config: cfg, OtelCol: v1beta1.OpenTelemetryCollector{ TypeMeta: metav1.TypeMeta{ @@ -168,5 +168,10 @@ func newParams(taContainerImage string, file string, options ...config.Option) ( }, }, Log: logger, - }, nil + } + targetAllocator, err := TargetAllocator(params) + if err == nil { + params.TargetAllocator = targetAllocator + } + return params, nil } diff --git a/internal/manifests/collector/targetallocator.go b/internal/manifests/collector/targetallocator.go index 4245efdd79..44fa38a7fb 100644 --- a/internal/manifests/collector/targetallocator.go +++ b/internal/manifests/collector/targetallocator.go @@ -20,7 +20,6 @@ import ( "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1" "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" "github.com/open-telemetry/opentelemetry-operator/internal/manifests" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils" "github.com/open-telemetry/opentelemetry-operator/internal/manifests/targetallocator/adapters" ) @@ -32,10 +31,6 @@ func TargetAllocator(params manifests.Params) (*v1alpha1.TargetAllocator, error) return nil, nil } - collectorSelector := metav1.LabelSelector{ - MatchLabels: manifestutils.SelectorLabels(params.OtelCol.ObjectMeta, ComponentOpenTelemetryCollector), - } - configStr, err := params.OtelCol.Spec.Config.Yaml() if err != nil { return nil, err @@ -68,7 +63,6 @@ func TargetAllocator(params manifests.Params) (*v1alpha1.TargetAllocator, error) PodAnnotations: params.OtelCol.Spec.PodAnnotations, PodDisruptionBudget: taSpec.PodDisruptionBudget, }, - CollectorSelector: collectorSelector, AllocationStrategy: taSpec.AllocationStrategy, FilterStrategy: taSpec.FilterStrategy, ScrapeConfigs: scrapeConfigs, diff --git a/internal/manifests/collector/targetallocator_test.go b/internal/manifests/collector/targetallocator_test.go index 617234bb28..98cbc76089 100644 --- a/internal/manifests/collector/targetallocator_test.go +++ b/internal/manifests/collector/targetallocator_test.go @@ -29,7 +29,6 @@ import ( "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1" "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" "github.com/open-telemetry/opentelemetry-operator/internal/manifests" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils" ) func TestTargetAllocator(t *testing.T) { @@ -91,9 +90,6 @@ func TestTargetAllocator(t *testing.T) { want: &v1alpha1.TargetAllocator{ ObjectMeta: objectMetadata, Spec: v1alpha1.TargetAllocatorSpec{ - CollectorSelector: metav1.LabelSelector{ - MatchLabels: manifestutils.SelectorLabels(objectMetadata, ComponentOpenTelemetryCollector), - }, ScrapeConfigs: []v1beta1.AnyConfig{}, }, }, @@ -282,9 +278,6 @@ func TestTargetAllocator(t *testing.T) { }, }, }, - CollectorSelector: metav1.LabelSelector{ - MatchLabels: manifestutils.SelectorLabels(objectMetadata, ComponentOpenTelemetryCollector), - }, AllocationStrategy: v1beta1.TargetAllocatorAllocationStrategyConsistentHashing, FilterStrategy: v1beta1.TargetAllocatorFilterStrategyRelabelConfig, PrometheusCR: v1beta1.TargetAllocatorPrometheusCR{ diff --git a/internal/manifests/collector/testdata/config_expected_targetallocator.yaml b/internal/manifests/collector/testdata/config_expected_targetallocator.yaml index 5ac9467e9d..a43a2bcc56 100644 --- a/internal/manifests/collector/testdata/config_expected_targetallocator.yaml +++ b/internal/manifests/collector/testdata/config_expected_targetallocator.yaml @@ -16,6 +16,5 @@ service: metrics: exporters: - debug - processors: [] receivers: - prometheus diff --git a/internal/manifests/collector/testdata/http_sd_config_servicemonitor_test.yaml b/internal/manifests/collector/testdata/http_sd_config_servicemonitor_test.yaml index 0cbcb1f0a6..65928f8b16 100644 --- a/internal/manifests/collector/testdata/http_sd_config_servicemonitor_test.yaml +++ b/internal/manifests/collector/testdata/http_sd_config_servicemonitor_test.yaml @@ -21,5 +21,4 @@ service: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [debug] diff --git a/internal/manifests/collector/testdata/http_sd_config_servicemonitor_test_ta_set.yaml b/internal/manifests/collector/testdata/http_sd_config_servicemonitor_test_ta_set.yaml index 1774e5248a..91d5bb954a 100644 --- a/internal/manifests/collector/testdata/http_sd_config_servicemonitor_test_ta_set.yaml +++ b/internal/manifests/collector/testdata/http_sd_config_servicemonitor_test_ta_set.yaml @@ -27,5 +27,4 @@ service: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [debug] diff --git a/internal/manifests/collector/testdata/http_sd_config_ta_test.yaml b/internal/manifests/collector/testdata/http_sd_config_ta_test.yaml index fb4c8e92b1..e4e6281b1a 100644 --- a/internal/manifests/collector/testdata/http_sd_config_ta_test.yaml +++ b/internal/manifests/collector/testdata/http_sd_config_ta_test.yaml @@ -21,5 +21,4 @@ service: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [debug] diff --git a/internal/manifests/collector/testdata/http_sd_config_test.yaml b/internal/manifests/collector/testdata/http_sd_config_test.yaml index 361afa093c..d9070c7b98 100644 --- a/internal/manifests/collector/testdata/http_sd_config_test.yaml +++ b/internal/manifests/collector/testdata/http_sd_config_test.yaml @@ -32,5 +32,4 @@ service: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [debug] \ No newline at end of file diff --git a/internal/manifests/collector/testdata/prometheus-exporter.yaml b/internal/manifests/collector/testdata/prometheus-exporter.yaml index 546d900f74..06d29ebdc9 100644 --- a/internal/manifests/collector/testdata/prometheus-exporter.yaml +++ b/internal/manifests/collector/testdata/prometheus-exporter.yaml @@ -15,5 +15,4 @@ service: pipelines: metrics: receivers: [otlp] - processors: [] exporters: [prometheus/dev, prometheus/prod] diff --git a/internal/manifests/collector/testdata/relabel_config_expected_with_sd_config.yaml b/internal/manifests/collector/testdata/relabel_config_expected_with_sd_config.yaml index d58e5f0834..439ec1e310 100644 --- a/internal/manifests/collector/testdata/relabel_config_expected_with_sd_config.yaml +++ b/internal/manifests/collector/testdata/relabel_config_expected_with_sd_config.yaml @@ -51,6 +51,5 @@ service: metrics: exporters: - debug - processors: [] receivers: - prometheus diff --git a/internal/manifests/collector/testdata/relabel_config_original.yaml b/internal/manifests/collector/testdata/relabel_config_original.yaml index 58f365072b..710d2b1e93 100644 --- a/internal/manifests/collector/testdata/relabel_config_original.yaml +++ b/internal/manifests/collector/testdata/relabel_config_original.yaml @@ -47,4 +47,3 @@ service: - debug receivers: - prometheus - processors: [] diff --git a/internal/manifests/collector/testdata/test.yaml b/internal/manifests/collector/testdata/test.yaml index 4e95f681d4..12fb4e7840 100644 --- a/internal/manifests/collector/testdata/test.yaml +++ b/internal/manifests/collector/testdata/test.yaml @@ -18,5 +18,4 @@ service: pipelines: metrics: receivers: [prometheus, jaeger] - processors: [] exporters: [debug] \ No newline at end of file diff --git a/internal/manifests/collector/utils.go b/internal/manifests/manifestutils/dns.go similarity index 62% rename from internal/manifests/collector/utils.go rename to internal/manifests/manifestutils/dns.go index da75763f0d..bdf75c78e5 100644 --- a/internal/manifests/collector/utils.go +++ b/internal/manifests/manifestutils/dns.go @@ -12,18 +12,25 @@ // See the License for the specific language governing permissions and // limitations under the License. -package collector +package manifestutils import ( - corev1 "k8s.io/api/core/v1" + "errors" - "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" + corev1 "k8s.io/api/core/v1" ) -func getDNSPolicy(otelcol v1beta1.OpenTelemetryCollector) corev1.DNSPolicy { +var ErrorDNSPolicy = errors.New("when a dnsPolicy is set to None, the dnsConfig field has to be specified") + +// Get the Pod DNS Policy depending on whether we're using a host network. +func GetDNSPolicy(hostNetwork bool, dnsConfig corev1.PodDNSConfig) corev1.DNSPolicy { dnsPolicy := corev1.DNSClusterFirst - if otelcol.Spec.HostNetwork { + if hostNetwork { dnsPolicy = corev1.DNSClusterFirstWithHostNet } + // If local DNS configuration is set, takes precedence of hostNetwork. + if dnsConfig.Nameservers != nil { + dnsPolicy = corev1.DNSNone + } return dnsPolicy } diff --git a/internal/manifests/opampbridge/deployment.go b/internal/manifests/opampbridge/deployment.go index 9b146c83eb..02c0e5c221 100644 --- a/internal/manifests/opampbridge/deployment.go +++ b/internal/manifests/opampbridge/deployment.go @@ -55,7 +55,8 @@ func Deployment(params manifests.Params) *appsv1.Deployment { ServiceAccountName: ServiceAccountName(params.OpAMPBridge), Containers: []corev1.Container{Container(params.Config, params.Log, params.OpAMPBridge)}, Volumes: Volumes(params.Config, params.OpAMPBridge), - DNSPolicy: getDNSPolicy(params.OpAMPBridge), + DNSPolicy: manifestutils.GetDNSPolicy(params.OpAMPBridge.Spec.HostNetwork, params.OpAMPBridge.Spec.PodDNSConfig), + DNSConfig: ¶ms.OpAMPBridge.Spec.PodDNSConfig, HostNetwork: params.OpAMPBridge.Spec.HostNetwork, Tolerations: params.OpAMPBridge.Spec.Tolerations, NodeSelector: params.OpAMPBridge.Spec.NodeSelector, diff --git a/internal/manifests/opampbridge/deployment_test.go b/internal/manifests/opampbridge/deployment_test.go index 77af7843b0..35b6e20b40 100644 --- a/internal/manifests/opampbridge/deployment_test.go +++ b/internal/manifests/opampbridge/deployment_test.go @@ -453,3 +453,33 @@ func TestDeploymentTopologySpreadConstraints(t *testing.T) { assert.NotEmpty(t, d2.Spec.Template.Spec.TopologySpreadConstraints) assert.Equal(t, testTopologySpreadConstraintValue, d2.Spec.Template.Spec.TopologySpreadConstraints) } + +func TestDeploymentDNSConfig(t *testing.T) { + // prepare + opAmpBridge := v1alpha1.OpAMPBridge{ + ObjectMeta: metav1.ObjectMeta{ + Name: "my-instance", + Namespace: "my-namespace", + }, + Spec: v1alpha1.OpAMPBridgeSpec{ + PodDNSConfig: v1.PodDNSConfig{ + Nameservers: []string{"8.8.8.8"}, + Searches: []string{"my.dns.search.suffix"}, + }, + }, + } + + cfg := config.New() + + params := manifests.Params{ + Config: cfg, + OpAMPBridge: opAmpBridge, + Log: logger, + } + + // test + d := Deployment(params) + assert.Equal(t, "my-instance-opamp-bridge", d.Name) + assert.Equal(t, v1.DNSPolicy("None"), d.Spec.Template.Spec.DNSPolicy) + assert.Equal(t, d.Spec.Template.Spec.DNSConfig.Nameservers, []string{"8.8.8.8"}) +} diff --git a/internal/manifests/opampbridge/opampbridge.go b/internal/manifests/opampbridge/opampbridge.go index 5e8573b118..62286b7984 100644 --- a/internal/manifests/opampbridge/opampbridge.go +++ b/internal/manifests/opampbridge/opampbridge.go @@ -27,7 +27,7 @@ const ( // Build creates the manifest for the OpAMPBridge resource. func Build(params manifests.Params) ([]client.Object, error) { var resourceManifests []client.Object - resourceFactories := []manifests.K8sManifestFactory{ + resourceFactories := []manifests.K8sManifestFactory[manifests.Params]{ manifests.FactoryWithoutError(Deployment), manifests.Factory(ConfigMap), manifests.FactoryWithoutError(ServiceAccount), diff --git a/internal/manifests/opampbridge/utils.go b/internal/manifests/opampbridge/utils.go deleted file mode 100644 index 2400e0101a..0000000000 --- a/internal/manifests/opampbridge/utils.go +++ /dev/null @@ -1,29 +0,0 @@ -// 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 opampbridge - -import ( - corev1 "k8s.io/api/core/v1" - - "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1" -) - -func getDNSPolicy(opampBridge v1alpha1.OpAMPBridge) corev1.DNSPolicy { - dnsPolicy := corev1.DNSClusterFirst - if opampBridge.Spec.HostNetwork { - dnsPolicy = corev1.DNSClusterFirstWithHostNet - } - return dnsPolicy -} diff --git a/internal/manifests/params.go b/internal/manifests/params.go index 7e12a74b4d..69be71fb0b 100644 --- a/internal/manifests/params.go +++ b/internal/manifests/params.go @@ -32,7 +32,7 @@ type Params struct { Scheme *runtime.Scheme Log logr.Logger OtelCol v1beta1.OpenTelemetryCollector - TargetAllocator v1alpha1.TargetAllocator + TargetAllocator *v1alpha1.TargetAllocator OpAMPBridge v1alpha1.OpAMPBridge Config config.Config } diff --git a/internal/manifests/targetallocator/annotations_test.go b/internal/manifests/targetallocator/annotations_test.go index 5f6c839a1d..8d7501aa3d 100644 --- a/internal/manifests/targetallocator/annotations_test.go +++ b/internal/manifests/targetallocator/annotations_test.go @@ -24,7 +24,6 @@ import ( "github.com/stretchr/testify/require" "github.com/open-telemetry/opentelemetry-operator/internal/config" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" ) func TestPodAnnotations(t *testing.T) { @@ -40,8 +39,8 @@ func TestConfigMapHash(t *testing.T) { cfg := config.New() collector := collectorInstance() targetAllocator := targetAllocatorInstance() - params := manifests.Params{ - OtelCol: collector, + params := Params{ + Collector: collector, TargetAllocator: targetAllocator, Config: cfg, Log: logr.Discard(), diff --git a/internal/manifests/targetallocator/configmap.go b/internal/manifests/targetallocator/configmap.go index bcf9a6caec..dff318a2ce 100644 --- a/internal/manifests/targetallocator/configmap.go +++ b/internal/manifests/targetallocator/configmap.go @@ -23,7 +23,7 @@ import ( "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" "github.com/open-telemetry/opentelemetry-operator/internal/autodetect/certmanager" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" + "github.com/open-telemetry/opentelemetry-operator/internal/manifests/collector" "github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils" "github.com/open-telemetry/opentelemetry-operator/internal/naming" "github.com/open-telemetry/opentelemetry-operator/pkg/featuregate" @@ -33,14 +33,17 @@ const ( targetAllocatorFilename = "targetallocator.yaml" ) -func ConfigMap(params manifests.Params) (*corev1.ConfigMap, error) { +func ConfigMap(params Params) (*corev1.ConfigMap, error) { instance := params.TargetAllocator name := naming.TAConfigMap(instance.Name) labels := manifestutils.Labels(instance.ObjectMeta, name, params.TargetAllocator.Spec.Image, ComponentOpenTelemetryTargetAllocator, nil) taSpec := instance.Spec taConfig := make(map[interface{}]interface{}) - taConfig["collector_selector"] = taSpec.CollectorSelector + + taConfig["collector_selector"] = metav1.LabelSelector{ + MatchLabels: manifestutils.SelectorLabels(params.Collector.ObjectMeta, collector.ComponentOpenTelemetryCollector), + } // Add scrape configs if present if instance.Spec.ScrapeConfigs != nil && len(instance.Spec.ScrapeConfigs) > 0 { diff --git a/internal/manifests/targetallocator/configmap_test.go b/internal/manifests/targetallocator/configmap_test.go index 0ef27564b4..e3999805ee 100644 --- a/internal/manifests/targetallocator/configmap_test.go +++ b/internal/manifests/targetallocator/configmap_test.go @@ -25,7 +25,6 @@ import ( "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" "github.com/open-telemetry/opentelemetry-operator/internal/config" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" ) func TestDesiredConfigMap(t *testing.T) { @@ -35,6 +34,15 @@ func TestDesiredConfigMap(t *testing.T) { "app.kubernetes.io/part-of": "opentelemetry", "app.kubernetes.io/version": "0.47.0", } + collector := collectorInstance() + targetAllocator := targetAllocatorInstance() + cfg := config.New() + params := Params{ + Collector: collector, + TargetAllocator: targetAllocator, + Config: cfg, + Log: logr.Discard(), + } t.Run("should return expected target allocator config map", func(t *testing.T) { expectedLabels["app.kubernetes.io/component"] = "opentelemetry-targetallocator" @@ -60,15 +68,7 @@ config: filter_strategy: relabel-config `, } - collector := collectorInstance() - targetAllocator := targetAllocatorInstance() - cfg := config.New() - params := manifests.Params{ - OtelCol: collector, - TargetAllocator: targetAllocator, - Config: cfg, - Log: logr.Discard(), - } + actual, err := ConfigMap(params) require.NoError(t, err) @@ -93,16 +93,9 @@ collector_selector: filter_strategy: relabel-config `, } - collector := collectorInstance() - targetAllocator := targetAllocatorInstance() + targetAllocator = targetAllocatorInstance() targetAllocator.Spec.ScrapeConfigs = []v1beta1.AnyConfig{} - cfg := config.New() - params := manifests.Params{ - OtelCol: collector, - TargetAllocator: targetAllocator, - Config: cfg, - Log: logr.Discard(), - } + params.TargetAllocator = targetAllocator actual, err := ConfigMap(params) require.NoError(t, err) @@ -145,7 +138,7 @@ prometheus_cr: matchexpressions: [] `, } - targetAllocator := targetAllocatorInstance() + targetAllocator = targetAllocatorInstance() targetAllocator.Spec.PrometheusCR.Enabled = true targetAllocator.Spec.PrometheusCR.PodMonitorSelector = &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -156,12 +149,7 @@ prometheus_cr: MatchLabels: map[string]string{ "release": "my-instance", }} - cfg := config.New() - params := manifests.Params{ - TargetAllocator: targetAllocator, - Config: cfg, - Log: logr.Discard(), - } + params.TargetAllocator = targetAllocator actual, err := ConfigMap(params) assert.NoError(t, err) @@ -200,15 +188,10 @@ prometheus_cr: `, } - targetAllocator := targetAllocatorInstance() + targetAllocator = targetAllocatorInstance() targetAllocator.Spec.PrometheusCR.Enabled = true targetAllocator.Spec.PrometheusCR.ScrapeInterval = &metav1.Duration{Duration: time.Second * 30} - cfg := config.New() - params := manifests.Params{ - TargetAllocator: targetAllocator, - Config: cfg, - Log: logr.Discard(), - } + params.TargetAllocator = targetAllocator actual, err := ConfigMap(params) assert.NoError(t, err) diff --git a/internal/manifests/targetallocator/container.go b/internal/manifests/targetallocator/container.go index 5b39b533eb..7fc472b3db 100644 --- a/internal/manifests/targetallocator/container.go +++ b/internal/manifests/targetallocator/container.go @@ -44,11 +44,20 @@ func Container(cfg config.Config, logger logr.Logger, instance v1alpha1.TargetAl ContainerPort: 8080, Protocol: corev1.ProtocolTCP, }) + for _, p := range instance.Spec.Ports { + ports = append(ports, corev1.ContainerPort{ + Name: p.Name, + ContainerPort: p.Port, + Protocol: p.Protocol, + HostPort: p.HostPort, + }) + } volumeMounts := []corev1.VolumeMount{{ Name: naming.TAConfigMapVolume(), MountPath: "/conf", }} + volumeMounts = append(volumeMounts, instance.Spec.VolumeMounts...) var envVars = instance.Spec.Env if envVars == nil { @@ -137,13 +146,16 @@ func Container(cfg config.Config, logger logr.Logger, instance v1alpha1.TargetAl return corev1.Container{ Name: naming.TAContainer(), Image: image, + ImagePullPolicy: instance.Spec.ImagePullPolicy, Ports: ports, - Env: envVars, VolumeMounts: volumeMounts, - Resources: instance.Spec.Resources, Args: args, + Env: envVars, + EnvFrom: instance.Spec.EnvFrom, + Resources: instance.Spec.Resources, + SecurityContext: instance.Spec.SecurityContext, LivenessProbe: livenessProbe, ReadinessProbe: readinessProbe, - SecurityContext: instance.Spec.SecurityContext, + Lifecycle: instance.Spec.Lifecycle, } } diff --git a/internal/manifests/targetallocator/container_test.go b/internal/manifests/targetallocator/container_test.go index 5706e3edb3..03c4bb3058 100644 --- a/internal/manifests/targetallocator/container_test.go +++ b/internal/manifests/targetallocator/container_test.go @@ -64,7 +64,7 @@ func TestContainerWithImageOverridden(t *testing.T) { assert.Equal(t, "overridden-image", c.Image) } -func TestContainerPorts(t *testing.T) { +func TestContainerDefaultPorts(t *testing.T) { // prepare targetAllocator := v1alpha1.TargetAllocator{} cfg := config.New() @@ -78,7 +78,7 @@ func TestContainerPorts(t *testing.T) { assert.Equal(t, int32(8080), c.Ports[0].ContainerPort) } -func TestContainerVolumes(t *testing.T) { +func TestContainerDefaultVolumes(t *testing.T) { // prepare targetAllocator := v1alpha1.TargetAllocator{} cfg := config.New() @@ -409,3 +409,148 @@ func TestContainerWithCertManagerAvailable(t *testing.T) { assert.Contains(t, c.Args, "--https-tls-cert-file=/tls/tls.crt") assert.Contains(t, c.Args, "--https-tls-key-file=/tls/tls.key") } + +func TestContainerCustomVolumes(t *testing.T) { + // prepare + targetAllocator := v1alpha1.TargetAllocator{ + Spec: v1alpha1.TargetAllocatorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + VolumeMounts: []corev1.VolumeMount{{ + Name: "custom-volume-mount", + }}, + }, + }, + } + cfg := config.New() + + // test + c := Container(cfg, logger, targetAllocator) + + // verify + assert.Len(t, c.VolumeMounts, 2) + assert.Equal(t, "custom-volume-mount", c.VolumeMounts[1].Name) +} + +func TestContainerCustomPorts(t *testing.T) { + // prepare + targetAllocator := v1alpha1.TargetAllocator{ + Spec: v1alpha1.TargetAllocatorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + Ports: []v1beta1.PortsSpec{ + { + ServicePort: corev1.ServicePort{ + Name: "testport1", + Port: 12345, + Protocol: corev1.ProtocolTCP, + }, + HostPort: 54321, + }, + }, + }, + }, + } + cfg := config.New() + + // test + c := Container(cfg, logger, targetAllocator) + + // verify + assert.Len(t, c.Ports, 2) + actual := c.Ports[1] + expected := corev1.ContainerPort{ + Name: "testport1", + ContainerPort: 12345, + Protocol: corev1.ProtocolTCP, + HostPort: 54321, + } + assert.Equal(t, expected, actual) +} + +func TestContainerLifecycle(t *testing.T) { + // prepare + targetAllocator := v1alpha1.TargetAllocator{ + Spec: v1alpha1.TargetAllocatorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + Lifecycle: &corev1.Lifecycle{ + PostStart: &corev1.LifecycleHandler{ + Exec: &corev1.ExecAction{Command: []string{"sh", "sleep 100"}}, + }, + PreStop: &corev1.LifecycleHandler{ + Exec: &corev1.ExecAction{Command: []string{"sh", "sleep 300"}}, + }, + }, + }, + }, + } + cfg := config.New() + + // test + c := Container(cfg, logger, targetAllocator) + + expectedLifecycleHooks := corev1.Lifecycle{ + PostStart: &corev1.LifecycleHandler{ + Exec: &corev1.ExecAction{Command: []string{"sh", "sleep 100"}}, + }, + PreStop: &corev1.LifecycleHandler{ + Exec: &corev1.ExecAction{Command: []string{"sh", "sleep 300"}}, + }, + } + + // verify + assert.Equal(t, expectedLifecycleHooks, *c.Lifecycle) +} + +func TestContainerEnvFrom(t *testing.T) { + //prepare + envFrom1 := corev1.EnvFromSource{ + SecretRef: &corev1.SecretEnvSource{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "env-as-secret", + }, + }, + } + envFrom2 := corev1.EnvFromSource{ + ConfigMapRef: &corev1.ConfigMapEnvSource{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "env-as-configmap", + }, + }, + } + // prepare + targetAllocator := v1alpha1.TargetAllocator{ + Spec: v1alpha1.TargetAllocatorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + EnvFrom: []corev1.EnvFromSource{ + envFrom1, + envFrom2, + }, + }, + }, + } + cfg := config.New() + + // test + c := Container(cfg, logger, targetAllocator) + + // verify + assert.Contains(t, c.EnvFrom, envFrom1) + assert.Contains(t, c.EnvFrom, envFrom2) +} + +func TestContainerImagePullPolicy(t *testing.T) { + // prepare + targetAllocator := v1alpha1.TargetAllocator{ + Spec: v1alpha1.TargetAllocatorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + ImagePullPolicy: corev1.PullIfNotPresent, + }, + }, + } + cfg := config.New() + + // test + c := Container(cfg, logger, targetAllocator) + + // verify + assert.Equal(t, c.ImagePullPolicy, corev1.PullIfNotPresent) +} diff --git a/internal/manifests/targetallocator/deployment.go b/internal/manifests/targetallocator/deployment.go index db36d214fb..ab8c57c340 100644 --- a/internal/manifests/targetallocator/deployment.go +++ b/internal/manifests/targetallocator/deployment.go @@ -19,13 +19,12 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" "github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils" "github.com/open-telemetry/opentelemetry-operator/internal/naming" ) // Deployment builds the deployment for the given instance. -func Deployment(params manifests.Params) (*appsv1.Deployment, error) { +func Deployment(params Params) (*appsv1.Deployment, error) { name := naming.TargetAllocator(params.TargetAllocator.Name) labels := manifestutils.Labels(params.TargetAllocator.ObjectMeta, name, params.TargetAllocator.Spec.Image, ComponentOpenTelemetryTargetAllocator, nil) @@ -53,14 +52,21 @@ func Deployment(params manifests.Params) (*appsv1.Deployment, error) { Annotations: annotations, }, Spec: corev1.PodSpec{ - ServiceAccountName: ServiceAccountName(params.TargetAllocator), - Containers: []corev1.Container{Container(params.Config, params.Log, params.TargetAllocator)}, - Volumes: Volumes(params.Config, params.TargetAllocator), - NodeSelector: params.TargetAllocator.Spec.NodeSelector, - Tolerations: params.TargetAllocator.Spec.Tolerations, - TopologySpreadConstraints: params.TargetAllocator.Spec.TopologySpreadConstraints, - Affinity: params.TargetAllocator.Spec.Affinity, - SecurityContext: params.TargetAllocator.Spec.PodSecurityContext, + ServiceAccountName: ServiceAccountName(params.TargetAllocator), + InitContainers: params.TargetAllocator.Spec.InitContainers, + Containers: append(params.TargetAllocator.Spec.AdditionalContainers, Container(params.Config, params.Log, params.TargetAllocator)), + Volumes: Volumes(params.Config, params.TargetAllocator), + DNSPolicy: manifestutils.GetDNSPolicy(params.TargetAllocator.Spec.HostNetwork, params.TargetAllocator.Spec.PodDNSConfig), + DNSConfig: ¶ms.TargetAllocator.Spec.PodDNSConfig, + HostNetwork: params.TargetAllocator.Spec.HostNetwork, + ShareProcessNamespace: ¶ms.TargetAllocator.Spec.ShareProcessNamespace, + Tolerations: params.TargetAllocator.Spec.Tolerations, + NodeSelector: params.TargetAllocator.Spec.NodeSelector, + SecurityContext: params.TargetAllocator.Spec.PodSecurityContext, + PriorityClassName: params.TargetAllocator.Spec.PriorityClassName, + Affinity: params.TargetAllocator.Spec.Affinity, + TerminationGracePeriodSeconds: params.TargetAllocator.Spec.TerminationGracePeriodSeconds, + TopologySpreadConstraints: params.TargetAllocator.Spec.TopologySpreadConstraints, }, }, }, diff --git a/internal/manifests/targetallocator/deployment_test.go b/internal/manifests/targetallocator/deployment_test.go index e4d5759f0a..cc0d59d906 100644 --- a/internal/manifests/targetallocator/deployment_test.go +++ b/internal/manifests/targetallocator/deployment_test.go @@ -20,6 +20,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" go_yaml "gopkg.in/yaml.v3" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -88,7 +89,7 @@ func TestDeploymentSecurityContext(t *testing.T) { cfg := config.New() - params1 := manifests.Params{ + params1 := Params{ TargetAllocator: targetallocator11, Config: cfg, Log: logger, @@ -113,7 +114,7 @@ func TestDeploymentSecurityContext(t *testing.T) { cfg = config.New() - params2 := manifests.Params{ + params2 := Params{ TargetAllocator: targetAllocator2, Config: cfg, Log: logger, @@ -132,8 +133,8 @@ func TestDeploymentNewDefault(t *testing.T) { targetAllocator := targetAllocatorInstance() cfg := config.New() - params := manifests.Params{ - OtelCol: otelcol, + params := Params{ + Collector: otelcol, TargetAllocator: targetAllocator, Config: cfg, Log: logger, @@ -166,8 +167,8 @@ func TestDeploymentPodAnnotations(t *testing.T) { targetAllocator.Spec.PodAnnotations = testPodAnnotationValues cfg := config.New() - params := manifests.Params{ - OtelCol: otelcol, + params := Params{ + Collector: otelcol, TargetAllocator: targetAllocator, Config: cfg, Log: logger, @@ -224,7 +225,7 @@ func TestDeploymentNodeSelector(t *testing.T) { cfg := config.New() - params1 := manifests.Params{ + params1 := Params{ TargetAllocator: targetAllocator1, Config: cfg, Log: logger, @@ -249,7 +250,7 @@ func TestDeploymentNodeSelector(t *testing.T) { cfg = config.New() - params2 := manifests.Params{ + params2 := Params{ TargetAllocator: targetAllocator2, Config: cfg, Log: logger, @@ -266,7 +267,7 @@ func TestDeploymentAffinity(t *testing.T) { cfg := config.New() - params1 := manifests.Params{ + params1 := Params{ TargetAllocator: targetAllocator1, Config: cfg, Log: logger, @@ -289,7 +290,7 @@ func TestDeploymentAffinity(t *testing.T) { cfg = config.New() - params2 := manifests.Params{ + params2 := Params{ TargetAllocator: targetAllocator2, Config: cfg, Log: logger, @@ -309,7 +310,7 @@ func TestDeploymentTolerations(t *testing.T) { } cfg := config.New() - params1 := manifests.Params{ + params1 := Params{ TargetAllocator: targetAllocator1, Config: cfg, Log: logger, @@ -331,7 +332,7 @@ func TestDeploymentTolerations(t *testing.T) { }, } - params2 := manifests.Params{ + params2 := Params{ TargetAllocator: targetAllocator2, Config: cfg, Log: logger, @@ -354,7 +355,7 @@ func TestDeploymentTopologySpreadConstraints(t *testing.T) { cfg := config.New() - params1 := manifests.Params{ + params1 := Params{ TargetAllocator: targetAllocator1, Config: cfg, Log: logger, @@ -377,7 +378,7 @@ func TestDeploymentTopologySpreadConstraints(t *testing.T) { } cfg = config.New() - params2 := manifests.Params{ + params2 := Params{ TargetAllocator: targetAllocator2, Config: cfg, Log: logger, @@ -390,3 +391,177 @@ func TestDeploymentTopologySpreadConstraints(t *testing.T) { assert.NotEmpty(t, d2.Spec.Template.Spec.TopologySpreadConstraints) assert.Equal(t, testTopologySpreadConstraintValue, d2.Spec.Template.Spec.TopologySpreadConstraints) } + +func TestDeploymentSetInitContainer(t *testing.T) { + // prepare + targetAllocator := targetAllocatorInstance() + targetAllocator.Spec.InitContainers = []v1.Container{ + { + Name: "test", + }, + } + otelcol := collectorInstance() + params := Params{ + Collector: otelcol, + TargetAllocator: targetAllocator, + Config: config.New(), + Log: logger, + } + + // test + d, err := Deployment(params) + require.NoError(t, err) + assert.Len(t, d.Spec.Template.Spec.InitContainers, 1) +} + +func TestDeploymentAdditionalContainers(t *testing.T) { + // prepare + targetAllocator := targetAllocatorInstance() + targetAllocator.Spec.AdditionalContainers = []v1.Container{ + { + Name: "test", + }, + } + otelcol := collectorInstance() + params := Params{ + Collector: otelcol, + TargetAllocator: targetAllocator, + Config: config.New(), + Log: logger, + } + + // test + d, err := Deployment(params) + require.NoError(t, err) + assert.Len(t, d.Spec.Template.Spec.Containers, 2) + assert.Equal(t, v1.Container{Name: "test"}, d.Spec.Template.Spec.Containers[0]) +} + +func TestDeploymentHostNetwork(t *testing.T) { + // Test default + targetAllocator := targetAllocatorInstance() + otelcol := collectorInstance() + params := Params{ + Collector: otelcol, + TargetAllocator: targetAllocator, + Config: config.New(), + Log: logger, + } + + d1, err := Deployment(params) + require.NoError(t, err) + + assert.Equal(t, d1.Spec.Template.Spec.HostNetwork, false) + assert.Equal(t, d1.Spec.Template.Spec.DNSPolicy, v1.DNSClusterFirst) + + // Test hostNetwork=true + params.TargetAllocator.Spec.HostNetwork = true + + d2, err := Deployment(params) + require.NoError(t, err) + assert.Equal(t, d2.Spec.Template.Spec.HostNetwork, true) + assert.Equal(t, d2.Spec.Template.Spec.DNSPolicy, v1.DNSClusterFirstWithHostNet) +} + +func TestDeploymentShareProcessNamespace(t *testing.T) { + // Test default + targetAllocator := targetAllocatorInstance() + otelcol := collectorInstance() + params := Params{ + Collector: otelcol, + TargetAllocator: targetAllocator, + Config: config.New(), + Log: logger, + } + + d1, err := Deployment(params) + require.NoError(t, err) + assert.False(t, *d1.Spec.Template.Spec.ShareProcessNamespace) + + // Test ShareProcessNamespace=true + params.TargetAllocator.Spec.ShareProcessNamespace = true + + d2, err := Deployment(params) + require.NoError(t, err) + assert.True(t, *d2.Spec.Template.Spec.ShareProcessNamespace) +} + +func TestDeploymentPriorityClassName(t *testing.T) { + // Test default + targetAllocator := targetAllocatorInstance() + otelcol := collectorInstance() + params := Params{ + Collector: otelcol, + TargetAllocator: targetAllocator, + Config: config.New(), + Log: logger, + } + + d1, err := Deployment(params) + require.NoError(t, err) + assert.Empty(t, d1.Spec.Template.Spec.PriorityClassName) + + // Test PriorityClassName + params.TargetAllocator.Spec.PriorityClassName = "test-class" + + d2, err := Deployment(params) + require.NoError(t, err) + assert.Equal(t, params.TargetAllocator.Spec.PriorityClassName, d2.Spec.Template.Spec.PriorityClassName) +} + +func TestDeploymentTerminationGracePeriodSeconds(t *testing.T) { + // Test default + targetAllocator := targetAllocatorInstance() + otelcol := collectorInstance() + params := Params{ + Collector: otelcol, + TargetAllocator: targetAllocator, + Config: config.New(), + Log: logger, + } + + d1, err := Deployment(params) + require.NoError(t, err) + assert.Nil(t, d1.Spec.Template.Spec.TerminationGracePeriodSeconds) + + // Test TerminationGracePeriodSeconds + gracePeriod := int64(100) + params.TargetAllocator.Spec.TerminationGracePeriodSeconds = &gracePeriod + + d2, err := Deployment(params) + require.NoError(t, err) + assert.Equal(t, gracePeriod, *d2.Spec.Template.Spec.TerminationGracePeriodSeconds) +} + +func TestDeploymentDNSConfig(t *testing.T) { + // Test default + otelcol := collectorInstance() + // prepare + targetAllocator := v1alpha1.TargetAllocator{ + ObjectMeta: metav1.ObjectMeta{ + Name: "my-instance", + Namespace: "my-namespace", + }, + Spec: v1alpha1.TargetAllocatorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + PodDNSConfig: v1.PodDNSConfig{ + Nameservers: []string{"8.8.8.8"}, + Searches: []string{"my.dns.search.suffix"}, + }, + }, + }, + } + params := Params{ + Collector: otelcol, + TargetAllocator: targetAllocator, + Config: config.New(), + Log: logger, + } + + // test + d, err := Deployment(params) + require.NoError(t, err) + assert.Equal(t, "my-instance-targetallocator", d.Name) + assert.Equal(t, v1.DNSPolicy("None"), d.Spec.Template.Spec.DNSPolicy) + assert.Equal(t, d.Spec.Template.Spec.DNSConfig.Nameservers, []string{"8.8.8.8"}) +} diff --git a/internal/manifests/targetallocator/poddisruptionbudget.go b/internal/manifests/targetallocator/poddisruptionbudget.go index 695f4ed0fd..7e3b98e3da 100644 --- a/internal/manifests/targetallocator/poddisruptionbudget.go +++ b/internal/manifests/targetallocator/poddisruptionbudget.go @@ -21,12 +21,11 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" "github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils" "github.com/open-telemetry/opentelemetry-operator/internal/naming" ) -func PodDisruptionBudget(params manifests.Params) (*policyV1.PodDisruptionBudget, error) { +func PodDisruptionBudget(params Params) (*policyV1.PodDisruptionBudget, error) { // defaulting webhook should set this if the strategy is compatible, but if unset then return nil. if params.TargetAllocator.Spec.PodDisruptionBudget == nil { params.Log.Info("pdb field is unset in Spec, skipping podDisruptionBudget creation") @@ -36,7 +35,8 @@ func PodDisruptionBudget(params manifests.Params) (*policyV1.PodDisruptionBudget // defaulter doesn't set PodDisruptionBudget if the strategy isn't valid, // if PodDisruptionBudget != nil and stategy isn't correct, users have set // it wrongly - if params.TargetAllocator.Spec.AllocationStrategy != v1beta1.TargetAllocatorAllocationStrategyConsistentHashing { + if params.TargetAllocator.Spec.AllocationStrategy != v1beta1.TargetAllocatorAllocationStrategyConsistentHashing && + params.TargetAllocator.Spec.AllocationStrategy != v1beta1.TargetAllocatorAllocationStrategyPerNode { params.Log.V(4).Info("current allocation strategy not compatible, skipping podDisruptionBudget creation") return nil, fmt.Errorf("target allocator pdb has been configured but the allocation strategy isn't not compatible") } diff --git a/internal/manifests/targetallocator/poddisruptionbudget_test.go b/internal/manifests/targetallocator/poddisruptionbudget_test.go index 40ff03e64c..30e424981d 100644 --- a/internal/manifests/targetallocator/poddisruptionbudget_test.go +++ b/internal/manifests/targetallocator/poddisruptionbudget_test.go @@ -15,6 +15,7 @@ package targetallocator import ( + "fmt" "testing" "github.com/stretchr/testify/assert" @@ -24,7 +25,6 @@ import ( "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1" "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" "github.com/open-telemetry/opentelemetry-operator/internal/config" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" ) type test struct { @@ -66,35 +66,37 @@ var tests = []test{ func TestPDBWithValidStrategy(t *testing.T) { for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - targetAllocator := v1alpha1.TargetAllocator{ - ObjectMeta: metav1.ObjectMeta{ - Name: "my-instance", - }, - Spec: v1alpha1.TargetAllocatorSpec{ - OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ - PodDisruptionBudget: &v1beta1.PodDisruptionBudgetSpec{ - MinAvailable: test.MinAvailable, - MaxUnavailable: test.MaxUnavailable, + for _, strategy := range []v1beta1.TargetAllocatorAllocationStrategy{v1beta1.TargetAllocatorAllocationStrategyPerNode, v1beta1.TargetAllocatorAllocationStrategyConsistentHashing} { + t.Run(fmt.Sprintf("%s-%s", strategy, test.name), func(t *testing.T) { + targetAllocator := v1alpha1.TargetAllocator{ + ObjectMeta: metav1.ObjectMeta{ + Name: "my-instance", + }, + Spec: v1alpha1.TargetAllocatorSpec{ + OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{ + PodDisruptionBudget: &v1beta1.PodDisruptionBudgetSpec{ + MinAvailable: test.MinAvailable, + MaxUnavailable: test.MaxUnavailable, + }, }, + AllocationStrategy: strategy, }, - AllocationStrategy: v1beta1.TargetAllocatorAllocationStrategyConsistentHashing, - }, - } - configuration := config.New() - pdb, err := PodDisruptionBudget(manifests.Params{ - Log: logger, - Config: configuration, - TargetAllocator: targetAllocator, - }) + } + configuration := config.New() + pdb, err := PodDisruptionBudget(Params{ + Log: logger, + Config: configuration, + TargetAllocator: targetAllocator, + }) - // verify - assert.NoError(t, err) - assert.Equal(t, "my-instance-targetallocator", pdb.Name) - assert.Equal(t, "my-instance-targetallocator", pdb.Labels["app.kubernetes.io/name"]) - assert.Equal(t, test.MinAvailable, pdb.Spec.MinAvailable) - assert.Equal(t, test.MaxUnavailable, pdb.Spec.MaxUnavailable) - }) + // verify + assert.NoError(t, err) + assert.Equal(t, "my-instance-targetallocator", pdb.Name) + assert.Equal(t, "my-instance-targetallocator", pdb.Labels["app.kubernetes.io/name"]) + assert.Equal(t, test.MinAvailable, pdb.Spec.MinAvailable) + assert.Equal(t, test.MaxUnavailable, pdb.Spec.MaxUnavailable) + }) + } } } @@ -116,7 +118,7 @@ func TestPDBWithNotValidStrategy(t *testing.T) { }, } configuration := config.New() - pdb, err := PodDisruptionBudget(manifests.Params{ + pdb, err := PodDisruptionBudget(Params{ Log: logger, Config: configuration, TargetAllocator: targetAllocator, @@ -136,7 +138,7 @@ func TestNoPDB(t *testing.T) { }, } configuration := config.New() - pdb, err := PodDisruptionBudget(manifests.Params{ + pdb, err := PodDisruptionBudget(Params{ Log: logger, Config: configuration, TargetAllocator: targetAllocator, diff --git a/internal/manifests/targetallocator/service.go b/internal/manifests/targetallocator/service.go index 799bcf34a6..2888002f09 100644 --- a/internal/manifests/targetallocator/service.go +++ b/internal/manifests/targetallocator/service.go @@ -20,13 +20,12 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" "github.com/open-telemetry/opentelemetry-operator/internal/autodetect/certmanager" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" "github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils" "github.com/open-telemetry/opentelemetry-operator/internal/naming" "github.com/open-telemetry/opentelemetry-operator/pkg/featuregate" ) -func Service(params manifests.Params) *corev1.Service { +func Service(params Params) *corev1.Service { name := naming.TAService(params.TargetAllocator.Name) labels := manifestutils.Labels(params.TargetAllocator.ObjectMeta, name, params.TargetAllocator.Spec.Image, ComponentOpenTelemetryTargetAllocator, nil) selector := manifestutils.TASelectorLabels(params.TargetAllocator, ComponentOpenTelemetryTargetAllocator) diff --git a/internal/manifests/targetallocator/service_test.go b/internal/manifests/targetallocator/service_test.go index 3bb5676234..f21e0fe5d6 100644 --- a/internal/manifests/targetallocator/service_test.go +++ b/internal/manifests/targetallocator/service_test.go @@ -22,14 +22,13 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" "github.com/open-telemetry/opentelemetry-operator/internal/config" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" ) func TestServicePorts(t *testing.T) { targetAllocator := targetAllocatorInstance() cfg := config.New() - params := manifests.Params{ + params := Params{ TargetAllocator: targetAllocator, Config: cfg, Log: logger, diff --git a/internal/manifests/targetallocator/serviceaccount.go b/internal/manifests/targetallocator/serviceaccount.go index 05ae797ef1..c46afbb94b 100644 --- a/internal/manifests/targetallocator/serviceaccount.go +++ b/internal/manifests/targetallocator/serviceaccount.go @@ -19,7 +19,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" "github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils" "github.com/open-telemetry/opentelemetry-operator/internal/naming" ) @@ -34,7 +33,7 @@ func ServiceAccountName(instance v1alpha1.TargetAllocator) string { } // ServiceAccount returns the service account for the given instance. -func ServiceAccount(params manifests.Params) *corev1.ServiceAccount { +func ServiceAccount(params Params) *corev1.ServiceAccount { if len(params.TargetAllocator.Spec.ServiceAccount) > 0 { return nil } diff --git a/internal/manifests/targetallocator/serviceaccount_test.go b/internal/manifests/targetallocator/serviceaccount_test.go index 85d11c1c50..717a173ff4 100644 --- a/internal/manifests/targetallocator/serviceaccount_test.go +++ b/internal/manifests/targetallocator/serviceaccount_test.go @@ -23,7 +23,6 @@ import ( "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1" "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" "github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils" ) @@ -63,7 +62,7 @@ func TestServiceAccountOverrideName(t *testing.T) { } func TestServiceAccountDefault(t *testing.T) { - params := manifests.Params{ + params := Params{ TargetAllocator: v1alpha1.TargetAllocator{ ObjectMeta: metav1.ObjectMeta{ Name: "my-instance", @@ -73,9 +72,9 @@ func TestServiceAccountDefault(t *testing.T) { expected := &corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ Name: "my-instance-targetallocator", - Namespace: params.OtelCol.Namespace, + Namespace: params.Collector.Namespace, Labels: manifestutils.Labels(params.TargetAllocator.ObjectMeta, "my-instance-targetallocator", params.TargetAllocator.Spec.Image, ComponentOpenTelemetryTargetAllocator, nil), - Annotations: params.OtelCol.Annotations, + Annotations: params.Collector.Annotations, }, } @@ -87,7 +86,7 @@ func TestServiceAccountDefault(t *testing.T) { } func TestServiceAccountOverride(t *testing.T) { - params := manifests.Params{ + params := Params{ TargetAllocator: v1alpha1.TargetAllocator{ ObjectMeta: metav1.ObjectMeta{ Name: "my-instance", diff --git a/internal/manifests/targetallocator/servicemonitor.go b/internal/manifests/targetallocator/servicemonitor.go index a22e4b50f2..21168d9d36 100644 --- a/internal/manifests/targetallocator/servicemonitor.go +++ b/internal/manifests/targetallocator/servicemonitor.go @@ -18,13 +18,12 @@ import ( monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" "github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils" "github.com/open-telemetry/opentelemetry-operator/internal/naming" ) // ServiceMonitor returns the service monitor for the given instance. -func ServiceMonitor(params manifests.Params) *monitoringv1.ServiceMonitor { +func ServiceMonitor(params Params) *monitoringv1.ServiceMonitor { name := naming.TargetAllocator(params.TargetAllocator.Name) labels := manifestutils.Labels(params.TargetAllocator.ObjectMeta, name, params.TargetAllocator.Spec.Image, ComponentOpenTelemetryTargetAllocator, nil) diff --git a/internal/manifests/targetallocator/servicemonitor_test.go b/internal/manifests/targetallocator/servicemonitor_test.go index dbe31a505c..256794bba4 100644 --- a/internal/manifests/targetallocator/servicemonitor_test.go +++ b/internal/manifests/targetallocator/servicemonitor_test.go @@ -24,7 +24,6 @@ import ( "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1" "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" "github.com/open-telemetry/opentelemetry-operator/internal/config" - "github.com/open-telemetry/opentelemetry-operator/internal/manifests" ) func TestDesiredServiceMonitors(t *testing.T) { @@ -41,7 +40,7 @@ func TestDesiredServiceMonitors(t *testing.T) { } cfg := config.New() - params := manifests.Params{ + params := Params{ TargetAllocator: ta, Config: cfg, Log: logger, diff --git a/internal/manifests/targetallocator/targetallocator.go b/internal/manifests/targetallocator/targetallocator.go index d9c95c828c..0325249887 100644 --- a/internal/manifests/targetallocator/targetallocator.go +++ b/internal/manifests/targetallocator/targetallocator.go @@ -15,9 +15,15 @@ package targetallocator import ( + "github.com/go-logr/logr" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/tools/record" "sigs.k8s.io/controller-runtime/pkg/client" + "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1" + "github.com/open-telemetry/opentelemetry-operator/apis/v1beta1" "github.com/open-telemetry/opentelemetry-operator/internal/autodetect/certmanager" + "github.com/open-telemetry/opentelemetry-operator/internal/config" "github.com/open-telemetry/opentelemetry-operator/internal/manifests" "github.com/open-telemetry/opentelemetry-operator/pkg/featuregate" ) @@ -27,12 +33,9 @@ const ( ) // Build creates the manifest for the TargetAllocator resource. -func Build(params manifests.Params) ([]client.Object, error) { +func Build(params Params) ([]client.Object, error) { var resourceManifests []client.Object - if !params.OtelCol.Spec.TargetAllocator.Enabled { - return resourceManifests, nil - } - resourceFactories := []manifests.K8sManifestFactory{ + resourceFactories := []manifests.K8sManifestFactory[Params]{ manifests.Factory(ConfigMap), manifests.Factory(Deployment), manifests.FactoryWithoutError(ServiceAccount), @@ -62,3 +65,13 @@ func Build(params manifests.Params) ([]client.Object, error) { } return resourceManifests, nil } + +type Params struct { + Client client.Client + Recorder record.EventRecorder + Scheme *runtime.Scheme + Log logr.Logger + Collector v1beta1.OpenTelemetryCollector + TargetAllocator v1alpha1.TargetAllocator + Config config.Config +} diff --git a/internal/manifests/targetallocator/testdata/test.yaml b/internal/manifests/targetallocator/testdata/test.yaml index f03253f78e..c5bc470846 100644 --- a/internal/manifests/targetallocator/testdata/test.yaml +++ b/internal/manifests/targetallocator/testdata/test.yaml @@ -18,5 +18,4 @@ service: pipelines: metrics: receivers: [prometheus, jaeger] - processors: [] exporters: [debug] diff --git a/internal/naming/main.go b/internal/naming/main.go index 0fdc3fca5e..8642f618c3 100644 --- a/internal/naming/main.go +++ b/internal/naming/main.go @@ -142,8 +142,8 @@ func ClusterRoleBinding(otelcol, namespace string) string { } // TAService returns the name to use for the TargetAllocator service. -func TAService(otelcol string) string { - return DNSName(Truncate("%s-targetallocator", 63, otelcol)) +func TAService(taName string) string { + return DNSName(Truncate("%s-targetallocator", 63, taName)) } // OpAMPBridgeService returns the name to use for the OpAMPBridge service. diff --git a/internal/webhook/podmutation/webhookhandler.go b/internal/webhook/podmutation/webhookhandler.go index 926c3d4512..b4ad5fa7fc 100644 --- a/internal/webhook/podmutation/webhookhandler.go +++ b/internal/webhook/podmutation/webhookhandler.go @@ -46,7 +46,7 @@ type WebhookHandler interface { // the implementation. type podMutationWebhook struct { client client.Client - decoder *admission.Decoder + decoder admission.Decoder logger logr.Logger podMutators []PodMutator config config.Config @@ -58,7 +58,7 @@ type PodMutator interface { } // NewWebhookHandler creates a new WebhookHandler. -func NewWebhookHandler(cfg config.Config, logger logr.Logger, decoder *admission.Decoder, cl client.Client, podMutators []PodMutator) WebhookHandler { +func NewWebhookHandler(cfg config.Config, logger logr.Logger, decoder admission.Decoder, cl client.Client, podMutators []PodMutator) WebhookHandler { return &podMutationWebhook{ config: cfg, decoder: decoder, diff --git a/main.go b/main.go index ebd9915156..ef36f80f39 100644 --- a/main.go +++ b/main.go @@ -251,13 +251,14 @@ func main() { Metrics: metricsserver.Options{ BindAddress: metricsAddr, }, - HealthProbeBindAddress: probeAddr, - LeaderElection: enableLeaderElection, - LeaderElectionID: "9f7554c3.opentelemetry.io", - LeaseDuration: &leaseDuration, - RenewDeadline: &renewDeadline, - RetryPeriod: &retryPeriod, - PprofBindAddress: pprofAddr, + HealthProbeBindAddress: probeAddr, + LeaderElection: enableLeaderElection, + LeaderElectionID: "9f7554c3.opentelemetry.io", + LeaderElectionReleaseOnCancel: true, + LeaseDuration: &leaseDuration, + RenewDeadline: &renewDeadline, + RetryPeriod: &retryPeriod, + PprofBindAddress: pprofAddr, WebhookServer: webhook.NewServer(webhook.Options{ Port: webhookPort, TLSOpts: optionsTlSOptsFuncs, @@ -438,6 +439,7 @@ func main() { } setupLog.Info("starting manager") + // NOTE: We enable LeaderElectionReleaseOnCancel, and to be safe we need to exit right after the manager does if err := mgr.Start(ctx); err != nil { setupLog.Error(err, "problem running manager") os.Exit(1) diff --git a/pkg/collector/upgrade/v0_19_0_test.go b/pkg/collector/upgrade/v0_19_0_test.go index e925c07a67..63162e5dce 100644 --- a/pkg/collector/upgrade/v0_19_0_test.go +++ b/pkg/collector/upgrade/v0_19_0_test.go @@ -149,7 +149,6 @@ service: pipelines: traces: receivers: [otlp] - processors: [] exporters: [otlp] `, res.Spec.Config) } diff --git a/pkg/collector/upgrade/v0_24_0_test.go b/pkg/collector/upgrade/v0_24_0_test.go index 2dc1341be9..caf53bdfd2 100644 --- a/pkg/collector/upgrade/v0_24_0_test.go +++ b/pkg/collector/upgrade/v0_24_0_test.go @@ -88,7 +88,6 @@ service: pipelines: traces: receivers: [otlp] - processors: [] exporters: [otlp] `, res.Spec.Config) } diff --git a/pkg/collector/upgrade/v0_31_0_test.go b/pkg/collector/upgrade/v0_31_0_test.go index e1e290478c..861cdb492d 100644 --- a/pkg/collector/upgrade/v0_31_0_test.go +++ b/pkg/collector/upgrade/v0_31_0_test.go @@ -83,7 +83,6 @@ service: metrics: exporters: - prometheusremotewrite - processors: [] receivers: - influxdb `, res.Spec.Config) diff --git a/pkg/collector/upgrade/v0_36_0_test.go b/pkg/collector/upgrade/v0_36_0_test.go index 9dfaac1207..7695d39c00 100644 --- a/pkg/collector/upgrade/v0_36_0_test.go +++ b/pkg/collector/upgrade/v0_36_0_test.go @@ -120,7 +120,6 @@ service: traces: exporters: - otlp - processors: [] receivers: - otlp/mtls `, res.Spec.Config) diff --git a/pkg/collector/upgrade/v0_38_0_test.go b/pkg/collector/upgrade/v0_38_0_test.go index afb105af4f..26e3d69bbb 100644 --- a/pkg/collector/upgrade/v0_38_0_test.go +++ b/pkg/collector/upgrade/v0_38_0_test.go @@ -100,7 +100,6 @@ service: traces: exporters: - otlp - processors: [] receivers: - otlp/mtls telemetry: @@ -125,7 +124,6 @@ service: traces: exporters: - otlp - processors: [] receivers: - otlp/mtls telemetry: diff --git a/pkg/collector/upgrade/v0_39_0_test.go b/pkg/collector/upgrade/v0_39_0_test.go index 4fbb3f01f8..204c576c8a 100644 --- a/pkg/collector/upgrade/v0_39_0_test.go +++ b/pkg/collector/upgrade/v0_39_0_test.go @@ -101,7 +101,6 @@ service: metrics: exporters: - debug - processors: [] receivers: - apache/mtls - apache @@ -165,7 +164,6 @@ service: traces: exporters: - debug - processors: [] receivers: - otlp/mtls - otlp diff --git a/pkg/collector/upgrade/v0_41_0_test.go b/pkg/collector/upgrade/v0_41_0_test.go index 496a864549..01903044a5 100644 --- a/pkg/collector/upgrade/v0_41_0_test.go +++ b/pkg/collector/upgrade/v0_41_0_test.go @@ -87,7 +87,6 @@ service: metrics: exporters: - debug - processors: [] receivers: - otlp `, res.Spec.Config) @@ -139,7 +138,6 @@ service: metrics: exporters: - debug - processors: [] receivers: - otlp `, res.Spec.Config) diff --git a/pkg/collector/upgrade/v0_43_0_test.go b/pkg/collector/upgrade/v0_43_0_test.go index a71e0137c0..348b1d0b96 100644 --- a/pkg/collector/upgrade/v0_43_0_test.go +++ b/pkg/collector/upgrade/v0_43_0_test.go @@ -61,7 +61,6 @@ service: pipelines: traces: receivers: [otlp/mtls] - processors: [] exporters: [otlp] `, }, @@ -99,7 +98,6 @@ service: traces: exporters: - otlp - processors: [] receivers: - otlp/mtls telemetry: @@ -121,7 +119,6 @@ service: traces: exporters: - otlp - processors: [] receivers: - otlp/mtls telemetry: diff --git a/pkg/collector/upgrade/v0_57_2_test.go b/pkg/collector/upgrade/v0_57_2_test.go index 8d1e49587e..a3ca59919c 100644 --- a/pkg/collector/upgrade/v0_57_2_test.go +++ b/pkg/collector/upgrade/v0_57_2_test.go @@ -96,7 +96,6 @@ service: metrics: exporters: - debug - processors: [] receivers: - otlp `, upgradedInstance.Spec.Config) diff --git a/pkg/instrumentation/apachehttpd.go b/pkg/instrumentation/apachehttpd.go index 5c85dbff9a..34925473bb 100644 --- a/pkg/instrumentation/apachehttpd.go +++ b/pkg/instrumentation/apachehttpd.go @@ -152,7 +152,7 @@ func injectApacheHttpdagent(_ logr.Logger, apacheSpec v1alpha1.ApacheHttpd, pod "cp -r /opt/opentelemetry/* " + apacheAgentDirFull + " && " + // setup logging configuration from template "export agentLogDir=$(echo \"" + apacheAgentDirFull + "/logs\" | sed 's,/,\\\\/,g') && " + - "cat " + apacheAgentDirFull + "/conf/appdynamics_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > " + apacheAgentDirFull + "/conf/appdynamics_sdk_log4cxx.xml &&" + + "cat " + apacheAgentDirFull + "/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > " + apacheAgentDirFull + "/conf/opentelemetry_sdk_log4cxx.xml &&" + // Create agent configuration file by pasting content of env var to a file "echo \"$" + apacheAttributesEnvVar + "\" > " + apacheAgentConfDirFull + "/" + apacheAgentConfigFile + " && " + "sed -i 's/" + apacheServiceInstanceId + "/'${" + apacheServiceInstanceIdEnvVar + "}'/g' " + apacheAgentConfDirFull + "/" + apacheAgentConfigFile + " && " + diff --git a/pkg/instrumentation/apachehttpd_test.go b/pkg/instrumentation/apachehttpd_test.go index ded356054b..e938f40c70 100644 --- a/pkg/instrumentation/apachehttpd_test.go +++ b/pkg/instrumentation/apachehttpd_test.go @@ -79,7 +79,7 @@ func TestInjectApacheHttpdagent(t *testing.T) { Image: "foo/bar:1", Command: []string{"/bin/sh", "-c"}, Args: []string{ - "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, + "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, Env: []corev1.EnvVar{ { Name: apacheAttributesEnvVar, @@ -172,7 +172,7 @@ func TestInjectApacheHttpdagent(t *testing.T) { Image: "foo/bar:1", Command: []string{"/bin/sh", "-c"}, Args: []string{ - "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /opt/customPath/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, + "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /opt/customPath/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, Env: []corev1.EnvVar{ { Name: apacheAttributesEnvVar, @@ -266,7 +266,7 @@ func TestInjectApacheHttpdagent(t *testing.T) { Image: "foo/bar:1", Command: []string{"/bin/sh", "-c"}, Args: []string{ - "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, + "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, Env: []corev1.EnvVar{ { Name: apacheAttributesEnvVar, @@ -365,7 +365,7 @@ func TestInjectApacheHttpdagent(t *testing.T) { Image: "foo/bar:1", Command: []string{"/bin/sh", "-c"}, Args: []string{ - "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, + "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, Env: []corev1.EnvVar{ { Name: apacheAttributesEnvVar, @@ -476,7 +476,7 @@ func TestInjectApacheHttpdagentUnknownNamespace(t *testing.T) { Image: "foo/bar:1", Command: []string{"/bin/sh", "-c"}, Args: []string{ - "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, + "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, Env: []corev1.EnvVar{ { Name: apacheAttributesEnvVar, diff --git a/pkg/instrumentation/nginx.go b/pkg/instrumentation/nginx.go index 4855e5a54f..80b53d8295 100644 --- a/pkg/instrumentation/nginx.go +++ b/pkg/instrumentation/nginx.go @@ -191,7 +191,7 @@ cp -ar /opt/opentelemetry/* ${NGINX_AGENT_DIR_FULL} \n NGINX_VERSION=$(cat ${NGINX_AGENT_CONF_DIR_FULL}/version.txt) \n NGINX_AGENT_LOG_DIR=$(echo "${NGINX_AGENT_DIR_FULL}/logs" | sed 's,/,\\/,g') \n \n -cat ${NGINX_AGENT_DIR_FULL}/conf/appdynamics_sdk_log4cxx.xml.template | sed 's,__agent_log_dir__,'${NGINX_AGENT_LOG_DIR}',g' > ${NGINX_AGENT_DIR_FULL}/conf/appdynamics_sdk_log4cxx.xml \n +cat ${NGINX_AGENT_DIR_FULL}/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's,__agent_log_dir__,'${NGINX_AGENT_LOG_DIR}',g' > ${NGINX_AGENT_DIR_FULL}/conf/opentelemetry_sdk_log4cxx.xml \n echo -e $OTEL_NGINX_AGENT_CONF > ${NGINX_AGENT_CONF_DIR_FULL}/opentelemetry_agent.conf \n sed -i "s,${NGINX_SID_PLACEHOLDER},${OTEL_NGINX_SERVICE_INSTANCE_ID},g" ${NGINX_AGENT_CONF_DIR_FULL}/opentelemetry_agent.conf \n sed -i "1s,^,load_module ${NGINX_AGENT_DIR_FULL}/WebServerModule/Nginx/${NGINX_VERSION}/ngx_http_opentelemetry_module.so;\\n,g" ${NGINX_AGENT_CONF_DIR_FULL}/${NGINX_CONFIG_FILE} \n diff --git a/pkg/instrumentation/nginx_test.go b/pkg/instrumentation/nginx_test.go index 6284f430bc..91d2a9d8c8 100644 --- a/pkg/instrumentation/nginx_test.go +++ b/pkg/instrumentation/nginx_test.go @@ -28,7 +28,7 @@ import ( var nginxSdkInitContainerTestCommand = "echo -e $OTEL_NGINX_I13N_SCRIPT > /opt/opentelemetry-webserver/agent/nginx_instrumentation.sh && chmod +x /opt/opentelemetry-webserver/agent/nginx_instrumentation.sh && cat /opt/opentelemetry-webserver/agent/nginx_instrumentation.sh && /opt/opentelemetry-webserver/agent/nginx_instrumentation.sh \"/opt/opentelemetry-webserver/agent\" \"/opt/opentelemetry-webserver/source-conf\" \"nginx.conf\" \"<>\"" var nginxSdkInitContainerTestCommandCustomFile = "echo -e $OTEL_NGINX_I13N_SCRIPT > /opt/opentelemetry-webserver/agent/nginx_instrumentation.sh && chmod +x /opt/opentelemetry-webserver/agent/nginx_instrumentation.sh && cat /opt/opentelemetry-webserver/agent/nginx_instrumentation.sh && /opt/opentelemetry-webserver/agent/nginx_instrumentation.sh \"/opt/opentelemetry-webserver/agent\" \"/opt/opentelemetry-webserver/source-conf\" \"custom-nginx.conf\" \"<>\"" -var nginxSdkInitContainerI13nScript = "\nNGINX_AGENT_DIR_FULL=$1\t\\n\nNGINX_AGENT_CONF_DIR_FULL=$2 \\n\nNGINX_CONFIG_FILE=$3 \\n\nNGINX_SID_PLACEHOLDER=$4 \\n\nNGINX_SID_VALUE=$5 \\n\necho \"Input Parameters: $@\" \\n\nset -x \\n\n\\n\ncp -ar /opt/opentelemetry/* ${NGINX_AGENT_DIR_FULL} \\n\n\\n\nNGINX_VERSION=$(cat ${NGINX_AGENT_CONF_DIR_FULL}/version.txt) \\n\nNGINX_AGENT_LOG_DIR=$(echo \"${NGINX_AGENT_DIR_FULL}/logs\" | sed 's,/,\\\\/,g') \\n\n\\n\ncat ${NGINX_AGENT_DIR_FULL}/conf/appdynamics_sdk_log4cxx.xml.template | sed 's,__agent_log_dir__,'${NGINX_AGENT_LOG_DIR}',g' > ${NGINX_AGENT_DIR_FULL}/conf/appdynamics_sdk_log4cxx.xml \\n\necho -e $OTEL_NGINX_AGENT_CONF > ${NGINX_AGENT_CONF_DIR_FULL}/opentelemetry_agent.conf \\n\nsed -i \"s,${NGINX_SID_PLACEHOLDER},${OTEL_NGINX_SERVICE_INSTANCE_ID},g\" ${NGINX_AGENT_CONF_DIR_FULL}/opentelemetry_agent.conf \\n\nsed -i \"1s,^,load_module ${NGINX_AGENT_DIR_FULL}/WebServerModule/Nginx/${NGINX_VERSION}/ngx_http_opentelemetry_module.so;\\\\n,g\" ${NGINX_AGENT_CONF_DIR_FULL}/${NGINX_CONFIG_FILE} \\n\nsed -i \"1s,^,env OTEL_RESOURCE_ATTRIBUTES;\\\\n,g\" ${NGINX_AGENT_CONF_DIR_FULL}/${NGINX_CONFIG_FILE} \\n\nmv ${NGINX_AGENT_CONF_DIR_FULL}/opentelemetry_agent.conf ${NGINX_AGENT_CONF_DIR_FULL}/conf.d \\n\n\t\t" +var nginxSdkInitContainerI13nScript = "\nNGINX_AGENT_DIR_FULL=$1\t\\n\nNGINX_AGENT_CONF_DIR_FULL=$2 \\n\nNGINX_CONFIG_FILE=$3 \\n\nNGINX_SID_PLACEHOLDER=$4 \\n\nNGINX_SID_VALUE=$5 \\n\necho \"Input Parameters: $@\" \\n\nset -x \\n\n\\n\ncp -ar /opt/opentelemetry/* ${NGINX_AGENT_DIR_FULL} \\n\n\\n\nNGINX_VERSION=$(cat ${NGINX_AGENT_CONF_DIR_FULL}/version.txt) \\n\nNGINX_AGENT_LOG_DIR=$(echo \"${NGINX_AGENT_DIR_FULL}/logs\" | sed 's,/,\\\\/,g') \\n\n\\n\ncat ${NGINX_AGENT_DIR_FULL}/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's,__agent_log_dir__,'${NGINX_AGENT_LOG_DIR}',g' > ${NGINX_AGENT_DIR_FULL}/conf/opentelemetry_sdk_log4cxx.xml \\n\necho -e $OTEL_NGINX_AGENT_CONF > ${NGINX_AGENT_CONF_DIR_FULL}/opentelemetry_agent.conf \\n\nsed -i \"s,${NGINX_SID_PLACEHOLDER},${OTEL_NGINX_SERVICE_INSTANCE_ID},g\" ${NGINX_AGENT_CONF_DIR_FULL}/opentelemetry_agent.conf \\n\nsed -i \"1s,^,load_module ${NGINX_AGENT_DIR_FULL}/WebServerModule/Nginx/${NGINX_VERSION}/ngx_http_opentelemetry_module.so;\\\\n,g\" ${NGINX_AGENT_CONF_DIR_FULL}/${NGINX_CONFIG_FILE} \\n\nsed -i \"1s,^,env OTEL_RESOURCE_ATTRIBUTES;\\\\n,g\" ${NGINX_AGENT_CONF_DIR_FULL}/${NGINX_CONFIG_FILE} \\n\nmv ${NGINX_AGENT_CONF_DIR_FULL}/opentelemetry_agent.conf ${NGINX_AGENT_CONF_DIR_FULL}/conf.d \\n\n\t\t" func TestInjectNginxSDK(t *testing.T) { diff --git a/pkg/instrumentation/podmutator_test.go b/pkg/instrumentation/podmutator_test.go index 0166ee0451..155635100d 100644 --- a/pkg/instrumentation/podmutator_test.go +++ b/pkg/instrumentation/podmutator_test.go @@ -2874,7 +2874,7 @@ func TestMutatePod(t *testing.T) { Image: "otel/apache-httpd:1", Command: []string{"/bin/sh", "-c"}, Args: []string{ - "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, + "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, Env: []corev1.EnvVar{ { Name: apacheAttributesEnvVar, diff --git a/pkg/instrumentation/sdk_test.go b/pkg/instrumentation/sdk_test.go index 9c8a6f3e1b..b8ca0cd503 100644 --- a/pkg/instrumentation/sdk_test.go +++ b/pkg/instrumentation/sdk_test.go @@ -1408,7 +1408,7 @@ func TestInjectApacheHttpd(t *testing.T) { Image: "img:1", Command: []string{"/bin/sh", "-c"}, Args: []string{ - "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/appdynamics_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, + "cp -r /opt/opentelemetry/* /opt/opentelemetry-webserver/agent && export agentLogDir=$(echo \"/opt/opentelemetry-webserver/agent/logs\" | sed 's,/,\\\\/,g') && cat /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml.template | sed 's/__agent_log_dir__/'${agentLogDir}'/g' > /opt/opentelemetry-webserver/agent/conf/opentelemetry_sdk_log4cxx.xml &&echo \"$OTEL_APACHE_AGENT_CONF\" > /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && sed -i 's/<>/'${APACHE_SERVICE_INSTANCE_ID}'/g' /opt/opentelemetry-webserver/source-conf/opentemetry_agent.conf && echo 'Include /usr/local/apache2/conf/opentemetry_agent.conf' >> /opt/opentelemetry-webserver/source-conf/httpd.conf"}, Env: []corev1.EnvVar{ { Name: apacheAttributesEnvVar, diff --git a/pkg/sidecar/pod.go b/pkg/sidecar/pod.go index 1f98e22170..d7db13484c 100644 --- a/pkg/sidecar/pod.go +++ b/pkg/sidecar/pod.go @@ -34,7 +34,7 @@ const ( // add a new sidecar container to the given pod, based on the given OpenTelemetryCollector. func add(cfg config.Config, logger logr.Logger, otelcol v1beta1.OpenTelemetryCollector, pod corev1.Pod, attributes []corev1.EnvVar) (corev1.Pod, error) { - otelColCfg, err := collector.ReplaceConfig(otelcol) + otelColCfg, err := collector.ReplaceConfig(otelcol, nil) if err != nil { return pod, err } diff --git a/tests/e2e-autoscale/autoscale/00-install.yaml b/tests/e2e-autoscale/autoscale/00-install.yaml index 8f5f5fa92d..b442d36735 100644 --- a/tests/e2e-autoscale/autoscale/00-install.yaml +++ b/tests/e2e-autoscale/autoscale/00-install.yaml @@ -43,7 +43,6 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] --- apiVersion: opentelemetry.io/v1alpha1 @@ -81,5 +80,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-autoscale/autoscale/01-install.yaml b/tests/e2e-autoscale/autoscale/01-install.yaml index a9a6d549c2..94e6f40acd 100644 --- a/tests/e2e-autoscale/autoscale/01-install.yaml +++ b/tests/e2e-autoscale/autoscale/01-install.yaml @@ -40,5 +40,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [logging] \ No newline at end of file diff --git a/tests/e2e-autoscale/autoscale/04-install.yaml b/tests/e2e-autoscale/autoscale/04-install.yaml index 8f32f16d37..8e09cb9806 100644 --- a/tests/e2e-autoscale/autoscale/04-install.yaml +++ b/tests/e2e-autoscale/autoscale/04-install.yaml @@ -37,7 +37,6 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] --- apiVersion: opentelemetry.io/v1alpha1 @@ -70,5 +69,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-instrumentation/instrumentation-apache-httpd/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-apache-httpd/00-install-collector.yaml index e42ef04d1c..b07909ca02 100644 --- a/tests/e2e-instrumentation/instrumentation-apache-httpd/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-apache-httpd/00-install-collector.yaml @@ -16,6 +16,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/00-install-collector.yaml index a532d324e2..3246238efb 100644 --- a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/00-install-collector.yaml @@ -18,5 +18,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-instrumentation/instrumentation-dotnet-multicontainer/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-dotnet-multicontainer/00-install-collector.yaml index b00affd4ce..5db3bc0afb 100644 --- a/tests/e2e-instrumentation/instrumentation-dotnet-multicontainer/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-dotnet-multicontainer/00-install-collector.yaml @@ -19,5 +19,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-instrumentation/instrumentation-dotnet-musl/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-dotnet-musl/00-install-collector.yaml index 71b4d56052..37f7f9a8c3 100644 --- a/tests/e2e-instrumentation/instrumentation-dotnet-musl/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-dotnet-musl/00-install-collector.yaml @@ -18,6 +18,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [logging] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-dotnet/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-dotnet/00-install-collector.yaml index fe390c6cae..34a26ebb2c 100644 --- a/tests/e2e-instrumentation/instrumentation-dotnet/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-dotnet/00-install-collector.yaml @@ -18,6 +18,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-go/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-go/00-install-collector.yaml index b00affd4ce..5db3bc0afb 100644 --- a/tests/e2e-instrumentation/instrumentation-go/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-go/00-install-collector.yaml @@ -19,5 +19,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-instrumentation/instrumentation-java-multicontainer/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-java-multicontainer/00-install-collector.yaml index b00affd4ce..5db3bc0afb 100644 --- a/tests/e2e-instrumentation/instrumentation-java-multicontainer/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-java-multicontainer/00-install-collector.yaml @@ -19,5 +19,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-instrumentation/instrumentation-java-other-ns/02-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-java-other-ns/02-install-collector.yaml index fe390c6cae..34a26ebb2c 100644 --- a/tests/e2e-instrumentation/instrumentation-java-other-ns/02-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-java-other-ns/02-install-collector.yaml @@ -18,6 +18,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-java/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-java/00-install-collector.yaml index fe390c6cae..34a26ebb2c 100644 --- a/tests/e2e-instrumentation/instrumentation-java/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-java/00-install-collector.yaml @@ -18,6 +18,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-nginx-contnr-secctx/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-nginx-contnr-secctx/00-install-collector.yaml index 812f4358c0..62420ec130 100644 --- a/tests/e2e-instrumentation/instrumentation-nginx-contnr-secctx/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-nginx-contnr-secctx/00-install-collector.yaml @@ -16,6 +16,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [logging] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/00-install-collector.yaml index 812f4358c0..62420ec130 100644 --- a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/00-install-collector.yaml @@ -16,6 +16,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [logging] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-nginx/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-nginx/00-install-collector.yaml index 812f4358c0..62420ec130 100644 --- a/tests/e2e-instrumentation/instrumentation-nginx/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-nginx/00-install-collector.yaml @@ -16,6 +16,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [logging] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-nodejs-multicontainer/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-nodejs-multicontainer/00-install-collector.yaml index b00affd4ce..5db3bc0afb 100644 --- a/tests/e2e-instrumentation/instrumentation-nodejs-multicontainer/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-nodejs-multicontainer/00-install-collector.yaml @@ -19,5 +19,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-instrumentation/instrumentation-nodejs/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-nodejs/00-install-collector.yaml index fe390c6cae..34a26ebb2c 100644 --- a/tests/e2e-instrumentation/instrumentation-nodejs/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-nodejs/00-install-collector.yaml @@ -18,6 +18,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-python-multicontainer/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-python-multicontainer/00-install-collector.yaml index b00affd4ce..5db3bc0afb 100644 --- a/tests/e2e-instrumentation/instrumentation-python-multicontainer/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-python-multicontainer/00-install-collector.yaml @@ -19,5 +19,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-instrumentation/instrumentation-python/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-python/00-install-collector.yaml index fe390c6cae..34a26ebb2c 100644 --- a/tests/e2e-instrumentation/instrumentation-python/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-python/00-install-collector.yaml @@ -18,6 +18,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] mode: sidecar diff --git a/tests/e2e-instrumentation/instrumentation-sdk/00-install-collector.yaml b/tests/e2e-instrumentation/instrumentation-sdk/00-install-collector.yaml index fe390c6cae..34a26ebb2c 100644 --- a/tests/e2e-instrumentation/instrumentation-sdk/00-install-collector.yaml +++ b/tests/e2e-instrumentation/instrumentation-sdk/00-install-collector.yaml @@ -18,6 +18,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] mode: sidecar diff --git a/tests/e2e-metadata-filters/annotations/00-install.yaml b/tests/e2e-metadata-filters/annotations/00-install.yaml index e6963f4726..a505ffad54 100644 --- a/tests/e2e-metadata-filters/annotations/00-install.yaml +++ b/tests/e2e-metadata-filters/annotations/00-install.yaml @@ -21,5 +21,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e-metadata-filters/labels/00-install.yaml b/tests/e2e-metadata-filters/labels/00-install.yaml index f7728e0c2d..3442ceee40 100644 --- a/tests/e2e-metadata-filters/labels/00-install.yaml +++ b/tests/e2e-metadata-filters/labels/00-install.yaml @@ -20,5 +20,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer/00-install-collector.yaml b/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer/00-install-collector.yaml index f8e1e98e07..d2b4611e75 100644 --- a/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer/00-install-collector.yaml +++ b/tests/e2e-multi-instrumentation/instrumentation-multi-multicontainer/00-install-collector.yaml @@ -19,5 +19,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [logging] diff --git a/tests/e2e-multi-instrumentation/instrumentation-multi-no-containers/00-install-collector.yaml b/tests/e2e-multi-instrumentation/instrumentation-multi-no-containers/00-install-collector.yaml index f8e1e98e07..d2b4611e75 100644 --- a/tests/e2e-multi-instrumentation/instrumentation-multi-no-containers/00-install-collector.yaml +++ b/tests/e2e-multi-instrumentation/instrumentation-multi-no-containers/00-install-collector.yaml @@ -19,5 +19,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [logging] diff --git a/tests/e2e-multi-instrumentation/instrumentation-single-instr-first-container/00-install-collector.yaml b/tests/e2e-multi-instrumentation/instrumentation-single-instr-first-container/00-install-collector.yaml index f8e1e98e07..d2b4611e75 100644 --- a/tests/e2e-multi-instrumentation/instrumentation-single-instr-first-container/00-install-collector.yaml +++ b/tests/e2e-multi-instrumentation/instrumentation-single-instr-first-container/00-install-collector.yaml @@ -19,5 +19,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [logging] diff --git a/tests/e2e-openshift/Dockerfile b/tests/e2e-openshift/Dockerfile index 5efd816d1f..14ea7d9fce 100644 --- a/tests/e2e-openshift/Dockerfile +++ b/tests/e2e-openshift/Dockerfile @@ -1,6 +1,6 @@ -# The Dockerfile's resulting image is purpose-built for executing OpenTelemetry Operator e2e tests within the OpenShift release (https://github.com/openshift/release) using Prow CI. +# The Dockerfile's resulting image is purpose-built for executing OpenTelemetry Operator e2e tests within the OpenShift release (https://github.com/openshift/release) using Prow CI. -FROM golang:1.21 +FROM golang:1.22 # Copy the repository files COPY . /tmp/opentelemetry-operator diff --git a/tests/e2e-openshift/kafka/02-otel-kakfa-receiver.yaml b/tests/e2e-openshift/kafka/02-otel-kakfa-receiver.yaml index 78cac9f400..e5971535ca 100644 --- a/tests/e2e-openshift/kafka/02-otel-kakfa-receiver.yaml +++ b/tests/e2e-openshift/kafka/02-otel-kakfa-receiver.yaml @@ -18,5 +18,4 @@ spec: pipelines: traces: receivers: [kafka/traces] - processors: [] exporters: [debug] diff --git a/tests/e2e-openshift/kafka/03-otel-kakfa-exporter.yaml b/tests/e2e-openshift/kafka/03-otel-kakfa-exporter.yaml index 89a11bfcfe..3e1cc21dcd 100644 --- a/tests/e2e-openshift/kafka/03-otel-kakfa-exporter.yaml +++ b/tests/e2e-openshift/kafka/03-otel-kakfa-exporter.yaml @@ -21,5 +21,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [kafka/traces] diff --git a/tests/e2e-openshift/monitoring/01-otel-collector.yaml b/tests/e2e-openshift/monitoring/01-otel-collector.yaml index 8420879089..4eadf515d6 100644 --- a/tests/e2e-openshift/monitoring/01-otel-collector.yaml +++ b/tests/e2e-openshift/monitoring/01-otel-collector.yaml @@ -20,5 +20,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-openshift/monitoring/04-use-prometheus-exporter.yaml b/tests/e2e-openshift/monitoring/04-use-prometheus-exporter.yaml index 4eb57f2c9a..5d1f8f64b0 100644 --- a/tests/e2e-openshift/monitoring/04-use-prometheus-exporter.yaml +++ b/tests/e2e-openshift/monitoring/04-use-prometheus-exporter.yaml @@ -21,5 +21,4 @@ spec: pipelines: metrics: receivers: [otlp] - processors: [] exporters: [prometheus] diff --git a/tests/e2e-openshift/multi-cluster/02-otlp-receiver.yaml b/tests/e2e-openshift/multi-cluster/02-otlp-receiver.yaml index ab493d8ea5..732fb94f8e 100644 --- a/tests/e2e-openshift/multi-cluster/02-otlp-receiver.yaml +++ b/tests/e2e-openshift/multi-cluster/02-otlp-receiver.yaml @@ -27,7 +27,6 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [otlp] ingress: route: diff --git a/tests/e2e-openshift/otlp-metrics-traces/02-otel-metrics-collector.yaml b/tests/e2e-openshift/otlp-metrics-traces/02-otel-metrics-collector.yaml index db821a729f..0ff520ecc2 100644 --- a/tests/e2e-openshift/otlp-metrics-traces/02-otel-metrics-collector.yaml +++ b/tests/e2e-openshift/otlp-metrics-traces/02-otel-metrics-collector.yaml @@ -30,9 +30,7 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [otlp] metrics: receivers: [otlp] - processors: [] exporters: [prometheus] diff --git a/tests/e2e-openshift/route/00-install.yaml b/tests/e2e-openshift/route/00-install.yaml index 1c060e5a07..33d3ab1e22 100644 --- a/tests/e2e-openshift/route/00-install.yaml +++ b/tests/e2e-openshift/route/00-install.yaml @@ -26,5 +26,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-openshift/scrape-in-cluster-monitoring/create-otel-instance.yaml b/tests/e2e-openshift/scrape-in-cluster-monitoring/create-otel-instance.yaml index f8d53af4ab..636157af36 100644 --- a/tests/e2e-openshift/scrape-in-cluster-monitoring/create-otel-instance.yaml +++ b/tests/e2e-openshift/scrape-in-cluster-monitoring/create-otel-instance.yaml @@ -42,5 +42,4 @@ spec: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [debug] diff --git a/tests/e2e-pdb/pdb/00-install.yaml b/tests/e2e-pdb/pdb/00-install.yaml index 05e3cd4db4..ab60fa3e82 100644 --- a/tests/e2e-pdb/pdb/00-install.yaml +++ b/tests/e2e-pdb/pdb/00-install.yaml @@ -28,5 +28,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [logging] \ No newline at end of file diff --git a/tests/e2e-pdb/target-allocator/00-install.yaml b/tests/e2e-pdb/target-allocator/00-install.yaml index edf944e0a7..04a5ac6c34 100644 --- a/tests/e2e-pdb/target-allocator/00-install.yaml +++ b/tests/e2e-pdb/target-allocator/00-install.yaml @@ -30,5 +30,4 @@ spec: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [logging] diff --git a/tests/e2e-prometheuscr/create-pm-prometheus-exporters/00-install.yaml b/tests/e2e-prometheuscr/create-pm-prometheus-exporters/00-install.yaml index 5440bee174..754e2818aa 100644 --- a/tests/e2e-prometheuscr/create-pm-prometheus-exporters/00-install.yaml +++ b/tests/e2e-prometheuscr/create-pm-prometheus-exporters/00-install.yaml @@ -31,5 +31,4 @@ spec: pipelines: metrics: receivers: [otlp] - processors: [] exporters: [prometheus/dev, prometheus/prod] diff --git a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/01-install.yaml b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/01-install.yaml index b03318eb4c..5328b34962 100644 --- a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/01-install.yaml +++ b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/01-install.yaml @@ -25,5 +25,4 @@ spec: pipelines: metrics: receivers: [otlp] - processors: [] exporters: [prometheus/dev, prometheus/prod] diff --git a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/02-install.yaml b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/02-install.yaml index e275da42eb..7c8eba5da7 100644 --- a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/02-install.yaml +++ b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/02-install.yaml @@ -22,5 +22,4 @@ spec: pipelines: metrics: receivers: [otlp] - processors: [] exporters: [prometheus/prod] diff --git a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/03-install.yaml b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/03-install.yaml index fe782b4d33..3a264958d6 100644 --- a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/03-install.yaml +++ b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/03-install.yaml @@ -22,5 +22,4 @@ spec: pipelines: metrics: receivers: [otlp] - processors: [] exporters: [prometheus/prod] diff --git a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/04-install.yaml b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/04-install.yaml index 5578a7da8e..e6912f9718 100644 --- a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/04-install.yaml +++ b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/04-install.yaml @@ -22,5 +22,4 @@ spec: pipelines: metrics: receivers: [otlp] - processors: [] exporters: [prometheus/prod] diff --git a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/05-install.yaml b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/05-install.yaml index 8e300294e5..5219aba4ee 100644 --- a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/05-install.yaml +++ b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/05-install.yaml @@ -28,5 +28,4 @@ spec: pipelines: metrics: receivers: [otlp] - processors: [] exporters: [prometheus/dev, prometheus/prod, prometheusremotewrite/prometheus] diff --git a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/06-install.yaml b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/06-install.yaml index 028458da18..da4dd97562 100644 --- a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/06-install.yaml +++ b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/06-install.yaml @@ -25,5 +25,4 @@ spec: pipelines: metrics: receivers: [otlp] - processors: [] exporters: [prometheus/dev] diff --git a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/08-install.yaml b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/08-install.yaml index 97d2b32757..da7d129dc2 100644 --- a/tests/e2e-prometheuscr/create-sm-prometheus-exporters/08-install.yaml +++ b/tests/e2e-prometheuscr/create-sm-prometheus-exporters/08-install.yaml @@ -98,7 +98,6 @@ spec: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [prometheus] mode: statefulset targetAllocator: diff --git a/tests/e2e-targetallocator/targetallocator-features/00-assert.yaml b/tests/e2e-targetallocator/targetallocator-features/00-assert.yaml index 92ed1d29c5..fb1aaebc23 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-31b1d381 + name: stateful-collector-85dbe673 name: otc-internal - emptyDir: {} name: testvolume diff --git a/tests/e2e-targetallocator/targetallocator-features/00-install.yaml b/tests/e2e-targetallocator/targetallocator-features/00-install.yaml index 8366133eab..26eed14f12 100644 --- a/tests/e2e-targetallocator/targetallocator-features/00-install.yaml +++ b/tests/e2e-targetallocator/targetallocator-features/00-install.yaml @@ -70,7 +70,6 @@ spec: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [debug] mode: statefulset diff --git a/tests/e2e-targetallocator/targetallocator-kubernetessd/00-assert.yaml b/tests/e2e-targetallocator/targetallocator-kubernetessd/00-assert.yaml index 300d2668b4..93f7e176a2 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-8236b782 + name: prometheus-kubernetessd-collector-699cdaa1 data: collector.yaml: | exporters: @@ -33,7 +33,6 @@ data: metrics: exporters: - prometheus - processors: [] receivers: - prometheus --- diff --git a/tests/e2e-targetallocator/targetallocator-kubernetessd/00-install.yaml b/tests/e2e-targetallocator/targetallocator-kubernetessd/00-install.yaml index 893712184d..c1ba46519f 100644 --- a/tests/e2e-targetallocator/targetallocator-kubernetessd/00-install.yaml +++ b/tests/e2e-targetallocator/targetallocator-kubernetessd/00-install.yaml @@ -152,7 +152,6 @@ spec: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [prometheus] mode: daemonset serviceAccount: collector diff --git a/tests/e2e-targetallocator/targetallocator-prometheuscr/00-assert.yaml b/tests/e2e-targetallocator/targetallocator-prometheuscr/00-assert.yaml index 4afae1a5ee..dd705e927b 100644 --- a/tests/e2e-targetallocator/targetallocator-prometheuscr/00-assert.yaml +++ b/tests/e2e-targetallocator/targetallocator-prometheuscr/00-assert.yaml @@ -38,9 +38,8 @@ data: metrics: exporters: - prometheus - processors: [] receivers: - prometheus kind: ConfigMap metadata: - name: prometheus-cr-collector-b88fa6e7 + name: prometheus-cr-collector-52e1d2ae diff --git a/tests/e2e-targetallocator/targetallocator-prometheuscr/00-install.yaml b/tests/e2e-targetallocator/targetallocator-prometheuscr/00-install.yaml index 65a9807454..201491ec56 100644 --- a/tests/e2e-targetallocator/targetallocator-prometheuscr/00-install.yaml +++ b/tests/e2e-targetallocator/targetallocator-prometheuscr/00-install.yaml @@ -147,7 +147,6 @@ spec: pipelines: metrics: receivers: [prometheus] - processors: [] exporters: [prometheus] mode: statefulset serviceAccount: collector diff --git a/tests/e2e-upgrade/upgrade-test/00-install.yaml b/tests/e2e-upgrade/upgrade-test/00-install.yaml index 9ae9054a40..25ca94c6c3 100644 --- a/tests/e2e-upgrade/upgrade-test/00-install.yaml +++ b/tests/e2e-upgrade/upgrade-test/00-install.yaml @@ -24,5 +24,4 @@ spec: pipelines: traces: receivers: [jaeger,otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e-upgrade/upgrade-test/02-upgrade-collector.yaml b/tests/e2e-upgrade/upgrade-test/02-upgrade-collector.yaml index a2aefad52a..71e740e03a 100644 --- a/tests/e2e-upgrade/upgrade-test/02-upgrade-collector.yaml +++ b/tests/e2e-upgrade/upgrade-test/02-upgrade-collector.yaml @@ -24,5 +24,4 @@ spec: pipelines: traces: receivers: [jaeger,otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/daemonset-features/01-install.yaml b/tests/e2e/daemonset-features/01-install.yaml index c452864d7a..48eadd581e 100644 --- a/tests/e2e/daemonset-features/01-install.yaml +++ b/tests/e2e/daemonset-features/01-install.yaml @@ -17,5 +17,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/env-vars/00-install-collector.yaml b/tests/e2e/env-vars/00-install-collector.yaml index fe390c6cae..34a26ebb2c 100644 --- a/tests/e2e/env-vars/00-install-collector.yaml +++ b/tests/e2e/env-vars/00-install-collector.yaml @@ -18,6 +18,5 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] mode: sidecar diff --git a/tests/e2e/ingress-subdomains/00-install.yaml b/tests/e2e/ingress-subdomains/00-install.yaml index 3f2cff5686..cc1911bb0f 100644 --- a/tests/e2e/ingress-subdomains/00-install.yaml +++ b/tests/e2e/ingress-subdomains/00-install.yaml @@ -25,5 +25,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/ingress/00-install.yaml b/tests/e2e/ingress/00-install.yaml index ce10c55a73..6f513458fe 100644 --- a/tests/e2e/ingress/00-install.yaml +++ b/tests/e2e/ingress/00-install.yaml @@ -24,5 +24,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/ingress/01-remove-ingress.yaml b/tests/e2e/ingress/01-remove-ingress.yaml index 4a6f3f637e..811c975d07 100644 --- a/tests/e2e/ingress/01-remove-ingress.yaml +++ b/tests/e2e/ingress/01-remove-ingress.yaml @@ -20,5 +20,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/managed-reconcile/00-install.yaml b/tests/e2e/managed-reconcile/00-install.yaml index c96dfca740..f675a3b81b 100644 --- a/tests/e2e/managed-reconcile/00-install.yaml +++ b/tests/e2e/managed-reconcile/00-install.yaml @@ -18,5 +18,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] \ No newline at end of file diff --git a/tests/e2e/managed-reconcile/01-assert.yaml b/tests/e2e/managed-reconcile/01-assert.yaml index 3cfdb7f49b..50f23e1d6d 100644 --- a/tests/e2e/managed-reconcile/01-assert.yaml +++ b/tests/e2e/managed-reconcile/01-assert.yaml @@ -68,5 +68,4 @@ data: pipelines: traces: receivers: [jaeger, otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/managed-reconcile/01-disable-reconciliation.yaml b/tests/e2e/managed-reconcile/01-disable-reconciliation.yaml index f837bce41c..cecc3c5ebf 100644 --- a/tests/e2e/managed-reconcile/01-disable-reconciliation.yaml +++ b/tests/e2e/managed-reconcile/01-disable-reconciliation.yaml @@ -19,7 +19,6 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] --- @@ -47,5 +46,4 @@ data: pipelines: traces: receivers: [jaeger, otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/managed-reconcile/02-assert.yaml b/tests/e2e/managed-reconcile/02-assert.yaml index 0847c94ed8..ce624d51e5 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-17ca6c13 + name: simplest-collector-ea71c537 data: collector.yaml: | receivers: @@ -67,6 +67,5 @@ data: traces: exporters: - debug - processors: [] receivers: - otlp diff --git a/tests/e2e/managed-reconcile/02-enable-reconciliation.yaml b/tests/e2e/managed-reconcile/02-enable-reconciliation.yaml index 3740997bf4..f89a3f1533 100644 --- a/tests/e2e/managed-reconcile/02-enable-reconciliation.yaml +++ b/tests/e2e/managed-reconcile/02-enable-reconciliation.yaml @@ -19,5 +19,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/multiple-configmaps/00-assert.yaml b/tests/e2e/multiple-configmaps/00-assert.yaml index b040f87074..b5555b7a90 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-17ca6c13 + name: simplest-with-configmaps-collector-ea71c537 items: - key: collector.yaml path: collector.yaml diff --git a/tests/e2e/multiple-configmaps/00-install.yaml b/tests/e2e/multiple-configmaps/00-install.yaml index 7f3fc7e990..f98567831d 100644 --- a/tests/e2e/multiple-configmaps/00-install.yaml +++ b/tests/e2e/multiple-configmaps/00-install.yaml @@ -39,5 +39,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/node-selector-collector/00-install-collectors-without-node-selector.yaml b/tests/e2e/node-selector-collector/00-install-collectors-without-node-selector.yaml index 6bc7c860a4..7e007b9267 100644 --- a/tests/e2e/node-selector-collector/00-install-collectors-without-node-selector.yaml +++ b/tests/e2e/node-selector-collector/00-install-collectors-without-node-selector.yaml @@ -21,7 +21,6 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] --- @@ -48,7 +47,6 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] --- @@ -75,5 +73,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] \ No newline at end of file diff --git a/tests/e2e/node-selector-collector/01-install-collectors-with-node-selector.yaml b/tests/e2e/node-selector-collector/01-install-collectors-with-node-selector.yaml index 11ed93ad07..b03ae2569e 100644 --- a/tests/e2e/node-selector-collector/01-install-collectors-with-node-selector.yaml +++ b/tests/e2e/node-selector-collector/01-install-collectors-with-node-selector.yaml @@ -23,7 +23,6 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] --- @@ -52,7 +51,6 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] --- @@ -81,5 +79,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] \ No newline at end of file diff --git a/tests/e2e/prometheus-config-validation/00-promreceiver-allocatorconfig.yaml b/tests/e2e/prometheus-config-validation/00-promreceiver-allocatorconfig.yaml index 17e7d4ec0c..98eee2af39 100644 --- a/tests/e2e/prometheus-config-validation/00-promreceiver-allocatorconfig.yaml +++ b/tests/e2e/prometheus-config-validation/00-promreceiver-allocatorconfig.yaml @@ -71,7 +71,6 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] mode: statefulset targetAllocator: diff --git a/tests/e2e/prometheus-config-validation/01-promreceiver-labeldrop.yaml b/tests/e2e/prometheus-config-validation/01-promreceiver-labeldrop.yaml index 0f0765eeb9..422d40e561 100644 --- a/tests/e2e/prometheus-config-validation/01-promreceiver-labeldrop.yaml +++ b/tests/e2e/prometheus-config-validation/01-promreceiver-labeldrop.yaml @@ -44,5 +44,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/prometheus-config-validation/02-promreceiver-allocatorconfig-extra.yaml b/tests/e2e/prometheus-config-validation/02-promreceiver-allocatorconfig-extra.yaml index 52b74c0012..78fbba3f3e 100644 --- a/tests/e2e/prometheus-config-validation/02-promreceiver-allocatorconfig-extra.yaml +++ b/tests/e2e/prometheus-config-validation/02-promreceiver-allocatorconfig-extra.yaml @@ -47,6 +47,5 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/prometheus-config-validation/03-promreceiver-nopromconfig.yaml b/tests/e2e/prometheus-config-validation/03-promreceiver-nopromconfig.yaml index 3e1e76ec81..d5e72ecfff 100644 --- a/tests/e2e/prometheus-config-validation/03-promreceiver-nopromconfig.yaml +++ b/tests/e2e/prometheus-config-validation/03-promreceiver-nopromconfig.yaml @@ -42,6 +42,5 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-daemonset/00-install.yaml b/tests/e2e/smoke-daemonset/00-install.yaml index aa49f7f538..695cfe15b4 100644 --- a/tests/e2e/smoke-daemonset/00-install.yaml +++ b/tests/e2e/smoke-daemonset/00-install.yaml @@ -20,5 +20,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-dns-config/00-assert.yaml b/tests/e2e/smoke-dns-config/00-assert.yaml new file mode 100644 index 0000000000..b51caf645e --- /dev/null +++ b/tests/e2e/smoke-dns-config/00-assert.yaml @@ -0,0 +1,14 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: poddnsconfig-collector +spec: + template: + spec: + dnsConfig: + nameservers: + - 8.8.8.8 + searches: + - my.dns.search.suffix +status: + readyReplicas: 1 diff --git a/tests/e2e/smoke-dns-config/00-install.yaml b/tests/e2e/smoke-dns-config/00-install.yaml new file mode 100644 index 0000000000..724ac558a6 --- /dev/null +++ b/tests/e2e/smoke-dns-config/00-install.yaml @@ -0,0 +1,28 @@ +apiVersion: opentelemetry.io/v1beta1 +kind: OpenTelemetryCollector +metadata: + name: poddnsconfig +spec: + mode: "deployment" + podDnsConfig: + nameservers: + - 8.8.8.8 + searches: + - my.dns.search.suffix + config: + receivers: + otlp: + protocols: + grpc: + http: + processors: + batch: + timeout: 10s + exporters: + logging: + service: + pipelines: + traces: + receivers: [otlp] + processors: [batch] + exporters: [logging] diff --git a/tests/e2e/smoke-dns-config/chainsaw-test.yaml b/tests/e2e/smoke-dns-config/chainsaw-test.yaml new file mode 100644 index 0000000000..036896d055 --- /dev/null +++ b/tests/e2e/smoke-dns-config/chainsaw-test.yaml @@ -0,0 +1,13 @@ +apiVersion: chainsaw.kyverno.io/v1alpha1 +kind: Test +metadata: + creationTimestamp: null + name: smoke-pod-dns-config +spec: + steps: + - name: step-00 + try: + - apply: + file: 00-install.yaml + - assert: + file: 00-assert.yaml diff --git a/tests/e2e/smoke-init-containers/00-install.yaml b/tests/e2e/smoke-init-containers/00-install.yaml index a0eb85cdea..b9c8e029c4 100644 --- a/tests/e2e/smoke-init-containers/00-install.yaml +++ b/tests/e2e/smoke-init-containers/00-install.yaml @@ -25,5 +25,4 @@ spec: pipelines: traces: receivers: [jaeger,otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-pod-annotations/00-install.yaml b/tests/e2e/smoke-pod-annotations/00-install.yaml index d1e17a83b3..d5d752eadb 100644 --- a/tests/e2e/smoke-pod-annotations/00-install.yaml +++ b/tests/e2e/smoke-pod-annotations/00-install.yaml @@ -22,5 +22,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-pod-labels/00-install.yaml b/tests/e2e/smoke-pod-labels/00-install.yaml index 032e5c614d..69e00f4e95 100644 --- a/tests/e2e/smoke-pod-labels/00-install.yaml +++ b/tests/e2e/smoke-pod-labels/00-install.yaml @@ -26,5 +26,4 @@ spec: pipelines: traces: receivers: [otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-ports/00-install.yaml b/tests/e2e/smoke-ports/00-install.yaml index 1326c61f40..cf47b6a137 100644 --- a/tests/e2e/smoke-ports/00-install.yaml +++ b/tests/e2e/smoke-ports/00-install.yaml @@ -23,5 +23,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-restarting-deployment/00-install.yaml b/tests/e2e/smoke-restarting-deployment/00-install.yaml index 705047cffd..d6daa5940f 100644 --- a/tests/e2e/smoke-restarting-deployment/00-install.yaml +++ b/tests/e2e/smoke-restarting-deployment/00-install.yaml @@ -15,5 +15,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-restarting-deployment/01-install-second-config.yaml b/tests/e2e/smoke-restarting-deployment/01-install-second-config.yaml index 13856cf51e..dc2afd32ca 100644 --- a/tests/e2e/smoke-restarting-deployment/01-install-second-config.yaml +++ b/tests/e2e/smoke-restarting-deployment/01-install-second-config.yaml @@ -18,6 +18,5 @@ spec: pipelines: traces: receivers: [jaeger, otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-shareprocessnamespace/00-install.yaml b/tests/e2e/smoke-shareprocessnamespace/00-install.yaml index 4334d07f51..2e956247ba 100644 --- a/tests/e2e/smoke-shareprocessnamespace/00-install.yaml +++ b/tests/e2e/smoke-shareprocessnamespace/00-install.yaml @@ -22,5 +22,4 @@ spec: pipelines: traces: receivers: [jaeger,otlp] - processors: [] exporters: [debug] \ No newline at end of file diff --git a/tests/e2e/smoke-sidecar-other-namespace/00-install.yaml b/tests/e2e/smoke-sidecar-other-namespace/00-install.yaml index 125b485dbf..8c81d7a207 100644 --- a/tests/e2e/smoke-sidecar-other-namespace/00-install.yaml +++ b/tests/e2e/smoke-sidecar-other-namespace/00-install.yaml @@ -25,5 +25,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-sidecar/00-install.yaml b/tests/e2e/smoke-sidecar/00-install.yaml index ad33d3353e..02d27d838d 100644 --- a/tests/e2e/smoke-sidecar/00-install.yaml +++ b/tests/e2e/smoke-sidecar/00-install.yaml @@ -18,5 +18,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-simplest-v1beta1/00-install.yaml b/tests/e2e/smoke-simplest-v1beta1/00-install.yaml index 9db391fc63..1214ebe3c1 100644 --- a/tests/e2e/smoke-simplest-v1beta1/00-install.yaml +++ b/tests/e2e/smoke-simplest-v1beta1/00-install.yaml @@ -21,5 +21,4 @@ spec: pipelines: traces: receivers: [jaeger,otlp] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-simplest/00-install.yaml b/tests/e2e/smoke-simplest/00-install.yaml index 0fb69308c7..a782d7f679 100644 --- a/tests/e2e/smoke-simplest/00-install.yaml +++ b/tests/e2e/smoke-simplest/00-install.yaml @@ -21,5 +21,4 @@ spec: pipelines: traces: receivers: [jaeger,otlp] - processors: [] exporters: [debug] \ No newline at end of file diff --git a/tests/e2e/smoke-statefulset/00-install.yaml b/tests/e2e/smoke-statefulset/00-install.yaml index 86b39af574..020ff50390 100644 --- a/tests/e2e/smoke-statefulset/00-install.yaml +++ b/tests/e2e/smoke-statefulset/00-install.yaml @@ -16,5 +16,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/smoke-targetallocator/00-assert.yaml b/tests/e2e/smoke-targetallocator/00-assert.yaml index 53d8bc5a89..a6d96e2496 100644 --- a/tests/e2e/smoke-targetallocator/00-assert.yaml +++ b/tests/e2e/smoke-targetallocator/00-assert.yaml @@ -40,9 +40,8 @@ data: traces: exporters: - debug - processors: [] receivers: - jaeger kind: ConfigMap metadata: - name: stateful-collector-fb278632 + name: stateful-collector-2687b61c diff --git a/tests/e2e/smoke-targetallocator/00-install.yaml b/tests/e2e/smoke-targetallocator/00-install.yaml index 585a293aa0..5eac75d547 100644 --- a/tests/e2e/smoke-targetallocator/00-install.yaml +++ b/tests/e2e/smoke-targetallocator/00-install.yaml @@ -60,7 +60,6 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] mode: statefulset targetAllocator: diff --git a/tests/e2e/smoke-targetallocator/01-change-ta-config.yaml b/tests/e2e/smoke-targetallocator/01-change-ta-config.yaml index 1907f75446..7ea423226d 100644 --- a/tests/e2e/smoke-targetallocator/01-change-ta-config.yaml +++ b/tests/e2e/smoke-targetallocator/01-change-ta-config.yaml @@ -34,5 +34,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/statefulset-features/00-assert.yaml b/tests/e2e/statefulset-features/00-assert.yaml index 5363d785b9..c03d1a24ac 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-f0fa6faa + name: stateful-collector-81dcbcb5 name: otc-internal - emptyDir: {} name: testvolume diff --git a/tests/e2e/statefulset-features/00-install.yaml b/tests/e2e/statefulset-features/00-install.yaml index d144a8ec83..d2a934a440 100644 --- a/tests/e2e/statefulset-features/00-install.yaml +++ b/tests/e2e/statefulset-features/00-install.yaml @@ -30,5 +30,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] diff --git a/tests/e2e/statefulset-features/01-assert.yaml b/tests/e2e/statefulset-features/01-assert.yaml index c68dc9aa80..79434c1a67 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-f0fa6faa + name: stateful-collector-81dcbcb5 name: otc-internal - emptyDir: {} name: testvolume diff --git a/tests/e2e/statefulset-features/01-update-volume-claim-templates.yaml b/tests/e2e/statefulset-features/01-update-volume-claim-templates.yaml index 633d10b911..5f181f8701 100644 --- a/tests/e2e/statefulset-features/01-update-volume-claim-templates.yaml +++ b/tests/e2e/statefulset-features/01-update-volume-claim-templates.yaml @@ -30,5 +30,4 @@ spec: pipelines: traces: receivers: [jaeger] - processors: [] exporters: [debug] \ No newline at end of file diff --git a/tests/instrumentation-e2e-apps/apache-httpd/Dockerfile b/tests/test-e2e-apps/apache-httpd/Dockerfile similarity index 100% rename from tests/instrumentation-e2e-apps/apache-httpd/Dockerfile rename to tests/test-e2e-apps/apache-httpd/Dockerfile diff --git a/tests/test-e2e-apps/bridge-server/Dockerfile b/tests/test-e2e-apps/bridge-server/Dockerfile new file mode 100644 index 0000000000..4504946f1a --- /dev/null +++ b/tests/test-e2e-apps/bridge-server/Dockerfile @@ -0,0 +1,11 @@ +FROM golang:1.22-alpine as builder + +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +COPY . . +RUN CGO_ENABLED=0 GOOS=linux GO111MODULE=on go build -o bridge-server main.go + +FROM scratch +COPY --from=builder /app/bridge-server . +ENTRYPOINT ["./bridge-server"] diff --git a/tests/test-e2e-apps/bridge-server/data/agent.go b/tests/test-e2e-apps/bridge-server/data/agent.go new file mode 100644 index 0000000000..c892582e11 --- /dev/null +++ b/tests/test-e2e-apps/bridge-server/data/agent.go @@ -0,0 +1,455 @@ +package data + +import ( + "bytes" + "context" + "crypto/sha256" + "encoding/json" + "sync" + "time" + + "github.com/google/uuid" + "google.golang.org/protobuf/proto" + + "github.com/open-telemetry/opamp-go/protobufs" + "github.com/open-telemetry/opamp-go/server/types" +) + +var _ json.Marshaler = &Agent{} + +type InstanceId uuid.UUID + +// Agent represents a connected Agent. +type Agent struct { + // Some fields in this struct are exported so that we can render them in the UI. + + // Agent's instance id. This is an immutable field. + InstanceId InstanceId + InstanceIdStr string + + // Connection to the Agent. + conn types.Connection + + // mutex for the fields that follow it. + mux sync.RWMutex + + // Agent's current status. + Status *protobufs.AgentToServer + + // The time when the agent has started. Valid only if Status.Health.Up==true + StartedAt time.Time + + // Effective config reported by the Agent. + EffectiveConfig map[string]string + + // Optional special remote config for this particular instance defined by + // the user in the UI. + CustomInstanceConfig map[string]string + + // Remote config that we will give to this Agent. + remoteConfig *protobufs.AgentRemoteConfig + + // Channels to notify when this Agent's status is updated next time. + statusUpdateWatchers []chan<- struct{} +} + +func (agent *Agent) MarshalJSON() ([]byte, error) { + return json.Marshal(&struct { + Status *protobufs.AgentToServer `json:"status"` + StartedAt time.Time `json:"started_at"` + EffectiveConfig map[string]string `json:"effective_config"` + }{ + Status: agent.Status, + StartedAt: agent.StartedAt, + EffectiveConfig: agent.EffectiveConfig, + }) +} + +func NewAgent( + instanceId InstanceId, + conn types.Connection, +) *Agent { + agent := &Agent{InstanceId: instanceId, InstanceIdStr: uuid.UUID(instanceId).String(), conn: conn} + + return agent +} + +// CloneReadonly returns a copy of the Agent that is safe to read. +// Functions that modify the Agent should not be called on the cloned copy. +func (agent *Agent) CloneReadonly() *Agent { + agent.mux.RLock() + defer agent.mux.RUnlock() + return &Agent{ + InstanceId: agent.InstanceId, + InstanceIdStr: uuid.UUID(agent.InstanceId).String(), + Status: proto.Clone(agent.Status).(*protobufs.AgentToServer), + EffectiveConfig: agent.EffectiveConfig, + CustomInstanceConfig: agent.CustomInstanceConfig, + remoteConfig: proto.Clone(agent.remoteConfig).(*protobufs.AgentRemoteConfig), + StartedAt: agent.StartedAt, + } +} + +// UpdateStatus updates the status of the Agent struct based on the newly received +// status report and sets appropriate fields in the response message to be sent +// to the Agent. +func (agent *Agent) UpdateStatus( + statusMsg *protobufs.AgentToServer, + response *protobufs.ServerToAgent, +) { + agent.mux.Lock() + + agent.processStatusUpdate(statusMsg, response) + + if statusMsg.ConnectionSettingsRequest != nil { + //agent.processConnectionSettingsRequest(statusMsg.ConnectionSettingsRequest.Opamp, response) + } + + statusUpdateWatchers := agent.statusUpdateWatchers + agent.statusUpdateWatchers = nil + + agent.mux.Unlock() + + // Notify watcher outside mutex to avoid blocking the mutex for too long. + notifyStatusWatchers(statusUpdateWatchers) +} + +func notifyStatusWatchers(statusUpdateWatchers []chan<- struct{}) { + // Notify everyone who is waiting on this Agent's status updates. + for _, ch := range statusUpdateWatchers { + select { + case ch <- struct{}{}: + default: + } + } +} + +func (agent *Agent) updateAgentDescription(newStatus *protobufs.AgentToServer) (agentDescrChanged bool) { + prevStatus := agent.Status + + if agent.Status == nil { + // First time this Agent reports a status, remember it. + agent.Status = newStatus + agentDescrChanged = true + } else { + // Not a new Agent. Update the Status. + agent.Status.SequenceNum = newStatus.SequenceNum + + // Check what's changed in the AgentDescription. + if newStatus.AgentDescription != nil { + // If the AgentDescription field is set it means the Agent tells us + // something is changed in the field since the last status report + // (or this is the first report). + // Make full comparison of previous and new descriptions to see if it + // really is different. + if prevStatus != nil && proto.Equal(prevStatus.AgentDescription, newStatus.AgentDescription) { + // Agent description didn't change. + agentDescrChanged = false + } else { + // Yes, the description is different, update it. + agent.Status.AgentDescription = newStatus.AgentDescription + agentDescrChanged = true + } + } else { + // AgentDescription field is not set, which means description didn't change. + agentDescrChanged = false + } + + // Update remote config status if it is included and is different from what we have. + if newStatus.RemoteConfigStatus != nil && + !proto.Equal(agent.Status.RemoteConfigStatus, newStatus.RemoteConfigStatus) { + agent.Status.RemoteConfigStatus = newStatus.RemoteConfigStatus + } + } + return agentDescrChanged +} + +func (agent *Agent) updateHealth(newStatus *protobufs.AgentToServer) { + if newStatus.Health == nil { + return + } + + agent.Status.Health = newStatus.Health + + if agent.Status != nil && agent.Status.Health != nil && agent.Status.Health.Healthy { + agent.StartedAt = time.Unix(0, int64(agent.Status.Health.StartTimeUnixNano)).UTC() + } +} + +func (agent *Agent) updateRemoteConfigStatus(newStatus *protobufs.AgentToServer) { + // Update remote config status if it is included and is different from what we have. + if newStatus.RemoteConfigStatus != nil { + agent.Status.RemoteConfigStatus = newStatus.RemoteConfigStatus + } +} + +func (agent *Agent) updateStatusField(newStatus *protobufs.AgentToServer) (agentDescrChanged bool) { + if agent.Status == nil { + // First time this Agent reports a status, remember it. + agent.Status = newStatus + agentDescrChanged = true + } + + agentDescrChanged = agent.updateAgentDescription(newStatus) || agentDescrChanged + agent.updateRemoteConfigStatus(newStatus) + agent.updateHealth(newStatus) + + return agentDescrChanged +} + +func (agent *Agent) updateEffectiveConfig( + newStatus *protobufs.AgentToServer, + response *protobufs.ServerToAgent, +) { + // Update effective config if provided. + if newStatus.EffectiveConfig != nil { + if newStatus.EffectiveConfig.ConfigMap != nil { + agent.Status.EffectiveConfig = newStatus.EffectiveConfig + + // Convert to string for displaying purposes. + agent.EffectiveConfig = map[string]string{} + for key, cfg := range newStatus.EffectiveConfig.ConfigMap.ConfigMap { + // TODO: we just concatenate parts of effective config as a single + // blob to show in the UI. A proper approach is to keep the effective + // config as a set and show the set in the UI. + agent.EffectiveConfig[key] = string(cfg.Body) + } + } + } +} + +func (agent *Agent) hasCapability(capability protobufs.AgentCapabilities) bool { + return agent.Status.Capabilities&uint64(capability) != 0 +} + +func (agent *Agent) processStatusUpdate( + newStatus *protobufs.AgentToServer, + response *protobufs.ServerToAgent, +) { + // We don't have any status for this Agent, or we lost the previous status update from the Agent, so our + // current status is not up-to-date. + lostPreviousUpdate := (agent.Status == nil) || (agent.Status != nil && agent.Status.SequenceNum+1 != newStatus.SequenceNum) + + agentDescrChanged := agent.updateStatusField(newStatus) + + // Check if any fields were omitted in the status report. + effectiveConfigOmitted := newStatus.EffectiveConfig == nil && + agent.hasCapability(protobufs.AgentCapabilities_AgentCapabilities_ReportsEffectiveConfig) + + packageStatusesOmitted := newStatus.PackageStatuses == nil && + agent.hasCapability(protobufs.AgentCapabilities_AgentCapabilities_ReportsPackageStatuses) + + remoteConfigStatusOmitted := newStatus.RemoteConfigStatus == nil && + agent.hasCapability(protobufs.AgentCapabilities_AgentCapabilities_ReportsRemoteConfig) + + healthOmitted := newStatus.Health == nil && + agent.hasCapability(protobufs.AgentCapabilities_AgentCapabilities_ReportsHealth) + + // True if the status was not fully reported. + statusIsCompressed := effectiveConfigOmitted || packageStatusesOmitted || remoteConfigStatusOmitted || healthOmitted + + if statusIsCompressed && lostPreviousUpdate { + // The status message is not fully set in the message that we received, but we lost the previous + // status update. Request full status update from the agent. + response.Flags |= uint64(protobufs.ServerToAgentFlags_ServerToAgentFlags_ReportFullState) + } + + configChanged := false + if agentDescrChanged { + // Agent description is changed. + + // We need to recalculate the config. + configChanged = agent.calcRemoteConfig() + + // And set connection settings that are appropriate for the Agent description. + agent.calcConnectionSettings(response) + } + + // If remote config is changed and different from what the Agent has then + // send the new remote config to the Agent. + if configChanged || + (agent.Status.RemoteConfigStatus != nil && + bytes.Compare(agent.Status.RemoteConfigStatus.LastRemoteConfigHash, agent.remoteConfig.ConfigHash) != 0) { + // The new status resulted in a change in the config of the Agent or the Agent + // does not have this config (hash is different). Send the new config the Agent. + response.RemoteConfig = agent.remoteConfig + } + + agent.updateEffectiveConfig(newStatus, response) +} + +// SetCustomConfig sets a custom config for this Agent. +// notifyWhenConfigIsApplied channel is notified after the remote config is applied +// to the Agent and after the Agent reports back the effective config. +// If the provided config is equal to the current remoteConfig of the Agent +// then we will not send any config to the Agent and notifyWhenConfigIsApplied channel +// will be notified immediately. This requires that notifyWhenConfigIsApplied channel +// has a buffer size of at least 1. +func (agent *Agent) SetCustomConfig( + config *protobufs.AgentConfigMap, + notifyWhenConfigIsApplied chan<- struct{}, +) { + agent.mux.Lock() + + for key, file := range config.GetConfigMap() { + agent.CustomInstanceConfig[key] = string(file.Body) + agent.EffectiveConfig[key] = string(file.Body) + } + + configChanged := agent.calcRemoteConfig() + if configChanged { + if notifyWhenConfigIsApplied != nil { + // The caller wants to be notified when the Agent reports a status + // update next time. This is typically used in the UI to wait until + // the configuration changes are propagated successfully to the Agent. + agent.statusUpdateWatchers = append( + agent.statusUpdateWatchers, + notifyWhenConfigIsApplied, + ) + } + msg := &protobufs.ServerToAgent{ + RemoteConfig: agent.remoteConfig, + } + agent.mux.Unlock() + + agent.SendToAgent(msg) + } else { + agent.mux.Unlock() + + if notifyWhenConfigIsApplied != nil { + // No config change. We are not going to send config to the Agent and + // as a result we do not expect status update from the Agent, so we will + // just notify the waiter that the config change is done. + notifyWhenConfigIsApplied <- struct{}{} + } + } +} + +// calcRemoteConfig calculates the remote config for this Agent. It returns true if +// the calculated new config is different from the existing config stored in +// Agent.remoteConfig. +func (agent *Agent) calcRemoteConfig() bool { + hash := sha256.New() + + cfg := protobufs.AgentRemoteConfig{ + Config: &protobufs.AgentConfigMap{ + ConfigMap: map[string]*protobufs.AgentConfigFile{}, + }, + } + + // Add the custom config for this particular Agent instance. Use empty + // string as the config file name. + for key, body := range agent.CustomInstanceConfig { + cfg.Config.ConfigMap[key] = &protobufs.AgentConfigFile{ + Body: []byte(body), + } + } + + // Calculate the hash. + for k, v := range cfg.Config.ConfigMap { + hash.Write([]byte(k)) + hash.Write(v.Body) + hash.Write([]byte(v.ContentType)) + } + + cfg.ConfigHash = hash.Sum(nil) + + configChanged := !isEqualRemoteConfig(agent.remoteConfig, &cfg) + + agent.remoteConfig = &cfg + + return configChanged +} + +func isEqualRemoteConfig(c1, c2 *protobufs.AgentRemoteConfig) bool { + if c1 == c2 { + return true + } + if c1 == nil || c2 == nil { + return false + } + return isEqualConfigSet(c1.Config, c2.Config) +} + +func isEqualConfigSet(c1, c2 *protobufs.AgentConfigMap) bool { + if c1 == c2 { + return true + } + if c1 == nil || c2 == nil { + return false + } + if len(c1.ConfigMap) != len(c2.ConfigMap) { + return false + } + for k, v1 := range c1.ConfigMap { + v2, ok := c2.ConfigMap[k] + if !ok { + return false + } + if !isEqualConfigFile(v1, v2) { + return false + } + } + return true +} + +func isEqualConfigFile(f1, f2 *protobufs.AgentConfigFile) bool { + if f1 == f2 { + return true + } + if f1 == nil || f2 == nil { + return false + } + return bytes.Compare(f1.Body, f2.Body) == 0 && f1.ContentType == f2.ContentType +} + +func (agent *Agent) calcConnectionSettings(response *protobufs.ServerToAgent) { + // Here we can use Agent's description to send the appropriate connection + // settings to the Agent. + // In this simple example the connection settings do not depend on the + // Agent description, so we jst set them directly. + + response.ConnectionSettings = &protobufs.ConnectionSettingsOffers{ + Hash: nil, // TODO: calc has from settings. + Opamp: nil, + OwnMetrics: nil, + //&protobufs.TelemetryConnectionSettings{ + // // We just hard-code this to a port on a localhost on which we can + // // run an Otel Collector for demo purposes. With real production + // // servers this should likely point to an OTLP backend. + // DestinationEndpoint: "http://localhost:4318/v1/metrics", + //}, + OwnTraces: nil, + OwnLogs: nil, + OtherConnections: nil, + } +} + +func (agent *Agent) SendToAgent(msg *protobufs.ServerToAgent) { + agent.conn.Send(context.Background(), msg) +} + +func (agent *Agent) OfferConnectionSettings(offers *protobufs.ConnectionSettingsOffers) { + agent.SendToAgent( + &protobufs.ServerToAgent{ + ConnectionSettings: offers, + }, + ) +} + +func (agent *Agent) addErrorResponse(errMsg string, response *protobufs.ServerToAgent) { + logger.Println(errMsg) + if response.ErrorResponse == nil { + response.ErrorResponse = &protobufs.ServerErrorResponse{ + Type: protobufs.ServerErrorResponseType_ServerErrorResponseType_BadRequest, + ErrorMessage: errMsg, + Details: nil, + } + } else if response.ErrorResponse.Type == protobufs.ServerErrorResponseType_ServerErrorResponseType_BadRequest { + // Append this error message to the existing error message. + response.ErrorResponse.ErrorMessage += errMsg + } else { + // Can't report it since it is a different error type. + // TODO: consider adding support for reporting multiple errors of different type in the response. + } +} diff --git a/tests/test-e2e-apps/bridge-server/data/agents.go b/tests/test-e2e-apps/bridge-server/data/agents.go new file mode 100644 index 0000000000..be2e4c37e4 --- /dev/null +++ b/tests/test-e2e-apps/bridge-server/data/agents.go @@ -0,0 +1,144 @@ +package data + +import ( + "log" + "sync" + + "github.com/open-telemetry/opamp-go/protobufs" + "github.com/open-telemetry/opamp-go/protobufshelpers" + "github.com/open-telemetry/opamp-go/server/types" +) + +var logger = log.New(log.Default().Writer(), "[AGENTS] ", log.Default().Flags()|log.Lmsgprefix|log.Lmicroseconds) + +type Agents struct { + mux sync.RWMutex + agentsById map[InstanceId]*Agent + connections map[types.Connection]map[InstanceId]bool +} + +func NewAgents() *Agents { + return &Agents{ + agentsById: map[InstanceId]*Agent{}, + connections: map[types.Connection]map[InstanceId]bool{}, + } +} + +// RemoveConnection removes the connection all Agent instances associated with the +// connection. +func (a *Agents) RemoveConnection(conn types.Connection) { + a.mux.Lock() + defer a.mux.Unlock() + + for instanceId := range a.connections[conn] { + delete(a.agentsById, instanceId) + } + delete(a.connections, conn) +} + +func (a *Agents) SetCustomConfigForAgent( + agentId InstanceId, + config *protobufs.AgentConfigMap, + notifyNextStatusUpdate chan<- struct{}, +) { + agent := a.FindAgent(agentId) + if agent != nil { + agent.SetCustomConfig(config, notifyNextStatusUpdate) + } +} + +func isEqualAgentDescr(d1, d2 *protobufs.AgentDescription) bool { + if d1 == d2 { + return true + } + if d1 == nil || d2 == nil { + return false + } + return isEqualAttrs(d1.IdentifyingAttributes, d2.IdentifyingAttributes) && + isEqualAttrs(d1.NonIdentifyingAttributes, d2.NonIdentifyingAttributes) +} + +func isEqualAttrs(attrs1, attrs2 []*protobufs.KeyValue) bool { + if len(attrs1) != len(attrs2) { + return false + } + for i, a1 := range attrs1 { + a2 := attrs2[i] + if !protobufshelpers.IsEqualKeyValue(a1, a2) { + return false + } + } + return true +} + +func (a *Agents) FindAgent(agentId InstanceId) *Agent { + a.mux.RLock() + defer a.mux.RUnlock() + return a.agentsById[agentId] +} + +func (a *Agents) FindOrCreateAgent(agentId InstanceId, conn types.Connection) *Agent { + a.mux.Lock() + defer a.mux.Unlock() + + // Ensure the Agent is in the agentsById map. + agent := a.agentsById[agentId] + if agent == nil { + agent = NewAgent(agentId, conn) + a.agentsById[agentId] = agent + + // Ensure the Agent's instance id is associated with the connection. + if a.connections[conn] == nil { + a.connections[conn] = map[InstanceId]bool{} + } + a.connections[conn][agentId] = true + } + + return agent +} + +func (a *Agents) GetAgentReadonlyClone(agentId InstanceId) *Agent { + agent := a.FindAgent(agentId) + if agent == nil { + return nil + } + + // Return a clone to allow safe access after returning. + return agent.CloneReadonly() +} + +func (a *Agents) GetAllAgentsReadonlyClone() map[InstanceId]*Agent { + a.mux.RLock() + + // Clone the map first + m := map[InstanceId]*Agent{} + for id, agent := range a.agentsById { + m[id] = agent + } + a.mux.RUnlock() + + // Clone agents in the map + for id, agent := range m { + // Return a clone to allow safe access after returning. + m[id] = agent.CloneReadonly() + } + return m +} + +func (a *Agents) OfferAgentConnectionSettings( + id InstanceId, + offers *protobufs.ConnectionSettingsOffers, +) { + logger.Printf("Begin rotate client certificate for %s\n", id) + + a.mux.Lock() + defer a.mux.Unlock() + + agent, ok := a.agentsById[id] + if ok { + agent.OfferConnectionSettings(offers) + logger.Printf("Client certificate offers sent to %s\n", id) + } else { + logger.Printf("Agent %s not found\n", id) + } +} diff --git a/tests/test-e2e-apps/bridge-server/go.mod b/tests/test-e2e-apps/bridge-server/go.mod new file mode 100644 index 0000000000..355162e475 --- /dev/null +++ b/tests/test-e2e-apps/bridge-server/go.mod @@ -0,0 +1,22 @@ +module github.com/open-telemetry/opentelemetry-operator/tests/test-e2e-apps/bridge-server + +go 1.22.1 + +require ( + github.com/google/uuid v1.6.0 + github.com/oklog/ulid/v2 v2.1.0 + github.com/open-telemetry/opamp-go v0.15.0 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 + google.golang.org/protobuf v1.34.2 +) + +require ( + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/gorilla/websocket v1.5.1 // indirect + go.opentelemetry.io/otel v1.27.0 // indirect + go.opentelemetry.io/otel/metric v1.27.0 // indirect + go.opentelemetry.io/otel/trace v1.27.0 // indirect + golang.org/x/net v0.23.0 // indirect +) diff --git a/tests/test-e2e-apps/bridge-server/go.sum b/tests/test-e2e-apps/bridge-server/go.sum new file mode 100644 index 0000000000..ae499be11f --- /dev/null +++ b/tests/test-e2e-apps/bridge-server/go.sum @@ -0,0 +1,38 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU= +github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= +github.com/open-telemetry/opamp-go v0.15.0 h1:X2TWhEsGQ8GP7Uos3Ic9v/1aFUqoECZXKS7xAF5HqsA= +github.com/open-telemetry/opamp-go v0.15.0/go.mod h1:QyPeN56JXlcZt5yG5RMdZ50Ju+zMFs1Ihy/hwHyF8Oo= +github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 h1:9l89oX4ba9kHbBol3Xin3leYJ+252h0zszDtBwyKe2A= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0/go.mod h1:XLZfZboOJWHNKUv7eH0inh0E9VV6eWDFB/9yJyTLPp0= +go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg= +go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ= +go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik= +go.opentelemetry.io/otel/metric v1.27.0/go.mod h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak= +go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw= +go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tests/test-e2e-apps/bridge-server/main.go b/tests/test-e2e-apps/bridge-server/main.go new file mode 100644 index 0000000000..a3300dbb25 --- /dev/null +++ b/tests/test-e2e-apps/bridge-server/main.go @@ -0,0 +1,29 @@ +package main + +import ( + "log" + "os" + "os/signal" + + "github.com/open-telemetry/opentelemetry-operator/tests/test-e2e-apps/bridge-server/data" + "github.com/open-telemetry/opentelemetry-operator/tests/test-e2e-apps/bridge-server/opampsrv" +) + +var logger = log.New(log.Default().Writer(), "[MAIN] ", log.Default().Flags()|log.Lmsgprefix|log.Lmicroseconds) + +func main() { + + logger.Println("OpAMP Server starting...") + agents := data.NewAgents() + opampSrv := opampsrv.NewServer(agents) + opampSrv.Start() + + logger.Println("OpAMP Server running...") + + interrupt := make(chan os.Signal, 1) + signal.Notify(interrupt, os.Interrupt) + <-interrupt + + logger.Println("OpAMP Server shutting down...") + opampSrv.Stop() +} diff --git a/tests/test-e2e-apps/bridge-server/opampsrv/logger.go b/tests/test-e2e-apps/bridge-server/opampsrv/logger.go new file mode 100644 index 0000000000..d65ad9f475 --- /dev/null +++ b/tests/test-e2e-apps/bridge-server/opampsrv/logger.go @@ -0,0 +1,22 @@ +package opampsrv + +import ( + "context" + "log" + + "github.com/open-telemetry/opamp-go/client/types" +) + +var _ types.Logger = &Logger{} + +type Logger struct { + logger *log.Logger +} + +func (l *Logger) Debugf(ctx context.Context, format string, v ...interface{}) { + l.logger.Printf(format, v...) +} + +func (l *Logger) Errorf(ctx context.Context, format string, v ...interface{}) { + l.logger.Printf(format, v...) +} diff --git a/tests/test-e2e-apps/bridge-server/opampsrv/opampsrv.go b/tests/test-e2e-apps/bridge-server/opampsrv/opampsrv.go new file mode 100644 index 0000000000..99f4c008c3 --- /dev/null +++ b/tests/test-e2e-apps/bridge-server/opampsrv/opampsrv.go @@ -0,0 +1,170 @@ +package opampsrv + +import ( + "context" + "encoding/json" + "log" + "net/http" + "os" + "regexp" + + "github.com/google/uuid" + "github.com/oklog/ulid/v2" + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" + + "github.com/open-telemetry/opamp-go/protobufs" + "github.com/open-telemetry/opamp-go/server" + "github.com/open-telemetry/opamp-go/server/types" + + "github.com/open-telemetry/opentelemetry-operator/tests/test-e2e-apps/bridge-server/data" +) + +type Server struct { + opampSrv server.OpAMPServer + agents *data.Agents + logger *Logger + httpServer *http.Server +} + +func NewServer(agents *data.Agents) *Server { + logger := &Logger{ + log.New( + log.Default().Writer(), + "[OPAMP] ", + log.Default().Flags()|log.Lmsgprefix|log.Lmicroseconds, + ), + } + + srv := &Server{ + agents: agents, + logger: logger, + } + + srv.opampSrv = server.New(logger) + + return srv +} + +func (srv *Server) Start() { + settings := server.StartSettings{ + Settings: server.Settings{ + Callbacks: server.CallbacksStruct{ + OnConnectingFunc: func(request *http.Request) types.ConnectionResponse { + return types.ConnectionResponse{ + Accept: true, + ConnectionCallbacks: server.ConnectionCallbacksStruct{ + OnMessageFunc: srv.onMessage, + OnConnectionCloseFunc: srv.onDisconnect, + }, + } + }, + }, + }, + ListenEndpoint: "127.0.0.1:4320", + HTTPMiddleware: otelhttp.NewMiddleware("/v1/opamp"), + } + + mux := http.NewServeMux() + mux.HandleFunc("/agents", srv.getAgents) + mux.HandleFunc("/agents/", srv.getAgentById) + srv.httpServer = &http.Server{ + Addr: "0.0.0.0:4321", + Handler: mux, + } + go func() { + err := srv.httpServer.ListenAndServe() + if err != nil { + srv.logger.Errorf(context.Background(), "HTTP server start fail: %v", err.Error()) + os.Exit(1) + } + }() + + if err := srv.opampSrv.Start(settings); err != nil { + srv.logger.Errorf(context.Background(), "OpAMP server start fail: %v", err.Error()) + os.Exit(1) + } +} + +func (srv *Server) Stop() { + ctx := context.Background() + srv.httpServer.Shutdown(ctx) + srv.opampSrv.Stop(ctx) +} + +func (srv *Server) onDisconnect(conn types.Connection) { + srv.agents.RemoveConnection(conn) +} + +func (srv *Server) onMessage(ctx context.Context, conn types.Connection, msg *protobufs.AgentToServer) *protobufs.ServerToAgent { + // Start building the response. + response := &protobufs.ServerToAgent{} + + var instanceId data.InstanceId + if len(msg.InstanceUid) == 26 { + // This is an old-style ULID. + u, err := ulid.Parse(string(msg.InstanceUid)) + if err != nil { + srv.logger.Errorf(ctx, "Cannot parse ULID %s: %v", string(msg.InstanceUid), err) + return response + } + instanceId = data.InstanceId(u.Bytes()) + } else if len(msg.InstanceUid) == 16 { + // This is a 16 byte, new style UID. + if parsedId, err := uuid.Parse(string(msg.InstanceUid)); err != nil { + srv.logger.Errorf(ctx, "Cannot parse UUID %s: %v", string(msg.InstanceUid), err) + return response + } else { + instanceId = data.InstanceId(parsedId) + } + } else { + srv.logger.Errorf(ctx, "Invalid length of msg.InstanceUid") + return response + } + + agent := srv.agents.FindOrCreateAgent(instanceId, conn) + + // Process the status report and continue building the response. + agent.UpdateStatus(msg, response) + + // Send the response back to the Agent. + return response +} + +func (srv *Server) getAgents(writer http.ResponseWriter, request *http.Request) { + allAgents := srv.agents.GetAllAgentsReadonlyClone() + converted := map[string]*data.Agent{} + for id, agent := range allAgents { + converted[uuid.UUID(id).String()] = agent + } + marshalled, err := json.Marshal(converted) + if err != nil { + srv.logger.Errorf(request.Context(), "failed to marshal: %v", err) + writer.WriteHeader(503) + return + } + writer.Write(marshalled) +} + +func (srv *Server) getAgentById(writer http.ResponseWriter, request *http.Request) { + // Define a regex to extract the agent ID from the URL + re := regexp.MustCompile(`^/agents/([0-9a-z\-]+)$`) + matches := re.FindStringSubmatch(request.URL.Path) + if len(matches) == 0 { + http.NotFound(writer, request) + return + } + parsed, err := uuid.Parse(matches[1]) + if err != nil { + http.Error(writer, "invalid uuid", http.StatusBadRequest) + return + } + agent := srv.agents.FindAgent(data.InstanceId(parsed)) + marshalled, err := json.Marshal(agent) + if err != nil { + srv.logger.Errorf(request.Context(), "failed to marshal: %v", err) + writer.WriteHeader(503) + return + } + writer.Write(marshalled) + +} diff --git a/tests/instrumentation-e2e-apps/dotnet/Dockerfile b/tests/test-e2e-apps/dotnet/Dockerfile similarity index 100% rename from tests/instrumentation-e2e-apps/dotnet/Dockerfile rename to tests/test-e2e-apps/dotnet/Dockerfile diff --git a/tests/instrumentation-e2e-apps/golang/Dockerfile b/tests/test-e2e-apps/golang/Dockerfile similarity index 80% rename from tests/instrumentation-e2e-apps/golang/Dockerfile rename to tests/test-e2e-apps/golang/Dockerfile index fd80c06f1b..027abee61e 100644 --- a/tests/instrumentation-e2e-apps/golang/Dockerfile +++ b/tests/test-e2e-apps/golang/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21-alpine as builder +FROM golang:1.22-alpine as builder COPY main.go . RUN CGO_ENABLED=0 GOOS=linux GO111MODULE=on go build -o app main.go diff --git a/tests/instrumentation-e2e-apps/golang/main.go b/tests/test-e2e-apps/golang/main.go similarity index 100% rename from tests/instrumentation-e2e-apps/golang/main.go rename to tests/test-e2e-apps/golang/main.go diff --git a/tests/instrumentation-e2e-apps/java/DemoApplication.java b/tests/test-e2e-apps/java/DemoApplication.java similarity index 100% rename from tests/instrumentation-e2e-apps/java/DemoApplication.java rename to tests/test-e2e-apps/java/DemoApplication.java diff --git a/tests/instrumentation-e2e-apps/java/Dockerfile b/tests/test-e2e-apps/java/Dockerfile similarity index 100% rename from tests/instrumentation-e2e-apps/java/Dockerfile rename to tests/test-e2e-apps/java/Dockerfile diff --git a/tests/instrumentation-e2e-apps/java/build.gradle b/tests/test-e2e-apps/java/build.gradle similarity index 100% rename from tests/instrumentation-e2e-apps/java/build.gradle rename to tests/test-e2e-apps/java/build.gradle diff --git a/tests/instrumentation-e2e-apps/nodejs/Dockerfile b/tests/test-e2e-apps/nodejs/Dockerfile similarity index 100% rename from tests/instrumentation-e2e-apps/nodejs/Dockerfile rename to tests/test-e2e-apps/nodejs/Dockerfile diff --git a/tests/instrumentation-e2e-apps/nodejs/index.js b/tests/test-e2e-apps/nodejs/index.js similarity index 100% rename from tests/instrumentation-e2e-apps/nodejs/index.js rename to tests/test-e2e-apps/nodejs/index.js diff --git a/tests/instrumentation-e2e-apps/python/Dockerfile b/tests/test-e2e-apps/python/Dockerfile similarity index 100% rename from tests/instrumentation-e2e-apps/python/Dockerfile rename to tests/test-e2e-apps/python/Dockerfile diff --git a/tests/instrumentation-e2e-apps/python/app.py b/tests/test-e2e-apps/python/app.py similarity index 100% rename from tests/instrumentation-e2e-apps/python/app.py rename to tests/test-e2e-apps/python/app.py diff --git a/tests/instrumentation-e2e-apps/python/requirements.txt b/tests/test-e2e-apps/python/requirements.txt similarity index 100% rename from tests/instrumentation-e2e-apps/python/requirements.txt rename to tests/test-e2e-apps/python/requirements.txt diff --git a/versions.txt b/versions.txt index 1ca723f27b..bf597f61da 100644 --- a/versions.txt +++ b/versions.txt @@ -2,16 +2,16 @@ # by default with the OpenTelemetry Operator. This would usually be the latest # stable OpenTelemetry version. When you update this file, make sure to update the # the docs as well. -opentelemetry-collector=0.102.1 +opentelemetry-collector=0.103.1 # Represents the current release of the OpenTelemetry Operator. -operator=0.102.0 +operator=0.103.0 # Represents the current release of the Target Allocator. -targetallocator=0.102.0 +targetallocator=0.103.0 # Represents the current release of the Operator OpAMP Bridge. -operator-opamp-bridge=0.102.0 +operator-opamp-bridge=0.103.0 # Represents the current release of Java instrumentation. # Should match autoinstrumentation/java/version.txt @@ -23,7 +23,7 @@ autoinstrumentation-nodejs=0.51.0 # Represents the current release of Python instrumentation. # Should match value in autoinstrumentation/python/requirements.txt -autoinstrumentation-python=0.45b0 +autoinstrumentation-python=0.46b0 # Represents the current release of DotNet instrumentation. # Should match autoinstrumentation/dotnet/version.txt
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false
string Name of the referent. +This field is effectively required, but due to backwards compatibility is +allowed to be empty. Instances of this type with an empty value here are +almost certainly wrong. +TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names -TODO: Add other useful fields. apiVersion, kind, uid?
+TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
+
+ Default:
false