From 66a7ad23b4d2c05071db8caa2429c01f6e0320f0 Mon Sep 17 00:00:00 2001 From: Bill Minckler Date: Tue, 19 May 2026 15:28:47 +0000 Subject: [PATCH] remove unused otel agent charts and container --- .github/workflows/ci.yaml | 18 -- bluefield/Makefile.toml | 10 -- .../charts/nico-dpu-otel-agent/.helmignore | 8 - .../charts/nico-dpu-otel-agent/Chart.yaml | 8 - .../files/otel-agent-config.toml | 17 -- .../templates/_helpers.tpl | 47 ----- .../templates/configmap.yaml | 11 -- .../templates/daemonset.yaml | 108 ------------ .../tests/image_layout_test.yaml | 79 --------- .../nico-dpu-otel-agent/values.schema.json | 164 ------------------ .../charts/nico-dpu-otel-agent/values.yaml | 24 --- .../forge-dpu-otel-agent/Dockerfile | 40 ----- 12 files changed, 534 deletions(-) delete mode 100644 bluefield/charts/nico-dpu-otel-agent/.helmignore delete mode 100644 bluefield/charts/nico-dpu-otel-agent/Chart.yaml delete mode 100644 bluefield/charts/nico-dpu-otel-agent/files/otel-agent-config.toml delete mode 100644 bluefield/charts/nico-dpu-otel-agent/templates/_helpers.tpl delete mode 100644 bluefield/charts/nico-dpu-otel-agent/templates/configmap.yaml delete mode 100644 bluefield/charts/nico-dpu-otel-agent/templates/daemonset.yaml delete mode 100644 bluefield/charts/nico-dpu-otel-agent/tests/image_layout_test.yaml delete mode 100644 bluefield/charts/nico-dpu-otel-agent/values.schema.json delete mode 100644 bluefield/charts/nico-dpu-otel-agent/values.yaml delete mode 100644 bluefield/containers/forge-dpu-otel-agent/Dockerfile diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 00ee997b1e..56591ea49c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1129,13 +1129,6 @@ jobs: lint: 'true' template: 'true' - - name: Validate nico-dpu-otel-agent chart - uses: NVIDIA/dsx-github-actions/.github/actions/helm-validate@94bde998f5d7965576b0c663db7d5d709c918167 - with: - chart-path: bluefield/charts/nico-dpu-otel-agent - lint: 'true' - template: 'true' - - name: Validate nico-fmds chart uses: NVIDIA/dsx-github-actions/.github/actions/helm-validate@94bde998f5d7965576b0c663db7d5d709c918167 with: @@ -1186,17 +1179,6 @@ jobs: ngc-path: 0837451325059433/carbide-dev ngc-duplicate: fail - - name: Package and push nico-dpu-otel-agent chart - uses: NVIDIA/dsx-github-actions/.github/actions/helm-package-push@7de619729962a6bd5e8355b6fb3582a22517d7e5 - with: - chart-path: bluefield/charts/nico-dpu-otel-agent - chart-version: ${{ needs.prepare.outputs.helm_version }} - app-version: ${{ needs.prepare.outputs.version }} - lint: 'false' - ngc-key: ${{ secrets.NVCR_TOKEN }} - ngc-path: 0837451325059433/carbide-dev - ngc-duplicate: fail - - name: Package and push nico-fmds chart uses: NVIDIA/dsx-github-actions/.github/actions/helm-package-push@7de619729962a6bd5e8355b6fb3582a22517d7e5 with: diff --git a/bluefield/Makefile.toml b/bluefield/Makefile.toml index 6981e94ab1..6d433e5b52 100644 --- a/bluefield/Makefile.toml +++ b/bluefield/Makefile.toml @@ -591,15 +591,6 @@ script = ''' helm package ${REPO_ROOT}/bluefield/charts/carbide-dhcp-server -d ${REPO_ROOT}/target/charts/ ''' -[tasks.helm-package-carbide-dpu-otel-agent] -category = "Build" -description = "Package the carbide-dpu-otel-agent Helm chart" -workspace = false -script = ''' - mkdir -p ${REPO_ROOT}/target/charts/ - helm package ${REPO_ROOT}/bluefield/charts/carbide-dpu-otel-agent -d ${REPO_ROOT}/target/charts/ -''' - [tasks.helm-package-carbide-fmds] category = "Build" description = "Package the carbide-fmds Helm chart" @@ -617,7 +608,6 @@ dependencies = [ "helm-package-carbide-otelcol", "helm-package-carbide-dpu-agent", "helm-package-carbide-dhcp-server", - "helm-package-carbide-dpu-otel-agent", "helm-package-carbide-fmds", ] diff --git a/bluefield/charts/nico-dpu-otel-agent/.helmignore b/bluefield/charts/nico-dpu-otel-agent/.helmignore deleted file mode 100644 index ac00f910fa..0000000000 --- a/bluefield/charts/nico-dpu-otel-agent/.helmignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -.git -.gitignore -.bzr -.bzrignore -.hg -.hgignore -.svn diff --git a/bluefield/charts/nico-dpu-otel-agent/Chart.yaml b/bluefield/charts/nico-dpu-otel-agent/Chart.yaml deleted file mode 100644 index 1d91a86393..0000000000 --- a/bluefield/charts/nico-dpu-otel-agent/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: nico-dpu-otel-agent -description: NICo DPU OTel agent for mTLS certificate renewal -type: application -version: 0.1.0 -appVersion: "0.1.0" -annotations: - dpu.nvidia.com/doca-version: ">= 2.9" diff --git a/bluefield/charts/nico-dpu-otel-agent/files/otel-agent-config.toml b/bluefield/charts/nico-dpu-otel-agent/files/otel-agent-config.toml deleted file mode 100644 index d4bbe7b3b2..0000000000 --- a/bluefield/charts/nico-dpu-otel-agent/files/otel-agent-config.toml +++ /dev/null @@ -1,17 +0,0 @@ -[nico-system] -api-server = "https://carbide-api.forge" -root-ca = "/opt/forge/forge_root.pem" -client-cert = "/etc/ssl/certs/forge-dpu-otel-agent.pem" -client-key = "/etc/ssl/private/forge-dpu-otel-agent.key" - -[machine] -is_fake_dpu = false - -[period] -main-loop-idle-secs = 30 -main-loop-active-secs = 10 -network-config-fetch-secs = 30 -version-check-secs = 600 -inventory-update-secs = 3600 -discovery-retry-secs = 60 -discovery-retries-max = 10080 diff --git a/bluefield/charts/nico-dpu-otel-agent/templates/_helpers.tpl b/bluefield/charts/nico-dpu-otel-agent/templates/_helpers.tpl deleted file mode 100644 index 1bae697564..0000000000 --- a/bluefield/charts/nico-dpu-otel-agent/templates/_helpers.tpl +++ /dev/null @@ -1,47 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "nico-dpu-otel-agent.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -*/}} -{{- define "nico-dpu-otel-agent.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- /* DPF names the helm release --; */}} -{{- /* use it verbatim so resource names stay short and don't get a */}} -{{- /* redundant chart-name suffix appended. */}} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "nico-dpu-otel-agent.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "nico-dpu-otel-agent.labels" -}} -helm.sh/chart: {{ include "nico-dpu-otel-agent.chart" . }} -{{ include "nico-dpu-otel-agent.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "nico-dpu-otel-agent.selectorLabels" -}} -app.kubernetes.io/name: {{ include "nico-dpu-otel-agent.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} diff --git a/bluefield/charts/nico-dpu-otel-agent/templates/configmap.yaml b/bluefield/charts/nico-dpu-otel-agent/templates/configmap.yaml deleted file mode 100644 index 1e06f4cd1b..0000000000 --- a/bluefield/charts/nico-dpu-otel-agent/templates/configmap.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "nico-dpu-otel-agent.fullname" . }}-config - labels: - {{- include "nico-dpu-otel-agent.labels" . | nindent 4 }} -data: - config.toml: | - {{- /* Swap the embedded /opt/nico/nico_root.pem path to certsDir/rootCaFile. */ -}} - {{- $rootCa := printf "%s/%s" (.Values.certsDir | default "/opt/nico") (.Values.rootCaFile | default "nico_root.pem") -}} - {{- .Files.Get "files/otel-agent-config.toml" | replace "/opt/nico/nico_root.pem" $rootCa | nindent 4 }} diff --git a/bluefield/charts/nico-dpu-otel-agent/templates/daemonset.yaml b/bluefield/charts/nico-dpu-otel-agent/templates/daemonset.yaml deleted file mode 100644 index 19ec0efdfc..0000000000 --- a/bluefield/charts/nico-dpu-otel-agent/templates/daemonset.yaml +++ /dev/null @@ -1,108 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: {{ include "nico-dpu-otel-agent.fullname" . }} - labels: - {{- include "nico-dpu-otel-agent.labels" . | nindent 4 }} - {{- with .Values.serviceDaemonSet.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} - annotations: - {{- with .Values.serviceDaemonSet.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- with .Values.serviceDaemonSet.updateStrategy }} - updateStrategy: - {{- toYaml . | nindent 4 }} - {{- end }} - selector: - matchLabels: - {{- include "nico-dpu-otel-agent.selectorLabels" . | nindent 6 }} - template: - metadata: - annotations: - {{- with .Values.serviceDaemonSet.annotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "nico-dpu-otel-agent.selectorLabels" . | nindent 8 }} - {{- with .Values.serviceDaemonSet.labels }} - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - {{- if not (empty .Values.serviceDaemonSet.nodeSelector) }} - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - {{- toYaml .Values.serviceDaemonSet.nodeSelector | nindent 12 }} - {{- end }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - containers: - - name: nico-dpu-otel-agent - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - args: - - "--config-path=/etc/forge-dpu-otel-agent/config.toml" - - "run" - {{- with toYaml .Values.serviceDaemonSet.resources }} - resources: - limits: - {{- . | nindent 14 }} - requests: - {{- . | nindent 14 }} - {{- end }} - env: - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - - name: config - mountPath: /etc/forge-dpu-otel-agent/config.toml - subPath: config.toml - readOnly: true - - name: nico-certs - mountPath: {{ .Values.certsDir | default "/opt/nico" }} - readOnly: true - - name: ssl-certs - mountPath: /etc/ssl/certs - - name: ssl-private - mountPath: /etc/ssl/private - volumes: - - name: config - configMap: - name: {{ include "nico-dpu-otel-agent.fullname" . }}-config - - name: nico-certs - hostPath: - path: {{ .Values.certsDir | default "/opt/nico" }} - type: DirectoryOrCreate - - name: ssl-certs - hostPath: - path: /etc/ssl/certs - type: DirectoryOrCreate - - name: ssl-private - hostPath: - path: /etc/ssl/private - type: DirectoryOrCreate - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/bluefield/charts/nico-dpu-otel-agent/tests/image_layout_test.yaml b/bluefield/charts/nico-dpu-otel-agent/tests/image_layout_test.yaml deleted file mode 100644 index a70f150765..0000000000 --- a/bluefield/charts/nico-dpu-otel-agent/tests/image_layout_test.yaml +++ /dev/null @@ -1,79 +0,0 @@ -suite: cert directory overrides -templates: - - daemonset.yaml - - configmap.yaml -tests: - - it: should mount certs at /opt/forge by default - template: daemonset.yaml - set: - image: - repository: test - tag: test - asserts: - - contains: - path: spec.template.spec.containers[0].volumeMounts - content: - name: nico-certs - mountPath: /opt/forge - readOnly: true - - - it: should hostPath-mount /opt/forge by default - template: daemonset.yaml - set: - image: - repository: test - tag: test - asserts: - - contains: - path: spec.template.spec.volumes - content: - name: nico-certs - hostPath: - path: /opt/forge - type: DirectoryOrCreate - - - it: configmap should embed /opt/forge/forge_root.pem in root-ca by default - template: configmap.yaml - set: - image: - repository: test - tag: test - asserts: - - matchRegex: - path: data["config.toml"] - pattern: 'root-ca\s*=\s*"/opt/forge/forge_root\.pem"' - - - it: should fall back to /opt/nico when certsDir is cleared - template: daemonset.yaml - set: - image: - repository: test - tag: test - certsDir: null - asserts: - - contains: - path: spec.template.spec.containers[0].volumeMounts - content: - name: nico-certs - mountPath: /opt/nico - readOnly: true - - contains: - path: spec.template.spec.volumes - content: - name: nico-certs - hostPath: - path: /opt/nico - type: DirectoryOrCreate - - - it: configmap should embed /opt/nico/nico_root.pem when overrides cleared - template: configmap.yaml - set: - image: - repository: test - tag: test - certsDir: null - rootCaFile: null - asserts: - - matchRegex: - path: data["config.toml"] - pattern: 'root-ca\s*=\s*"/opt/nico/nico_root\.pem"' diff --git a/bluefield/charts/nico-dpu-otel-agent/values.schema.json b/bluefield/charts/nico-dpu-otel-agent/values.schema.json deleted file mode 100644 index f78028761f..0000000000 --- a/bluefield/charts/nico-dpu-otel-agent/values.schema.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft-07/schema#", - "title": "DPUService Helm Chart Values", - "description": "Schema for validating values.yaml for DPUService Helm charts. Note: All Kubernetes resources must include {{ .Release.Name }} in their metadata.name to enable deployment of multiple instances of the service.", - "type": "object", - "required": ["serviceDaemonSet"], - "properties": { - "serviceDaemonSet": { - "type": "object", - "description": "Configuration for the service DaemonSet", - "required": ["labels", "annotations", "updateStrategy", "resources"], - "properties": { - "nodeSelector": { - "oneOf": [ - { - "type": "object", - "description": "Node selector for the DaemonSet using nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution", - "required": ["nodeSelectorTerms"], - "properties": { - "nodeSelectorTerms": { - "type": "array", - "description": "Required node selector terms, one of which must match for pod scheduling", - "minItems": 1, - "items": { - "type": "object", - "required": ["matchExpressions"], - "properties": { - "matchExpressions": { - "type": "array", - "description": "Node selector requirements by node's labels", - "minItems": 1, - "items": { - "type": "object", - "required": ["key", "operator", "values"], - "properties": { - "key": { - "type": "string", - "description": "The label key that the selector applies to" - }, - "operator": { - "type": "string", - "description": "Represents a key's relationship to a set of values", - "enum": ["In", "NotIn", "Exists", "DoesNotExist", "Gt", "Lt"] - }, - "values": { - "type": "array", - "description": "An array of string values. If operator is In or NotIn, values array must be non-empty", - "items": { - "type": "string" - } - } - } - } - }, - "matchFields": { - "type": "array", - "description": "Node selector requirements by node's fields", - "items": { - "type": "object", - "required": ["key", "operator", "values"], - "properties": { - "key": { - "type": "string", - "description": "The label key that the selector applies to" - }, - "operator": { - "type": "string", - "description": "Represents a key's relationship to a set of values", - "enum": ["In", "NotIn", "Exists", "DoesNotExist", "Gt", "Lt"] - }, - "values": { - "type": "array", - "description": "An array of string values. If operator is In or NotIn, values array must be non-empty", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - { - "type": "null", - "description": "Node selector can be null/empty" - }, - { - "type": "object", - "description": "Node selector can be an empty object", - "maxProperties": 0 - } - ] - }, - "labels": { - "type": "object", - "description": "serviceDaemonSet pod labels", - "additionalProperties": { - "type": "string" - } - }, - "annotations": { - "type": "object", - "description": "serviceDaemonSet pod annotations", - "additionalProperties": { - "type": "string" - } - }, - "updateStrategy": { - "type": "object", - "description": "serviceDaemonSet upgrade strategy configuration", - "properties": { - "type": { - "type": "string", - "enum": ["RollingUpdate", "OnDelete"] - }, - "rollingUpdate": { - "type": "object", - "properties": { - "maxUnavailable": { - "oneOf": [ - { "type": "integer", "minimum": 1 }, - { "type": "string" } - ] - } - } - } - } - }, - "resources": { - "type": "object", - "description": "serviceDaemonset pod Resource requests/limits (e.g., CPU, memory)", - "additionalProperties": { - "type": "string" - } - } - } - }, - "exposedPorts": { - "type": "object", - "description": "Configuration for exposing ports (optional). If provided, both 'ports' and 'labels' must be specified.", - "required": ["ports", "labels"], - "properties": { - "ports": { - "type": "object", - "description": "Map of port names to boolean values to enable/disable exposure", - "additionalProperties": { - "type": "boolean" - } - }, - "labels": { - "type": "object", - "description": "Custom labels for the Service resources to be discovered by the DPUService controller", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "additionalProperties": true -} diff --git a/bluefield/charts/nico-dpu-otel-agent/values.yaml b/bluefield/charts/nico-dpu-otel-agent/values.yaml deleted file mode 100644 index a33bf545c6..0000000000 --- a/bluefield/charts/nico-dpu-otel-agent/values.yaml +++ /dev/null @@ -1,24 +0,0 @@ -### DPF contract ### -serviceDaemonSet: - nodeSelector: - labels: {} - annotations: {} - updateStrategy: {} - resources: {} -exposedPorts: - labels: {} - ports: {} - -### Cert directory + root CA filename overrides. -certsDir: /opt/forge -rootCaFile: forge_root.pem - -### Service specific values ### -image: - repository: "" - pullPolicy: IfNotPresent - tag: "" -imagePullSecrets: [] -podSecurityContext: {} -securityContext: {} -tolerations: [] diff --git a/bluefield/containers/forge-dpu-otel-agent/Dockerfile b/bluefield/containers/forge-dpu-otel-agent/Dockerfile deleted file mode 100644 index fc24e9d18f..0000000000 --- a/bluefield/containers/forge-dpu-otel-agent/Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# 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. - -# Runtime image for forge-dpu-otel-agent on arm64 DPUs. -# -# The binary is cross-compiled externally using the -# build-artifacts-container-cross-aarch64 image and copied into this -# minimal runtime container. - -ARG CC_VERSION=v3.2.1 # NVIDIA Distroless Container version -ARG TAG=${CC_VERSION} -ARG IMG=nvcr.io/nvidia/distroless/cc -ARG DEBUG_DISTROLESS=true -ARG DISTROLESS_DEBUG_TAG=${DEBUG_DISTROLESS:+"dev"} # 'dev' provides a busybox shell - -FROM debian:12-slim AS udev -RUN apt-get update && apt-get install -y --no-install-recommends \ - libudev1 - -# NVIDIA Distroless Container -FROM ${IMG}:${TAG}-${DISTROLESS_DEBUG_TAG} - -COPY --chmod=755 target/aarch64-unknown-linux-gnu/release/forge-dpu-otel-agent /usr/bin/forge-dpu-otel-agent - -COPY --from=udev /lib/aarch64-linux-gnu/libudev.so.1 /lib/aarch64-linux-gnu/libudev.so.1 - -ENTRYPOINT ["/usr/bin/forge-dpu-otel-agent"] -CMD ["--config-path=/etc/forge-dpu-otel-agent/config.toml", "run" ]