diff --git a/Makefile b/Makefile
index f0842162..ec22c00e 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,11 @@ endif
# PROJECT_VERSION defines the project version.
# Update this value when you upgrade the version of your project.
-PROJECT_VERSION ?= v1.2.0
+PROJECT_VERSION ?= v1.2.1
+
+# AINIC_VERSIONS lists the supported AINIC firmware versions for this release (comma-separated).
+# Used by update-docs-version to populate the compatibility matrix in docs/index.md.
+AINIC_VERSIONS ?= 1.117.5-a-77,1.117.5-a-147
####################################
# Network Operator Image Build variables
@@ -48,7 +52,7 @@ KMM_OPERATOR_IMG_NAME ?= $(DOCKER_REGISTRY)/kernel-module-management-operator
# by default, helm charts version is same as project version
# unless in the hourly build where we may put hourly build tag in the helm charts version
HELM_CHARTS_VERSION ?= $(PROJECT_VERSION)
-YAML_FILES=config/samples/amd.com_networkconfigs.yaml config/manifests/bases/amd-network-operator.clusterserviceversion.yaml example/networkconfig.yaml config/default/kustomization.yaml
+YAML_FILES=bundle/manifests/amd-network-operator-node-metrics_rbac.authorization.k8s.io_v1_rolebinding.yaml bundle/manifests/amd-network-operator.clusterserviceversion.yaml bundle/manifests/amd-network-operator-node-labeller_rbac.authorization.k8s.io_v1_clusterrolebinding.yaml bundle/manifests/amd-network-operator-node-metrics_monitoring.coreos.com_v1_servicemonitor.yaml config/samples/amd.com_networkconfigs.yaml config/manifests/bases/amd-network-operator.clusterserviceversion.yaml example/networkconfig.yaml config/default/kustomization.yaml
CRD_YAML_FILES = networkconfig-crd.yaml
K8S_KMM_CRD_YAML_FILES=module-crd.yaml nodemodulesconfig-crd.yaml
OPENSHIFT_KMM_CRD_YAML_FILES=module-crd.yaml nodemodulesconfig-crd.yaml
@@ -128,7 +132,7 @@ SHELL = /usr/bin/env bash -o pipefail
DOCKER_GID := $(shell stat -c '%g' /var/run/docker.sock)
USER_UID := $(shell id -u)
USER_GID := $(shell id -g)
-DOCKER_BUILDER_TAG := v1.4
+DOCKER_BUILDER_TAG := v1.5
DOCKER_BUILDER_IMAGE := $(DOCKER_REGISTRY)/network-operator-build:$(DOCKER_BUILDER_TAG)
CONTAINER_WORKDIR := /network-operator
BUILD_BASE_IMG ?= ubuntu:22.04
@@ -160,6 +164,13 @@ all: vendor generate manager manifests helm-k8s docker-build
.PHONY: skip-vendor
skip-vendor: generate manager manifests helm-k8s docker-build
+.PHONY: release-prep
+release-prep: IMAGE_TAG=$(PROJECT_VERSION)
+release-prep: update-version-in-ci update-docs-version helm-k8s bundle-build catalog ## Prepare release: bump versions in code, CI, docs, helm charts, and OLM bundle/catalog
+ @printf -- "---\n# Required by Auto Cherry Picker automation\n# Defines the list of branches into which the changes would need cherry-picking\ncherry_pick_branches:\n - main\n" > branch_policy.yml
+ @echo ""
+ @echo "Release prep complete for ${PROJECT_VERSION}."
+
##@ General
# The help target prints out all targets with their descriptions organized
@@ -182,6 +193,7 @@ help: ## Display this help.
.PHONY: update-registry
update-registry: ## Update all image URLs based on the image variables
# updating registry information in yaml files
+ sed -i -e 's|image:.*$$|image: ${IMG}|' bundle/manifests/amd-network-operator.clusterserviceversion.yaml
sed -i -e 's|repository:.*$$|repository: ${IMAGE_TAG_BASE}|' \
hack/k8s-patch/metadata-patch/values.yaml \
hack/openshift-patch/metadata-patch/values.yaml
@@ -189,7 +201,7 @@ update-registry: ## Update all image URLs based on the image variables
-e 's|newName:.*$$|newName: ${IMAGE_TAG_BASE}|' \
config/manager-base/kustomization.yaml config/manager/kustomization.yaml \
hack/k8s-patch/metadata-patch/values.yaml helm-charts-k8s/values.yaml \
- hack/openshift-patch/metadata-patch/values.yaml \
+ hack/openshift-patch/metadata-patch/values.yaml helm-charts-openshift/values.yaml \
example/networkconfig.yaml
sed -i -e 's|tag:.*$$|tag: ${KMM_IMAGE_TAG}|' \
-e 's|repository:.*operator.*$$|repository: ${KMM_OPERATOR_IMG_NAME}|' \
@@ -212,6 +224,60 @@ update-version: ## Update the Project version in helm charts based on ${PROJECT_
sed -i 's|network-operator-utils:v[^ "]*|network-operator-utils:${PROJECT_VERSION}|' internal/controllers/upgrademgr.go internal/utils.go
sed -i 's|k8s-network-device-plugin:v[^ "]*|k8s-network-device-plugin:${PROJECT_VERSION}|' internal/deviceplugin/deviceplugin.go
sed -i 's|device-metrics-exporter:nic-v[^ "]*|device-metrics-exporter:nic-${PROJECT_VERSION}|' internal/metricsexporter/exporter.go
+ # updating image tags in OLM CSV base (flows into bundle via make bundle)
+ sed -i 's|k8s-network-device-plugin:v[^ "]*|k8s-network-device-plugin:${PROJECT_VERSION}|' config/manifests/bases/amd-network-operator.clusterserviceversion.yaml
+ sed -i 's|k8s-network-node-labeller:v[^ "]*|k8s-network-node-labeller:${PROJECT_VERSION}|' config/manifests/bases/amd-network-operator.clusterserviceversion.yaml
+ sed -i 's|device-metrics-exporter:nic-v[^ "]*|device-metrics-exporter:nic-${PROJECT_VERSION}|' config/manifests/bases/amd-network-operator.clusterserviceversion.yaml
+ # updating image tags in sample and example CRs
+ sed -i 's|k8s-network-device-plugin:v[^ "]*|k8s-network-device-plugin:${PROJECT_VERSION}|' config/samples/amd.com_networkconfigs.yaml
+ sed -i 's|k8s-network-node-labeller:v[^ "]*|k8s-network-node-labeller:${PROJECT_VERSION}|' config/samples/amd.com_networkconfigs.yaml
+
+DOCS_IMAGE_VERSION_FILES = \
+ docs/installation/networkconfig.md \
+ docs/installation/networkconfig-full.md \
+ docs/device_plugin/deviceplugin.md \
+ docs/metrics/exporter.md \
+ docs/upgrades/componentupgrades.md \
+ docs/_static/cluster-validation-job.yaml \
+ example/networkconfig.yaml
+
+DOCS_HELM_VERSION_FILES = \
+ docs/installation/kubernetes-helm.md \
+ docs/upgrades/upgrade.md
+
+.PHONY: update-docs-version
+update-docs-version: ## Update image tags, helm versions, and compat matrix in docs and examples
+ # updating image tags in docs and examples
+ sed -i 's|k8s-network-device-plugin:v[^ "`()]*|k8s-network-device-plugin:${PROJECT_VERSION}|' $(DOCS_IMAGE_VERSION_FILES)
+ sed -i 's|k8s-network-node-labeller:v[^ "`()]*|k8s-network-node-labeller:${PROJECT_VERSION}|' $(DOCS_IMAGE_VERSION_FILES)
+ sed -i 's|device-metrics-exporter:nic-v[^ "`()]*|device-metrics-exporter:nic-${PROJECT_VERSION}|' $(DOCS_IMAGE_VERSION_FILES)
+ sed -i 's|k8s-cni-plugins:v[^ "`()]*|k8s-cni-plugins:${PROJECT_VERSION}|' $(DOCS_IMAGE_VERSION_FILES)
+ sed -i 's|network-operator-utils:v[^ "`()]*|network-operator-utils:${PROJECT_VERSION}|' $(DOCS_IMAGE_VERSION_FILES)
+ # updating helm version references in docs
+ sed -i 's|--version=v[0-9][^ ]*|--version=${PROJECT_VERSION}|' $(DOCS_HELM_VERSION_FILES)
+ sed -i 's|image\.tag=v[0-9][^ ]*|image.tag=${PROJECT_VERSION}|' $(DOCS_HELM_VERSION_FILES)
+ sed -i '/controllerManager\.manager\.image\.tag/s|`"v[0-9][^"]*"`|`"${PROJECT_VERSION}"`|' $(DOCS_HELM_VERSION_FILES)
+ # updating network operator helm version in co-install guide (skip GPU operator commands)
+ sed -i '/network-operator-charts/,+5 s|--version=v[0-9][^ ]*|--version=${PROJECT_VERSION}|' docs/installation/kubernetes-helm-operators.md
+ # updating compatibility matrix in docs/index.md
+ @AINIC_FW=$$(echo '${AINIC_VERSIONS}' | sed 's/,/
/g'); \
+ ROW=$$(printf "| %-16s | %-30s | %-14s |" "${PROJECT_VERSION}" "$${AINIC_FW}" "Pollara 400"); \
+ sed -i '/^| ${PROJECT_VERSION} /d' docs/index.md; \
+ LAST_LINE=$$(grep -n 'Pollara 400' docs/index.md | tail -1 | cut -d: -f1); \
+ if [ -n "$$LAST_LINE" ]; then \
+ sed -i "$${LAST_LINE} a $$ROW" docs/index.md; \
+ else \
+ echo "WARNING: Could not find compat matrix. Add manually: $$ROW"; \
+ fi
+
+.PHONY: update-version-in-ci
+update-version-in-ci: ## Update project version and helm chart references in CI job config (.job.yml) and asset-push script
+ sed -i -e 's|PROJECT_VERSION=v[^ ]*|PROJECT_VERSION=${PROJECT_VERSION}|' .job.yml
+ sed -i '0,/HELM_CHARTS_VERSION=/s|HELM_CHARTS_VERSION=[^ ]*|HELM_CHARTS_VERSION=$${RELEASE:-${PROJECT_VERSION}-dev}|' .job.yml
+ sed -i '0,/BUNDLE_VERSION=/s|BUNDLE_VERSION=[^ ]*|BUNDLE_VERSION=$${RELEASE:-${PROJECT_VERSION}-dev}|' .job.yml
+ sed -i 's|network-operator-helm-k8s-[^$$].*\.tgz|network-operator-helm-k8s-${HELM_CHARTS_VERSION}.tgz|' .job.yml
+ sed -i 's|network-operator-helm-openshift-.*\.tgz|network-operator-helm-openshift-${HELM_CHARTS_VERSION}.tgz|' .job.yml
+ sed -i 's|PROJECT_VERSION:-.*$$|PROJECT_VERSION:-${PROJECT_VERSION}\}|' asset-build/networkoperator-asset-push.sh
.PHONY: manifests
manifests: controller-gen update-registry update-version ## Generate ClusterRole and CustomResourceDefinition objects.
@@ -296,6 +362,11 @@ lint: golangci-lint ## Run golangci-lint against code.
fi
$(GOLANGCI_LINT) run -v --timeout 5m0s
+.PHONY: docs-lint
+docs-lint: ## Run docs Markdown lint + spelling.
+ markdownlint-cli2 "**/*.md" --config docs/.markdownlint-cli2.yaml
+ pyspelling -c .spellcheck.yaml
+
##@ Build
manager: $(shell find -name "*.go") go.mod go.sum ## Build manager binary.
@@ -448,6 +519,7 @@ bundle-build: operator-sdk manifests kustomize
PKG=amd-network-operator \
SOURCE_DIR=$(dir $(realpath $(lastword $(MAKEFILE_LIST)))) \
KUBECTL_CMD=${KUBECTL_CMD} ./hack/generate-bundle
+ cp hack/device-plugin-configmap.yaml bundle/manifests/
${OPERATOR_SDK} bundle validate ./bundle
$(CONTAINER_ENGINE) build -f bundle.Dockerfile -t $(BUNDLE_IMG) .
diff --git a/bundle/manifests/amd-network-operator-manager-config_v1_configmap.yaml b/bundle/manifests/amd-network-operator-manager-config_v1_configmap.yaml
new file mode 100644
index 00000000..28a01234
--- /dev/null
+++ b/bundle/manifests/amd-network-operator-manager-config_v1_configmap.yaml
@@ -0,0 +1,15 @@
+apiVersion: v1
+data:
+ controller_manager_config.yaml: |
+ healthProbeBindAddress: :8081
+ metricsBindAddress: 127.0.0.1:8080
+ leaderElection:
+ enabled: true
+ resourceID: network.amd.com
+kind: ConfigMap
+metadata:
+ labels:
+ app.kubernetes.io/component: amd-network
+ app.kubernetes.io/name: amd-network
+ app.kubernetes.io/part-of: amd-network
+ name: amd-network-operator-manager-config
diff --git a/bundle/manifests/amd-network-operator.clusterserviceversion.yaml b/bundle/manifests/amd-network-operator.clusterserviceversion.yaml
new file mode 100644
index 00000000..49daf723
--- /dev/null
+++ b/bundle/manifests/amd-network-operator.clusterserviceversion.yaml
@@ -0,0 +1,1373 @@
+apiVersion: operators.coreos.com/v1alpha1
+kind: ClusterServiceVersion
+metadata:
+ annotations:
+ alm-examples: |-
+ [
+ {
+ "apiVersion": "amd.com/v1alpha1",
+ "kind": "NetworkConfig",
+ "metadata": {
+ "name": "test-NetworkConfig",
+ "namespace": "kube-amd-network"
+ },
+ "spec": {
+ "devicePlugin": {
+ "devicePluginImage": "rocm/k8s-network-device-plugin:v1.2.1",
+ "nodeLabellerImage": "rocm/k8s-network-node-labeller:v1.2.1"
+ },
+ "driver": {
+ "image": "my.registry.io/myUserName/myRepo",
+ "imageRegistrySecret": {
+ "name": "docker-auth"
+ },
+ "version": "6.2.2"
+ },
+ "selector": {
+ "feature.node.kubernetes.io/amd-nic": "true"
+ }
+ }
+ }
+ ]
+ capabilities: Seamless Upgrades
+ categories: AI/Machine Learning,Networking,Monitoring
+ containerImage: docker.io/rocm/amd-network-operator:v1.2.1
+ createdAt: "2026-08-28T04:46:37Z"
+ description: |-
+ Operator responsible for deploying AMD Network kernel drivers, device plugin, node labeller and device metrics exporter
+ For more information, visit [documentation](https://instinct.docs.amd.com/projects/network-operator/en/latest/)
+ devicePluginImage: docker.io/rocm/k8s-network-device-plugin:v1.2.1
+ features.operators.openshift.io/disconnected: "true"
+ features.operators.openshift.io/fips-compliant: "false"
+ features.operators.openshift.io/proxy-aware: "true"
+ features.operators.openshift.io/tls-profiles: "false"
+ features.operators.openshift.io/token-auth-aws: "false"
+ features.operators.openshift.io/token-auth-azure: "false"
+ features.operators.openshift.io/token-auth-gcp: "false"
+ metricsExporterImage: docker.io/rocm/device-metrics-exporter:nic-v1.2.1
+ nodelabellerImage: docker.io/rocm/k8s-network-node-labeller:v1.2.1
+ operatorframework.io/cluster-monitoring: "true"
+ operatorframework.io/suggested-namespace: openshift-amd-network
+ operators.openshift.io/valid-subscription: '[]'
+ operators.operatorframework.io/builder: operator-sdk-v1.32.0
+ operators.operatorframework.io/project_layout: go.kubebuilder.io/v3
+ repository: https://github.com/ROCm/network-operator
+ support: Advanced Micro Devices, Inc.
+ name: amd-network-operator.v1.2.1
+ namespace: placeholder
+spec:
+ apiservicedefinitions: {}
+ customresourcedefinitions:
+ owned:
+ - description: NetworkConfig describes how to enable AMD Network device
+ displayName: NetworkConfig
+ kind: NetworkConfig
+ name: networkconfigs.amd.com
+ resources:
+ - kind: Daemonset
+ name: apps
+ version: v1
+ - kind: Pod
+ name: core
+ version: v1
+ - kind: services
+ name: core
+ version: v1
+ - kind: Module
+ name: modules.kmm.sigs.x-k8s.io
+ version: v1beta1
+ specDescriptors:
+ - description: common config
+ displayName: CommonConfig
+ path: commonConfig
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:commonConfig
+ - description: InitContainerImage is being used for the operands pods, i.e.
+ metrics exporter, test runner, device plugin and node labeller
+ displayName: InitContainerImage
+ path: commonConfig.initContainerImage
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:initContainerImage
+ - description: UtilsContainer contains parameters to configure operator's utils
+ container
+ displayName: UtilsContainer
+ path: commonConfig.utilsContainer
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:utilsContainer
+ - description: Image is the image of utils container
+ displayName: Image
+ path: commonConfig.utilsContainer.image
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:image
+ - description: image pull policy for utils container
+ displayName: ImagePullPolicy
+ path: commonConfig.utilsContainer.imagePullPolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imagePullPolicy
+ - description: secret used for pull utils container image
+ displayName: ImageRegistrySecret
+ path: commonConfig.utilsContainer.imageRegistrySecret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imageRegistrySecret
+ - description: config manager
+ displayName: ConfigManager
+ path: configManager
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:configManager
+ - description: config map to customize the config for config manager, if not
+ specified default config will be applied
+ displayName: Config
+ path: configManager.config
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:configmap
+ - description: tolerations for the network config manager DaemonSet
+ displayName: ConfigManagerTolerations
+ path: configManager.configManagerTolerations
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:configManagerTolerations
+ - description: enable config manager, disabled by default
+ displayName: Enable
+ path: configManager.enable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:enable
+ - description: config manager image
+ displayName: Image
+ path: configManager.image
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:image
+ - description: image pull policy for config manager
+ displayName: ImagePullPolicy
+ path: configManager.imagePullPolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imagePullPolicy
+ - description: config manager image registry secret used to pull/push images
+ displayName: ImageRegistrySecret
+ path: configManager.imageRegistrySecret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imageRegistrySecret
+ - description: Selector describes on which nodes to enable config manager
+ displayName: Selector
+ path: configManager.selector
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:selector
+ - description: upgrade policy for config manager daemonset
+ displayName: UpgradePolicy
+ path: configManager.upgradePolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:upgradePolicy
+ - description: MaxUnavailable specifies the maximum number of Pods that can
+ be unavailable during the update process. Applicable for RollingUpdate only.
+ Default value is 1.
+ displayName: MaxUnavailable
+ path: configManager.upgradePolicy.maxUnavailable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:maxUnavailable
+ - description: UpgradeStrategy specifies the type of the DaemonSet update. Valid
+ values are "RollingUpdate" (default) or "OnDelete".
+ displayName: UpgradeStrategy
+ path: configManager.upgradePolicy.upgradeStrategy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:upgradeStrategy
+ - description: device plugin
+ displayName: DevicePlugin
+ path: devicePlugin
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:devicePlugin
+ - description: 'device plugin arguments is used to pass supported flags and
+ their values while starting device plugin daemonset supported flag values:
+ {"resource_naming_strategy": {"single", "mixed"}}'
+ displayName: DevicePluginArguments
+ path: devicePlugin.devicePluginArguments
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:devicePluginArguments
+ - description: device plugin image
+ displayName: DevicePluginImage
+ path: devicePlugin.devicePluginImage
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:devicePluginImage
+ - description: image pull policy for device plugin
+ displayName: DevicePluginImagePullPolicy
+ path: devicePlugin.devicePluginImagePullPolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:DevicePluginImagePullPolicy
+ - description: tolerations for the device plugin DaemonSet
+ displayName: DevicePluginTolerations
+ path: devicePlugin.devicePluginTolerations
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:devicePluginTolerations
+ - description: enable or disable the node labeller
+ displayName: EnableNodeLabeller
+ path: devicePlugin.enableNodeLabeller
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:enableNodeLabeller
+ - description: node labeller image registry secret used to pull/push images
+ displayName: ImageRegistrySecret
+ path: devicePlugin.imageRegistrySecret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:imageRegistrySecret
+ - description: node labeller image
+ displayName: NodeLabellerImage
+ path: devicePlugin.nodeLabellerImage
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:nodeLabellerImage
+ - description: image pull policy for node labeller
+ displayName: NodeLabellerImagePullPolicy
+ path: devicePlugin.nodeLabellerImagePullPolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:NodeLabellerImagePullPolicy
+ - description: tolerations for the node labeller DaemonSet
+ displayName: NodeLabellerTolerations
+ path: devicePlugin.nodeLabellerTolerations
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:nodeLabellerTolerations
+ - description: upgrade policy for device plugin and node labeller daemons
+ displayName: UpgradePolicy
+ path: devicePlugin.upgradePolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:upgradePolicy
+ - description: MaxUnavailable specifies the maximum number of Pods that can
+ be unavailable during the update process. Applicable for RollingUpdate only.
+ Default value is 1.
+ displayName: MaxUnavailable
+ path: devicePlugin.upgradePolicy.maxUnavailable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:maxUnavailable
+ - description: UpgradeStrategy specifies the type of the DaemonSet update. Valid
+ values are "RollingUpdate" (default) or "OnDelete".
+ displayName: UpgradeStrategy
+ path: devicePlugin.upgradePolicy.upgradeStrategy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:upgradeStrategy
+ - description: driver
+ displayName: Driver
+ path: driver
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:driver
+ - description: radeon repo URL for fetching amdnetwork installer if building
+ driver image on the fly installer URL is https://repo.radeon.com by default
+ displayName: AMDNetworkInstallerRepoURL
+ path: driver.AMDNetworkInstallerRepoURL
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:AMDNetworkInstallerRepoURL
+ - description: blacklist amdnetwork drivers on the host. Node reboot is required
+ to apply the blacklist on the worker nodes. Require spec.devicePlugin.enableNodeLabeller=true
+ to take effect. Not working for OpenShift cluster. OpenShift users please
+ use the Machine Config Operator (MCO) resource to configure ionic blacklist.
+ Example MCO resource is available at https://instinct.docs.amd.com/projects/network-operator/en/latest/installation/openshift-olm.html#create-blacklist-for-installing-out-of-tree-kernel-module
+ displayName: BlacklistDrivers
+ path: driver.blacklist
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:blacklistDrivers
+ - description: enable driver install. default value is true. disable is for
+ skipping driver install/uninstall for dryrun or using in-tree ionic and
+ rdma related kernel modules
+ displayName: Enable
+ path: driver.enable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:enable
+ - description: 'defines image that includes drivers and firmware blobs, don''t
+ include tag since it will be fully managed by operator for vanilla k8s the
+ default value is image-registry:5000/$MOD_NAMESPACE/amdnetwork_kmod for
+ OpenShift the default value is image-registry.openshift-image-registry.svc:5000/$MOD_NAMESPACE/amdnetwork_kmod
+ image tag will be in the format of --- example tag is coreos-416.94-5.14.0-427.28.1.el9_4.x86_64-6.2.2
+ and ubuntu-22.04-5.15.0-94-generic-6.1.3 NOTE: Updating the driver image
+ repository is not supported. Please delete the existing NetworkConfig and
+ create a new one with the updated image repository'
+ displayName: Image
+ path: driver.image
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:image
+ - description: image build configs
+ displayName: ImageBuild
+ path: driver.imageBuild
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:imageBuild
+ - description: 'image registry to fetch base image for building driver image,
+ default value is docker.io, the builder will search for corresponding OS
+ base image from given registry e.g. if your worker node is using Ubuntu
+ 22.04, by default the base image would be docker.io/ubuntu:22.04 Use spec.driver.imageRegistrySecret
+ for authentication with private registries. NOTE: this field won''t apply
+ for OpenShift since OpenShift is using its own DriverToolKit image to build
+ driver image'
+ displayName: BaseImageRegistry
+ path: driver.imageBuild.baseImageRegistry
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:baseImageRegistry
+ - description: TLS settings for fetching base image this field will be applied
+ to SourceImageRepo as well
+ displayName: BaseImageRegistryTLS
+ path: driver.imageBuild.baseImageRegistryTLS
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:baseImageRegistryTLS
+ - description: If true, check if the container image already exists using plain
+ HTTP.
+ displayName: Insecure
+ path: driver.imageBuild.baseImageRegistryTLS.insecure
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:insecure
+ - description: If true, skip any TLS server certificate validation
+ displayName: InsecureSkipTLSVerify
+ path: driver.imageBuild.baseImageRegistryTLS.insecureSkipTLSVerify
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:insecureSkipTLSVerify
+ - description: 'SourceImageRepo specifies the image repository for the driver
+ source code (OpenShift only). Used when spec.driver.useSourceImage is true.
+ The operator automatically determines the image tag based on cluster RHEL
+ version and spec.driver.version (format: coreos--).
+ Default: docker.io/rocm/amdainic-driver Use spec.driver.imageRegistrySecret
+ for authentication with private registries.'
+ displayName: SourceImageRepo
+ path: driver.imageBuild.sourceImageRepo
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:sourceImageRepo
+ - description: secrets used for pull/push images from/to private registry specified
+ in driversImage
+ displayName: ImageRegistrySecret
+ path: driver.imageRegistrySecret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imageRegistrySecret
+ - description: driver image registry TLS setting for the container image
+ displayName: ImageRegistryTLS
+ path: driver.imageRegistryTLS
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imageRegistryTLS
+ - description: If true, check if the container image already exists using plain
+ HTTP.
+ displayName: Insecure
+ path: driver.imageRegistryTLS.insecure
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:insecure
+ - description: If true, skip any TLS server certificate validation
+ displayName: InsecureSkipTLSVerify
+ path: driver.imageRegistryTLS.insecureSkipTLSVerify
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:insecureSkipTLSVerify
+ - description: image signing config to sign the driver image when building driver
+ image on the fly image signing is required for installing driver on secure
+ boot enabled system
+ displayName: ImageSign
+ path: driver.imageSign
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imageSign
+ - description: ImageSignCertSecret the public key used to sign kernel modules
+ within image necessary for secure boot enabled system
+ displayName: ImageSignCertSecret
+ path: driver.imageSign.certSecret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imageSignCertSecret
+ - description: ImageSignKeySecret the private key used to sign kernel modules
+ within image necessary for secure boot enabled system
+ displayName: ImageSignKeySecret
+ path: driver.imageSign.keySecret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imageSignKeySecret
+ - description: tolerations for kmm module object
+ displayName: Tolerations
+ path: driver.tolerations
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:tolerations
+ - description: policy to upgrade the drivers
+ displayName: UpgradePolicy
+ path: driver.upgradePolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:upgradePolicy
+ - description: enable upgrade policy, disabled by default If disabled, user
+ has to manually upgrade all the nodes.
+ displayName: Enable
+ path: driver.upgradePolicy.enable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:enable
+ - description: MaxParallelUpgrades indicates how many nodes can be upgraded
+ in parallel 0 means no limit, all nodes will be upgraded in parallel
+ displayName: MaxParallelUpgrades
+ path: driver.upgradePolicy.maxParallelUpgrades
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:maxParallelUpgrades
+ - description: 'MaxUnavailableNodes indicates maximum number of nodes that can
+ be in a failed upgrade state beyond which upgrades will stop to keep cluster
+ at a minimal healthy state Value can be an integer (ex: 2) which would mean
+ atmost 2 nodes can be in failed state after which new upgrades will not
+ start. Or it can be a percentage string(ex: "50%") from which absolute number
+ will be calculated and round up'
+ displayName: MaxUnavailableNodes
+ path: driver.upgradePolicy.maxUnavailableNodes
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:maxUnavailableNodes
+ - description: Node draining policy
+ displayName: NodeDrainPolicy
+ path: driver.upgradePolicy.nodeDrainPolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:nodeDrainPolicy
+ - description: Pod Deletion policy. If both NodeDrainPolicy and PodDeletionPolicy
+ config is available, NodeDrainPolicy(if enabled) will take precedence.
+ displayName: PodDeletionPolicy
+ path: driver.upgradePolicy.podDeletionPolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:podDeletionPolicy
+ - description: reboot between driver upgrades, enabled by default, if enabled
+ spec.commonConfig.utilsContainer will be used to perform reboot on worker
+ nodes
+ displayName: RebootRequired
+ path: driver.upgradePolicy.rebootRequired
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:rebootRequired
+ - description: 'NOTE: currently only for OpenShift cluster set to true to use
+ source image to build driver image on the fly otherwise use installer debian/rpm
+ packages from radeon repo to build driver image'
+ displayName: UseSourceImage
+ path: driver.useSourceImage
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:useSourceImage
+ - description: 'version of the drivers source code, can be used as part of image
+ of dockerfile source image default value for different OS is: ubuntu: 1.117.1-a-42,
+ coreOS: 1.117.1-a-42'
+ displayName: Version
+ path: driver.version
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:version
+ - description: metrics exporter
+ displayName: MetricsExporter
+ path: metricsExporter
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:metricsExporter
+ - description: optional configuration for metrics
+ displayName: Config
+ path: metricsExporter.config
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:config
+ - description: Name of the configMap that defines the list of metrics default
+ list:[]
+ displayName: Name
+ path: metricsExporter.config.name
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:name
+ - description: enable metrics exporter, disabled by default
+ displayName: Enable
+ path: metricsExporter.enable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:enable
+ - description: HostNetwork enables metrics exporter to use host networking,
+ enabled by default
+ displayName: HostNetwork
+ path: metricsExporter.hostNetwork
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:hostNetwork
+ - description: metrics exporter image
+ displayName: Image
+ path: metricsExporter.image
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:image
+ - description: image pull policy for metrics exporter
+ displayName: ImagePullPolicy
+ path: metricsExporter.imagePullPolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:imagePullPolicy
+ - description: metrics exporter image registry secret used to pull/push images
+ displayName: ImageRegistrySecret
+ path: metricsExporter.imageRegistrySecret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:imageRegistrySecret
+ - description: NodePort is the external port for pulling metrics from outside
+ the cluster, in the range 30000-32767 (assigned automatically by default)
+ displayName: NodePort
+ path: metricsExporter.nodePort
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:nodePort
+ - description: Port is the internal port used for in-cluster and node access
+ to pull metrics from the metrics-exporter (default 5001).
+ displayName: Port
+ path: metricsExporter.port
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:port
+ - description: Prometheus configuration for metrics exporter
+ displayName: Prometheus
+ path: metricsExporter.prometheus
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:prometheus
+ - description: ServiceMonitor configuration for Prometheus integration
+ displayName: ServiceMonitor
+ path: metricsExporter.prometheus.serviceMonitor
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:serviceMonitor
+ - description: AttachMetadata defines if Prometheus should attach node metadata
+ to the target
+ displayName: AttachMetadata
+ path: metricsExporter.prometheus.serviceMonitor.attachMetadata
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:attachMetadata
+ - description: Optional Prometheus authorization configuration for accessing
+ the endpoint
+ displayName: Authorization
+ path: metricsExporter.prometheus.serviceMonitor.authorization
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:authorization
+ - description: 'Path to bearer token file to be used by Prometheus (e.g., service
+ account token path) Deprecated: Use Authorization instead. This field is
+ kept for backward compatibility.'
+ displayName: BearerTokenFile
+ path: metricsExporter.prometheus.serviceMonitor.bearerTokenFile
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:bearerTokenFile
+ - description: Enable or disable ServiceMonitor creation (default false)
+ displayName: Enable
+ path: metricsExporter.prometheus.serviceMonitor.enable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:enable
+ - description: HonorLabels chooses the metric's labels on collisions with target
+ labels (default true)
+ displayName: HonorLabels
+ path: metricsExporter.prometheus.serviceMonitor.honorLabels
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:honorLabels
+ - description: HonorTimestamps controls whether the scrape endpoints honor timestamps
+ (default false)
+ displayName: HonorTimestamps
+ path: metricsExporter.prometheus.serviceMonitor.honorTimestamps
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:honorTimestamps
+ - description: 'How frequently to scrape metrics. Accepts values with time unit
+ suffix: "30s", "1m", "2h", "500ms"'
+ displayName: Interval
+ path: metricsExporter.prometheus.serviceMonitor.interval
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:interval
+ - description: 'Additional labels to add to the ServiceMonitor (default release:
+ prometheus)'
+ displayName: Labels
+ path: metricsExporter.prometheus.serviceMonitor.labels
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:labels
+ - description: Relabeling rules applied to individual scraped metrics
+ displayName: MetricRelabelings
+ path: metricsExporter.prometheus.serviceMonitor.metricRelabelings
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:metricRelabelings
+ - description: RelabelConfigs to apply to samples before ingestion
+ displayName: Relabelings
+ path: metricsExporter.prometheus.serviceMonitor.relabelings
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:relabelings
+ - description: TLS settings used by Prometheus to connect to the metrics endpoint
+ displayName: TLSConfig
+ path: metricsExporter.prometheus.serviceMonitor.tlsConfig
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:tlsConfig
+ - description: optional kube-rbac-proxy config to provide rbac services
+ displayName: RbacConfig
+ path: metricsExporter.rbacConfig
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:rbacConfig
+ - description: 'Reference to a configmap containing the client CA (key: ca.crt)
+ for mTLS client validation'
+ displayName: ClientCAConfigMap
+ path: metricsExporter.rbacConfig.clientCAConfigMap
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:clientCAConfigMap
+ - description: disable https protecting the proxy endpoint
+ displayName: DisableHttps
+ path: metricsExporter.rbacConfig.disableHttps
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:disableHttps
+ - description: enable kube-rbac-proxy, disabled by default
+ displayName: Enable
+ path: metricsExporter.rbacConfig.enable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:enable
+ - description: kube-rbac-proxy image
+ displayName: Image
+ path: metricsExporter.rbacConfig.image
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:image
+ - description: certificate secret to mount in kube-rbac container for TLS, self
+ signed certificates will be generated by default
+ displayName: Secret
+ path: metricsExporter.rbacConfig.secret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:secret
+ - description: Optional static RBAC rules based on client certificate Common
+ Name (CN)
+ displayName: StaticAuthorization
+ path: metricsExporter.rbacConfig.staticAuthorization
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:staticAuthorization
+ - description: Expected CN (Common Name) from client cert (e.g., Prometheus
+ SA identity)
+ displayName: ClientName
+ path: metricsExporter.rbacConfig.staticAuthorization.clientName
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:clientName
+ - description: Enables static authorization using client certificate CN
+ displayName: Enable
+ path: metricsExporter.rbacConfig.staticAuthorization.enable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:enable
+ - description: Selector describes on which nodes to enable metrics exporter
+ displayName: Selector
+ path: metricsExporter.selector
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:selector
+ - description: ServiceType service type for metrics, clusterIP/NodePort, clusterIP
+ by default
+ displayName: ServiceType
+ path: metricsExporter.serviceType
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:serviceType
+ - description: tolerations for metrics exporter
+ displayName: Tolerations
+ path: metricsExporter.tolerations
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:tolerations
+ - description: upgrade policy for metrics exporter daemons
+ displayName: UpgradePolicy
+ path: metricsExporter.upgradePolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:upgradePolicy
+ - description: MaxUnavailable specifies the maximum number of Pods that can
+ be unavailable during the update process. Applicable for RollingUpdate only.
+ Default value is 1.
+ displayName: MaxUnavailable
+ path: metricsExporter.upgradePolicy.maxUnavailable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:maxUnavailable
+ - description: UpgradeStrategy specifies the type of the DaemonSet update. Valid
+ values are "RollingUpdate" (default) or "OnDelete".
+ displayName: UpgradeStrategy
+ path: metricsExporter.upgradePolicy.upgradeStrategy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:upgradeStrategy
+ - description: 'SecondaryNetworkSpec contains the spec for secondary network:
+ CNI plugins and IPAM'
+ displayName: SecondaryNetwork
+ path: secondaryNetwork
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:secondaryNetwork
+ - description: enable CNI plugins, disabled by default
+ displayName: Enable
+ path: secondaryNetwork.cniPlugins.enable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:enable
+ - description: image information for CNI plugins
+ displayName: Image
+ path: secondaryNetwork.cniPlugins.image
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:image
+ - description: image pull policy
+ displayName: ImagePullPolicy
+ path: secondaryNetwork.cniPlugins.imagePullPolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imagePullPolicy
+ - description: image registry secret used to pull/push images
+ displayName: ImageRegistrySecret
+ path: secondaryNetwork.cniPlugins.imageRegistrySecret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imageRegistrySecret
+ - description: tolerations
+ displayName: Tolerations
+ path: secondaryNetwork.cniPlugins.tolerations
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:tolerations
+ - description: upgrade policy for CNI plugins daemonset
+ displayName: UpgradePolicy
+ path: secondaryNetwork.cniPlugins.upgradePolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:upgradePolicy
+ - description: MaxUnavailable specifies the maximum number of Pods that can
+ be unavailable during the update process. Applicable for RollingUpdate only.
+ Default value is 1.
+ displayName: MaxUnavailable
+ path: secondaryNetwork.cniPlugins.upgradePolicy.maxUnavailable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:maxUnavailable
+ - description: UpgradeStrategy specifies the type of the DaemonSet update. Valid
+ values are "RollingUpdate" (default) or "OnDelete".
+ displayName: UpgradeStrategy
+ path: secondaryNetwork.cniPlugins.upgradePolicy.upgradeStrategy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:upgradeStrategy
+ - description: Selector describes on which nodes the Network Operator should
+ enable the Network device.
+ displayName: Selector
+ path: selector
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:selector
+ - description: test runner
+ displayName: TestRunner
+ path: testRunner
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:testRunner
+ - description: config map to customize the config for test runner, if not specified
+ default test config will be aplied
+ displayName: Secret
+ path: testRunner.config
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:configmap
+ - description: enable test runner, disabled by default
+ displayName: Enable
+ path: testRunner.enable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:enable
+ - description: test runner image
+ displayName: Image
+ path: testRunner.image
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:image
+ - description: image pull policy for test runner
+ displayName: ImagePullPolicy
+ path: testRunner.imagePullPolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imagePullPolicy
+ - description: test runner image registry secret used to pull/push images
+ displayName: ImageRegistrySecret
+ path: testRunner.imageRegistrySecret
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:imageRegistrySecret
+ - description: captures logs location and export config for test runner logs
+ displayName: LogsLocation
+ path: testRunner.logsLocation
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:logsLocation
+ - description: host path to store test runner internal status db in order to
+ persist test running status
+ displayName: HostPath
+ path: testRunner.logsLocation.hostPath
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:hostPath
+ - description: LogsExportSecrets is a list of secrets that contain connectivity
+ info to multiple cloud providers
+ displayName: LogsExportSecrets
+ path: testRunner.logsLocation.logsExportSecrets
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:logsExportSecrets
+ - description: volume mount destination within test runner container
+ displayName: MountPath
+ path: testRunner.logsLocation.mountPath
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:mountPath
+ - description: Selector describes on which nodes to enable test runner
+ displayName: Selector
+ path: testRunner.selector
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:selector
+ - description: tolerations for test runner
+ displayName: Tolerations
+ path: testRunner.tolerations
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:tolerations
+ - description: upgrade policy for test runner daemonset
+ displayName: UpgradePolicy
+ path: testRunner.upgradePolicy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:upgradePolicy
+ - description: MaxUnavailable specifies the maximum number of Pods that can
+ be unavailable during the update process. Applicable for RollingUpdate only.
+ Default value is 1.
+ displayName: MaxUnavailable
+ path: testRunner.upgradePolicy.maxUnavailable
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:maxUnavailable
+ - description: UpgradeStrategy specifies the type of the DaemonSet update. Valid
+ values are "RollingUpdate" (default) or "OnDelete".
+ displayName: UpgradeStrategy
+ path: testRunner.upgradePolicy.upgradeStrategy
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.networkconfigs:upgradeStrategy
+ statusDescriptors:
+ - description: number of the actually deployed and running pods
+ displayName: AvailableNumber
+ path: configManager.availableNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:availableNumber
+ - description: number of the pods that should be deployed for daemonset
+ displayName: DesiredNumber
+ path: configManager.desiredNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:desiredNumber
+ - description: number of nodes that are targeted by the NetworkConfig selector
+ displayName: NodesMatchingSelectorNumber
+ path: configManager.nodesMatchingSelectorNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:nodesMatchingSelectorNumber
+ - description: number of the actually deployed and running pods
+ displayName: AvailableNumber
+ path: devicePlugin.availableNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:availableNumber
+ - description: number of the pods that should be deployed for daemonset
+ displayName: DesiredNumber
+ path: devicePlugin.desiredNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:desiredNumber
+ - description: number of nodes that are targeted by the NetworkConfig selector
+ displayName: NodesMatchingSelectorNumber
+ path: devicePlugin.nodesMatchingSelectorNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:nodesMatchingSelectorNumber
+ - description: number of the actually deployed and running pods
+ displayName: AvailableNumber
+ path: driver.availableNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:availableNumber
+ - description: number of the pods that should be deployed for daemonset
+ displayName: DesiredNumber
+ path: driver.desiredNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:desiredNumber
+ - description: number of nodes that are targeted by the NetworkConfig selector
+ displayName: NodesMatchingSelectorNumber
+ path: driver.nodesMatchingSelectorNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:nodesMatchingSelectorNumber
+ - description: number of the actually deployed and running pods
+ displayName: AvailableNumber
+ path: metricsExporter.availableNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:availableNumber
+ - description: number of the pods that should be deployed for daemonset
+ displayName: DesiredNumber
+ path: metricsExporter.desiredNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:desiredNumber
+ - description: number of nodes that are targeted by the NetworkConfig selector
+ displayName: NodesMatchingSelectorNumber
+ path: metricsExporter.nodesMatchingSelectorNumber
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:nodesMatchingSelectorNumber
+ - description: NodeModuleStatus contains per node status of driver module installation
+ displayName: NodeModuleStatus
+ path: nodeModuleStatus
+ x-descriptors:
+ - urn:alm:descriptor:com.amd.NetworkConfigs:nodeModuleStatus
+ version: v1alpha1
+ description: |-
+ Operator responsible for deploying AMD Network kernel drivers, device plugin, device test runner and device metrics exporter
+ For more information, visit [documentation](https://instinct.docs.amd.com/projects/network-operator/en/latest/)
+ displayName: amd-network-operator
+ icon:
+ - base64data: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MDAiIGhlaWdodD0iMTkwLjgwMyIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNMTg3Ljg4OCAxNzguMTIySDE0My41MmwtMTMuNTczLTMyLjczOEg1Ni4wMDNsLTEyLjM2NiAzMi43MzhIMEw2Ni42NjcgMTIuNzc2aDQ3Ljc2MXpNOTEuMTU1IDUyLjI4Nkw2Ni45MTIgMTE2LjUzaDUwLjkxM3ptMjU3LjkwMS0zOS41MWgzNS44OHYxNjUuMzQ2aC00MS4yMTlWNzQuODQybC00NC42MDggNTEuODc3aC02LjMwMWwtNDQuNjA1LTUxLjg3N1YxNzguMTJoLTQxLjIxOVYxMi43NzZoMzUuODhsNTMuMDkyIDYxLjMzNnptMTQwLjMxOSAwYzYwLjM2NCAwIDkxLjM5MSAzNy41NzMgOTEuMzkxIDgyLjkwOSAwIDQ3LjUxNy0zMC4wNTggODIuNDM3LTk2IDgyLjQzN2gtNjguMzY5VjEyLjc3NnptLTMxLjc2MiAxMzUuMDQxaDI2LjkwNmM0MS40NTcgMCA1My44MjMtMjguMTI5IDUzLjgyMy01Mi4zNzcgMC0yOC4zNjgtMTUuMjc2LTUyLjM2My01NC4zMDgtNTIuMzYzaC0yNi40MjJ2MTA0Ljc0em0yMDUuMTU2LTk1LjgzNkw2MTAuNzk3IDBIODAwdjE4OS4yMWwtNTEuOTcyLTUxLjk3NVY1MS45ODF6bS0uMDYxIDEwLjQxNkw2MDkuMiAxMTUuOTAzdjc0Ljg5OWg3NC44ODlsNTMuNTA1LTUzLjUwNmgtNzQuODg2eiIvPjwvc3ZnPg==
+ mediatype: image/svg+xml
+ install:
+ spec:
+ clusterPermissions:
+ - rules:
+ - apiGroups:
+ - security.openshift.io
+ resourceNames:
+ - privileged
+ resources:
+ - securitycontextconstraints
+ verbs:
+ - use
+ serviceAccountName: amd-network-operator-cni-plugins
+ - rules:
+ - apiGroups:
+ - ""
+ resources:
+ - events
+ verbs:
+ - create
+ - list
+ - get
+ - update
+ - watch
+ - apiGroups:
+ - ""
+ resources:
+ - nodes
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - apps
+ resources:
+ - daemonsets
+ verbs:
+ - get
+ - list
+ - watch
+ - delete
+ - create
+ - update
+ - apiGroups:
+ - ""
+ resources:
+ - pods
+ verbs:
+ - get
+ - list
+ - watch
+ - delete
+ - create
+ - update
+ serviceAccountName: amd-network-operator-config-manager
+ - rules:
+ - apiGroups:
+ - ""
+ resources:
+ - events
+ verbs:
+ - create
+ - patch
+ - apiGroups:
+ - ""
+ resources:
+ - configmaps
+ - secrets
+ - services
+ verbs:
+ - create
+ - delete
+ - get
+ - list
+ - patch
+ - watch
+ - apiGroups:
+ - ""
+ resources:
+ - nodes
+ verbs:
+ - get
+ - list
+ - patch
+ - watch
+ - apiGroups:
+ - ""
+ resources:
+ - nodes/finalizers
+ - nodes/status
+ verbs:
+ - get
+ - update
+ - watch
+ - apiGroups:
+ - ""
+ resources:
+ - pods
+ verbs:
+ - create
+ - delete
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - ""
+ resources:
+ - pods/eviction
+ verbs:
+ - create
+ - delete
+ - get
+ - list
+ - apiGroups:
+ - ""
+ resources:
+ - pods/finalizers
+ - pods/status
+ verbs:
+ - delete
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - ""
+ resources:
+ - services/finalizers
+ verbs:
+ - create
+ - get
+ - update
+ - watch
+ - apiGroups:
+ - amd.com
+ resources:
+ - networkconfigs
+ verbs:
+ - create
+ - get
+ - list
+ - patch
+ - update
+ - watch
+ - apiGroups:
+ - amd.com
+ resources:
+ - networkconfigs/finalizers
+ verbs:
+ - update
+ - apiGroups:
+ - amd.com
+ resources:
+ - networkconfigs/status
+ verbs:
+ - get
+ - patch
+ - update
+ - apiGroups:
+ - apiextensions.k8s.io
+ resources:
+ - customresourcedefinitions
+ verbs:
+ - delete
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - apps
+ resources:
+ - daemonsets
+ - daemonsets/status
+ verbs:
+ - create
+ - delete
+ - get
+ - list
+ - patch
+ - watch
+ - apiGroups:
+ - apps
+ resources:
+ - daemonsets/finalizers
+ verbs:
+ - create
+ - get
+ - update
+ - watch
+ - apiGroups:
+ - kmm.sigs.x-k8s.io
+ resources:
+ - modules
+ verbs:
+ - create
+ - delete
+ - get
+ - list
+ - patch
+ - update
+ - watch
+ - apiGroups:
+ - kmm.sigs.x-k8s.io
+ resources:
+ - modules/finalizers
+ - nodemodulesconfigs/finalizers
+ verbs:
+ - get
+ - update
+ - watch
+ - apiGroups:
+ - kmm.sigs.x-k8s.io
+ resources:
+ - modules/status
+ verbs:
+ - get
+ - patch
+ - update
+ - apiGroups:
+ - kmm.sigs.x-k8s.io
+ resources:
+ - nodemodulesconfigs
+ - nodemodulesconfigs/status
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - monitoring.coreos.com
+ resources:
+ - servicemonitors
+ verbs:
+ - create
+ - delete
+ - get
+ - list
+ - patch
+ - update
+ - watch
+ serviceAccountName: amd-network-operator-controller-manager
+ - rules:
+ - apiGroups:
+ - security.openshift.io
+ resourceNames:
+ - privileged
+ resources:
+ - securitycontextconstraints
+ verbs:
+ - use
+ serviceAccountName: amd-network-operator-device-plugin
+ - rules:
+ - apiGroups:
+ - security.openshift.io
+ resourceNames:
+ - privileged
+ resources:
+ - securitycontextconstraints
+ verbs:
+ - use
+ serviceAccountName: amd-network-operator-kmm-module-loader
+ - rules:
+ - apiGroups:
+ - ""
+ resources:
+ - nodes
+ - pods
+ verbs:
+ - watch
+ - get
+ - list
+ - update
+ - apiGroups:
+ - security.openshift.io
+ resourceNames:
+ - privileged
+ resources:
+ - securitycontextconstraints
+ verbs:
+ - use
+ serviceAccountName: amd-network-operator-metrics-exporter
+ - rules:
+ - apiGroups:
+ - security.openshift.io
+ resourceNames:
+ - privileged
+ resources:
+ - securitycontextconstraints
+ verbs:
+ - use
+ - apiGroups:
+ - authentication.k8s.io
+ resources:
+ - tokenreviews
+ verbs:
+ - create
+ - apiGroups:
+ - authorization.k8s.io
+ resources:
+ - subjectaccessreviews
+ verbs:
+ - create
+ - apiGroups:
+ - ""
+ resources:
+ - nodes
+ verbs:
+ - watch
+ - get
+ - list
+ - update
+ - apiGroups:
+ - ""
+ resources:
+ - pods
+ verbs:
+ - watch
+ - get
+ - list
+ serviceAccountName: amd-network-operator-metrics-exporter-rbac-proxy
+ - rules:
+ - apiGroups:
+ - ""
+ resources:
+ - nodes
+ verbs:
+ - watch
+ - get
+ - list
+ - update
+ - apiGroups:
+ - security.openshift.io
+ resourceNames:
+ - privileged
+ resources:
+ - securitycontextconstraints
+ verbs:
+ - use
+ serviceAccountName: amd-network-operator-node-labeller
+ - rules:
+ - apiGroups:
+ - ""
+ resources:
+ - events
+ verbs:
+ - create
+ - list
+ - get
+ - update
+ - watch
+ - apiGroups:
+ - ""
+ resources:
+ - nodes
+ verbs:
+ - patch
+ - apiGroups:
+ - security.openshift.io
+ resourceNames:
+ - privileged
+ resources:
+ - securitycontextconstraints
+ verbs:
+ - use
+ serviceAccountName: amd-network-operator-test-runner
+ - rules:
+ - apiGroups:
+ - security.openshift.io
+ resourceNames:
+ - privileged
+ resources:
+ - securitycontextconstraints
+ verbs:
+ - use
+ serviceAccountName: amd-network-operator-utils-container
+ deployments:
+ - label:
+ app.kubernetes.io/component: amd-network
+ app.kubernetes.io/name: amd-network
+ app.kubernetes.io/part-of: amd-network
+ control-plane: controller-manager
+ name: amd-network-operator-controller-manager
+ spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/component: amd-network
+ app.kubernetes.io/name: amd-network
+ app.kubernetes.io/part-of: amd-network
+ control-plane: controller-manager
+ strategy: {}
+ template:
+ metadata:
+ annotations:
+ kubectl.kubernetes.io/default-container: manager
+ labels:
+ app.kubernetes.io/component: amd-network
+ app.kubernetes.io/name: amd-network
+ app.kubernetes.io/part-of: amd-network
+ control-plane: controller-manager
+ spec:
+ affinity:
+ nodeAffinity:
+ preferredDuringSchedulingIgnoredDuringExecution:
+ - preference:
+ matchExpressions:
+ - key: node-role.kubernetes.io/control-plane
+ operator: Exists
+ weight: 1
+ - preference:
+ matchExpressions:
+ - key: node-role.kubernetes.io/master
+ operator: Exists
+ weight: 1
+ containers:
+ - args:
+ - --config=controller_manager_config.yaml
+ env:
+ - name: OPERATOR_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ image: docker.io/rocm/amd-network-operator:v1.2.1
+ imagePullPolicy: Always
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: 8081
+ initialDelaySeconds: 15
+ periodSeconds: 20
+ name: manager
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: 8081
+ initialDelaySeconds: 5
+ periodSeconds: 10
+ resources:
+ limits:
+ cpu: 500m
+ memory: 384Mi
+ requests:
+ cpu: 10m
+ memory: 64Mi
+ securityContext:
+ allowPrivilegeEscalation: false
+ volumeMounts:
+ - mountPath: /controller_manager_config.yaml
+ name: manager-config
+ subPath: controller_manager_config.yaml
+ securityContext:
+ runAsNonRoot: true
+ serviceAccountName: amd-network-operator-controller-manager
+ terminationGracePeriodSeconds: 10
+ tolerations:
+ - effect: NoSchedule
+ key: node-role.kubernetes.io/master
+ operator: Equal
+ - effect: NoSchedule
+ key: node-role.kubernetes.io/control-plane
+ operator: Equal
+ volumes:
+ - configMap:
+ name: amd-network-operator-manager-config
+ name: manager-config
+ permissions:
+ - rules:
+ - apiGroups:
+ - ""
+ resources:
+ - configmaps
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+ - apiGroups:
+ - coordination.k8s.io
+ resources:
+ - leases
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+ serviceAccountName: amd-network-operator-controller-manager
+ strategy: deployment
+ installModes:
+ - supported: false
+ type: OwnNamespace
+ - supported: false
+ type: SingleNamespace
+ - supported: false
+ type: MultiNamespace
+ - supported: true
+ type: AllNamespaces
+ keywords:
+ - AMD
+ - Network
+ - NIC
+ - AINIC
+ - RDMA
+ - SR-IOV
+ - CNI
+ - Driver
+ - Monitoring
+ links:
+ - name: AMD Network Operator
+ url: https://github.com/ROCm/network-operator
+ maintainers:
+ - email: Sundaramurthy.Gurunathan@amd.com
+ name: Sundaramurthy Gurunathan
+ - email: Yuvarani.Shankar@amd.com
+ name: Yuvarani Shankar
+ - email: shrey.ajmera@amd.com
+ name: Shrey Ajmera
+ - email: Yan.Sun3@amd.com
+ name: Yan Sun
+ maturity: stable
+ provider:
+ name: Advanced Micro Devices, Inc.
+ version: 1.2.1
diff --git a/bundle/manifests/amd.com_networkconfigs.yaml b/bundle/manifests/amd.com_networkconfigs.yaml
new file mode 100644
index 00000000..940d6c44
--- /dev/null
+++ b/bundle/manifests/amd.com_networkconfigs.yaml
@@ -0,0 +1,1655 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.17.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/component: amd-network
+ app.kubernetes.io/name: amd-network
+ app.kubernetes.io/part-of: amd-network
+ name: networkconfigs.amd.com
+spec:
+ group: amd.com
+ names:
+ kind: NetworkConfig
+ listKind: NetworkConfigList
+ plural: networkconfigs
+ shortNames:
+ - nwcfg
+ singular: networkconfig
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: NetworkConfig describes how to enable AMD Network device
+ properties:
+ apiVersion:
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+ type: string
+ kind:
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: NetworkConfigSpec describes how the AMD Network operator
+ should enable AMD Network device for customer's use.
+ properties:
+ commonConfig:
+ description: common config
+ properties:
+ initContainerImage:
+ description: InitContainerImage is being used for the operands
+ pods, i.e. metrics exporter, test runner, device plugin and
+ node labeller
+ type: string
+ utilsContainer:
+ description: UtilsContainer contains parameters to configure operator's
+ utils container
+ properties:
+ image:
+ description: Image is the image of utils container
+ pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
+ type: string
+ imagePullPolicy:
+ description: image pull policy for utils container
+ enum:
+ - Always
+ - IfNotPresent
+ - Never
+ type: string
+ imageRegistrySecret:
+ description: secret used for pull utils container image
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ configManager:
+ description: config manager
+ properties:
+ config:
+ description: config map to customize the config for config manager,
+ if not specified default config will be applied
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ configManagerTolerations:
+ description: tolerations for the network config manager DaemonSet
+ items:
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
+ properties:
+ effect:
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
+ type: string
+ key:
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
+ type: string
+ operator:
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
+ type: string
+ tolerationSeconds:
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
+ format: int64
+ type: integer
+ value:
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ enable:
+ description: enable config manager, disabled by default
+ type: boolean
+ image:
+ description: config manager image
+ pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
+ type: string
+ imagePullPolicy:
+ description: image pull policy for config manager
+ enum:
+ - Always
+ - IfNotPresent
+ - Never
+ type: string
+ imageRegistrySecret:
+ description: config manager image registry secret used to pull/push
+ images
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector describes on which nodes to enable config
+ manager
+ type: object
+ upgradePolicy:
+ description: upgrade policy for config manager daemonset
+ properties:
+ maxUnavailable:
+ default: 1
+ description: MaxUnavailable specifies the maximum number of
+ Pods that can be unavailable during the update process.
+ Applicable for RollingUpdate only. Default value is 1.
+ format: int32
+ type: integer
+ upgradeStrategy:
+ description: UpgradeStrategy specifies the type of the DaemonSet
+ update. Valid values are "RollingUpdate" (default) or "OnDelete".
+ enum:
+ - RollingUpdate
+ - OnDelete
+ type: string
+ type: object
+ type: object
+ devicePlugin:
+ description: device plugin
+ properties:
+ devicePluginArguments:
+ additionalProperties:
+ type: string
+ description: |-
+ device plugin arguments is used to pass supported flags and their values while starting device plugin daemonset
+ supported flag values: {"resource_naming_strategy": {"single", "mixed"}}
+ type: object
+ devicePluginImage:
+ description: device plugin image
+ pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
+ type: string
+ devicePluginImagePullPolicy:
+ description: image pull policy for device plugin
+ enum:
+ - Always
+ - IfNotPresent
+ - Never
+ type: string
+ devicePluginTolerations:
+ description: tolerations for the device plugin DaemonSet
+ items:
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
+ properties:
+ effect:
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
+ type: string
+ key:
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
+ type: string
+ operator:
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
+ type: string
+ tolerationSeconds:
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
+ format: int64
+ type: integer
+ value:
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ enableNodeLabeller:
+ default: true
+ description: enable or disable the node labeller
+ type: boolean
+ imageRegistrySecret:
+ description: node labeller image registry secret used to pull/push
+ images
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ nodeLabellerImage:
+ description: node labeller image
+ pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
+ type: string
+ nodeLabellerImagePullPolicy:
+ description: image pull policy for node labeller
+ enum:
+ - Always
+ - IfNotPresent
+ - Never
+ type: string
+ nodeLabellerTolerations:
+ description: tolerations for the node labeller DaemonSet
+ items:
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
+ properties:
+ effect:
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
+ type: string
+ key:
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
+ type: string
+ operator:
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
+ type: string
+ tolerationSeconds:
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
+ format: int64
+ type: integer
+ value:
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ upgradePolicy:
+ description: upgrade policy for device plugin and node labeller
+ daemons
+ properties:
+ maxUnavailable:
+ default: 1
+ description: MaxUnavailable specifies the maximum number of
+ Pods that can be unavailable during the update process.
+ Applicable for RollingUpdate only. Default value is 1.
+ format: int32
+ type: integer
+ upgradeStrategy:
+ description: UpgradeStrategy specifies the type of the DaemonSet
+ update. Valid values are "RollingUpdate" (default) or "OnDelete".
+ enum:
+ - RollingUpdate
+ - OnDelete
+ type: string
+ type: object
+ type: object
+ driver:
+ description: driver
+ properties:
+ AMDNetworkInstallerRepoURL:
+ description: |-
+ radeon repo URL for fetching amdnetwork installer if building driver image on the fly
+ installer URL is https://repo.radeon.com by default
+ type: string
+ blacklist:
+ description: |-
+ blacklist amdnetwork drivers on the host. Node reboot is required to apply the blacklist on the worker nodes.
+ Require spec.devicePlugin.enableNodeLabeller=true to take effect.
+ Not working for OpenShift cluster. OpenShift users please use the Machine Config Operator (MCO) resource to configure ionic blacklist.
+ Example MCO resource is available at https://instinct.docs.amd.com/projects/network-operator/en/latest/installation/openshift-olm.html#create-blacklist-for-installing-out-of-tree-kernel-module
+ type: boolean
+ enable:
+ default: true
+ description: |-
+ enable driver install. default value is true.
+ disable is for skipping driver install/uninstall for dryrun or using in-tree ionic and rdma related kernel modules
+ type: boolean
+ image:
+ description: |-
+ defines image that includes drivers and firmware blobs, don't include tag since it will be fully managed by operator
+ for vanilla k8s the default value is image-registry:5000/$MOD_NAMESPACE/amdnetwork_kmod
+ for OpenShift the default value is image-registry.openshift-image-registry.svc:5000/$MOD_NAMESPACE/amdnetwork_kmod
+ image tag will be in the format of ---
+ example tag is coreos-416.94-5.14.0-427.28.1.el9_4.x86_64-6.2.2 and ubuntu-22.04-5.15.0-94-generic-6.1.3
+ NOTE: Updating the driver image repository is not supported. Please delete the existing NetworkConfig and create a new one with the updated image repository
+ pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[$a-zA-Z0-9_]+(?:[._-][$a-zA-Z0-9_]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
+ type: string
+ imageBuild:
+ description: image build configs
+ properties:
+ baseImageRegistry:
+ default: docker.io
+ description: |-
+ image registry to fetch base image for building driver image, default value is docker.io, the builder will search for corresponding OS base image from given registry
+ e.g. if your worker node is using Ubuntu 22.04, by default the base image would be docker.io/ubuntu:22.04
+ Use spec.driver.imageRegistrySecret for authentication with private registries.
+ NOTE: this field won't apply for OpenShift since OpenShift is using its own DriverToolKit image to build driver image
+ type: string
+ baseImageRegistryTLS:
+ description: |-
+ TLS settings for fetching base image
+ this field will be applied to SourceImageRepo as well
+ properties:
+ insecure:
+ description: If true, check if the container image already
+ exists using plain HTTP.
+ type: boolean
+ insecureSkipTLSVerify:
+ description: If true, skip any TLS server certificate
+ validation
+ type: boolean
+ type: object
+ sourceImageRepo:
+ description: |-
+ SourceImageRepo specifies the image repository for the driver source code (OpenShift only).
+ Used when spec.driver.useSourceImage is true. The operator automatically determines the image tag
+ based on cluster RHEL version and spec.driver.version (format: coreos--).
+ Default: docker.io/rocm/amdainic-driver
+ Use spec.driver.imageRegistrySecret for authentication with private registries.
+ type: string
+ type: object
+ imageRegistrySecret:
+ description: secrets used for pull/push images from/to private
+ registry specified in driversImage
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ imageRegistryTLS:
+ description: driver image registry TLS setting for the container
+ image
+ properties:
+ insecure:
+ description: If true, check if the container image already
+ exists using plain HTTP.
+ type: boolean
+ insecureSkipTLSVerify:
+ description: If true, skip any TLS server certificate validation
+ type: boolean
+ type: object
+ imageSign:
+ description: |-
+ image signing config to sign the driver image when building driver image on the fly
+ image signing is required for installing driver on secure boot enabled system
+ properties:
+ certSecret:
+ description: |-
+ ImageSignCertSecret the public key used to sign kernel modules within image
+ necessary for secure boot enabled system
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ keySecret:
+ description: |-
+ ImageSignKeySecret the private key used to sign kernel modules within image
+ necessary for secure boot enabled system
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ tolerations:
+ description: tolerations for kmm module object
+ items:
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
+ properties:
+ effect:
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
+ type: string
+ key:
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
+ type: string
+ operator:
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
+ type: string
+ tolerationSeconds:
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
+ format: int64
+ type: integer
+ value:
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ upgradePolicy:
+ description: policy to upgrade the drivers
+ properties:
+ enable:
+ description: |-
+ enable upgrade policy, disabled by default
+ If disabled, user has to manually upgrade all the nodes.
+ type: boolean
+ maxParallelUpgrades:
+ default: 1
+ description: |-
+ MaxParallelUpgrades indicates how many nodes can be upgraded in parallel
+ 0 means no limit, all nodes will be upgraded in parallel
+ minimum: 0
+ type: integer
+ maxUnavailableNodes:
+ anyOf:
+ - type: integer
+ - type: string
+ default: 25%
+ description: |-
+ MaxUnavailableNodes indicates maximum number of nodes that can be in a failed upgrade state beyond which upgrades will stop to keep cluster at a minimal healthy state
+ Value can be an integer (ex: 2) which would mean atmost 2 nodes can be in failed state after which new upgrades will not start. Or it can be a percentage string(ex: "50%") from which absolute number will be calculated and round up
+ x-kubernetes-int-or-string: true
+ nodeDrainPolicy:
+ description: Node draining policy
+ properties:
+ force:
+ default: false
+ description: Force indicates if force draining is allowed
+ type: boolean
+ gracePeriodSeconds:
+ default: -1
+ description: GracePeriodSeconds indicates the time kubernetes
+ waits for a pod to shut down gracefully after receiving
+ a termination signal
+ type: integer
+ timeoutSeconds:
+ default: 300
+ description: TimeoutSecond specifies the length of time
+ in seconds to wait before giving up drain, zero means
+ infinite
+ minimum: 0
+ type: integer
+ type: object
+ podDeletionPolicy:
+ description: Pod Deletion policy. If both NodeDrainPolicy
+ and PodDeletionPolicy config is available, NodeDrainPolicy(if
+ enabled) will take precedence.
+ properties:
+ force:
+ default: false
+ description: Force indicates if force deletion is allowed
+ type: boolean
+ gracePeriodSeconds:
+ default: -1
+ description: GracePeriodSeconds indicates the time kubernetes
+ waits for a pod to shut down gracefully after receiving
+ a termination signal
+ type: integer
+ timeoutSeconds:
+ default: 300
+ description: TimeoutSecond specifies the length of time
+ in seconds to wait before giving up on pod deletion,
+ zero means infinite
+ minimum: 0
+ type: integer
+ type: object
+ rebootRequired:
+ default: true
+ description: reboot between driver upgrades, enabled by default,
+ if enabled spec.commonConfig.utilsContainer will be used
+ to perform reboot on worker nodes
+ type: boolean
+ type: object
+ useSourceImage:
+ description: |-
+ NOTE: currently only for OpenShift cluster
+ set to true to use source image to build driver image on the fly
+ otherwise use installer debian/rpm packages from radeon repo to build driver image
+ type: boolean
+ version:
+ description: |-
+ version of the drivers source code, can be used as part of image of dockerfile source image
+ default value for different OS is: ubuntu: 1.117.1-a-42, coreOS: 1.117.1-a-42
+ type: string
+ type: object
+ metricsExporter:
+ description: metrics exporter
+ properties:
+ config:
+ description: optional configuration for metrics
+ properties:
+ name:
+ description: |-
+ Name of the configMap that defines the list of metrics
+ default list:[]
+ type: string
+ type: object
+ enable:
+ description: enable metrics exporter, disabled by default
+ type: boolean
+ hostNetwork:
+ default: true
+ description: HostNetwork enables metrics exporter to use host
+ networking, enabled by default
+ type: boolean
+ image:
+ description: metrics exporter image
+ pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
+ type: string
+ imagePullPolicy:
+ description: image pull policy for metrics exporter
+ enum:
+ - Always
+ - IfNotPresent
+ - Never
+ type: string
+ imageRegistrySecret:
+ description: metrics exporter image registry secret used to pull/push
+ images
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ nodePort:
+ description: NodePort is the external port for pulling metrics
+ from outside the cluster, in the range 30000-32767 (assigned
+ automatically by default)
+ format: int32
+ maximum: 32767
+ minimum: 30000
+ type: integer
+ port:
+ default: 5001
+ description: Port is the internal port used for in-cluster and
+ node access to pull metrics from the metrics-exporter (default
+ 5001).
+ format: int32
+ type: integer
+ prometheus:
+ description: Prometheus configuration for metrics exporter
+ properties:
+ serviceMonitor:
+ description: ServiceMonitor configuration for Prometheus integration
+ properties:
+ attachMetadata:
+ description: AttachMetadata defines if Prometheus should
+ attach node metadata to the target
+ properties:
+ node:
+ description: |-
+ When set to true, Prometheus attaches node metadata to the discovered
+ targets.
+
+ The Prometheus service account must have the `list` and `watch`
+ permissions on the `Nodes` objects.
+ type: boolean
+ type: object
+ authorization:
+ description: Optional Prometheus authorization configuration
+ for accessing the endpoint
+ properties:
+ credentials:
+ description: Selects a key of a Secret in the namespace
+ that contains the credentials for authentication.
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type:
+ description: |-
+ Defines the authentication type. The value is case-insensitive.
+
+ "Basic" is not a supported value.
+
+ Default: "Bearer"
+ type: string
+ type: object
+ bearerTokenFile:
+ description: |-
+ Path to bearer token file to be used by Prometheus (e.g., service account token path)
+ Deprecated: Use Authorization instead. This field is kept for backward compatibility.
+ type: string
+ enable:
+ description: Enable or disable ServiceMonitor creation
+ (default false)
+ type: boolean
+ honorLabels:
+ default: true
+ description: HonorLabels chooses the metric's labels on
+ collisions with target labels (default true)
+ type: boolean
+ honorTimestamps:
+ description: HonorTimestamps controls whether the scrape
+ endpoints honor timestamps (default false)
+ type: boolean
+ interval:
+ description: 'How frequently to scrape metrics. Accepts
+ values with time unit suffix: "30s", "1m", "2h", "500ms"'
+ pattern: ^([0-9]+)(ms|s|m|h)$
+ type: string
+ labels:
+ additionalProperties:
+ type: string
+ description: 'Additional labels to add to the ServiceMonitor
+ (default release: prometheus)'
+ type: object
+ metricRelabelings:
+ description: Relabeling rules applied to individual scraped
+ metrics
+ items:
+ description: |-
+ RelabelConfig allows dynamic rewriting of the label set for targets, alerts,
+ scraped samples and remote write samples.
+
+ More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
+ properties:
+ action:
+ default: replace
+ description: |-
+ Action to perform based on the regex matching.
+
+ `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.
+ `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.
+
+ Default: "Replace"
+ enum:
+ - replace
+ - Replace
+ - keep
+ - Keep
+ - drop
+ - Drop
+ - hashmod
+ - HashMod
+ - labelmap
+ - LabelMap
+ - labeldrop
+ - LabelDrop
+ - labelkeep
+ - LabelKeep
+ - lowercase
+ - Lowercase
+ - uppercase
+ - Uppercase
+ - keepequal
+ - KeepEqual
+ - dropequal
+ - DropEqual
+ type: string
+ modulus:
+ description: |-
+ Modulus to take of the hash of the source label values.
+
+ Only applicable when the action is `HashMod`.
+ format: int64
+ type: integer
+ regex:
+ description: Regular expression against which the
+ extracted value is matched.
+ type: string
+ replacement:
+ description: |-
+ Replacement value against which a Replace action is performed if the
+ regular expression matches.
+
+ Regex capture groups are available.
+ type: string
+ separator:
+ description: Separator is the string between concatenated
+ SourceLabels.
+ type: string
+ sourceLabels:
+ description: |-
+ The source labels select values from existing labels. Their content is
+ concatenated using the configured Separator and matched against the
+ configured regular expression.
+ items:
+ description: |-
+ LabelName is a valid Prometheus label name which may only contain ASCII
+ letters, numbers, as well as underscores.
+ pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
+ type: string
+ type: array
+ targetLabel:
+ description: |-
+ Label to which the resulting string is written in a replacement.
+
+ It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,
+ `KeepEqual` and `DropEqual` actions.
+
+ Regex capture groups are available.
+ type: string
+ type: object
+ type: array
+ relabelings:
+ description: RelabelConfigs to apply to samples before
+ ingestion
+ items:
+ description: |-
+ RelabelConfig allows dynamic rewriting of the label set for targets, alerts,
+ scraped samples and remote write samples.
+
+ More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
+ properties:
+ action:
+ default: replace
+ description: |-
+ Action to perform based on the regex matching.
+
+ `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.
+ `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.
+
+ Default: "Replace"
+ enum:
+ - replace
+ - Replace
+ - keep
+ - Keep
+ - drop
+ - Drop
+ - hashmod
+ - HashMod
+ - labelmap
+ - LabelMap
+ - labeldrop
+ - LabelDrop
+ - labelkeep
+ - LabelKeep
+ - lowercase
+ - Lowercase
+ - uppercase
+ - Uppercase
+ - keepequal
+ - KeepEqual
+ - dropequal
+ - DropEqual
+ type: string
+ modulus:
+ description: |-
+ Modulus to take of the hash of the source label values.
+
+ Only applicable when the action is `HashMod`.
+ format: int64
+ type: integer
+ regex:
+ description: Regular expression against which the
+ extracted value is matched.
+ type: string
+ replacement:
+ description: |-
+ Replacement value against which a Replace action is performed if the
+ regular expression matches.
+
+ Regex capture groups are available.
+ type: string
+ separator:
+ description: Separator is the string between concatenated
+ SourceLabels.
+ type: string
+ sourceLabels:
+ description: |-
+ The source labels select values from existing labels. Their content is
+ concatenated using the configured Separator and matched against the
+ configured regular expression.
+ items:
+ description: |-
+ LabelName is a valid Prometheus label name which may only contain ASCII
+ letters, numbers, as well as underscores.
+ pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
+ type: string
+ type: array
+ targetLabel:
+ description: |-
+ Label to which the resulting string is written in a replacement.
+
+ It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,
+ `KeepEqual` and `DropEqual` actions.
+
+ Regex capture groups are available.
+ type: string
+ type: object
+ type: array
+ tlsConfig:
+ description: TLS settings used by Prometheus to connect
+ to the metrics endpoint
+ properties:
+ ca:
+ description: Certificate authority used when verifying
+ server certificates.
+ properties:
+ configMap:
+ description: ConfigMap containing data to use
+ for the targets.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ secret:
+ description: Secret containing data to use for
+ the targets.
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ caFile:
+ description: Path to the CA cert in the Prometheus
+ container to use for the targets.
+ type: string
+ cert:
+ description: Client certificate to present when doing
+ client-authentication.
+ properties:
+ configMap:
+ description: ConfigMap containing data to use
+ for the targets.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ secret:
+ description: Secret containing data to use for
+ the targets.
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ certFile:
+ description: Path to the client cert file in the Prometheus
+ container for the targets.
+ type: string
+ insecureSkipVerify:
+ description: Disable target certificate validation.
+ type: boolean
+ keyFile:
+ description: Path to the client key file in the Prometheus
+ container for the targets.
+ type: string
+ keySecret:
+ description: Secret containing the client key file
+ for the targets.
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ maxVersion:
+ description: |-
+ Maximum acceptable TLS version.
+
+ It requires Prometheus >= v2.41.0.
+ enum:
+ - TLS10
+ - TLS11
+ - TLS12
+ - TLS13
+ type: string
+ minVersion:
+ description: |-
+ Minimum acceptable TLS version.
+
+ It requires Prometheus >= v2.35.0.
+ enum:
+ - TLS10
+ - TLS11
+ - TLS12
+ - TLS13
+ type: string
+ serverName:
+ description: Used to verify the hostname for the targets.
+ type: string
+ type: object
+ type: object
+ type: object
+ rbacConfig:
+ description: optional kube-rbac-proxy config to provide rbac services
+ properties:
+ clientCAConfigMap:
+ description: 'Reference to a configmap containing the client
+ CA (key: ca.crt) for mTLS client validation'
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ disableHttps:
+ description: disable https protecting the proxy endpoint
+ type: boolean
+ enable:
+ description: enable kube-rbac-proxy, disabled by default
+ type: boolean
+ image:
+ description: kube-rbac-proxy image
+ pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
+ type: string
+ secret:
+ description: certificate secret to mount in kube-rbac container
+ for TLS, self signed certificates will be generated by default
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ staticAuthorization:
+ description: Optional static RBAC rules based on client certificate
+ Common Name (CN)
+ properties:
+ clientName:
+ description: Expected CN (Common Name) from client cert
+ (e.g., Prometheus SA identity)
+ type: string
+ enable:
+ description: Enables static authorization using client
+ certificate CN
+ type: boolean
+ type: object
+ type: object
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector describes on which nodes to enable metrics
+ exporter
+ type: object
+ serviceType:
+ default: ClusterIP
+ description: ServiceType service type for metrics, clusterIP/NodePort,
+ clusterIP by default
+ enum:
+ - ClusterIP
+ - NodePort
+ type: string
+ tolerations:
+ description: tolerations for metrics exporter
+ items:
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
+ properties:
+ effect:
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
+ type: string
+ key:
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
+ type: string
+ operator:
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
+ type: string
+ tolerationSeconds:
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
+ format: int64
+ type: integer
+ value:
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ upgradePolicy:
+ description: upgrade policy for metrics exporter daemons
+ properties:
+ maxUnavailable:
+ default: 1
+ description: MaxUnavailable specifies the maximum number of
+ Pods that can be unavailable during the update process.
+ Applicable for RollingUpdate only. Default value is 1.
+ format: int32
+ type: integer
+ upgradeStrategy:
+ description: UpgradeStrategy specifies the type of the DaemonSet
+ update. Valid values are "RollingUpdate" (default) or "OnDelete".
+ enum:
+ - RollingUpdate
+ - OnDelete
+ type: string
+ type: object
+ type: object
+ secondaryNetwork:
+ description: 'SecondaryNetworkSpec contains the spec for secondary
+ network: CNI plugins and IPAM'
+ properties:
+ cniPlugins:
+ description: Image information for CNI plugins
+ properties:
+ enable:
+ description: enable CNI plugins, disabled by default
+ type: boolean
+ image:
+ description: image information for CNI plugins
+ pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
+ type: string
+ imagePullPolicy:
+ description: image pull policy
+ enum:
+ - Always
+ - IfNotPresent
+ - Never
+ type: string
+ imageRegistrySecret:
+ description: image registry secret used to pull/push images
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ tolerations:
+ description: tolerations
+ items:
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
+ properties:
+ effect:
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
+ type: string
+ key:
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
+ type: string
+ operator:
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
+ type: string
+ tolerationSeconds:
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
+ format: int64
+ type: integer
+ value:
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ upgradePolicy:
+ description: upgrade policy for CNI plugins daemonset
+ properties:
+ maxUnavailable:
+ default: 1
+ description: MaxUnavailable specifies the maximum number
+ of Pods that can be unavailable during the update process.
+ Applicable for RollingUpdate only. Default value is
+ 1.
+ format: int32
+ type: integer
+ upgradeStrategy:
+ description: UpgradeStrategy specifies the type of the
+ DaemonSet update. Valid values are "RollingUpdate" (default)
+ or "OnDelete".
+ enum:
+ - RollingUpdate
+ - OnDelete
+ type: string
+ type: object
+ type: object
+ type: object
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector describes on which nodes the Network Operator
+ should enable the Network device.
+ type: object
+ testRunner:
+ description: test runner
+ properties:
+ config:
+ description: config map to customize the config for test runner,
+ if not specified default test config will be aplied
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ enable:
+ description: enable test runner, disabled by default
+ type: boolean
+ image:
+ description: test runner image
+ pattern: ^([a-z0-9]+(?:[._-][a-z0-9]+)*(:[0-9]+)?)(/[a-z0-9]+(?:[._-][a-z0-9]+)*)*(?::[a-z0-9._-]+)?(?:@[a-zA-Z0-9]+:[a-f0-9]+)?$
+ type: string
+ imagePullPolicy:
+ description: image pull policy for test runner
+ enum:
+ - Always
+ - IfNotPresent
+ - Never
+ type: string
+ imageRegistrySecret:
+ description: test runner image registry secret used to pull/push
+ images
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ logsLocation:
+ description: captures logs location and export config for test
+ runner logs
+ properties:
+ hostPath:
+ default: /var/log/amd-test-runner
+ description: host path to store test runner internal status
+ db in order to persist test running status
+ type: string
+ logsExportSecrets:
+ description: LogsExportSecrets is a list of secrets that contain
+ connectivity info to multiple cloud providers
+ items:
+ description: |-
+ LocalObjectReference contains enough information to let you locate the
+ referenced object inside the same namespace.
+ properties:
+ name:
+ default: ""
+ description: |-
+ 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.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ mountPath:
+ default: /var/log/amd-test-runner
+ description: volume mount destination within test runner container
+ type: string
+ type: object
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector describes on which nodes to enable test
+ runner
+ type: object
+ tolerations:
+ description: tolerations for test runner
+ items:
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
+ properties:
+ effect:
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
+ type: string
+ key:
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
+ type: string
+ operator:
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
+ type: string
+ tolerationSeconds:
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
+ format: int64
+ type: integer
+ value:
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ upgradePolicy:
+ description: upgrade policy for test runner daemonset
+ properties:
+ maxUnavailable:
+ default: 1
+ description: MaxUnavailable specifies the maximum number of
+ Pods that can be unavailable during the update process.
+ Applicable for RollingUpdate only. Default value is 1.
+ format: int32
+ type: integer
+ upgradeStrategy:
+ description: UpgradeStrategy specifies the type of the DaemonSet
+ update. Valid values are "RollingUpdate" (default) or "OnDelete".
+ enum:
+ - RollingUpdate
+ - OnDelete
+ type: string
+ type: object
+ type: object
+ type: object
+ status:
+ description: NetworkConfigStatus defines the observed state of Module.
+ properties:
+ conditions:
+ description: Conditions list the current status of the NetworkConfig
+ object
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ configManager:
+ description: ConfigManager contains the status of the ConfigManager
+ deployment
+ properties:
+ availableNumber:
+ description: number of the actually deployed and running pods
+ format: int32
+ type: integer
+ desiredNumber:
+ description: number of the pods that should be deployed for daemonset
+ format: int32
+ type: integer
+ nodesMatchingSelectorNumber:
+ description: number of nodes that are targeted by the NetworkConfig
+ selector
+ format: int32
+ type: integer
+ type: object
+ devicePlugin:
+ description: DevicePlugin contains the status of the Device Plugin
+ deployment
+ properties:
+ availableNumber:
+ description: number of the actually deployed and running pods
+ format: int32
+ type: integer
+ desiredNumber:
+ description: number of the pods that should be deployed for daemonset
+ format: int32
+ type: integer
+ nodesMatchingSelectorNumber:
+ description: number of nodes that are targeted by the NetworkConfig
+ selector
+ format: int32
+ type: integer
+ type: object
+ driver:
+ description: Driver contains the status of the Drivers deployment
+ properties:
+ availableNumber:
+ description: number of the actually deployed and running pods
+ format: int32
+ type: integer
+ desiredNumber:
+ description: number of the pods that should be deployed for daemonset
+ format: int32
+ type: integer
+ nodesMatchingSelectorNumber:
+ description: number of nodes that are targeted by the NetworkConfig
+ selector
+ format: int32
+ type: integer
+ type: object
+ metricsExporter:
+ description: MetricsExporter contains the status of the MetricsExporter
+ deployment
+ properties:
+ availableNumber:
+ description: number of the actually deployed and running pods
+ format: int32
+ type: integer
+ desiredNumber:
+ description: number of the pods that should be deployed for daemonset
+ format: int32
+ type: integer
+ nodesMatchingSelectorNumber:
+ description: number of nodes that are targeted by the NetworkConfig
+ selector
+ format: int32
+ type: integer
+ type: object
+ nodeModuleStatus:
+ additionalProperties:
+ description: ModuleStatus contains the status of driver module installed
+ by operator on the node
+ properties:
+ bootId:
+ type: string
+ containerImage:
+ type: string
+ kernelVersion:
+ type: string
+ lastTransitionTime:
+ type: string
+ status:
+ description: UpgradeState captures the state of the upgrade
+ process on a node
+ type: string
+ upgradeStartTime:
+ type: string
+ type: object
+ description: NodeModuleStatus contains per node status of driver module
+ installation
+ type: object
+ observedGeneration:
+ description: ObservedGeneration is the latest spec generation successfully
+ processed by the controller
+ format: int64
+ type: integer
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: null
+ storedVersions: null
diff --git a/bundle/manifests/device-plugin-configmap.yaml b/bundle/manifests/device-plugin-configmap.yaml
new file mode 100644
index 00000000..f9d3d880
--- /dev/null
+++ b/bundle/manifests/device-plugin-configmap.yaml
@@ -0,0 +1,36 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: amd-network-operator-device-plugin-config
+ labels:
+ app.kubernetes.io/component: amd-network
+ app.kubernetes.io/part-of: amd-network
+data:
+ # The config.json content for the SR-IOV device plugin
+ config.json: |
+ {
+ "resourceList": [{
+ "resourceName": "nic",
+ "resourcePrefix": "amd.com",
+ "enableExporterHealthCheck": true,
+ "selectors": {
+ "vendors": ["1dd8"],
+ "devices": ["1002"],
+ "drivers": ["ionic"],
+ "isRdma": true
+ },
+ "excludeTopology": false
+ },
+ {
+ "resourceName": "vnic",
+ "resourcePrefix": "amd.com",
+ "enableExporterHealthCheck": true,
+ "selectors": {
+ "vendors": ["1dd8"],
+ "devices": ["1003"],
+ "drivers": ["ionic"],
+ "isRdma": true
+ },
+ "excludeTopology": false
+ }]
+ }
diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml
new file mode 100644
index 00000000..99b51b00
--- /dev/null
+++ b/bundle/metadata/annotations.yaml
@@ -0,0 +1,14 @@
+annotations:
+ # Core bundle annotations.
+ operators.operatorframework.io.bundle.mediatype.v1: registry+v1
+ operators.operatorframework.io.bundle.manifests.v1: manifests/
+ operators.operatorframework.io.bundle.metadata.v1: metadata/
+ operators.operatorframework.io.bundle.package.v1: amd-network-operator
+ operators.operatorframework.io.bundle.channels.v1: alpha
+ operators.operatorframework.io.metrics.builder: operator-sdk-v1.32.0
+ operators.operatorframework.io.metrics.mediatype.v1: metrics+v1
+ operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3
+
+ # Annotations for testing.
+ operators.operatorframework.io.test.mediatype.v1: scorecard+v1
+ operators.operatorframework.io.test.config.v1: tests/scorecard/
diff --git a/bundle/tests/scorecard/config.yaml b/bundle/tests/scorecard/config.yaml
new file mode 100644
index 00000000..9769772a
--- /dev/null
+++ b/bundle/tests/scorecard/config.yaml
@@ -0,0 +1,70 @@
+apiVersion: scorecard.operatorframework.io/v1alpha3
+kind: Configuration
+metadata:
+ name: config
+stages:
+- parallel: true
+ tests:
+ - entrypoint:
+ - scorecard-test
+ - basic-check-spec
+ image: quay.io/operator-framework/scorecard-test:v1.32.0
+ labels:
+ suite: basic
+ test: basic-check-spec-test
+ storage:
+ spec:
+ mountPath: {}
+ - entrypoint:
+ - scorecard-test
+ - olm-bundle-validation
+ image: quay.io/operator-framework/scorecard-test:v1.32.0
+ labels:
+ suite: olm
+ test: olm-bundle-validation-test
+ storage:
+ spec:
+ mountPath: {}
+ - entrypoint:
+ - scorecard-test
+ - olm-crds-have-validation
+ image: quay.io/operator-framework/scorecard-test:v1.32.0
+ labels:
+ suite: olm
+ test: olm-crds-have-validation-test
+ storage:
+ spec:
+ mountPath: {}
+ - entrypoint:
+ - scorecard-test
+ - olm-crds-have-resources
+ image: quay.io/operator-framework/scorecard-test:v1.32.0
+ labels:
+ suite: olm
+ test: olm-crds-have-resources-test
+ storage:
+ spec:
+ mountPath: {}
+ - entrypoint:
+ - scorecard-test
+ - olm-spec-descriptors
+ image: quay.io/operator-framework/scorecard-test:v1.32.0
+ labels:
+ suite: olm
+ test: olm-spec-descriptors-test
+ storage:
+ spec:
+ mountPath: {}
+ - entrypoint:
+ - scorecard-test
+ - olm-status-descriptors
+ image: quay.io/operator-framework/scorecard-test:v1.32.0
+ labels:
+ suite: olm
+ test: olm-status-descriptors-test
+ storage:
+ spec:
+ mountPath: {}
+storage:
+ spec:
+ mountPath: {}
diff --git a/config/manifests/bases/amd-network-operator.clusterserviceversion.yaml b/config/manifests/bases/amd-network-operator.clusterserviceversion.yaml
index 45e00374..c93eea91 100644
--- a/config/manifests/bases/amd-network-operator.clusterserviceversion.yaml
+++ b/config/manifests/bases/amd-network-operator.clusterserviceversion.yaml
@@ -5,11 +5,11 @@ metadata:
alm-examples: '[]'
capabilities: Seamless Upgrades
categories: AI/Machine Learning,Networking,Monitoring
- containerImage: registry.test.pensando.io:5000/amd-network-operator:dev
+ containerImage: docker.io/rocm/amd-network-operator:v1.2.1
description: |-
Operator responsible for deploying AMD Network kernel drivers, device plugin, node labeller and device metrics exporter
For more information, visit [documentation](https://instinct.docs.amd.com/projects/network-operator/en/latest/)
- devicePluginImage: docker.io/rocm/k8s-network-device-plugin:v0.0.1
+ devicePluginImage: docker.io/rocm/k8s-network-device-plugin:v1.2.1
features.operators.openshift.io/disconnected: "true"
features.operators.openshift.io/fips-compliant: "false"
features.operators.openshift.io/proxy-aware: "true"
@@ -17,8 +17,8 @@ metadata:
features.operators.openshift.io/token-auth-aws: "false"
features.operators.openshift.io/token-auth-azure: "false"
features.operators.openshift.io/token-auth-gcp: "false"
- metricsExporterImage: docker.io/rocm/device-metrics-exporter:nic-v0.0.1
- nodelabellerImage: docker.io/rocm/k8s-network-node-labeller:v0.0.1
+ metricsExporterImage: docker.io/rocm/device-metrics-exporter:nic-v1.2.1
+ nodelabellerImage: docker.io/rocm/k8s-network-node-labeller:v1.2.1
operatorframework.io/cluster-monitoring: "true"
operatorframework.io/suggested-namespace: openshift-amd-network
operators.openshift.io/valid-subscription: '[]'
diff --git a/config/samples/amd.com_networkconfigs.yaml b/config/samples/amd.com_networkconfigs.yaml
index cc41cfe4..73439ba9 100644
--- a/config/samples/amd.com_networkconfigs.yaml
+++ b/config/samples/amd.com_networkconfigs.yaml
@@ -44,12 +44,12 @@ spec:
devicePlugin:
# Specify the device plugin image
- # default value is rocm/k8s-network-device-plugin:v0.0.1
- devicePluginImage: rocm/k8s-network-device-plugin:v0.0.1
+ # default value is rocm/k8s-network-device-plugin:v1.2.1
+ devicePluginImage: rocm/k8s-network-device-plugin:v1.2.1
# Specify the node labeller image
- # default value is rocm/k8s-network-node-labeller:v0.0.1
- nodeLabellerImage: rocm/k8s-network-node-labeller:v0.0.1
+ # default value is rocm/k8s-network-node-labeller:v1.2.1
+ nodeLabellerImage: rocm/k8s-network-node-labeller:v1.2.1
# Specifythe node to be managed by this NetworkConfig Custom Resource
selector:
diff --git a/docs/_static/cluster-validation-job.yaml b/docs/_static/cluster-validation-job.yaml
index 0a79d7b1..6f978a98 100644
--- a/docs/_static/cluster-validation-job.yaml
+++ b/docs/_static/cluster-validation-job.yaml
@@ -32,7 +32,7 @@ data:
emptyDir: {}
initContainers:
- name: wait-for-worker-pods
- image: docker.io/rocm/network-operator-utils:v1.2.0
+ image: docker.io/rocm/network-operator-utils:v1.2.1
imagePullPolicy: Always
envFrom:
- configMapRef:
@@ -365,7 +365,7 @@ spec:
args: ['-c', '/fluent-bit/etc/fluent-bit.conf']
containers:
- name: submit-mpijob
- image: docker.io/rocm/network-operator-utils:v1.2.0
+ image: docker.io/rocm/network-operator-utils:v1.2.1
imagePullPolicy: Always
command: ["/bin/bash", "-c"]
envFrom:
diff --git a/docs/device_plugin/deviceplugin.md b/docs/device_plugin/deviceplugin.md
index 4a7c6d2a..1d971d09 100644
--- a/docs/device_plugin/deviceplugin.md
+++ b/docs/device_plugin/deviceplugin.md
@@ -16,14 +16,14 @@ spec:
# Enable the Node Labeller component (default: true)
enableNodeLabeller: true
- # Specify the Node Labeller image (default: docker.io/rocm/k8s-network-node-labeller:v1.2.0)
- nodeLabellerImage: "docker.io/rocm/k8s-network-node-labeller:v1.2.0"
+ # Specify the Node Labeller image (default: docker.io/rocm/k8s-network-node-labeller:v1.2.1)
+ nodeLabellerImage: "docker.io/rocm/k8s-network-node-labeller:v1.2.1"
# Node labeller image pull policy
nodeLabellerImagePullPolicy: Always
- # Specify the Device Plugin image (default: docker.io/rocm/k8s-network-device-plugin:v1.2.0)
- devicePluginImage: "docker.io/rocm/k8s-network-device-plugin:v1.2.0"
+ # Specify the Device Plugin image (default: docker.io/rocm/k8s-network-device-plugin:v1.2.1)
+ devicePluginImage: "docker.io/rocm/k8s-network-device-plugin:v1.2.1"
# Device plugin image pull policy
devicePluginImagePullPolicy: Always
diff --git a/docs/index.md b/docs/index.md
index 1f8c4e0c..ef1ee228 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -24,10 +24,11 @@ AMD Network Operator simplifies the use of AMD AINICs in Kubernetes environments
Below is a list of operating systems and Kubernetes versions validated with the AMD Network Operator and Metrics Exporter.
Additional versions will be added in future releases.
-| Operating System | Kubernetes Versions |
-| ---------------- | ------------------- |
-| Ubuntu 22.04 LTS | 1.29 – 1.34 |
-| Ubuntu 24.04 LTS | 1.29 – 1.34 |
+| Operating System | Kubernetes | Red Hat OpenShift |
+| ---------------- | ---------- | ----------------- |
+| Ubuntu 22.04 LTS | 1.29–1.36 | |
+| Ubuntu 24.04 LTS | 1.29–1.36 | |
+| Red Hat CoreOS (RHCOS) | | 4.21 |
### Software Version Compatibility Matrix
@@ -37,6 +38,7 @@ Additional versions will be added in future releases.
| v1.0.1 | 1.117.1-a-63 | Pollara 400 |
| v1.1.0 | 1.117.5-a-56 | Pollara 400 |
| v1.2.0 | 1.117.5-a-56
1.117.5-a-77 | Pollara 400 |
+| v1.2.1 | 1.117.5-a-77
1.117.5-a-147 | Pollara 400 |
## Prerequisites
diff --git a/docs/installation/kubernetes-helm-operators.md b/docs/installation/kubernetes-helm-operators.md
index bfb815f6..4b2761b6 100644
--- a/docs/installation/kubernetes-helm-operators.md
+++ b/docs/installation/kubernetes-helm-operators.md
@@ -180,7 +180,7 @@ helm install amd-network-operator rocm-network/network-operator-charts \
--create-namespace \
--set kmm.enabled=false \
--set node-feature-discovery.enabled=false \
- --version=v1.2.0
+ --version=v1.2.1
```
Then during this step only the network operator and multus CNI pods would be brought up in the new namespace `kube-amd-network`:
diff --git a/docs/installation/kubernetes-helm.md b/docs/installation/kubernetes-helm.md
index 8991ad47..22229570 100644
--- a/docs/installation/kubernetes-helm.md
+++ b/docs/installation/kubernetes-helm.md
@@ -111,7 +111,7 @@ Basic installation:
helm install amd-network-operator rocm-network/network-operator-charts \
--namespace kube-amd-network \
--create-namespace \
- --version=v1.2.0
+ --version=v1.2.1
```
```{note}
@@ -143,7 +143,7 @@ helm show values rocm/network-operator-charts
| Key | Type | Default | Description |
| ----- | ------ | --------- | ------------- |
| controllerManager.manager.image.repository | string | `"docker.io/rocm/network-operator"` | AMD Network operator controller manager image repository |
-| controllerManager.manager.image.tag | string | `"v1.2.0"` | AMD Network operator controller manager image tag |
+| controllerManager.manager.image.tag | string | `"v1.2.1"` | AMD Network operator controller manager image tag |
| controllerManager.manager.imagePullPolicy | string | `"Always"` | Image pull policy for AMD Network operator controller manager pod |
| controllerManager.manager.imagePullSecrets | string | `""` | Image pull secret name for pulling AMD Network operator controller manager image if registry needs credential to pull image |
| controllerManager.manager.resources.limits.cpu | string | `"1000m"` | CPU limits for the controller manager. Consider increasing for large clusters |
@@ -235,7 +235,7 @@ You can apply resource changes by updating your values.yaml file and upgrading t
helm upgrade amd-network-operator rocm/network-operator-charts \
--debug \
--namespace kube-amd-network \
- --version=v1.2.0
+ --version=v1.2.1
-f values.yaml
```
diff --git a/docs/installation/networkconfig-full.md b/docs/installation/networkconfig-full.md
index 05667bf0..a39262f2 100644
--- a/docs/installation/networkconfig-full.md
+++ b/docs/installation/networkconfig-full.md
@@ -63,7 +63,7 @@ spec:
gracePeriodSeconds: -2
# Device plugin and Node labeller config
devicePlugin:
- devicePluginImage: docker.io/rocm/k8s-network-device-plugin:v1.2.0
+ devicePluginImage: docker.io/rocm/k8s-network-device-plugin:v1.2.1
devicePluginImagePullPolicy: "Always"
devicePluginTolerations:
- key: "example-key"
@@ -75,7 +75,7 @@ spec:
value: "example-value2"
effect: "NoExecute"
enableNodeLabeller: True
- nodeLabellerImage: docker.io/rocm/k8s-network-node-labeller:v1.2.0
+ nodeLabellerImage: docker.io/rocm/k8s-network-node-labeller:v1.2.1
nodeLabellerImagePullPolicy: "Always"
nodeLabellerTolerations:
- key: "example-key"
@@ -95,7 +95,7 @@ spec:
port: 5001
serviceType: "NodePort"
nodePort: 32501
- image: docker.io/rocm/device-metrics-exporter:nic-v1.2.0
+ image: docker.io/rocm/device-metrics-exporter:nic-v1.2.1
imagePullPolicy: "Always"
imageRegistrySecret:
name: my-secret
@@ -129,7 +129,7 @@ spec:
secondaryNetwork:
cniPlugins:
enable: True
- image: docker.io/rocm/k8s-cni-plugins:v1.2.0
+ image: docker.io/rocm/k8s-cni-plugins:v1.2.1
imagePullPolicy: "Always"
imageRegistrySecret:
name: my-secret
@@ -147,7 +147,7 @@ spec:
initContainerImage: busybox:1.36
utilsContainer:
# -- network operator utility container image used for driver upgrade
- image: docker.io/rocm/network-operator-utils:v1.2.0
+ image: docker.io/rocm/network-operator-utils:v1.2.1
# -- utility container image pull policy
imagePullPolicy: IfNotPresent
# -- utility container image pull secret, e.g. {"name": "mySecretName"}
diff --git a/docs/installation/networkconfig.md b/docs/installation/networkconfig.md
index bf324e03..d423ab10 100644
--- a/docs/installation/networkconfig.md
+++ b/docs/installation/networkconfig.md
@@ -27,8 +27,8 @@ spec:
# Device plugin and Node labeller config
devicePlugin:
enableNodeLabeller: True
- nodeLabellerImage: docker.io/rocm/k8s-network-node-labeller:v1.2.0
- devicePluginImage: docker.io/rocm/k8s-network-device-plugin:v1.2.0
+ nodeLabellerImage: docker.io/rocm/k8s-network-node-labeller:v1.2.1
+ devicePluginImage: docker.io/rocm/k8s-network-device-plugin:v1.2.1
# Metrics exporter config
metricsExporter:
@@ -37,13 +37,13 @@ spec:
serviceType: "NodePort"
nodePort: 32501
hostNetwork: true
- image: docker.io/rocm/device-metrics-exporter:nic-v1.2.0
+ image: docker.io/rocm/device-metrics-exporter:nic-v1.2.1
# Secondary network config
secondaryNetwork:
cniPlugins:
enable: True
- image: docker.io/rocm/k8s-cni-plugins:v1.2.0
+ image: docker.io/rocm/k8s-cni-plugins:v1.2.1
# Specify the node to be managed by this NetworkConfig Custom Resource
selector:
@@ -80,8 +80,8 @@ To check the full spec of `NetworkConfig` definition, run `kubectl get crds netw
| Parameter | Description | Default |
| --------- | ----------- | ------- |
-| `devicePluginImage` | AMD Network device plugin image | `docker.io/rocm/k8s-network-device-plugin:v1.2.0` |
-| `nodeLabellerImage` | Node labeller image | `docker.io/rocm/k8s-network-node-labeller:v1.2.0` |
+| `devicePluginImage` | AMD Network device plugin image | `docker.io/rocm/k8s-network-device-plugin:v1.2.1` |
+| `nodeLabellerImage` | Node labeller image | `docker.io/rocm/k8s-network-node-labeller:v1.2.1` |
| `imageRegistrySecret.name` | Name of registry credentials secret
to pull device plugin / node labeller image | |
| `enableNodeLabeller` | enable / disable node labeller | `true` |
@@ -101,7 +101,7 @@ To check the full spec of `NetworkConfig` definition, run `kubectl get crds netw
| Parameter | Description | Default |
| --------- | ----------- | ------- |
| `cniPlugins.enable` | Enable/disable CNI plugins | `false` |
-| `cniPlugins.image` | CNI plugins image | `docker.io/rocm/cni-plugins:v1.2.0` |
+| `cniPlugins.image` | CNI plugins image | `docker.io/rocm/k8s-cni-plugins:v1.2.1` |
| `cniPlugins.imageRegistrySecret.name` | Name of registry credentials secret
to pull metrics exporter image | |
#### `spec.selector` Parameters
diff --git a/docs/metrics/exporter.md b/docs/metrics/exporter.md
index 08a873a0..a665ee41 100644
--- a/docs/metrics/exporter.md
+++ b/docs/metrics/exporter.md
@@ -16,7 +16,7 @@ spec:
enable: true
# Specify the Metrics Exporter image
- image: "docker.io/rocm/device-metrics-exporter:nic-v1.2.0"
+ image: "docker.io/rocm/device-metrics-exporter:nic-v1.2.1"
# Image pull policy (default: IfNotPresent, or Always if tag is :latest)
imagePullPolicy: "IfNotPresent"
diff --git a/docs/upgrades/componentupgrades.md b/docs/upgrades/componentupgrades.md
index 5981cca6..34353f4a 100644
--- a/docs/upgrades/componentupgrades.md
+++ b/docs/upgrades/componentupgrades.md
@@ -56,7 +56,7 @@ The current image the Device Plugin Daemonset is using can be checked by using `
```yaml
device-plugin:
Container ID: containerd://b1aaa67ebdd87d4ef0f2a32b76b428068d24c28ced3e86c3c5caba39bb5689a4
- Image: rocm/k8s-network-device-plugin:v1.2.0
+ Image: rocm/k8s-network-device-plugin:v1.2.1
```
### 3. Upgrade the Image of Device Plugin Daemonset
@@ -71,7 +71,7 @@ Old CR:
```yaml
devicePlugin:
- devicePluginImage: rocm/k8s-network-device-plugin:v1.2.0
+ devicePluginImage: rocm/k8s-network-device-plugin:v1.2.1
```
Updated CR:
@@ -109,7 +109,7 @@ Old CR:
enable: True
serviceType: "ClusterIP"
port: 5001
- image: rocm/device-metrics-exporter:nic-v1.2.0
+ image: rocm/device-metrics-exporter:nic-v1.2.1
```
Updated CR:
@@ -119,7 +119,7 @@ Updated CR:
enable: True
serviceType: "ClusterIP"
port: 5001
- image: rocm/device-metrics-exporter:nic-v1.2.0
+ image: rocm/device-metrics-exporter:nic-v1.2.1
upgradePolicy:
upgradeStrategy: OnDelete
```
diff --git a/docs/upgrades/upgrade.md b/docs/upgrades/upgrade.md
index c1c57c21..69c46db4 100644
--- a/docs/upgrades/upgrade.md
+++ b/docs/upgrades/upgrade.md
@@ -42,7 +42,7 @@ Upgrade the operator using the following command:
```bash
helm upgrade amd-network-operator rocm/network-operator-charts \
-n kube-amd-network \
- --version=v1.2.0 \
+ --version=v1.2.1 \
--recreate-pods \
--debug
```
@@ -54,10 +54,10 @@ helm upgrade amd-network-operator rocm/network-operator-charts \
# Perform helm upgrade
helm upgrade amd-network-operator rocm/network-operator-charts \
-n kube-amd-network \
- --version=v1.2.0 \
+ --version=v1.2.1 \
--debug \
--set controllerManager.manager.image.repository=docker.io/rocm/network-operator \
- --set controllerManager.manager.image.tag=v1.2.0
+ --set controllerManager.manager.image.tag=v1.2.1
```
```{note}
diff --git a/example/networkconfig.yaml b/example/networkconfig.yaml
index abea4a42..5160ad6f 100644
--- a/example/networkconfig.yaml
+++ b/example/networkconfig.yaml
@@ -42,12 +42,12 @@ spec:
enableNodeLabeller: True
# node labeller image
- # default value is rocm/k8s-network-node-labeller:v1.2.0
- nodeLabellerImage: docker.io/rocm/k8s-network-node-labeller:v1.2.0
+ # default value is rocm/k8s-network-node-labeller:v1.2.1
+ nodeLabellerImage: docker.io/rocm/k8s-network-node-labeller:v1.2.1
# Specify the device plugin image
- # default value is rocm/k8s-network-device-plugin:v1.2.0
- devicePluginImage: docker.io/rocm/k8s-network-device-plugin:v1.2.0
+ # default value is rocm/k8s-network-device-plugin:v1.2.1
+ devicePluginImage: docker.io/rocm/k8s-network-device-plugin:v1.2.1
# Specify Device Plugin image pull policy
# default value is IfNotPresent for valid tags, Always for no tag or "latest" tag
@@ -77,8 +77,8 @@ spec:
nodePort: 32501
# exporter image
- # default value is docker.io/rocm/device-metrics-exporter:nic-v1.2.0
- image: docker.io/rocm/device-metrics-exporter:nic-v1.2.0
+ # default value is docker.io/rocm/device-metrics-exporter:nic-v1.2.1
+ image: docker.io/rocm/device-metrics-exporter:nic-v1.2.1
# image pull policy for metrics exporter
# default value is IfNotPresent for valid tags, Always for no tag or "latest" tag
@@ -101,7 +101,7 @@ spec:
# CNI plugin configuration
cniPlugins:
enable: True
- image: docker.io/rocm/k8s-cni-plugins:v1.2.0
+ image: docker.io/rocm/k8s-cni-plugins:v1.2.1
imagePullPolicy: "Always"
# image registry secret used to pull/push images
imageRegistrySecret:
@@ -112,7 +112,7 @@ spec:
initContainerImage: busybox:1.36
utilsContainer:
# -- network operator utility container image used for driver upgrade
- image: docker.io/rocm/network-operator-utils:v1.2.0
+ image: docker.io/rocm/network-operator-utils:v1.2.1
# -- utility container image pull policy
imagePullPolicy: IfNotPresent
# -- utility container image pull secret, e.g. {"name": "mySecretName"}
diff --git a/hack/device-plugin-configmap.yaml b/hack/device-plugin-configmap.yaml
new file mode 100644
index 00000000..f9d3d880
--- /dev/null
+++ b/hack/device-plugin-configmap.yaml
@@ -0,0 +1,36 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: amd-network-operator-device-plugin-config
+ labels:
+ app.kubernetes.io/component: amd-network
+ app.kubernetes.io/part-of: amd-network
+data:
+ # The config.json content for the SR-IOV device plugin
+ config.json: |
+ {
+ "resourceList": [{
+ "resourceName": "nic",
+ "resourcePrefix": "amd.com",
+ "enableExporterHealthCheck": true,
+ "selectors": {
+ "vendors": ["1dd8"],
+ "devices": ["1002"],
+ "drivers": ["ionic"],
+ "isRdma": true
+ },
+ "excludeTopology": false
+ },
+ {
+ "resourceName": "vnic",
+ "resourcePrefix": "amd.com",
+ "enableExporterHealthCheck": true,
+ "selectors": {
+ "vendors": ["1dd8"],
+ "devices": ["1003"],
+ "drivers": ["ionic"],
+ "isRdma": true
+ },
+ "excludeTopology": false
+ }]
+ }
diff --git a/hack/k8s-patch/metadata-patch/Chart.yaml b/hack/k8s-patch/metadata-patch/Chart.yaml
index 99e0eb95..6791ee37 100644
--- a/hack/k8s-patch/metadata-patch/Chart.yaml
+++ b/hack/k8s-patch/metadata-patch/Chart.yaml
@@ -22,7 +22,7 @@ keywords:
- monitoring
kubeVersion: ">= 1.29.0-0"
-version: v1.2.0
+version: v1.2.1
appVersion: dev
dependencies:
diff --git a/hack/openshift-patch/metadata-patch/Chart.yaml b/hack/openshift-patch/metadata-patch/Chart.yaml
index 3489c27f..a0a28bf4 100644
--- a/hack/openshift-patch/metadata-patch/Chart.yaml
+++ b/hack/openshift-patch/metadata-patch/Chart.yaml
@@ -21,7 +21,7 @@ keywords:
- monitoring
kubeVersion: ">= 1.29.0-0"
-version: v1.2.0
+version: v1.2.1
appVersion: dev
dependencies:
diff --git a/helm-charts-k8s/Chart.lock b/helm-charts-k8s/Chart.lock
index 85c875a5..c44c5af4 100644
--- a/helm-charts-k8s/Chart.lock
+++ b/helm-charts-k8s/Chart.lock
@@ -9,4 +9,4 @@ dependencies:
repository: file://./charts/multus
version: 1.0.0
digest: sha256:04b5697c8fd25d5cb6cac27cf0248a255fd8a31e9cd3c9b7b8f114eedf788eab
-generated: "2026-04-22T19:21:21.895580993Z"
+generated: "2026-08-28T04:46:34.298915134Z"
diff --git a/helm-charts-k8s/Chart.yaml b/helm-charts-k8s/Chart.yaml
index 19c4995a..6791ee37 100644
--- a/helm-charts-k8s/Chart.yaml
+++ b/helm-charts-k8s/Chart.yaml
@@ -5,7 +5,7 @@ type: application
home: https://github.com/ROCm/network-operator
sources:
- https://github.com/ROCm/network-operator
-icon: https://raw.githubusercontent.com/ROCm/k8s-device-plugin/master/helm/logo.png
+icon: https://raw.githubusercontent.com/ROCm/network-operator/main/docs/_static/amd-network-operator-diagram.jpg
maintainers:
- name: Sundara Gurunathan
- name: Yuvarani Shankar
@@ -16,12 +16,13 @@ keywords:
- hardware
- amd
- network
- - ai
- - deep learning
+ - nic
+ - ainic
+ - rdma
- monitoring
kubeVersion: ">= 1.29.0-0"
-version: v1.2.0
+version: v1.2.1
appVersion: dev
dependencies:
diff --git a/helm-charts-k8s/README.md b/helm-charts-k8s/README.md
index caf443cd..511bee4e 100644
--- a/helm-charts-k8s/README.md
+++ b/helm-charts-k8s/README.md
@@ -17,7 +17,7 @@ For detailed component information, see [Component Overview](docs/overview.md).
The AMD Network Operator is licensed under the [Apache License 2.0](LICENSE).
# network-operator-charts
-  
+  
AMD Network Operator simplifies the deployment and management of AMD AINICs within Kubernetes clusters.
diff --git a/helm-charts-k8s/crds/networkconfig-crd.yaml b/helm-charts-k8s/crds/networkconfig-crd.yaml
index e48090ec..c656e924 100644
--- a/helm-charts-k8s/crds/networkconfig-crd.yaml
+++ b/helm-charts-k8s/crds/networkconfig-crd.yaml
@@ -9,7 +9,7 @@ metadata:
labels:
app.kubernetes.io/component: amd-network
app.kubernetes.io/part-of: amd-network
- helm.sh/chart: network-operator-charts-v1.2.0
+ helm.sh/chart: network-operator-charts-v1.2.1
app.kubernetes.io/name: network-operator-charts
app.kubernetes.io/instance: amd-network
app.kubernetes.io/version: "dev"
diff --git a/helm-charts-openshift/values.yaml b/helm-charts-openshift/values.yaml
new file mode 100644
index 00000000..de506c37
--- /dev/null
+++ b/helm-charts-openshift/values.yaml
@@ -0,0 +1,74 @@
+nfd:
+ enabled: true # Set to false to disable nfd
+kmm:
+ enabled: true # Set to false to disable kmm
+installdefaultNFDRule: true # default NFD rule will detect amd network based on pci vendor ID
+upgradeCRD: true # CRD will be patched as pre-upgrade hook when doing helm upgrade to current helm chart
+controllerManager:
+ manager:
+ args:
+ - --config=controller_manager_config.yaml
+ containerSecurityContext:
+ allowPrivilegeEscalation: false
+ image:
+ repository: docker.io/rocm/amd-network-operator
+ tag: v1.2.1
+ imagePullPolicy: Always
+ imagePullSecrets: ""
+ tolerations:
+ - key: "node-role.kubernetes.io/master"
+ operator: "Equal"
+ value: ""
+ effect: "NoSchedule"
+ - key: "node-role.kubernetes.io/control-plane"
+ operator: "Equal"
+ value: ""
+ effect: "NoSchedule"
+ resources:
+ limits:
+ cpu: 1000m
+ memory: 1Gi
+ requests:
+ cpu: 100m
+ memory: 256Mi
+ nodeSelector: {}
+ affinity:
+ nodeAffinity:
+ preferredDuringSchedulingIgnoredDuringExecution:
+ - weight: 1
+ preference:
+ matchExpressions:
+ - key: node-role.kubernetes.io/control-plane
+ operator: Exists
+ replicas: 1
+ serviceAccount:
+ annotations: {}
+ env:
+ simEnable: false
+devicePlugin:
+ serviceAccount:
+ annotations: {}
+kmmModuleLoader:
+ serviceAccount:
+ annotations: {}
+kubernetesClusterDomain: cluster.local
+managerConfig:
+ controllerManagerConfigYaml: |-
+ healthProbeBindAddress: :8081
+ metricsBindAddress: 127.0.0.1:8080
+ leaderElection:
+ enabled: true
+ resourceID: network.amd.com
+metricsService:
+ ports:
+ - name: https
+ port: 8443
+ protocol: TCP
+ targetPort: https
+ type: ClusterIP
+nodeLabeller:
+ serviceAccount:
+ annotations: {}
+metricsExporter:
+ serviceAccount:
+ annotations: {}
diff --git a/internal/controllers/upgrademgr.go b/internal/controllers/upgrademgr.go
index e2618e54..538fee0f 100644
--- a/internal/controllers/upgrademgr.go
+++ b/internal/controllers/upgrademgr.go
@@ -64,7 +64,7 @@ import (
)
const (
- defaultUtilsImage = "docker.io/rocm/network-operator-utils:v1.2.0"
+ defaultUtilsImage = "docker.io/rocm/network-operator-utils:v1.2.1"
defaultOcUtilsImage = "docker.io/rocm/network-operator-utils:rhubi-latest"
defaultSAName = "amd-network-operator-utils-container"
driverUpgradeStateLabelKey = "operator.amd.com/network-driver-upgrade-state"
diff --git a/internal/deviceplugin/deviceplugin.go b/internal/deviceplugin/deviceplugin.go
index 78778d82..eeb9258e 100644
--- a/internal/deviceplugin/deviceplugin.go
+++ b/internal/deviceplugin/deviceplugin.go
@@ -30,7 +30,7 @@ import (
const (
defaultInitContainerImage = "busybox:1.36"
- defaultDevicePluginImage = "docker.io/rocm/k8s-network-device-plugin:v1.2.0"
+ defaultDevicePluginImage = "docker.io/rocm/k8s-network-device-plugin:v1.2.1"
defaultDevicePluginConfigMap = "amd-network-operator-device-plugin-config"
devicePluginSAName = "amd-network-operator-device-plugin"
DevicePluginName = "device-plugin"
diff --git a/internal/metricsexporter/exporter.go b/internal/metricsexporter/exporter.go
index 9bef57e6..675aa00f 100644
--- a/internal/metricsexporter/exporter.go
+++ b/internal/metricsexporter/exporter.go
@@ -34,7 +34,7 @@ const (
exporterSAName = "amd-network-operator-metrics-exporter"
kubeRBACSAName = "amd-network-operator-metrics-exporter-rbac-proxy"
StaticAuthSecretName = ExporterName + "-static-auth-config"
- defaultMetricsExporterImage = "docker.io/rocm/device-metrics-exporter:nic-v1.2.0"
+ defaultMetricsExporterImage = "docker.io/rocm/device-metrics-exporter:nic-v1.2.1"
defaultInitContainerImage = "busybox:1.36"
svcLabel = "app.kubernetes.io/service"
)
diff --git a/internal/nodelabeller/nodelabeller.go b/internal/nodelabeller/nodelabeller.go
index efbd958a..b748eedd 100644
--- a/internal/nodelabeller/nodelabeller.go
+++ b/internal/nodelabeller/nodelabeller.go
@@ -28,7 +28,7 @@ import (
)
const (
- defaultNodeLabellerUbiImage = "docker.io/rocm/k8s-network-node-labeller:v1.2.0"
+ defaultNodeLabellerUbiImage = "docker.io/rocm/k8s-network-node-labeller:v1.2.1"
defaultInitContainerImage = "busybox:1.36"
defaultBlacklistFileName = "blacklist-ionic-netop.conf"
nodeLabellerSAName = "amd-network-operator-node-labeller"
diff --git a/internal/secondarynetwork/cniplugins.go b/internal/secondarynetwork/cniplugins.go
index 3b9f7370..87917313 100644
--- a/internal/secondarynetwork/cniplugins.go
+++ b/internal/secondarynetwork/cniplugins.go
@@ -28,7 +28,7 @@ import (
)
const (
- defaultCNIPluginsImage = "docker.io/rocm/k8s-cni-plugins:v1.2.0"
+ defaultCNIPluginsImage = "docker.io/rocm/k8s-cni-plugins:v1.2.1"
CNIPluginsName = "cni-plugins"
cniPluginsSAName = "amd-network-operator-cni-plugins"
)
diff --git a/internal/utils.go b/internal/utils.go
index 870c244d..aa139da9 100644
--- a/internal/utils.go
+++ b/internal/utils.go
@@ -40,7 +40,7 @@ const (
ResourceNamingStrategyFlag = "resource_naming_strategy"
SingleStrategy = "single"
MixedStrategy = "mixed"
- DefaultUtilsImage = "docker.io/rocm/network-operator-utils:v1.2.0"
+ DefaultUtilsImage = "docker.io/rocm/network-operator-utils:v1.2.1"
// worker pod related constants
KindNetworkConfig = "NetworkConfig"