1
0
forked from suse-edge/Factory

10 Commits

69 changed files with 3268 additions and 2737 deletions

View File

@@ -2,7 +2,7 @@
<service name="obs_scm"> <service name="obs_scm">
<param name="url">https://github.com/k8snetworkplumbingwg/ib-sriov-cni</param> <param name="url">https://github.com/k8snetworkplumbingwg/ib-sriov-cni</param>
<param name="scm">git</param> <param name="scm">git</param>
<param name="revision">v1.2.1</param> <param name="revision">v1.3.0</param>
<param name="version">_auto_</param> <param name="version">_auto_</param>
<param name="versionformat">@PARENT_TAG@</param> <param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param> <param name="changesgenerate">enable</param>

View File

@@ -24,7 +24,7 @@ License: Apache-2.0
URL: https://github.com/k8snetworkplumbingwg/ib-sriov-cni URL: https://github.com/k8snetworkplumbingwg/ib-sriov-cni
Source: %{name}-%{version}.tar Source: %{name}-%{version}.tar
Source1: vendor.tar.gz Source1: vendor.tar.gz
BuildRequires: golang(API) = 1.23 BuildRequires: golang(API) = 1.24
ExcludeArch: s390 ExcludeArch: s390
ExcludeArch: %{ix86} ExcludeArch: %{ix86}

View File

@@ -2,7 +2,7 @@
<service name="obs_scm"> <service name="obs_scm">
<param name="url">https://github.com/k8snetworkplumbingwg/network-resources-injector</param> <param name="url">https://github.com/k8snetworkplumbingwg/network-resources-injector</param>
<param name="scm">git</param> <param name="scm">git</param>
<param name="revision">v1.7.1</param> <param name="revision">v1.8.0</param>
<param name="version">_auto_</param> <param name="version">_auto_</param>
<param name="versionformat">@PARENT_TAG@</param> <param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param> <param name="changesgenerate">enable</param>

View File

@@ -24,7 +24,7 @@ License: Apache-2.0
URL: https://github.com/k8snetworkplumbingwg/network-resources-injector URL: https://github.com/k8snetworkplumbingwg/network-resources-injector
Source: %{name}-%{version}.tar Source: %{name}-%{version}.tar
Source1: vendor.tar.gz Source1: vendor.tar.gz
BuildRequires: golang(API) = 1.21 BuildRequires: golang(API) = 1.24
ExcludeArch: s390 ExcludeArch: s390
ExcludeArch: %{ix86} ExcludeArch: %{ix86}

View File

@@ -2,7 +2,7 @@
<service name="obs_scm"> <service name="obs_scm">
<param name="url">https://github.com/kubernetes-sigs/node-feature-discovery</param> <param name="url">https://github.com/kubernetes-sigs/node-feature-discovery</param>
<param name="scm">git</param> <param name="scm">git</param>
<param name="revision">v0.15.7</param> <param name="revision">v0.18.2</param>
<param name="version">_auto_</param> <param name="version">_auto_</param>
<param name="versionformat">@PARENT_TAG@</param> <param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param> <param name="changesgenerate">enable</param>

View File

@@ -25,7 +25,7 @@ URL: https://github.com/kubernetes-sigs/node-feature-discovery
Source: %{name}-%{version}.tar Source: %{name}-%{version}.tar
Source1: vendor.tar.gz Source1: vendor.tar.gz
BuildRequires: glibc-static BuildRequires: glibc-static
BuildRequires: golang(API) = 1.21 BuildRequires: golang(API) = 1.25
ExcludeArch: s390 ExcludeArch: s390
ExcludeArch: %{ix86} ExcludeArch: %{ix86}
@@ -48,6 +48,9 @@ NFD consists of four software components:
- nfd-gc: - nfd-gc:
daemon responsible for cleaning obsolete NodeFeature and NodeResourceTopology objects. daemon responsible for cleaning obsolete NodeFeature and NodeResourceTopology objects.
One instance of nfd-gc is supposed to be running in the cluster. One instance of nfd-gc is supposed to be running in the cluster.
- nfd:
client able to export features or labels in a generic context (e.g., compute nodes that warrant assessment, but may not have Kubernetes running,
or may not be able to or want to run a central daemon service for data).
%prep %prep
%autosetup -a1 -n %{name}-%{version} -p1 %autosetup -a1 -n %{name}-%{version} -p1
@@ -67,6 +70,7 @@ CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -l
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-master ./cmd/nfd-master CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-master ./cmd/nfd-master
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-worker ./cmd/nfd-worker CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-worker ./cmd/nfd-worker
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-topology-updater ./cmd/nfd-topology-updater CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-topology-updater ./cmd/nfd-topology-updater
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd ./cmd/nfd
%install %install
install -D -m0755 kubectl-nfd %{buildroot}%{_bindir}/kubectl-nfd install -D -m0755 kubectl-nfd %{buildroot}%{_bindir}/kubectl-nfd
@@ -74,6 +78,7 @@ install -D -m0755 nfd-gc %{buildroot}%{_bindir}/nfd-gc
install -D -m0755 nfd-master %{buildroot}%{_bindir}/nfd-master install -D -m0755 nfd-master %{buildroot}%{_bindir}/nfd-master
install -D -m0755 nfd-worker %{buildroot}%{_bindir}/nfd-worker install -D -m0755 nfd-worker %{buildroot}%{_bindir}/nfd-worker
install -D -m0755 nfd-topology-updater %{buildroot}%{_bindir}/nfd-topology-updater install -D -m0755 nfd-topology-updater %{buildroot}%{_bindir}/nfd-topology-updater
install -D -m0755 nfd %{buildroot}%{_bindir}/nfd
install -D -m0644 ./deployment/components/worker-config/nfd-worker.conf.example %{buildroot}%{_sysconfdir}/kubernetes/node-feature-discovery/nfd-worker.conf install -D -m0644 ./deployment/components/worker-config/nfd-worker.conf.example %{buildroot}%{_sysconfdir}/kubernetes/node-feature-discovery/nfd-worker.conf
%files %files
@@ -84,6 +89,7 @@ install -D -m0644 ./deployment/components/worker-config/nfd-worker.conf.example
%{_bindir}/nfd-master %{_bindir}/nfd-master
%{_bindir}/nfd-worker %{_bindir}/nfd-worker
%{_bindir}/nfd-topology-updater %{_bindir}/nfd-topology-updater
%{_bindir}/nfd
%dir %{_sysconfdir}/kubernetes %dir %{_sysconfdir}/kubernetes
%dir %{_sysconfdir}/kubernetes/node-feature-discovery %dir %{_sysconfdir}/kubernetes/node-feature-discovery
%{_sysconfdir}/kubernetes/node-feature-discovery/nfd-worker.conf %{_sysconfdir}/kubernetes/node-feature-discovery/nfd-worker.conf

View File

@@ -20,7 +20,7 @@
%endif %endif
Name: python-suse-edge-components-versions Name: python-suse-edge-components-versions
Version: 0.2.2 Version: 0.2.3
Release: 0%{?dist} Release: 0%{?dist}
Summary: A tool to gather and display component versions for SUSE Edge products. Summary: A tool to gather and display component versions for SUSE Edge products.
License: Apache-2.0 License: Apache-2.0

View File

@@ -11,14 +11,14 @@ images:
- name: %%IMG_REPO%%/%%IMG_PREFIX%%metallb-controller:v0.15.2 - name: %%IMG_REPO%%/%%IMG_PREFIX%%metallb-controller:v0.15.2
- name: %%IMG_REPO%%/%%IMG_PREFIX%%metallb-speaker:v0.15.2 - name: %%IMG_REPO%%/%%IMG_PREFIX%%metallb-speaker:v0.15.2
- name: %%IMG_REPO%%/%%IMG_PREFIX%%upgrade-controller:0.1.1 - name: %%IMG_REPO%%/%%IMG_PREFIX%%upgrade-controller:0.1.1
- name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-manager:v1.5.0 - name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-manager:v1.6.0
- name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-config-daemon:v1.5.0 - name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-config-daemon:v1.6.0
- name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-webhook:v1.5.0 - name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-webhook:v1.6.0
- name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-cni:v2.9.0 - name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-cni:v2.10.0
- name: %%IMG_REPO%%/%%IMG_PREFIX%%ib-sriov-cni:v1.2.1 - name: %%IMG_REPO%%/%%IMG_PREFIX%%ib-sriov-cni:v1.3.0
- name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-device-plugin:v3.9.0 - name: %%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-device-plugin:v3.10.0
- name: %%IMG_REPO%%/%%IMG_PREFIX%%network-resources-injector:v1.7.1 - name: %%IMG_REPO%%/%%IMG_PREFIX%%network-resources-injector:v1.8.0
- name: %%IMG_REPO%%/%%IMG_PREFIX%%node-feature-discovery:v0.15.7 - name: %%IMG_REPO%%/%%IMG_PREFIX%%node-feature-discovery:v0.18.2
- name: registry.rancher.com/rancher/fleet-agent:v0.13.1 - name: registry.rancher.com/rancher/fleet-agent:v0.13.1
- name: registry.rancher.com/rancher/fleet:v0.13.1 - name: registry.rancher.com/rancher/fleet:v0.13.1
- name: registry.rancher.com/rancher/hardened-cluster-autoscaler:v1.10.2-build20250611 - name: registry.rancher.com/rancher/hardened-cluster-autoscaler:v1.10.2-build20250611

View File

@@ -155,11 +155,11 @@ spec:
- prettyName: SRIOV - prettyName: SRIOV
releaseName: sriov-network-operator releaseName: sriov-network-operator
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%sriov-network-operator' chart: '%%CHART_REPO%%/%%CHART_PREFIX%%sriov-network-operator'
version: '%%CHART_MAJOR%%.0.3+up1.5.0' version: '%%CHART_MAJOR%%.0.4+up1.6.0'
dependencyCharts: dependencyCharts:
- releaseName: sriov-crd - releaseName: sriov-crd
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%sriov-crd' chart: '%%CHART_REPO%%/%%CHART_PREFIX%%sriov-crd'
version: '%%CHART_MAJOR%%.0.2+up1.5.0' version: '%%CHART_MAJOR%%.0.4+up1.6.0'
- prettyName: Akri - prettyName: Akri
releaseName: akri releaseName: akri
chart: '%%CHART_REPO%%/%%CHART_PREFIX%%akri' chart: '%%CHART_REPO%%/%%CHART_PREFIX%%akri'

View File

@@ -2,7 +2,7 @@
<service name="obs_scm"> <service name="obs_scm">
<param name="url">https://github.com/k8snetworkplumbingwg/sriov-cni</param> <param name="url">https://github.com/k8snetworkplumbingwg/sriov-cni</param>
<param name="scm">git</param> <param name="scm">git</param>
<param name="revision">v2.9.0</param> <param name="revision">v2.10.0</param>
<param name="version">_auto_</param> <param name="version">_auto_</param>
<param name="versionformat">@PARENT_TAG@</param> <param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param> <param name="changesgenerate">enable</param>

View File

@@ -24,7 +24,7 @@ License: Apache-2.0
URL: https://github.com/k8snetworkplumbingwg/sriov-cni URL: https://github.com/k8snetworkplumbingwg/sriov-cni
Source: %{name}-%{version}.tar Source: %{name}-%{version}.tar
Source1: vendor.tar.gz Source1: vendor.tar.gz
BuildRequires: golang(API) = 1.22 BuildRequires: golang(API) = 1.23
ExcludeArch: s390 ExcludeArch: s390
ExcludeArch: %{ix86} ExcludeArch: %{ix86}

View File

@@ -1,5 +1,5 @@
#!BuildTag: %%CHART_PREFIX%%sriov-crd:%%CHART_MAJOR%%.0.2_up1.5.0-%RELEASE% #!BuildTag: %%CHART_PREFIX%%sriov-crd:%%CHART_MAJOR%%.0.4_up1.6.0-%RELEASE%
#!BuildTag: %%CHART_PREFIX%%sriov-crd:%%CHART_MAJOR%%.0.2_up1.5.0 #!BuildTag: %%CHART_PREFIX%%sriov-crd:%%CHART_MAJOR%%.0.4_up1.6.0
annotations: annotations:
catalog.cattle.io/experimental: "true" catalog.cattle.io/experimental: "true"
catalog.cattle.io/hidden: "true" catalog.cattle.io/hidden: "true"
@@ -10,4 +10,4 @@ apiVersion: v2
description: Installs the CRDs for the SR-IOV operator description: Installs the CRDs for the SR-IOV operator
name: sriov-crd name: sriov-crd
type: application type: application
version: "%%CHART_MAJOR%%.0.2+up1.5.0" version: "%%CHART_MAJOR%%.0.4+up1.6.0"

View File

@@ -14,92 +14,92 @@ spec:
singular: ovsnetwork singular: ovsnetwork
scope: Namespaced scope: Namespaced
versions: versions:
- name: v1 - name: v1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
description: OVSNetwork is the Schema for the ovsnetworks API description: OVSNetwork is the Schema for the ovsnetworks API
properties: properties:
apiVersion: apiVersion:
description: |- description: |-
APIVersion defines the versioned schema of this representation of an object. APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values. may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string type: string
kind: kind:
description: |- description: |-
Kind is a string value representing the REST resource this object represents. Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to. Servers may infer this from the endpoint the client submits requests to.
Cannot be updated. Cannot be updated.
In CamelCase. In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string type: string
metadata: metadata:
type: object type: object
spec: spec:
description: OVSNetworkSpec defines the desired state of OVSNetwork description: OVSNetworkSpec defines the desired state of OVSNetwork
properties: properties:
bridge: bridge:
description: |- description: |-
name of the OVS bridge, if not set OVS will automatically select bridge name of the OVS bridge, if not set OVS will automatically select bridge
based on VF PCI address based on VF PCI address
type: string type: string
capabilities: capabilities:
description: |- description: |-
Capabilities to be configured for this network. Capabilities to be configured for this network.
Capabilities supported: (mac|ips), e.g. '{"mac": true}' Capabilities supported: (mac|ips), e.g. '{"mac": true}'
type: string type: string
interfaceType: interfaceType:
description: The type of interface on ovs. description: The type of interface on ovs.
type: string type: string
ipam: ipam:
description: IPAM configuration to be used for this network. description: IPAM configuration to be used for this network.
type: string type: string
metaPlugins: metaPlugins:
description: MetaPluginsConfig configuration to be used in order to description: MetaPluginsConfig configuration to be used in order to
chain metaplugins chain metaplugins
type: string type: string
mtu: mtu:
description: Mtu for the OVS port description: Mtu for the OVS port
type: integer type: integer
networkNamespace: networkNamespace:
description: Namespace of the NetworkAttachmentDefinition custom resource description: Namespace of the NetworkAttachmentDefinition custom resource
type: string type: string
resourceName: resourceName:
description: OVS Network device plugin endpoint resource name description: OVS Network device plugin endpoint resource name
type: string type: string
trunk: trunk:
description: Trunk configuration for the OVS port description: Trunk configuration for the OVS port
items: items:
description: TrunkConfig contains configuration for bridge trunk description: TrunkConfig contains configuration for bridge trunk
properties: properties:
id: id:
maximum: 4095 maximum: 4095
minimum: 0 minimum: 0
type: integer type: integer
maxID: maxID:
maximum: 4095 maximum: 4095
minimum: 0 minimum: 0
type: integer type: integer
minID: minID:
maximum: 4095 maximum: 4095
minimum: 0 minimum: 0
type: integer type: integer
type: object type: object
type: array type: array
vlan: vlan:
description: Vlan to assign for the OVS port description: Vlan to assign for the OVS port
maximum: 4095 maximum: 4095
minimum: 0 minimum: 0
type: integer type: integer
required: required:
- resourceName - resourceName
type: object type: object
status: status:
description: OVSNetworkStatus defines the observed state of OVSNetwork description: OVSNetworkStatus defines the observed state of OVSNetwork
type: object type: object
type: object type: object
served: true served: true
storage: true storage: true
subresources: subresources:
status: {} status: {}

View File

@@ -14,65 +14,65 @@ spec:
singular: sriovibnetwork singular: sriovibnetwork
scope: Namespaced scope: Namespaced
versions: versions:
- name: v1 - name: v1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
description: SriovIBNetwork is the Schema for the sriovibnetworks API description: SriovIBNetwork is the Schema for the sriovibnetworks API
properties: properties:
apiVersion: apiVersion:
description: |- description: |-
APIVersion defines the versioned schema of this representation of an object. APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values. may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string type: string
kind: kind:
description: |- description: |-
Kind is a string value representing the REST resource this object represents. Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to. Servers may infer this from the endpoint the client submits requests to.
Cannot be updated. Cannot be updated.
In CamelCase. In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string type: string
metadata: metadata:
type: object type: object
spec: spec:
description: SriovIBNetworkSpec defines the desired state of SriovIBNetwork description: SriovIBNetworkSpec defines the desired state of SriovIBNetwork
properties: properties:
capabilities: capabilities:
description: |- description: |-
Capabilities to be configured for this network. Capabilities to be configured for this network.
Capabilities supported: (infinibandGUID), e.g. '{"infinibandGUID": true}' Capabilities supported: (infinibandGUID), e.g. '{"infinibandGUID": true}'
type: string type: string
ipam: ipam:
description: IPAM configuration to be used for this network. description: IPAM configuration to be used for this network.
type: string type: string
linkState: linkState:
description: VF link state (enable|disable|auto) description: VF link state (enable|disable|auto)
enum: enum:
- auto - auto
- enable - enable
- disable - disable
type: string type: string
metaPlugins: metaPlugins:
description: |- description: |-
MetaPluginsConfig configuration to be used in order to chain metaplugins to the sriov interface returned MetaPluginsConfig configuration to be used in order to chain metaplugins to the sriov interface returned
by the operator. by the operator.
type: string type: string
networkNamespace: networkNamespace:
description: Namespace of the NetworkAttachmentDefinition custom resource description: Namespace of the NetworkAttachmentDefinition custom resource
type: string type: string
resourceName: resourceName:
description: SRIOV Network device plugin endpoint resource name description: SRIOV Network device plugin endpoint resource name
type: string type: string
required: required:
- resourceName - resourceName
type: object type: object
status: status:
description: SriovIBNetworkStatus defines the observed state of SriovIBNetwork description: SriovIBNetworkStatus defines the observed state of SriovIBNetwork
type: object type: object
type: object type: object
served: true served: true
storage: true storage: true
subresources: subresources:
status: {} status: {}

View File

@@ -14,200 +14,200 @@ spec:
singular: sriovnetworknodepolicy singular: sriovnetworknodepolicy
scope: Namespaced scope: Namespaced
versions: versions:
- name: v1 - name: v1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
description: SriovNetworkNodePolicy is the Schema for the sriovnetworknodepolicies description: SriovNetworkNodePolicy is the Schema for the sriovnetworknodepolicies
API API
properties: properties:
apiVersion: apiVersion:
description: |- description: |-
APIVersion defines the versioned schema of this representation of an object. APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values. may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string type: string
kind: kind:
description: |- description: |-
Kind is a string value representing the REST resource this object represents. Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to. Servers may infer this from the endpoint the client submits requests to.
Cannot be updated. Cannot be updated.
In CamelCase. In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string type: string
metadata: metadata:
type: object type: object
spec: spec:
description: SriovNetworkNodePolicySpec defines the desired state of SriovNetworkNodePolicy description: SriovNetworkNodePolicySpec defines the desired state of SriovNetworkNodePolicy
properties: properties:
bridge: bridge:
description: |- description: |-
contains bridge configuration for matching PFs, contains bridge configuration for matching PFs,
valid only for eSwitchMode==switchdev valid only for eSwitchMode==switchdev
properties: properties:
ovs: ovs:
description: contains configuration for the OVS bridge, description: contains configuration for the OVS bridge,
properties: properties:
bridge: bridge:
description: contains bridge level settings description: contains bridge level settings
properties: properties:
datapathType: datapathType:
description: configure datapath_type field in the Bridge description: configure datapath_type field in the Bridge
table in OVSDB table in OVSDB
type: string
externalIDs:
additionalProperties:
type: string type: string
externalIDs: description: IDs to inject to external_ids field in the
additionalProperties: Bridge table in OVSDB
type: string type: object
description: IDs to inject to external_ids field in the otherConfig:
Bridge table in OVSDB additionalProperties:
type: object type: string
otherConfig: description: additional options to inject to other_config
additionalProperties: field in the bridge table in OVSDB
type: string type: object
description: additional options to inject to other_config type: object
field in the bridge table in OVSDB uplink:
type: object description: contains settings for uplink (PF)
type: object properties:
uplink: interface:
description: contains settings for uplink (PF) description: contains settings for PF interface in the
properties: OVS bridge
interface: properties:
description: contains settings for PF interface in the externalIDs:
OVS bridge additionalProperties:
properties:
externalIDs:
additionalProperties:
type: string
description: external_ids field in the Interface table
in OVSDB
type: object
mtuRequest:
description: mtu_request field in the Interface table
in OVSDB
type: integer
options:
additionalProperties:
type: string
description: options field in the Interface table
in OVSDB
type: object
otherConfig:
additionalProperties:
type: string
description: other_config field in the Interface table
in OVSDB
type: object
type:
description: type field in the Interface table in
OVSDB
type: string type: string
type: object description: external_ids field in the Interface table
type: object in OVSDB
type: object type: object
type: object mtuRequest:
deviceType: description: mtu_request field in the Interface table
default: netdevice in OVSDB
description: The driver type for configured VFs. Allowed value "netdevice", type: integer
"vfio-pci". Defaults to netdevice. options:
enum: additionalProperties:
- netdevice type: string
- vfio-pci description: options field in the Interface table
type: string in OVSDB
eSwitchMode: type: object
description: NIC Device Mode. Allowed value "legacy","switchdev". otherConfig:
enum: additionalProperties:
- legacy type: string
- switchdev description: other_config field in the Interface table
type: string in OVSDB
excludeTopology: type: object
description: Exclude device's NUMA node when advertising this resource type:
by SRIOV network device plugin. Default to false. description: type field in the Interface table in
type: boolean OVSDB
externallyManaged: type: string
description: don't create the virtual function only allocated them type: object
to the device plugin. Defaults to false. type: object
type: boolean type: object
isRdma: type: object
description: RDMA mode. Defaults to false. deviceType:
type: boolean default: netdevice
linkType: description: The driver type for configured VFs. Allowed value "netdevice",
description: NIC Link Type. Allowed value "eth", "ETH", "ib", and "vfio-pci". Defaults to netdevice.
"IB". enum:
enum: - netdevice
- eth - vfio-pci
- ETH type: string
- ib eSwitchMode:
- IB description: NIC Device Mode. Allowed value "legacy","switchdev".
type: string enum:
mtu: - legacy
description: MTU of VF - switchdev
minimum: 1 type: string
type: integer excludeTopology:
needVhostNet: description: Exclude device's NUMA node when advertising this resource
description: mount vhost-net device. Defaults to false. by SRIOV network device plugin. Default to false.
type: boolean type: boolean
nicSelector: externallyManaged:
description: NicSelector selects the NICs to be configured description: don't create the virtual function only allocated them
properties: to the device plugin. Defaults to false.
deviceID: type: boolean
description: The device hex code of SR-IoV device. Allowed value isRdma:
"0d58", "1572", "158b", "1013", "1015", "1017", "101b". description: RDMA mode. Defaults to false.
type: string type: boolean
netFilter: linkType:
description: Infrastructure Networking selection filter. Allowed description: NIC Link Type. Allowed value "eth", "ETH", "ib", and
value "openstack/NetworkID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" "IB".
type: string enum:
pfNames: - eth
description: Name of SR-IoV PF. - ETH
items: - ib
type: string - IB
type: array type: string
rootDevices: mtu:
description: PCI address of SR-IoV PF. description: MTU of VF
items: minimum: 1
type: string type: integer
type: array needVhostNet:
vendor: description: mount vhost-net device. Defaults to false.
description: The vendor hex code of SR-IoV device. Allowed value type: boolean
"8086", "15b3". nicSelector:
type: string description: NicSelector selects the NICs to be configured
type: object properties:
nodeSelector: deviceID:
additionalProperties: description: The device hex code of SR-IoV device. Allowed value
"0d58", "1572", "158b", "1013", "1015", "1017", "101b".
type: string type: string
description: NodeSelector selects the nodes to be configured netFilter:
type: object description: Infrastructure Networking selection filter. Allowed
numVfs: value "openstack/NetworkID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
description: Number of VFs for each PF type: string
minimum: 0 pfNames:
type: integer description: Name of SR-IoV PF.
priority: items:
description: Priority of the policy, higher priority policies can type: string
override lower ones. type: array
maximum: 99 rootDevices:
minimum: 0 description: PCI address of SR-IoV PF.
type: integer items:
resourceName: type: string
description: SRIOV Network device plugin endpoint resource name type: array
vendor:
description: The vendor hex code of SR-IoV device. Allowed value
"8086", "15b3".
type: string
type: object
nodeSelector:
additionalProperties:
type: string type: string
vdpaType: description: NodeSelector selects the nodes to be configured
description: VDPA device type. Allowed value "virtio", "vhost" type: object
enum: numVfs:
- virtio description: Number of VFs for each PF
- vhost minimum: 0
type: string type: integer
required: priority:
- nicSelector description: Priority of the policy, higher priority policies can
- nodeSelector override lower ones.
- numVfs maximum: 99
- resourceName minimum: 0
type: object type: integer
status: resourceName:
description: SriovNetworkNodePolicyStatus defines the observed state of description: SRIOV Network device plugin endpoint resource name
SriovNetworkNodePolicy type: string
type: object vdpaType:
type: object description: VDPA device type. Allowed value "virtio", "vhost"
served: true enum:
storage: true - virtio
subresources: - vhost
status: {} type: string
required:
- nicSelector
- nodeSelector
- numVfs
- resourceName
type: object
status:
description: SriovNetworkNodePolicyStatus defines the observed state of
SriovNetworkNodePolicy
type: object
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -14,356 +14,356 @@ spec:
singular: sriovnetworknodestate singular: sriovnetworknodestate
scope: Namespaced scope: Namespaced
versions: versions:
- additionalPrinterColumns: - additionalPrinterColumns:
- jsonPath: .status.syncStatus - jsonPath: .status.syncStatus
name: Sync Status name: Sync Status
type: string type: string
- jsonPath: .metadata.annotations.sriovnetwork\.openshift\.io/desired-state - jsonPath: .metadata.annotations.sriovnetwork\.openshift\.io/desired-state
name: Desired Sync State name: Desired Sync State
type: string type: string
- jsonPath: .metadata.annotations.sriovnetwork\.openshift\.io/current-state - jsonPath: .metadata.annotations.sriovnetwork\.openshift\.io/current-state
name: Current Sync State name: Current Sync State
type: string type: string
- jsonPath: .metadata.creationTimestamp - jsonPath: .metadata.creationTimestamp
name: Age name: Age
type: date type: date
name: v1 name: v1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
description: SriovNetworkNodeState is the Schema for the sriovnetworknodestates description: SriovNetworkNodeState is the Schema for the sriovnetworknodestates
API API
properties: properties:
apiVersion: apiVersion:
description: |- description: |-
APIVersion defines the versioned schema of this representation of an object. APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values. may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string type: string
kind: kind:
description: |- description: |-
Kind is a string value representing the REST resource this object represents. Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to. Servers may infer this from the endpoint the client submits requests to.
Cannot be updated. Cannot be updated.
In CamelCase. In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string type: string
metadata: metadata:
type: object type: object
spec: spec:
description: SriovNetworkNodeStateSpec defines the desired state of SriovNetworkNodeState description: SriovNetworkNodeStateSpec defines the desired state of SriovNetworkNodeState
properties: properties:
bridges: bridges:
description: Bridges contains list of bridges description: Bridges contains list of bridges
properties: properties:
ovs: ovs:
items: items:
description: OVSConfigExt contains configuration for the concrete description: OVSConfigExt contains configuration for the concrete
OVS bridge OVS bridge
properties: properties:
bridge: bridge:
description: bridge-level configuration for the bridge description: bridge-level configuration for the bridge
properties:
datapathType:
description: configure datapath_type field in the Bridge
table in OVSDB
type: string
externalIDs:
additionalProperties:
type: string
description: IDs to inject to external_ids field in
the Bridge table in OVSDB
type: object
otherConfig:
additionalProperties:
type: string
description: additional options to inject to other_config
field in the bridge table in OVSDB
type: object
type: object
name:
description: name of the bridge
type: string
uplinks:
description: |-
uplink-level bridge configuration for each uplink(PF).
currently must contain only one element
items:
description: OVSUplinkConfigExt contains configuration
for the concrete OVS uplink(PF)
properties:
interface:
description: configuration from the Interface OVS
table for the PF
properties:
externalIDs:
additionalProperties:
type: string
description: external_ids field in the Interface
table in OVSDB
type: object
mtuRequest:
description: mtu_request field in the Interface
table in OVSDB
type: integer
options:
additionalProperties:
type: string
description: options field in the Interface table
in OVSDB
type: object
otherConfig:
additionalProperties:
type: string
description: other_config field in the Interface
table in OVSDB
type: object
type:
description: type field in the Interface table
in OVSDB
type: string
type: object
name:
description: name of the PF interface
type: string
pciAddress:
description: pci address of the PF
type: string
required:
- pciAddress
type: object
type: array
required:
- name
type: object
type: array
type: object
interfaces:
items:
properties:
eSwitchMode:
type: string
externallyManaged:
type: boolean
linkType:
type: string
mtu:
type: integer
name:
type: string
numVfs:
type: integer
pciAddress:
type: string
vfGroups:
items:
properties: properties:
deviceType: datapathType:
type: string description: configure datapath_type field in the Bridge
isRdma: table in OVSDB
type: boolean
mtu:
type: integer
policyName:
type: string
resourceName:
type: string
vdpaType:
type: string
vfRange:
type: string type: string
externalIDs:
additionalProperties:
type: string
description: IDs to inject to external_ids field in
the Bridge table in OVSDB
type: object
otherConfig:
additionalProperties:
type: string
description: additional options to inject to other_config
field in the bridge table in OVSDB
type: object
type: object type: object
type: array name:
required: description: name of the bridge
- pciAddress type: string
type: object uplinks:
type: array description: |-
system: uplink-level bridge configuration for each uplink(PF).
properties: currently must contain only one element
rdmaMode: items:
description: RDMA subsystem. Allowed value "shared", "exclusive". description: OVSUplinkConfigExt contains configuration
enum: for the concrete OVS uplink(PF)
- shared
- exclusive
type: string
type: object
type: object
status:
description: SriovNetworkNodeStateStatus defines the observed state of
SriovNetworkNodeState
properties:
bridges:
description: Bridges contains list of bridges
properties:
ovs:
items:
description: OVSConfigExt contains configuration for the concrete
OVS bridge
properties:
bridge:
description: bridge-level configuration for the bridge
properties: properties:
datapathType: interface:
description: configure datapath_type field in the Bridge description: configuration from the Interface OVS
table in OVSDB table for the PF
type: string properties:
externalIDs: externalIDs:
additionalProperties: additionalProperties:
type: string
description: IDs to inject to external_ids field in
the Bridge table in OVSDB
type: object
otherConfig:
additionalProperties:
type: string
description: additional options to inject to other_config
field in the bridge table in OVSDB
type: object
type: object
name:
description: name of the bridge
type: string
uplinks:
description: |-
uplink-level bridge configuration for each uplink(PF).
currently must contain only one element
items:
description: OVSUplinkConfigExt contains configuration
for the concrete OVS uplink(PF)
properties:
interface:
description: configuration from the Interface OVS
table for the PF
properties:
externalIDs:
additionalProperties:
type: string
description: external_ids field in the Interface
table in OVSDB
type: object
mtuRequest:
description: mtu_request field in the Interface
table in OVSDB
type: integer
options:
additionalProperties:
type: string
description: options field in the Interface table
in OVSDB
type: object
otherConfig:
additionalProperties:
type: string
description: other_config field in the Interface
table in OVSDB
type: object
type:
description: type field in the Interface table
in OVSDB
type: string type: string
type: object description: external_ids field in the Interface
name: table in OVSDB
description: name of the PF interface type: object
type: string mtuRequest:
pciAddress: description: mtu_request field in the Interface
description: pci address of the PF table in OVSDB
type: string type: integer
required: options:
- pciAddress additionalProperties:
type: object type: string
type: array description: options field in the Interface table
required: in OVSDB
- name type: object
type: object otherConfig:
type: array additionalProperties:
type: object type: string
interfaces: description: other_config field in the Interface
items: table in OVSDB
properties: type: object
Vfs: type:
items: description: type field in the Interface table
properties: in OVSDB
Vlan: type: string
type: integer type: object
assigned: name:
type: string description: name of the PF interface
deviceID: type: string
type: string pciAddress:
driver: description: pci address of the PF
type: string type: string
guid: required:
type: string
mac:
type: string
mtu:
type: integer
name:
type: string
pciAddress:
type: string
representorName:
type: string
vdpaType:
type: string
vendor:
type: string
vfID:
type: integer
required:
- pciAddress - pciAddress
- vfID type: object
type: object type: array
type: array required:
deviceID: - name
type: string type: object
driver: type: array
type: string type: object
eSwitchMode: interfaces:
type: string items:
externallyManaged:
type: boolean
linkAdminState:
type: string
linkSpeed:
type: string
linkType:
type: string
mac:
type: string
mtu:
type: integer
name:
type: string
netFilter:
type: string
numVfs:
type: integer
pciAddress:
type: string
totalvfs:
type: integer
vendor:
type: string
required:
- pciAddress
type: object
type: array
lastSyncError:
type: string
syncStatus:
type: string
system:
properties: properties:
rdmaMode: eSwitchMode:
description: RDMA subsystem. Allowed value "shared", "exclusive".
enum:
- shared
- exclusive
type: string type: string
externallyManaged:
type: boolean
linkType:
type: string
mtu:
type: integer
name:
type: string
numVfs:
type: integer
pciAddress:
type: string
vfGroups:
items:
properties:
deviceType:
type: string
isRdma:
type: boolean
mtu:
type: integer
policyName:
type: string
resourceName:
type: string
vdpaType:
type: string
vfRange:
type: string
type: object
type: array
required:
- pciAddress
type: object type: object
type: object type: array
type: object system:
served: true properties:
storage: true rdmaMode:
subresources: description: RDMA subsystem. Allowed value "shared", "exclusive".
status: {} enum:
- shared
- exclusive
type: string
type: object
type: object
status:
description: SriovNetworkNodeStateStatus defines the observed state of
SriovNetworkNodeState
properties:
bridges:
description: Bridges contains list of bridges
properties:
ovs:
items:
description: OVSConfigExt contains configuration for the concrete
OVS bridge
properties:
bridge:
description: bridge-level configuration for the bridge
properties:
datapathType:
description: configure datapath_type field in the Bridge
table in OVSDB
type: string
externalIDs:
additionalProperties:
type: string
description: IDs to inject to external_ids field in
the Bridge table in OVSDB
type: object
otherConfig:
additionalProperties:
type: string
description: additional options to inject to other_config
field in the bridge table in OVSDB
type: object
type: object
name:
description: name of the bridge
type: string
uplinks:
description: |-
uplink-level bridge configuration for each uplink(PF).
currently must contain only one element
items:
description: OVSUplinkConfigExt contains configuration
for the concrete OVS uplink(PF)
properties:
interface:
description: configuration from the Interface OVS
table for the PF
properties:
externalIDs:
additionalProperties:
type: string
description: external_ids field in the Interface
table in OVSDB
type: object
mtuRequest:
description: mtu_request field in the Interface
table in OVSDB
type: integer
options:
additionalProperties:
type: string
description: options field in the Interface table
in OVSDB
type: object
otherConfig:
additionalProperties:
type: string
description: other_config field in the Interface
table in OVSDB
type: object
type:
description: type field in the Interface table
in OVSDB
type: string
type: object
name:
description: name of the PF interface
type: string
pciAddress:
description: pci address of the PF
type: string
required:
- pciAddress
type: object
type: array
required:
- name
type: object
type: array
type: object
interfaces:
items:
properties:
Vfs:
items:
properties:
Vlan:
type: integer
assigned:
type: string
deviceID:
type: string
driver:
type: string
guid:
type: string
mac:
type: string
mtu:
type: integer
name:
type: string
pciAddress:
type: string
representorName:
type: string
vdpaType:
type: string
vendor:
type: string
vfID:
type: integer
required:
- pciAddress
- vfID
type: object
type: array
deviceID:
type: string
driver:
type: string
eSwitchMode:
type: string
externallyManaged:
type: boolean
linkAdminState:
type: string
linkSpeed:
type: string
linkType:
type: string
mac:
type: string
mtu:
type: integer
name:
type: string
netFilter:
type: string
numVfs:
type: integer
pciAddress:
type: string
totalvfs:
type: integer
vendor:
type: string
required:
- pciAddress
type: object
type: array
lastSyncError:
type: string
syncStatus:
type: string
system:
properties:
rdmaMode:
description: RDMA subsystem. Allowed value "shared", "exclusive".
enum:
- shared
- exclusive
type: string
type: object
type: object
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -14,116 +14,118 @@ spec:
singular: sriovnetworkpoolconfig singular: sriovnetworkpoolconfig
scope: Namespaced scope: Namespaced
versions: versions:
- name: v1 - name: v1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
description: SriovNetworkPoolConfig is the Schema for the sriovnetworkpoolconfigs description: SriovNetworkPoolConfig is the Schema for the sriovnetworkpoolconfigs
API API
properties: properties:
apiVersion: apiVersion:
description: |- description: |-
APIVersion defines the versioned schema of this representation of an object. APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values. may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string type: string
kind: kind:
description: |- description: |-
Kind is a string value representing the REST resource this object represents. Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to. Servers may infer this from the endpoint the client submits requests to.
Cannot be updated. Cannot be updated.
In CamelCase. In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string type: string
metadata: metadata:
type: object type: object
spec: spec:
description: SriovNetworkPoolConfigSpec defines the desired state of SriovNetworkPoolConfig description: SriovNetworkPoolConfigSpec defines the desired state of SriovNetworkPoolConfig
properties: properties:
maxUnavailable: maxUnavailable:
anyOf: anyOf:
- type: integer - type: integer
- type: string - type: string
description: |- description: |-
maxUnavailable defines either an integer number or percentage maxUnavailable defines either an integer number or percentage
of nodes in the pool that can go Unavailable during an update. of nodes in the pool that can go Unavailable during an update.
A value larger than 1 will mean multiple nodes going unavailable during A value larger than 1 will mean multiple nodes going unavailable during
the update, which may affect your workload stress on the remaining nodes. the update, which may affect your workload stress on the remaining nodes.
Drain will respect Pod Disruption Budgets (PDBs) such as etcd quorum guards, Drain will respect Pod Disruption Budgets (PDBs) such as etcd quorum guards,
even if maxUnavailable is greater than one. even if maxUnavailable is greater than one.
x-kubernetes-int-or-string: true x-kubernetes-int-or-string: true
nodeSelector: nodeSelector:
description: nodeSelector specifies a label selector for Nodes description: nodeSelector specifies a label selector for Nodes
properties: properties:
matchExpressions: matchExpressions:
description: matchExpressions is a list of label selector requirements. description: matchExpressions is a list of label selector requirements.
The requirements are ANDed. The requirements are ANDed.
items: items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector applies
to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |- description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels A label selector requirement is a selector that contains values, a key, and an operator that
map is equivalent to an element of matchExpressions, whose key field is "key", the relates the key and values.
operator is "In", and the values array contains only "value". The requirements are ANDed. properties:
key:
description: key is the label key that the selector applies
to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object type: object
type: object type: array
x-kubernetes-map-type: atomic x-kubernetes-list-type: atomic
ovsHardwareOffloadConfig: matchLabels:
description: OvsHardwareOffloadConfig describes the OVS HWOL configuration additionalProperties:
for selected Nodes
properties:
name:
description: |-
Name is mandatory and must be unique.
On Kubernetes:
Name is the name of OvsHardwareOffloadConfig
On OpenShift:
Name is the name of MachineConfigPool to be enabled with OVS hardware offload
type: string type: string
type: object description: |-
rdmaMode: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
description: RDMA subsystem. Allowed value "shared", "exclusive". map is equivalent to an element of matchExpressions, whose key field is "key", the
enum: operator is "In", and the values array contains only "value". The requirements are ANDed.
- shared type: object
- exclusive type: object
type: string x-kubernetes-map-type: atomic
type: object ovsHardwareOffloadConfig:
status: description: OvsHardwareOffloadConfig describes the OVS HWOL configuration
description: SriovNetworkPoolConfigStatus defines the observed state of for selected Nodes
SriovNetworkPoolConfig properties:
type: object name:
type: object description: |-
served: true Name is mandatory and must be unique.
storage: true On Kubernetes:
subresources: Name is the name of OvsHardwareOffloadConfig
status: {} On OpenShift:
Name is the name of MachineConfigPool to be enabled with OVS hardware offload
type: string
type: object
rdmaMode:
description: RDMA subsystem. Allowed value "shared", "exclusive".
enum:
- shared
- exclusive
type: string
type: object
status:
description: SriovNetworkPoolConfigStatus defines the observed state of
SriovNetworkPoolConfig
type: object
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -14,123 +14,123 @@ spec:
singular: sriovnetwork singular: sriovnetwork
scope: Namespaced scope: Namespaced
versions: versions:
- name: v1 - name: v1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
description: SriovNetwork is the Schema for the sriovnetworks API description: SriovNetwork is the Schema for the sriovnetworks API
properties: properties:
apiVersion: apiVersion:
description: |- description: |-
APIVersion defines the versioned schema of this representation of an object. APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values. may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string type: string
kind: kind:
description: |- description: |-
Kind is a string value representing the REST resource this object represents. Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to. Servers may infer this from the endpoint the client submits requests to.
Cannot be updated. Cannot be updated.
In CamelCase. In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string type: string
metadata: metadata:
type: object type: object
spec: spec:
description: SriovNetworkSpec defines the desired state of SriovNetwork description: SriovNetworkSpec defines the desired state of SriovNetwork
properties: properties:
capabilities: capabilities:
description: |- description: |-
Capabilities to be configured for this network. Capabilities to be configured for this network.
Capabilities supported: (mac|ips), e.g. '{"mac": true}' Capabilities supported: (mac|ips), e.g. '{"mac": true}'
type: string type: string
ipam: ipam:
description: IPAM configuration to be used for this network. description: IPAM configuration to be used for this network.
type: string type: string
linkState: linkState:
description: VF link state (enable|disable|auto) description: VF link state (enable|disable|auto)
enum: enum:
- auto - auto
- enable - enable
- disable - disable
type: string type: string
logFile: logFile:
description: |- description: |-
LogFile sets the log file of the SRIOV CNI plugin logs. If unset (default), this will log to stderr and thus LogFile sets the log file of the SRIOV CNI plugin logs. If unset (default), this will log to stderr and thus
to multus and container runtime logs. to multus and container runtime logs.
type: string type: string
logLevel: logLevel:
default: info default: info
description: |- description: |-
LogLevel sets the log level of the SRIOV CNI plugin - either of panic, error, warning, info, debug. Defaults LogLevel sets the log level of the SRIOV CNI plugin - either of panic, error, warning, info, debug. Defaults
to info if left blank. to info if left blank.
enum: enum:
- panic - panic
- error - error
- warning - warning
- info - info
- debug - debug
- "" - ""
type: string type: string
maxTxRate: maxTxRate:
description: Maximum tx rate, in Mbps, for the VF. Defaults to 0 (no description: Maximum tx rate, in Mbps, for the VF. Defaults to 0 (no
rate limiting) rate limiting)
minimum: 0 minimum: 0
type: integer type: integer
metaPlugins: metaPlugins:
description: |- description: |-
MetaPluginsConfig configuration to be used in order to chain metaplugins to the sriov interface returned MetaPluginsConfig configuration to be used in order to chain metaplugins to the sriov interface returned
by the operator. by the operator.
type: string type: string
minTxRate: minTxRate:
description: Minimum tx rate, in Mbps, for the VF. Defaults to 0 (no description: Minimum tx rate, in Mbps, for the VF. Defaults to 0 (no
rate limiting). min_tx_rate should be <= max_tx_rate. rate limiting). min_tx_rate should be <= max_tx_rate.
minimum: 0 minimum: 0
type: integer type: integer
networkNamespace: networkNamespace:
description: Namespace of the NetworkAttachmentDefinition custom resource description: Namespace of the NetworkAttachmentDefinition custom resource
type: string type: string
resourceName: resourceName:
description: SRIOV Network device plugin endpoint resource name description: SRIOV Network device plugin endpoint resource name
type: string type: string
spoofChk: spoofChk:
description: VF spoof check, (on|off) description: VF spoof check, (on|off)
enum: enum:
- "on" - "on"
- "off" - "off"
type: string type: string
trust: trust:
description: VF trust mode (on|off) description: VF trust mode (on|off)
enum: enum:
- "on" - "on"
- "off" - "off"
type: string type: string
vlan: vlan:
description: VLAN ID to assign for the VF. Defaults to 0. description: VLAN ID to assign for the VF. Defaults to 0.
maximum: 4096 maximum: 4096
minimum: 0 minimum: 0
type: integer type: integer
vlanProto: vlanProto:
description: VLAN proto to assign for the VF. Defaults to 802.1q. description: VLAN proto to assign for the VF. Defaults to 802.1q.
enum: enum:
- 802.1q - 802.1q
- 802.1Q - 802.1Q
- 802.1ad - 802.1ad
- 802.1AD - 802.1AD
type: string type: string
vlanQoS: vlanQoS:
description: VLAN QoS ID to assign for the VF. Defaults to 0. description: VLAN QoS ID to assign for the VF. Defaults to 0.
maximum: 7 maximum: 7
minimum: 0 minimum: 0
type: integer type: integer
required: required:
- resourceName - resourceName
type: object type: object
status: status:
description: SriovNetworkStatus defines the observed state of SriovNetwork description: SriovNetworkStatus defines the observed state of SriovNetwork
type: object type: object
type: object type: object
served: true served: true
storage: true storage: true
subresources: subresources:
status: {} status: {}

View File

@@ -14,101 +14,101 @@ spec:
singular: sriovoperatorconfig singular: sriovoperatorconfig
scope: Namespaced scope: Namespaced
versions: versions:
- name: v1 - name: v1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
description: SriovOperatorConfig is the Schema for the sriovoperatorconfigs description: SriovOperatorConfig is the Schema for the sriovoperatorconfigs
API API
properties: properties:
apiVersion: apiVersion:
description: |- description: |-
APIVersion defines the versioned schema of this representation of an object. APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values. may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string type: string
kind: kind:
description: |- description: |-
Kind is a string value representing the REST resource this object represents. Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to. Servers may infer this from the endpoint the client submits requests to.
Cannot be updated. Cannot be updated.
In CamelCase. In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string type: string
metadata: metadata:
type: object type: object
spec: spec:
description: SriovOperatorConfigSpec defines the desired state of SriovOperatorConfig description: SriovOperatorConfigSpec defines the desired state of SriovOperatorConfig
properties: properties:
configDaemonNodeSelector: configDaemonNodeSelector:
additionalProperties: additionalProperties:
type: string type: string
description: NodeSelector selects the nodes to be configured description: NodeSelector selects the nodes to be configured
type: object type: object
configurationMode: configurationMode:
description: |- description: |-
Flag to enable the sriov-network-config-daemon to use a systemd service to configure SR-IOV devices on boot Flag to enable the sriov-network-config-daemon to use a systemd service to configure SR-IOV devices on boot
Default mode: daemon Default mode: daemon
enum:
- daemon
- systemd
type: string
disableDrain:
description: Flag to disable nodes drain during debugging
type: boolean
disablePlugins:
description: DisablePlugins is a list of sriov-network-config-daemon
plugins to disable
items:
description: PluginNameValue defines the plugin name
enum: enum:
- daemon - mellanox
- systemd
type: string type: string
disableDrain: type: array
description: Flag to disable nodes drain during debugging enableInjector:
description: Flag to control whether the network resource injector
webhook shall be deployed
type: boolean
enableOperatorWebhook:
description: Flag to control whether the operator admission controller
webhook shall be deployed
type: boolean
enableOvsOffload:
description: Flag to enable OVS hardware offload. Set to 'true' to
provision switchdev-configuration.service and enable OpenvSwitch
hw-offload on nodes.
type: boolean
featureGates:
additionalProperties:
type: boolean type: boolean
disablePlugins: description: FeatureGates to enable experimental features
description: DisablePlugins is a list of sriov-network-config-daemon type: object
plugins to disable logLevel:
items: description: Flag to control the log verbose level of the operator.
description: PluginNameValue defines the plugin name Set to '0' to show only the basic logs. And set to '2' to show all
enum: the available logs.
- mellanox maximum: 2
type: string minimum: 0
type: array type: integer
enableInjector: useCDI:
description: Flag to control whether the network resource injector description: Flag to enable Container Device Interface mode for SR-IOV
webhook shall be deployed Network Device Plugin
type: boolean type: boolean
enableOperatorWebhook: type: object
description: Flag to control whether the operator admission controller status:
webhook shall be deployed description: SriovOperatorConfigStatus defines the observed state of SriovOperatorConfig
type: boolean properties:
enableOvsOffload: injector:
description: Flag to enable OVS hardware offload. Set to 'true' to description: Show the runtime status of the network resource injector
provision switchdev-configuration.service and enable OpenvSwitch webhook
hw-offload on nodes. type: string
type: boolean operatorWebhook:
featureGates: description: Show the runtime status of the operator admission controller
additionalProperties: webhook
type: boolean type: string
description: FeatureGates to enable experimental features type: object
type: object type: object
logLevel: served: true
description: Flag to control the log verbose level of the operator. storage: true
Set to '0' to show only the basic logs. And set to '2' to show all subresources:
the available logs. status: {}
maximum: 2
minimum: 0
type: integer
useCDI:
description: Flag to enable Container Device Interface mode for SR-IOV
Network Device Plugin
type: boolean
type: object
status:
description: SriovOperatorConfigStatus defines the observed state of SriovOperatorConfig
properties:
injector:
description: Show the runtime status of the network resource injector
webhook
type: string
operatorWebhook:
description: Show the runtime status of the operator admission controller
webhook
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -2,7 +2,7 @@
<service name="obs_scm"> <service name="obs_scm">
<param name="url">https://github.com/k8snetworkplumbingwg/sriov-network-device-plugin</param> <param name="url">https://github.com/k8snetworkplumbingwg/sriov-network-device-plugin</param>
<param name="scm">git</param> <param name="scm">git</param>
<param name="revision">v3.9.0</param> <param name="revision">v3.10.0</param>
<param name="version">_auto_</param> <param name="version">_auto_</param>
<param name="versionformat">@PARENT_TAG@</param> <param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param> <param name="changesgenerate">enable</param>

View File

@@ -1,28 +1,27 @@
#!BuildTag: %%CHART_PREFIX%%sriov-network-operator:%%CHART_MAJOR%%.0.3_up1.5.0 #!BuildTag: %%CHART_PREFIX%%sriov-network-operator:%%CHART_MAJOR%%.0.4_up1.6.0
#!BuildTag: %%CHART_PREFIX%%sriov-network-operator:%%CHART_MAJOR%%.0.3_up1.5.0-%RELEASE% #!BuildTag: %%CHART_PREFIX%%sriov-network-operator:%%CHART_MAJOR%%.0.4_up1.6.0-%RELEASE%
apiVersion: v2
name: sriov-network-operator
version: "%%CHART_MAJOR%%.0.4+up1.6.0"
kubeVersion: '>= 1.24.0-0'
appVersion: v1.6.0
description: SR-IOV network operator configures and manages SR-IOV networks in the kubernetes cluster
type: application
keywords:
- sriov
home: https://github.com/k8snetworkplumbingwg/sriov-network-operator
sources:
- https://github.com/k8snetworkplumbingwg/sriov-network-operator
icon: https://charts.rancher.io/assets/logos/sr-iov.svg
annotations: annotations:
catalog.cattle.io/auto-install: sriov-crd=match catalog.cattle.io/auto-install: sriov-crd=match
catalog.cattle.io/experimental: "true" catalog.cattle.io/experimental: "true"
catalog.cattle.io/namespace: cattle-sriov-system catalog.cattle.io/namespace: cattle-sriov-system
catalog.cattle.io/os: linux catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux catalog.cattle.io/permits-os: linux
catalog.cattle.io/upstream-version: 1.5.0 catalog.cattle.io/upstream-version: 1.6.0
apiVersion: v2
appVersion: v1.5.0
dependencies: dependencies:
- condition: sriov-nfd.enabled - condition: sriov-nfd.enabled
name: sriov-nfd name: sriov-nfd
repository: file://./charts/sriov-nfd repository: file://./charts/sriov-nfd
version: 0.15.7 version: 0.18.2
description: SR-IOV network operator configures and manages SR-IOV networks in the
kubernetes cluster
home: https://github.com/k8snetworkplumbingwg/sriov-network-operator
icon: https://charts.rancher.io/assets/logos/sr-iov.svg
keywords:
- sriov
kubeVersion: '>= 1.24.0-0'
name: sriov-network-operator
sources:
- https://github.com/k8snetworkplumbingwg/sriov-network-operator
type: application
version: "%%CHART_MAJOR%%.0.3+up1.5.0"

View File

@@ -41,7 +41,7 @@ For additional information and methods for installing Helm, refer to the officia
#### Deploy from OCI repo #### Deploy from OCI repo
``` ```
$ helm install -n sriov-network-operator --create-namespace --version 1.3.0 --set sriovOperatorConfig.deploy=true sriov-network-operator oci://ghcr.io/k8snetworkplumbingwg/sriov-network-operator-chart $ helm install -n sriov-network-operator --create-namespace --version 1.5.0 --set sriovOperatorConfig.deploy=true sriov-network-operator oci://ghcr.io/k8snetworkplumbingwg/sriov-network-operator-chart
``` ```
#### Deploy from project sources #### Deploy from project sources
@@ -84,6 +84,12 @@ We have introduced the following Chart parameters.
| `operator.resourcePrefix` | string | `openshift.io` | Device plugin resource prefix | | `operator.resourcePrefix` | string | `openshift.io` | Device plugin resource prefix |
| `operator.cniBinPath` | string | `/opt/cni/bin` | Path for CNI binary | | `operator.cniBinPath` | string | `/opt/cni/bin` | Path for CNI binary |
| `operator.clustertype` | string | `kubernetes` | Cluster environment type | | `operator.clustertype` | string | `kubernetes` | Cluster environment type |
| `operator.metricsExporter.port` | string | `9110` | Port where the Network Metrics Exporter listen |
| `operator.metricsExporter.certificates.secretName` | string | `metrics-exporter-cert` | Secret name to serve metrics via TLS. The secret must have the same fields as `operator.admissionControllers.certificates.secretNames` |
| `operator.metricsExporter.prometheusOperator.enabled` | bool | false | Wheter the operator shoud configure Prometheus resources or not (e.g. `ServiceMonitors`). |
| `operator.metricsExporter.prometheusOperator.serviceAccount` | string | `prometheus-k8s` | The service account used by the Prometheus Operator. This is used to give Prometheus the permission to list resource in the SR-IOV operator namespace |
| `operator.metricsExporter.prometheusOperator.namespace` | string | `monitoring` | The namespace where the Prometheus Operator is installed. Setting this variable makes the operator deploy `monitoring.coreos.com` resources. |
| `operator.metricsExporter.prometheusOperator.deployRules` | bool | false | Whether the operator should deploy `PrometheusRules` to scrape namespace version of metrics. |
#### Admission Controllers parameters #### Admission Controllers parameters
@@ -142,9 +148,13 @@ Upon chart deletion, those files are not cleaned up. For cases where this is not
| `images.sriovConfigDaemon` | Daemon node agent image | | `images.sriovConfigDaemon` | Daemon node agent image |
| `images.sriovCni` | SR-IOV CNI image | | `images.sriovCni` | SR-IOV CNI image |
| `images.ibSriovCni` | InfiniBand SR-IOV CNI image | | `images.ibSriovCni` | InfiniBand SR-IOV CNI image |
| `images.ovsCni` | OVS CNI image |
| `images.rdmaCni` | RDMA CNI image |
| `images.sriovDevicePlugin` | SR-IOV device plugin image | | `images.sriovDevicePlugin` | SR-IOV device plugin image |
| `images.resourcesInjector` | Resources Injector image | | `images.resourcesInjector` | Resources Injector image |
| `images.webhook` | Operator Webhook image | | `images.webhook` | Operator Webhook image |
| `images.metricsExporter` | Network Metrics Exporter image |
| `images.metricsExporterKubeRbacProxy` | Kube RBAC Proxy image used for metrics exporter |
### Extra objects parameters ### Extra objects parameters

View File

@@ -9,12 +9,6 @@
</service> </service>
<service name="replace_using_env" mode="buildtime"> <service name="replace_using_env" mode="buildtime">
<param name="file">values.yaml</param> <param name="file">values.yaml</param>
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
<param name="var">IMG_PREFIX</param>
<param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param>
<param name="var">IMG_REPO</param>
</service>
<service name="replace_using_env" mode="buildtime">
<param name="file">charts/sriov-nfd/values.yaml</param> <param name="file">charts/sriov-nfd/values.yaml</param>
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
<param name="var">IMG_PREFIX</param> <param name="var">IMG_PREFIX</param>

View File

@@ -1,12 +0,0 @@
# Rancher SR-IOV Network Operator
This chart is based on the upstream [k8snetworkplumbingwg/sriov-network-operator](https://github.com/k8snetworkplumbingwg/sriov-network-operator) project. The chart deploys the SR-IOV Operator and its CRDs, which are designed to help the user provision and configure the SR-IOV CNI in a cluster that uses [Multus CNI](https://github.com/k8snetworkplumbingwg/multus-cni), to provide high performing extra network interfaces to pods. This chart is expected to be deployed on an RKE2 cluster and only meant for advanced use cases where multiple CNI plugins and high performing network interfaces on pods are required. Users who do not need these features are not advised to install this chart.
The chart installs the following components:
- SR-IOV Operator - An operator that helps provision and configure the SR-IOV CNI plugin and SR-IOV Device plugin
- SR-IOV Network Config Daemon - A Daemon deployed by the Operator that discovers SR-IOV NICs on each node
Note that SR-IOV requires NICs that support SR-IOV and the activation of specific configuration options in the operating system. Nodes that fulfill these requirements should be labeled with: `feature.node.kubernetes.io/network-sriov.capable=true`.
The SR-IOV Network Config Daemon will be deployed on such capable nodes. For more information on how to use this feature, refer to our RKE2 networking docs.

View File

@@ -1,14 +1,15 @@
apiVersion: v2 apiVersion: v2
appVersion: v0.15.7 appVersion: v0.18.2
description: Detects hardware features available on each node in a Kubernetes cluster, description: |
and advertises those features using node labels Detects hardware features available on each node in a Kubernetes cluster, and advertises
those features using node labels.
name: sriov-nfd
sources:
- https://github.com/kubernetes-sigs/node-feature-discovery
home: https://github.com/kubernetes-sigs/node-feature-discovery home: https://github.com/kubernetes-sigs/node-feature-discovery
keywords: keywords:
- feature-discovery - feature-discovery
- feature-detection - feature-detection
- node-labels - node-labels
name: sriov-nfd
sources:
- https://github.com/kubernetes-sigs/node-feature-discovery
type: application type: application
version: 0.15.7 version: 0.18.2

View File

@@ -6,5 +6,5 @@ labels. NFD provides flexible configuration and extension points for a wide
range of vendor and application specific node labeling needs. range of vendor and application specific node labeling needs.
See See
[NFD documentation](https://kubernetes-sigs.github.io/node-feature-discovery/v0.15/deployment/helm.html) [NFD documentation](https://kubernetes-sigs.github.io/node-feature-discovery/v0.18/deployment/helm.html)
for deployment instructions. for deployment instructions.

View File

@@ -105,3 +105,34 @@ Create the name of the service account which nfd-gc will use
{{ default "default" .Values.gc.serviceAccount.name }} {{ default "default" .Values.gc.serviceAccount.name }}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{/*
imagePullSecrets helper - uses local values or falls back to global values
*/}}
{{- define "node-feature-discovery.imagePullSecrets" -}}
{{- $imagePullSecrets := list -}}
{{- if .Values.imagePullSecrets -}}
{{- range .Values.imagePullSecrets -}}
{{- $imagePullSecrets = append $imagePullSecrets . -}}
{{- end -}}
{{- else if and .Values.global .Values.global.imagePullSecrets -}}
{{- range .Values.global.imagePullSecrets -}}
{{- $imagePullSecrets = append $imagePullSecrets . -}}
{{- end -}}
{{- end -}}
{{- if $imagePullSecrets -}}
{{- $imagePullSecrets | toJson }}
{{- end -}}
{{- end -}}
{{/*
system_default_registry helper - prints global value "cattle.systemDefaultRegistry" (adding a "/" at the end)
or empty string (if this global Helm param. not defined)
*/}}
{{- define "node-feature-discovery.system_default_registry" -}}
{{- if .Values.global.cattle.systemDefaultRegistry -}}
{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}}
{{- else -}}
{{- "" -}}
{{- end -}}
{{- end -}}

View File

@@ -1,68 +0,0 @@
{{- if .Values.tls.certManager }}
{{- if .Values.master.enable }}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: nfd-master-cert
namespace: {{ include "node-feature-discovery.namespace" . }}
spec:
secretName: nfd-master-cert
subject:
organizations:
- node-feature-discovery
commonName: nfd-master
dnsNames:
# must match the service name
- {{ include "node-feature-discovery.fullname" . }}-master
# first one is configured for use by the worker; below are for completeness
- {{ include "node-feature-discovery.fullname" . }}-master.{{ include "node-feature-discovery.namespace" . }}.svc
- {{ include "node-feature-discovery.fullname" . }}-master.{{ include "node-feature-discovery.namespace" . }}.svc.cluster.local
issuerRef:
name: nfd-ca-issuer
kind: Issuer
group: cert-manager.io
{{- end }}
---
{{- if .Values.worker.enable }}
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: nfd-worker-cert
namespace: {{ include "node-feature-discovery.namespace" . }}
spec:
secretName: nfd-worker-cert
subject:
organizations:
- node-feature-discovery
commonName: nfd-worker
dnsNames:
- {{ include "node-feature-discovery.fullname" . }}-worker.{{ include "node-feature-discovery.namespace" . }}.svc.cluster.local
issuerRef:
name: nfd-ca-issuer
kind: Issuer
group: cert-manager.io
{{- end }}
{{- if .Values.topologyUpdater.enable }}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: nfd-topology-updater-cert
namespace: {{ include "node-feature-discovery.namespace" . }}
spec:
secretName: nfd-topology-updater-cert
subject:
organizations:
- node-feature-discovery
commonName: nfd-topology-updater
dnsNames:
- {{ include "node-feature-discovery.fullname" . }}-topology-updater.{{ include "node-feature-discovery.namespace" . }}.svc.cluster.local
issuerRef:
name: nfd-ca-issuer
kind: Issuer
group: cert-manager.io
{{- end }}
{{- end }}

View File

@@ -1,42 +0,0 @@
{{- if .Values.tls.certManager }}
# See https://cert-manager.io/docs/configuration/selfsigned/#bootstrapping-ca-issuers
# - Create a self signed issuer
# - Use this to create a CA cert
# - Use this to now create a CA issuer
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: nfd-ca-bootstrap
namespace: {{ include "node-feature-discovery.namespace" . }}
spec:
selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: nfd-ca-cert
namespace: {{ include "node-feature-discovery.namespace" . }}
spec:
isCA: true
secretName: nfd-ca-cert
subject:
organizations:
- node-feature-discovery
commonName: nfd-ca-cert
issuerRef:
name: nfd-ca-bootstrap
kind: Issuer
group: cert-manager.io
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: nfd-ca-issuer
namespace: {{ include "node-feature-discovery.namespace" . }}
spec:
ca:
secretName: nfd-ca-cert
{{- end }}

View File

@@ -6,40 +6,55 @@ metadata:
labels: labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }} {{- include "node-feature-discovery.labels" . | nindent 4 }}
rules: rules:
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- nodes - namespaces
- nodes/status verbs:
verbs: - watch
- get - list
- patch - apiGroups:
- update - ""
- list resources:
- apiGroups: - nodes
- nfd.k8s-sigs.io - nodes/status
resources: verbs:
- nodefeatures - get
- nodefeaturerules - patch
verbs: - update
- get - list
- list - apiGroups:
- watch - nfd.k8s-sigs.io
- apiGroups: resources:
- coordination.k8s.io - nodefeatures
resources: - nodefeaturerules
- leases - nodefeaturegroups
verbs: verbs:
- create - get
- apiGroups: - list
- coordination.k8s.io - watch
resources: - apiGroups:
- leases - nfd.k8s-sigs.io
resourceNames: resources:
- "nfd-master.nfd.kubernetes.io" - nodefeaturegroups/status
verbs: verbs:
- get - patch
- update - update
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- create
- apiGroups:
- coordination.k8s.io
resources:
- leases
resourceNames:
- "nfd-master.nfd.kubernetes.io"
verbs:
- get
- update
{{- end }} {{- end }}
{{- if and .Values.topologyUpdater.enable .Values.topologyUpdater.rbac.create }} {{- if and .Values.topologyUpdater.enable .Values.topologyUpdater.rbac.create }}
@@ -51,36 +66,42 @@ metadata:
labels: labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }} {{- include "node-feature-discovery.labels" . | nindent 4 }}
rules: rules:
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- nodes - nodes
verbs: verbs:
- get - get
- list - list
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- nodes/proxy - namespaces
verbs: verbs:
- get - get
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- pods - nodes/proxy
verbs: verbs:
- get - get
- apiGroups: - apiGroups:
- topology.node.k8s.io - ""
resources: resources:
- noderesourcetopologies - pods
verbs: verbs:
- create - get
- get - apiGroups:
- update - topology.node.k8s.io
resources:
- noderesourcetopologies
verbs:
- create
- get
- update
{{- end }} {{- end }}
{{- if and .Values.gc.enable .Values.gc.rbac.create (or .Values.enableNodeFeatureApi .Values.topologyUpdater.enable) }} {{- if and .Values.gc.enable .Values.gc.rbac.create }}
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole kind: ClusterRole
@@ -89,31 +110,31 @@ metadata:
labels: labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }} {{- include "node-feature-discovery.labels" . | nindent 4 }}
rules: rules:
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- nodes - nodes
verbs: verbs:
- list - list
- watch - watch
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- nodes/proxy - nodes/proxy
verbs: verbs:
- get - get
- apiGroups: - apiGroups:
- topology.node.k8s.io - topology.node.k8s.io
resources: resources:
- noderesourcetopologies - noderesourcetopologies
verbs: verbs:
- delete - delete
- list - list
- apiGroups: - apiGroups:
- nfd.k8s-sigs.io - nfd.k8s-sigs.io
resources: resources:
- nodefeatures - nodefeatures
verbs: verbs:
- delete - delete
- list - list
{{- end }} {{- end }}

View File

@@ -10,9 +10,9 @@ roleRef:
kind: ClusterRole kind: ClusterRole
name: {{ include "node-feature-discovery.fullname" . }} name: {{ include "node-feature-discovery.fullname" . }}
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: {{ include "node-feature-discovery.master.serviceAccountName" . }} name: {{ include "node-feature-discovery.master.serviceAccountName" . }}
namespace: {{ include "node-feature-discovery.namespace" . }} namespace: {{ include "node-feature-discovery.namespace" . }}
{{- end }} {{- end }}
{{- if and .Values.topologyUpdater.enable .Values.topologyUpdater.rbac.create }} {{- if and .Values.topologyUpdater.enable .Values.topologyUpdater.rbac.create }}
@@ -28,12 +28,12 @@ roleRef:
kind: ClusterRole kind: ClusterRole
name: {{ include "node-feature-discovery.fullname" . }}-topology-updater name: {{ include "node-feature-discovery.fullname" . }}-topology-updater
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: {{ include "node-feature-discovery.topologyUpdater.serviceAccountName" . }} name: {{ include "node-feature-discovery.topologyUpdater.serviceAccountName" . }}
namespace: {{ include "node-feature-discovery.namespace" . }} namespace: {{ include "node-feature-discovery.namespace" . }}
{{- end }} {{- end }}
{{- if and .Values.gc.enable .Values.gc.rbac.create (or .Values.enableNodeFeatureApi .Values.topologyUpdater.enable) }} {{- if and .Values.gc.enable .Values.gc.rbac.create }}
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding kind: ClusterRoleBinding
@@ -46,7 +46,7 @@ roleRef:
kind: ClusterRole kind: ClusterRole
name: {{ include "node-feature-discovery.fullname" . }}-gc name: {{ include "node-feature-discovery.fullname" . }}-gc
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: {{ include "node-feature-discovery.gc.serviceAccountName" . }} name: {{ include "node-feature-discovery.gc.serviceAccountName" . }}
namespace: {{ include "node-feature-discovery.namespace" . }} namespace: {{ include "node-feature-discovery.namespace" . }}
{{- end }} {{- end }}

View File

@@ -0,0 +1,17 @@
{{- if .Values.master.enable }}
{{- if .Values.master.podDisruptionBudget.enable -}}
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {{ include "node-feature-discovery.fullname" . }}-master
namespace: {{ include "node-feature-discovery.namespace" . }}
labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }}
spec:
selector:
matchLabels:
{{- include "node-feature-discovery.selectorLabels" . | nindent 6 }}
role: master
{{- toYaml (omit .Values.master.podDisruptionBudget "enable") | nindent 2 }}
{{- end }}
{{- end }}

View File

@@ -13,6 +13,7 @@ metadata:
{{- end }} {{- end }}
spec: spec:
replicas: {{ .Values.master.replicaCount }} replicas: {{ .Values.master.replicaCount }}
revisionHistoryLimit: {{ .Values.master.revisionHistoryLimit }}
selector: selector:
matchLabels: matchLabels:
{{- include "node-feature-discovery.selectorLabels" . | nindent 6 }} {{- include "node-feature-discovery.selectorLabels" . | nindent 6 }}
@@ -22,46 +23,90 @@ spec:
labels: labels:
{{- include "node-feature-discovery.selectorLabels" . | nindent 8 }} {{- include "node-feature-discovery.selectorLabels" . | nindent 8 }}
role: master role: master
{{- with .Values.master.annotations }}
annotations: annotations:
checksum/config: {{ include (print $.Template.BasePath "/nfd-master-conf.yaml") . | sha256sum }}
{{- with .Values.master.annotations }}
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
spec: spec:
{{- with .Values.imagePullSecrets }} dnsPolicy: {{ .Values.master.dnsPolicy }}
imagePullSecrets: {{- with .Values.priorityClassName }}
{{- toYaml . | nindent 8 }} priorityClassName: {{ . }}
{{- end }} {{- end }}
imagePullSecrets: {{ include "node-feature-discovery.imagePullSecrets" . }}
serviceAccountName: {{ include "node-feature-discovery.master.serviceAccountName" . }} serviceAccountName: {{ include "node-feature-discovery.master.serviceAccountName" . }}
enableServiceLinks: false enableServiceLinks: false
securityContext: securityContext:
{{- toYaml .Values.master.podSecurityContext | nindent 8 }} {{- toYaml .Values.master.podSecurityContext | nindent 8 }}
hostNetwork: {{ .Values.master.hostNetwork }}
containers: containers:
- name: master - name: master
securityContext: securityContext:
{{- toYaml .Values.master.securityContext | nindent 12 }} {{- toYaml .Values.master.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" image: "{{ include "node-feature-discovery.system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }} imagePullPolicy: {{ .Values.image.pullPolicy }}
startupProbe:
httpGet:
path: /healthz
port: http
{{- with .Values.master.startupProbe.initialDelaySeconds }}
initialDelaySeconds: {{ . }}
{{- end }}
{{- with .Values.master.startupProbe.failureThreshold }}
failureThreshold: {{ . }}
{{- end }}
{{- with .Values.master.startupProbe.periodSeconds }}
periodSeconds: {{ . }}
{{- end }}
{{- with .Values.master.startupProbe.timeoutSeconds }}
timeoutSeconds: {{ . }}
{{- end }}
livenessProbe: livenessProbe:
grpc: httpGet:
port: 8080 path: /healthz
initialDelaySeconds: 10 port: http
periodSeconds: 10 {{- with .Values.master.livenessProbe.initialDelaySeconds }}
initialDelaySeconds: {{ . }}
{{- end }}
{{- with .Values.master.livenessProbe.failureThreshold }}
failureThreshold: {{ . }}
{{- end }}
{{- with .Values.master.livenessProbe.periodSeconds }}
periodSeconds: {{ . }}
{{- end }}
{{- with .Values.master.livenessProbe.timeoutSeconds }}
timeoutSeconds: {{ . }}
{{- end }}
readinessProbe: readinessProbe:
grpc: httpGet:
port: 8080 path: /healthz
initialDelaySeconds: 5 port: http
periodSeconds: 10 {{- with .Values.master.readinessProbe.initialDelaySeconds }}
failureThreshold: 10 initialDelaySeconds: {{ . }}
{{- end }}
{{- with .Values.master.readinessProbe.failureThreshold }}
failureThreshold: {{ . }}
{{- end }}
{{- with .Values.master.readinessProbe.periodSeconds }}
periodSeconds: {{ . }}
{{- end }}
{{- with .Values.master.readinessProbe.timeoutSeconds }}
timeoutSeconds: {{ . }}
{{- end }}
{{- with .Values.master.readinessProbe.successThreshold }}
successThreshold: {{ . }}
{{- end }}
ports: ports:
- containerPort: {{ .Values.master.port | default "8080" }} - containerPort: {{ .Values.master.port | default "8080" }}
name: grpc name: http
- containerPort: {{ .Values.master.metricsPort | default "8081" }}
name: metrics
env: env:
- name: NODE_NAME - name: NODE_NAME
valueFrom: valueFrom:
fieldRef: fieldRef:
fieldPath: spec.nodeName fieldPath: spec.nodeName
{{- with .Values.master.extraEnvs }}
{{- toYaml . | nindent 10 }}
{{- end}}
command: command:
- "nfd-master" - "nfd-master"
resources: resources:
@@ -70,60 +115,35 @@ spec:
{{- if .Values.master.instance | empty | not }} {{- if .Values.master.instance | empty | not }}
- "-instance={{ .Values.master.instance }}" - "-instance={{ .Values.master.instance }}"
{{- end }} {{- end }}
{{- if not .Values.enableNodeFeatureApi }}
- "-port={{ .Values.master.port | default "8080" }}"
- "-enable-nodefeature-api=false"
{{- else if gt (int .Values.master.replicaCount) 1 }}
- "-enable-leader-election" - "-enable-leader-election"
{{- end }}
{{- if .Values.master.extraLabelNs | empty | not }} {{- if .Values.master.extraLabelNs | empty | not }}
- "-extra-label-ns={{- join "," .Values.master.extraLabelNs }}" - "-extra-label-ns={{- join "," .Values.master.extraLabelNs }}"
{{- end }} {{- end }}
{{- if .Values.master.denyLabelNs | empty | not }} {{- if .Values.master.denyLabelNs | empty | not }}
- "-deny-label-ns={{- join "," .Values.master.denyLabelNs }}" - "-deny-label-ns={{- join "," .Values.master.denyLabelNs }}"
{{- end }} {{- end }}
{{- if .Values.master.resourceLabels | empty | not }}
- "-resource-labels={{- join "," .Values.master.resourceLabels }}"
{{- end }}
{{- if .Values.master.enableTaints }} {{- if .Values.master.enableTaints }}
- "-enable-taints" - "-enable-taints"
{{- end }} {{- end }}
{{- if .Values.master.crdController | kindIs "invalid" | not }}
- "-crd-controller={{ .Values.master.crdController }}"
{{- else }}
## By default, disable crd controller for other than the default instances
- "-crd-controller={{ .Values.master.instance | empty }}"
{{- end }}
{{- if .Values.master.featureRulesController | kindIs "invalid" | not }}
- "-featurerules-controller={{ .Values.master.featureRulesController }}"
{{- end }}
{{- if .Values.master.resyncPeriod }} {{- if .Values.master.resyncPeriod }}
- "-resync-period={{ .Values.master.resyncPeriod }}" - "-resync-period={{ .Values.master.resyncPeriod }}"
{{- end }} {{- end }}
{{- if .Values.master.nfdApiParallelism | empty | not }} {{- if .Values.master.nfdApiParallelism | empty | not }}
- "-nfd-api-parallelism={{ .Values.master.nfdApiParallelism }}" - "-nfd-api-parallelism={{ .Values.master.nfdApiParallelism }}"
{{- end }} {{- end }}
{{- if .Values.tls.enable }} # Go over featureGates and add the feature-gate flag
- "-ca-file=/etc/kubernetes/node-feature-discovery/certs/ca.crt" {{- range $key, $value := .Values.featureGates }}
- "-key-file=/etc/kubernetes/node-feature-discovery/certs/tls.key" - "-feature-gates={{ $key }}={{ $value }}"
- "-cert-file=/etc/kubernetes/node-feature-discovery/certs/tls.crt" {{- end }}
- "-port={{ .Values.master.port | default "8080" }}"
{{- with .Values.master.extraArgs }}
{{- toYaml . | nindent 12 }}
{{- end }} {{- end }}
- "-metrics={{ .Values.master.metricsPort | default "8081" }}"
volumeMounts: volumeMounts:
{{- if .Values.tls.enable }}
- name: nfd-master-cert
mountPath: "/etc/kubernetes/node-feature-discovery/certs"
readOnly: true
{{- end }}
- name: nfd-master-conf - name: nfd-master-conf
mountPath: "/etc/kubernetes/node-feature-discovery" mountPath: "/etc/kubernetes/node-feature-discovery"
readOnly: true readOnly: true
volumes: volumes:
{{- if .Values.tls.enable }}
- name: nfd-master-cert
secret:
secretName: nfd-master-cert
{{- end }}
- name: nfd-master-conf - name: nfd-master-conf
configMap: configMap:
name: {{ include "node-feature-discovery.fullname" . }}-master-conf name: {{ include "node-feature-discovery.fullname" . }}-master-conf

View File

@@ -0,0 +1,17 @@
{{- if .Values.gc.enable }}
{{- if .Values.gc.podDisruptionBudget.enable -}}
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {{ include "node-feature-discovery.fullname" . }}-gc
namespace: {{ include "node-feature-discovery.namespace" . }}
labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }}
spec:
selector:
matchLabels:
{{- include "node-feature-discovery.selectorLabels" . | nindent 6 }}
role: gc
{{- toYaml (omit .Values.gc.podDisruptionBudget "enable") | nindent 2 }}
{{- end }}
{{- end }}

View File

@@ -1,4 +1,4 @@
{{- if and .Values.gc.enable (or .Values.enableNodeFeatureApi .Values.topologyUpdater.enable) -}} {{- if and .Values.gc.enable -}}
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -13,6 +13,7 @@ metadata:
{{- end }} {{- end }}
spec: spec:
replicas: {{ .Values.gc.replicaCount | default 1 }} replicas: {{ .Values.gc.replicaCount | default 1 }}
revisionHistoryLimit: {{ .Values.gc.revisionHistoryLimit }}
selector: selector:
matchLabels: matchLabels:
{{- include "node-feature-discovery.selectorLabels" . | nindent 6 }} {{- include "node-feature-discovery.selectorLabels" . | nindent 6 }}
@@ -28,39 +29,81 @@ spec:
{{- end }} {{- end }}
spec: spec:
serviceAccountName: {{ include "node-feature-discovery.gc.serviceAccountName" . }} serviceAccountName: {{ include "node-feature-discovery.gc.serviceAccountName" . }}
dnsPolicy: ClusterFirstWithHostNet dnsPolicy: {{ .Values.gc.dnsPolicy }}
{{- with .Values.imagePullSecrets }} {{- with .Values.priorityClassName }}
imagePullSecrets: priorityClassName: {{ . }}
{{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
imagePullSecrets: {{ include "node-feature-discovery.imagePullSecrets" . }}
securityContext: securityContext:
{{- toYaml .Values.gc.podSecurityContext | nindent 8 }} {{- toYaml .Values.gc.podSecurityContext | nindent 8 }}
hostNetwork: {{ .Values.gc.hostNetwork }}
containers: containers:
- name: gc - name: gc
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" image: "{{ include "node-feature-discovery.system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}" imagePullPolicy: "{{ .Values.image.pullPolicy }}"
env: livenessProbe:
- name: NODE_NAME httpGet:
valueFrom: path: /healthz
fieldRef: port: http
fieldPath: spec.nodeName {{- with .Values.gc.livenessProbe.initialDelaySeconds }}
command: initialDelaySeconds: {{ . }}
- "nfd-gc" {{- end }}
args: {{- with .Values.gc.livenessProbe.failureThreshold }}
failureThreshold: {{ . }}
{{- end }}
{{- with .Values.gc.livenessProbe.periodSeconds }}
periodSeconds: {{ . }}
{{- end }}
{{- with .Values.gc.livenessProbe.timeoutSeconds }}
timeoutSeconds: {{ . }}
{{- end }}
readinessProbe:
httpGet:
path: /healthz
port: http
{{- with .Values.gc.readinessProbe.initialDelaySeconds }}
initialDelaySeconds: {{ . }}
{{- end }}
{{- with .Values.gc.readinessProbe.failureThreshold }}
failureThreshold: {{ . }}
{{- end }}
{{- with .Values.gc.readinessProbe.periodSeconds }}
periodSeconds: {{ . }}
{{- end }}
{{- with .Values.gc.readinessProbe.timeoutSeconds }}
timeoutSeconds: {{ . }}
{{- end }}
{{- with .Values.gc.readinessProbe.successThreshold }}
successThreshold: {{ . }}
{{- end }}
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
{{- with .Values.gc.extraEnvs }}
{{- toYaml . | nindent 8 }}
{{- end}}
command:
- "nfd-gc"
args:
{{- if .Values.gc.interval | empty | not }} {{- if .Values.gc.interval | empty | not }}
- "-gc-interval={{ .Values.gc.interval }}" - "-gc-interval={{ .Values.gc.interval }}"
{{- end }} {{- end }}
resources: {{- with .Values.gc.extraArgs }}
{{- toYaml . | nindent 10 }}
{{- end }}
resources:
{{- toYaml .Values.gc.resources | nindent 12 }} {{- toYaml .Values.gc.resources | nindent 12 }}
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
capabilities: capabilities:
drop: [ "ALL" ] drop: [ "ALL" ]
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
runAsNonRoot: true runAsNonRoot: true
ports: ports:
- name: metrics - name: http
containerPort: {{ .Values.gc.metricsPort | default "8081"}} containerPort: {{ .Values.gc.port | default "8080"}}
{{- with .Values.gc.nodeSelector }} {{- with .Values.gc.nodeSelector }}
nodeSelector: nodeSelector:

View File

@@ -1,3 +1,4 @@
{{- if .Values.topologyUpdater.enable -}}
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
@@ -8,3 +9,4 @@ metadata:
data: data:
nfd-topology-updater.conf: |- nfd-topology-updater.conf: |-
{{- .Values.topologyUpdater.config | toYaml | nindent 4 }} {{- .Values.topologyUpdater.config | toYaml | nindent 4 }}
{{- end }}

View File

@@ -0,0 +1,101 @@
{{- if .Values.postDeleteCleanup }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "node-feature-discovery.fullname" . }}-prune
namespace: {{ include "node-feature-discovery.namespace" . }}
labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": post-delete
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ include "node-feature-discovery.fullname" . }}-prune
labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": post-delete
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
rules:
- apiGroups:
- ""
resources:
- nodes
- nodes/status
verbs:
- get
- patch
- update
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ include "node-feature-discovery.fullname" . }}-prune
labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": post-delete
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ include "node-feature-discovery.fullname" . }}-prune
subjects:
- kind: ServiceAccount
name: {{ include "node-feature-discovery.fullname" . }}-prune
namespace: {{ include "node-feature-discovery.namespace" . }}
---
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "node-feature-discovery.fullname" . }}-prune
namespace: {{ include "node-feature-discovery.namespace" . }}
labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": post-delete
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
spec:
template:
metadata:
labels:
{{- include "node-feature-discovery.labels" . | nindent 8 }}
role: prune
spec:
serviceAccountName: {{ include "node-feature-discovery.fullname" . }}-prune
imagePullSecrets: {{ include "node-feature-discovery.imagePullSecrets" . }}
containers:
- name: nfd-master
securityContext:
{{- toYaml .Values.master.securityContext | nindent 12 }}
image: "{{ include "node-feature-discovery.system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command:
- "nfd-master"
args:
- "-prune"
{{- if .Values.master.instance | empty | not }}
- "-instance={{ .Values.master.instance }}"
{{- end }}
restartPolicy: Never
{{- with .Values.master.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.master.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.master.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.master.resources }}
resources:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}

View File

@@ -12,15 +12,15 @@ metadata:
spec: spec:
podMetricsEndpoints: podMetricsEndpoints:
- honorLabels: true - honorLabels: true
interval: 10s interval: {{ .Values.prometheus.scrapeInterval }}
path: /metrics path: /metrics
port: metrics port: http
scheme: http scheme: http
namespaceSelector: namespaceSelector:
matchNames: matchNames:
- {{ include "node-feature-discovery.namespace" . }} - {{ include "node-feature-discovery.namespace" . }}
selector: selector:
matchExpressions: matchExpressions:
- {key: app.kubernetes.io/instance, operator: In, values: ["{{ .Release.Name }}"]} - {key: app.kubernetes.io/instance, operator: In, values: ["{{ .Release.Name }}"]}
- {key: app.kubernetes.io/name, operator: In, values: ["{{ include "node-feature-discovery.name" . }}"]} - {key: app.kubernetes.io/name, operator: In, values: ["{{ include "node-feature-discovery.name" . }}"]}
{{- end }} {{- end }}

View File

@@ -7,18 +7,19 @@ metadata:
labels: labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }} {{- include "node-feature-discovery.labels" . | nindent 4 }}
rules: rules:
- apiGroups: - apiGroups:
- nfd.k8s-sigs.io - nfd.k8s-sigs.io
resources: resources:
- nodefeatures - nodefeatures
verbs: verbs:
- create - create
- get - get
- update - update
- apiGroups: - delete
- "" - apiGroups:
resources: - ""
- pods resources:
verbs: - pods
- get verbs:
- get
{{- end }} {{- end }}

View File

@@ -11,7 +11,8 @@ roleRef:
kind: Role kind: Role
name: {{ include "node-feature-discovery.fullname" . }}-worker name: {{ include "node-feature-discovery.fullname" . }}-worker
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: {{ include "node-feature-discovery.worker.serviceAccountName" . }} name: {{ include "node-feature-discovery.worker.serviceAccountName" . }}
namespace: {{ include "node-feature-discovery.namespace" . }} namespace: {{ include "node-feature-discovery.namespace" . }}
{{- end }} {{- end }}

View File

@@ -1,20 +0,0 @@
{{- if and (not .Values.enableNodeFeatureApi) .Values.master.enable }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "node-feature-discovery.fullname" . }}-master
namespace: {{ include "node-feature-discovery.namespace" . }}
labels:
{{- include "node-feature-discovery.labels" . | nindent 4 }}
role: master
spec:
type: {{ .Values.master.service.type }}
ports:
- port: {{ .Values.master.service.port | default "8080" }}
targetPort: grpc
protocol: TCP
name: grpc
selector:
{{- include "node-feature-discovery.selectorLabels" . | nindent 4 }}
role: master
{{- end}}

View File

@@ -27,7 +27,7 @@ metadata:
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- if and .Values.gc.enable .Values.gc.serviceAccount.create (or .Values.enableNodeFeatureApi .Values.topologyUpdater.enable) }} {{- if and .Values.gc.enable .Values.gc.serviceAccount.create }}
--- ---
apiVersion: v1 apiVersion: v1
kind: ServiceAccount kind: ServiceAccount

View File

@@ -14,261 +14,261 @@ spec:
listKind: NodeResourceTopologyList listKind: NodeResourceTopologyList
plural: noderesourcetopologies plural: noderesourcetopologies
shortNames: shortNames:
- node-res-topo - node-res-topo
singular: noderesourcetopology singular: noderesourcetopology
scope: Cluster scope: Cluster
versions: versions:
- name: v1alpha1 - name: v1alpha1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
description: NodeResourceTopology describes node resources and their topology. description: NodeResourceTopology describes node resources and their topology.
properties: properties:
apiVersion: apiVersion:
description: 'APIVersion defines the versioned schema of this representation description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest 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' internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string type: string
kind: kind:
description: 'Kind is a string value representing the REST resource this description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client 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' 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
topologyPolicies:
items:
type: string type: string
metadata: type: array
zones:
description: ZoneList contains an array of Zone objects.
items:
description: Zone represents a resource topology zone, e.g. socket,
node, die or core.
properties:
attributes:
description: AttributeList contains an array of AttributeInfo objects.
items:
description: AttributeInfo contains one attribute of a Zone.
properties:
name:
type: string
value:
type: string
required:
- name
- value
type: object
type: array
costs:
description: CostList contains an array of CostInfo objects.
items:
description: CostInfo describes the cost (or distance) between
two Zones.
properties:
name:
type: string
value:
format: int64
type: integer
required:
- name
- value
type: object
type: array
name:
type: string
parent:
type: string
resources:
description: ResourceInfoList contains an array of ResourceInfo
objects.
items:
description: ResourceInfo contains information about one resource
type.
properties:
allocatable:
anyOf:
- type: integer
- type: string
description: Allocatable quantity of the resource, corresponding
to allocatable in node status, i.e. total amount of this
resource available to be used by pods.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
available:
anyOf:
- type: integer
- type: string
description: Available is the amount of this resource currently
available for new (to be scheduled) pods, i.e. Allocatable
minus the resources reserved by currently running pods.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
capacity:
anyOf:
- type: integer
- type: string
description: Capacity of the resource, corresponding to capacity
in node status, i.e. total amount of this resource that
the node has.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
name:
description: Name of the resource.
type: string
required:
- allocatable
- available
- capacity
- name
type: object
type: array
type:
type: string
required:
- name
- type
type: object type: object
topologyPolicies: type: array
items: required:
type: string - topologyPolicies
type: array - zones
zones: type: object
description: ZoneList contains an array of Zone objects. served: true
items: storage: false
description: Zone represents a resource topology zone, e.g. socket, - name: v1alpha2
node, die or core. schema:
properties: openAPIV3Schema:
attributes: description: NodeResourceTopology describes node resources and their topology.
description: AttributeList contains an array of AttributeInfo objects. properties:
items: apiVersion:
description: AttributeInfo contains one attribute of a Zone. description: 'APIVersion defines the versioned schema of this representation
properties:
name:
type: string
value:
type: string
required:
- name
- value
type: object
type: array
costs:
description: CostList contains an array of CostInfo objects.
items:
description: CostInfo describes the cost (or distance) between
two Zones.
properties:
name:
type: string
value:
format: int64
type: integer
required:
- name
- value
type: object
type: array
name:
type: string
parent:
type: string
resources:
description: ResourceInfoList contains an array of ResourceInfo
objects.
items:
description: ResourceInfo contains information about one resource
type.
properties:
allocatable:
anyOf:
- type: integer
- type: string
description: Allocatable quantity of the resource, corresponding
to allocatable in node status, i.e. total amount of this
resource available to be used by pods.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
available:
anyOf:
- type: integer
- type: string
description: Available is the amount of this resource currently
available for new (to be scheduled) pods, i.e. Allocatable
minus the resources reserved by currently running pods.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
capacity:
anyOf:
- type: integer
- type: string
description: Capacity of the resource, corresponding to capacity
in node status, i.e. total amount of this resource that
the node has.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
name:
description: Name of the resource.
type: string
required:
- allocatable
- available
- capacity
- name
type: object
type: array
type:
type: string
required:
- name
- type
type: object
type: array
required:
- topologyPolicies
- zones
type: object
served: true
storage: false
- name: v1alpha2
schema:
openAPIV3Schema:
description: NodeResourceTopology describes node resources and their topology.
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest 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' internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string type: string
attributes: attributes:
description: AttributeList contains an array of AttributeInfo objects. description: AttributeList contains an array of AttributeInfo objects.
items: items:
description: AttributeInfo contains one attribute of a Zone. description: AttributeInfo contains one attribute of a Zone.
properties: properties:
name: name:
type: string type: string
value: value:
type: string type: string
required: required:
- name - name
- value - value
type: object type: object
type: array type: array
kind: kind:
description: 'Kind is a string value representing the REST resource this description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client 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' 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 type: string
metadata: metadata:
type: object type: object
topologyPolicies: topologyPolicies:
description: 'DEPRECATED (to be removed in v1beta1): use top level attributes description: 'DEPRECATED (to be removed in v1beta1): use top level attributes
if needed' if needed'
items: items:
type: string type: string
type: array type: array
zones: zones:
description: ZoneList contains an array of Zone objects. description: ZoneList contains an array of Zone objects.
items: items:
description: Zone represents a resource topology zone, e.g. socket, description: Zone represents a resource topology zone, e.g. socket,
node, die or core. node, die or core.
properties: properties:
attributes: attributes:
description: AttributeList contains an array of AttributeInfo objects. description: AttributeList contains an array of AttributeInfo objects.
items: items:
description: AttributeInfo contains one attribute of a Zone. description: AttributeInfo contains one attribute of a Zone.
properties: properties:
name: name:
type: string type: string
value: value:
type: string type: string
required: required:
- name - name
- value - value
type: object type: object
type: array type: array
costs: costs:
description: CostList contains an array of CostInfo objects. description: CostList contains an array of CostInfo objects.
items: items:
description: CostInfo describes the cost (or distance) between description: CostInfo describes the cost (or distance) between
two Zones. two Zones.
properties: properties:
name: name:
type: string type: string
value: value:
format: int64 format: int64
type: integer type: integer
required: required:
- name - name
- value - value
type: object type: object
type: array type: array
name: name:
type: string type: string
parent: parent:
type: string type: string
resources: resources:
description: ResourceInfoList contains an array of ResourceInfo description: ResourceInfoList contains an array of ResourceInfo
objects. objects.
items: items:
description: ResourceInfo contains information about one resource description: ResourceInfo contains information about one resource
type. type.
properties: properties:
allocatable: allocatable:
anyOf: anyOf:
- type: integer - type: integer
- type: string - type: string
description: Allocatable quantity of the resource, corresponding description: Allocatable quantity of the resource, corresponding
to allocatable in node status, i.e. total amount of this to allocatable in node status, i.e. total amount of this
resource available to be used by pods. resource available to be used by pods.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true x-kubernetes-int-or-string: true
available: available:
anyOf: anyOf:
- type: integer - type: integer
- type: string - type: string
description: Available is the amount of this resource currently description: Available is the amount of this resource currently
available for new (to be scheduled) pods, i.e. Allocatable available for new (to be scheduled) pods, i.e. Allocatable
minus the resources reserved by currently running pods. minus the resources reserved by currently running pods.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true x-kubernetes-int-or-string: true
capacity: capacity:
anyOf: anyOf:
- type: integer - type: integer
- type: string - type: string
description: Capacity of the resource, corresponding to capacity description: Capacity of the resource, corresponding to capacity
in node status, i.e. total amount of this resource that in node status, i.e. total amount of this resource that
the node has. the node has.
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true x-kubernetes-int-or-string: true
name: name:
description: Name of the resource. description: Name of the resource.
type: string type: string
required: required:
- allocatable - allocatable
- available - available
- capacity - capacity
- name - name
type: object type: object
type: array type: array
type: type:
type: string type: string
required: required:
- name - name
- type - type
type: object type: object
type: array type: array
required: required:
- zones - zones
type: object type: object
served: true served: true
storage: true storage: true
status: status:
acceptedNames: acceptedNames:
kind: "" kind: ""

View File

@@ -12,6 +12,7 @@ metadata:
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
{{- end }} {{- end }}
spec: spec:
revisionHistoryLimit: {{ .Values.topologyUpdater.revisionHistoryLimit }}
selector: selector:
matchLabels: matchLabels:
{{- include "node-feature-discovery.selectorLabels" . | nindent 6 }} {{- include "node-feature-discovery.selectorLabels" . | nindent 6 }}
@@ -21,125 +22,152 @@ spec:
labels: labels:
{{- include "node-feature-discovery.selectorLabels" . | nindent 8 }} {{- include "node-feature-discovery.selectorLabels" . | nindent 8 }}
role: topology-updater role: topology-updater
{{- with .Values.topologyUpdater.annotations }}
annotations: annotations:
checksum/config: {{ include (print $.Template.BasePath "/nfd-topologyupdater-conf.yaml") . | sha256sum }}
{{- with .Values.topologyUpdater.annotations }}
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
spec: spec:
serviceAccountName: {{ include "node-feature-discovery.topologyUpdater.serviceAccountName" . }} serviceAccountName: {{ include "node-feature-discovery.topologyUpdater.serviceAccountName" . }}
dnsPolicy: ClusterFirstWithHostNet dnsPolicy: {{ .Values.topologyUpdater.dnsPolicy }}
{{- with .Values.imagePullSecrets }} {{- with .Values.priorityClassName }}
imagePullSecrets: priorityClassName: {{ . }}
{{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
imagePullSecrets: {{ include "node-feature-discovery.imagePullSecrets" . }}
securityContext: securityContext:
{{- toYaml .Values.topologyUpdater.podSecurityContext | nindent 8 }} {{- toYaml .Values.topologyUpdater.podSecurityContext | nindent 8 }}
hostNetwork: {{ .Values.topologyUpdater.hostNetwork }}
containers: containers:
- name: topology-updater - name: topology-updater
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" image: "{{ include "node-feature-discovery.system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}" imagePullPolicy: "{{ .Values.image.pullPolicy }}"
env: livenessProbe:
- name: NODE_NAME httpGet:
valueFrom: path: /healthz
fieldRef: port: http
fieldPath: spec.nodeName {{- with .Values.topologyUpdater.livenessProbe.initialDelaySeconds }}
- name: NODE_ADDRESS initialDelaySeconds: {{ . }}
valueFrom: {{- end }}
fieldRef: {{- with .Values.topologyUpdater.livenessProbe.failureThreshold }}
fieldPath: status.hostIP failureThreshold: {{ . }}
command: {{- end }}
- "nfd-topology-updater" {{- with .Values.topologyUpdater.livenessProbe.periodSeconds }}
args: periodSeconds: {{ . }}
- "-podresources-socket=/host-var/lib/kubelet-podresources/kubelet.sock" {{- end }}
{{- with .Values.topologyUpdater.livenessProbe.timeoutSeconds }}
timeoutSeconds: {{ . }}
{{- end }}
readinessProbe:
httpGet:
path: /healthz
port: http
{{- with .Values.topologyUpdater.readinessProbe.initialDelaySeconds }}
initialDelaySeconds: {{ . }}
{{- end }}
{{- with .Values.topologyUpdater.readinessProbe.failureThreshold }}
failureThreshold: {{ . }}
{{- end }}
{{- with .Values.topologyUpdater.readinessProbe.periodSeconds }}
periodSeconds: {{ . }}
{{- end }}
{{- with .Values.topologyUpdater.readinessProbe.timeoutSeconds }}
timeoutSeconds: {{ . }}
{{- end }}
{{- with .Values.topologyUpdater.readinessProbe.successThreshold }}
successThreshold: {{ . }}
{{- end }}
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: NODE_ADDRESS
valueFrom:
fieldRef:
fieldPath: status.hostIP
{{- with .Values.topologyUpdater.extraEnvs }}
{{- toYaml . | nindent 8 }}
{{- end}}
command:
- "nfd-topology-updater"
args:
- "-podresources-socket=/host-var/lib/kubelet-podresources/kubelet.sock"
{{- if .Values.topologyUpdater.updateInterval | empty | not }} {{- if .Values.topologyUpdater.updateInterval | empty | not }}
- "-sleep-interval={{ .Values.topologyUpdater.updateInterval }}" - "-sleep-interval={{ .Values.topologyUpdater.updateInterval }}"
{{- else }} {{- else }}
- "-sleep-interval=3s" - "-sleep-interval=3s"
{{- end }} {{- end }}
{{- if .Values.topologyUpdater.watchNamespace | empty | not }} {{- if .Values.topologyUpdater.watchNamespace | empty | not }}
- "-watch-namespace={{ .Values.topologyUpdater.watchNamespace }}" - "-watch-namespace={{ .Values.topologyUpdater.watchNamespace }}"
{{- else }} {{- else }}
- "-watch-namespace=*" - "-watch-namespace=*"
{{- end }} {{- end }}
{{- if .Values.tls.enable }} {{- if not .Values.topologyUpdater.podSetFingerprint }}
- "-ca-file=/etc/kubernetes/node-feature-discovery/certs/ca.crt" - "-pods-fingerprint=false"
- "-key-file=/etc/kubernetes/node-feature-discovery/certs/tls.key"
- "-cert-file=/etc/kubernetes/node-feature-discovery/certs/tls.crt"
{{- end }}
{{- if .Values.topologyUpdater.podSetFingerprint }}
- "-pods-fingerprint"
{{- end }} {{- end }}
{{- if .Values.topologyUpdater.kubeletConfigPath | empty | not }} {{- if .Values.topologyUpdater.kubeletConfigPath | empty | not }}
- "-kubelet-config-uri=file:///host-var/kubelet-config" - "-kubelet-config-uri=file:///host-var/kubelet-config"
{{- end }} {{- end }}
{{- if .Values.topologyUpdater.kubeletStateDir | empty }} {{- if .Values.topologyUpdater.kubeletStateDir | empty }}
# Disable kubelet state tracking by giving an empty path # Disable kubelet state tracking by giving an empty path
- "-kubelet-state-dir=" - "-kubelet-state-dir="
{{- end }} {{- end }}
- -metrics={{ .Values.topologyUpdater.metricsPort | default "8081"}} - "-port={{ .Values.topologyUpdater.port | default "8080"}}"
ports: {{- with .Values.topologyUpdater.extraArgs }}
- name: metrics {{- toYaml . | nindent 10 }}
containerPort: {{ .Values.topologyUpdater.metricsPort | default "8081"}} {{- end }}
volumeMounts: ports:
- containerPort: {{ .Values.topologyUpdater.port | default "8080"}}
name: http
volumeMounts:
{{- if .Values.topologyUpdater.kubeletConfigPath | empty | not }} {{- if .Values.topologyUpdater.kubeletConfigPath | empty | not }}
- name: kubelet-config - name: kubelet-config
mountPath: /host-var/kubelet-config mountPath: /host-var/kubelet-config
{{- end }} {{- end }}
- name: kubelet-podresources-sock - name: kubelet-podresources-sock
mountPath: /host-var/lib/kubelet-podresources/kubelet.sock mountPath: /host-var/lib/kubelet-podresources/kubelet.sock
- name: host-sys - name: host-sys
mountPath: /host-sys mountPath: /host-sys
{{- if .Values.topologyUpdater.kubeletStateDir | empty | not }} {{- if .Values.topologyUpdater.kubeletStateDir | empty | not }}
- name: kubelet-state-files - name: kubelet-state-files
mountPath: /host-var/lib/kubelet mountPath: /host-var/lib/kubelet
readOnly: true readOnly: true
{{- end }} {{- end }}
{{- if .Values.tls.enable }} - name: nfd-topology-updater-conf
- name: nfd-topology-updater-cert mountPath: "/etc/kubernetes/node-feature-discovery"
mountPath: "/etc/kubernetes/node-feature-discovery/certs" readOnly: true
readOnly: true
{{- end }}
- name: nfd-topology-updater-conf
mountPath: "/etc/kubernetes/node-feature-discovery"
readOnly: true
resources: resources:
{{- toYaml .Values.topologyUpdater.resources | nindent 12 }} {{- toYaml .Values.topologyUpdater.resources | nindent 12 }}
securityContext: securityContext:
{{- toYaml .Values.topologyUpdater.securityContext | nindent 12 }} {{- toYaml .Values.topologyUpdater.securityContext | nindent 12 }}
volumes: volumes:
- name: host-sys - name: host-sys
hostPath: hostPath:
path: "/sys" path: "/sys"
{{- if .Values.topologyUpdater.kubeletConfigPath | empty | not }} {{- if .Values.topologyUpdater.kubeletConfigPath | empty | not }}
- name: kubelet-config - name: kubelet-config
hostPath: hostPath:
path: {{ .Values.topologyUpdater.kubeletConfigPath }} path: {{ .Values.topologyUpdater.kubeletConfigPath }}
{{- end }} {{- end }}
- name: kubelet-podresources-sock - name: kubelet-podresources-sock
hostPath: hostPath:
{{- if .Values.topologyUpdater.kubeletPodResourcesSockPath | empty | not }} {{- if .Values.topologyUpdater.kubeletPodResourcesSockPath | empty | not }}
path: {{ .Values.topologyUpdater.kubeletPodResourcesSockPath }} path: {{ .Values.topologyUpdater.kubeletPodResourcesSockPath }}
{{- else }} {{- else }}
path: /var/lib/kubelet/pod-resources/kubelet.sock path: /var/lib/kubelet/pod-resources/kubelet.sock
{{- end }} {{- end }}
{{- if .Values.topologyUpdater.kubeletStateDir | empty | not }} {{- if .Values.topologyUpdater.kubeletStateDir | empty | not }}
- name: kubelet-state-files - name: kubelet-state-files
hostPath: hostPath:
path: {{ .Values.topologyUpdater.kubeletStateDir }} path: {{ .Values.topologyUpdater.kubeletStateDir }}
{{- end }} {{- end }}
- name: nfd-topology-updater-conf - name: nfd-topology-updater-conf
configMap: configMap:
name: {{ include "node-feature-discovery.fullname" . }}-topology-updater-conf name: {{ include "node-feature-discovery.fullname" . }}-topology-updater-conf
items: items:
- key: nfd-topology-updater.conf - key: nfd-topology-updater.conf
path: nfd-topology-updater.conf path: nfd-topology-updater.conf
{{- if .Values.tls.enable }}
- name: nfd-topology-updater-cert
secret:
secretName: nfd-topology-updater-cert
{{- end }}
{{- with .Values.topologyUpdater.nodeSelector }} {{- with .Values.topologyUpdater.nodeSelector }}
nodeSelector: nodeSelector:

View File

@@ -12,6 +12,11 @@ metadata:
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
{{- end }} {{- end }}
spec: spec:
revisionHistoryLimit: {{ .Values.worker.revisionHistoryLimit }}
{{- with .Values.worker.updateStrategy }}
updateStrategy:
{{- toYaml . | nindent 4 }}
{{- end}}
selector: selector:
matchLabels: matchLabels:
{{- include "node-feature-discovery.selectorLabels" . | nindent 6 }} {{- include "node-feature-discovery.selectorLabels" . | nindent 6 }}
@@ -21,91 +26,124 @@ spec:
labels: labels:
{{- include "node-feature-discovery.selectorLabels" . | nindent 8 }} {{- include "node-feature-discovery.selectorLabels" . | nindent 8 }}
role: worker role: worker
{{- with .Values.worker.annotations }}
annotations: annotations:
checksum/config: {{ include (print $.Template.BasePath "/nfd-worker-conf.yaml") . | sha256sum }}
{{- with .Values.worker.annotations }}
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
spec: spec:
dnsPolicy: ClusterFirstWithHostNet dnsPolicy: {{ .Values.worker.dnsPolicy }}
{{- with .Values.imagePullSecrets }} {{- with .Values.priorityClassName }}
imagePullSecrets: priorityClassName: {{ . }}
{{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
imagePullSecrets: {{ include "node-feature-discovery.imagePullSecrets" . }}
serviceAccountName: {{ include "node-feature-discovery.worker.serviceAccountName" . }} serviceAccountName: {{ include "node-feature-discovery.worker.serviceAccountName" . }}
securityContext: securityContext:
{{- toYaml .Values.worker.podSecurityContext | nindent 8 }} {{- toYaml .Values.worker.podSecurityContext | nindent 8 }}
hostNetwork: {{ .Values.worker.hostNetwork }}
containers: containers:
- name: worker - name: worker
securityContext: securityContext:
{{- toYaml .Values.worker.securityContext | nindent 12 }} {{- toYaml .Values.worker.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" image: "{{ include "node-feature-discovery.system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }} imagePullPolicy: {{ .Values.image.pullPolicy }}
env: livenessProbe:
- name: NODE_NAME httpGet:
valueFrom: path: /healthz
fieldRef: port: http
fieldPath: spec.nodeName {{- with .Values.worker.livenessProbe.initialDelaySeconds }}
- name: POD_NAME initialDelaySeconds: {{ . }}
valueFrom: {{- end }}
fieldRef: {{- with .Values.worker.livenessProbe.failureThreshold }}
fieldPath: metadata.name failureThreshold: {{ . }}
- name: POD_UID {{- end }}
valueFrom: {{- with .Values.worker.livenessProbe.periodSeconds }}
fieldRef: periodSeconds: {{ . }}
fieldPath: metadata.uid {{- end }}
resources: {{- with .Values.worker.livenessProbe.timeoutSeconds }}
timeoutSeconds: {{ . }}
{{- end }}
readinessProbe:
httpGet:
path: /healthz
port: http
{{- with .Values.worker.readinessProbe.initialDelaySeconds }}
initialDelaySeconds: {{ . }}
{{- end }}
{{- with .Values.worker.readinessProbe.failureThreshold }}
failureThreshold: {{ . }}
{{- end }}
{{- with .Values.worker.readinessProbe.periodSeconds }}
periodSeconds: {{ . }}
{{- end }}
{{- with .Values.worker.readinessProbe.timeoutSeconds }}
timeoutSeconds: {{ . }}
{{- end }}
{{- with .Values.worker.readinessProbe.successThreshold }}
successThreshold: {{ . }}
{{- end }}
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_UID
valueFrom:
fieldRef:
fieldPath: metadata.uid
{{- with .Values.worker.extraEnvs }}
{{- toYaml . | nindent 8 }}
{{- end}}
resources:
{{- toYaml .Values.worker.resources | nindent 12 }} {{- toYaml .Values.worker.resources | nindent 12 }}
command: command:
- "nfd-worker" - "nfd-worker"
args: args:
{{- if not .Values.enableNodeFeatureApi }} # Go over featureGate and add the feature-gate flag
- "-server={{ include "node-feature-discovery.fullname" . }}-master:{{ .Values.master.service.port }}" {{- range $key, $value := .Values.featureGates }}
- "-enable-nodefeature-api=false" - "-feature-gates={{ $key }}={{ $value }}"
{{- end }} {{- end }}
{{- if .Values.tls.enable }} - "-port={{ .Values.worker.port | default "8080"}}"
- "-ca-file=/etc/kubernetes/node-feature-discovery/certs/ca.crt" {{- with .Values.worker.extraArgs }}
- "-key-file=/etc/kubernetes/node-feature-discovery/certs/tls.key" {{- toYaml . | nindent 8 }}
- "-cert-file=/etc/kubernetes/node-feature-discovery/certs/tls.crt" {{- end }}
{{- end }} ports:
- "-metrics={{ .Values.worker.metricsPort | default "8081"}}" - containerPort: {{ .Values.worker.port | default "8080"}}
ports: name: http
- name: metrics volumeMounts:
containerPort: {{ .Values.worker.metricsPort | default "8081"}} - name: host-boot
volumeMounts: mountPath: "/host-boot"
- name: host-boot readOnly: true
mountPath: "/host-boot" - name: host-os-release
readOnly: true mountPath: "/host-etc/os-release"
- name: host-os-release readOnly: true
mountPath: "/host-etc/os-release" - name: host-sys
readOnly: true mountPath: "/host-sys"
- name: host-sys readOnly: true
mountPath: "/host-sys" - name: host-usr-lib
readOnly: true mountPath: "/host-usr/lib"
- name: host-usr-lib readOnly: true
mountPath: "/host-usr/lib" - name: host-lib
readOnly: true mountPath: "/host-lib"
- name: host-lib readOnly: true
mountPath: "/host-lib" - name: host-proc-swaps
readOnly: true mountPath: "/host-proc/swaps"
readOnly: true
{{- if .Values.worker.mountUsrSrc }} {{- if .Values.worker.mountUsrSrc }}
- name: host-usr-src - name: host-usr-src
mountPath: "/host-usr/src" mountPath: "/host-usr/src"
readOnly: true readOnly: true
{{- end }} {{- end }}
- name: source-d - name: features-d
mountPath: "/etc/kubernetes/node-feature-discovery/source.d/" mountPath: "/etc/kubernetes/node-feature-discovery/features.d/"
readOnly: true readOnly: true
- name: features-d - name: nfd-worker-conf
mountPath: "/etc/kubernetes/node-feature-discovery/features.d/" mountPath: "/etc/kubernetes/node-feature-discovery"
readOnly: true readOnly: true
- name: nfd-worker-conf
mountPath: "/etc/kubernetes/node-feature-discovery"
readOnly: true
{{- if .Values.tls.enable }}
- name: nfd-worker-cert
mountPath: "/etc/kubernetes/node-feature-discovery/certs"
readOnly: true
{{- end }}
volumes: volumes:
- name: host-boot - name: host-boot
hostPath: hostPath:
@@ -122,14 +160,14 @@ spec:
- name: host-lib - name: host-lib
hostPath: hostPath:
path: "/lib" path: "/lib"
- name: host-proc-swaps
hostPath:
path: "/proc/swaps"
{{- if .Values.worker.mountUsrSrc }} {{- if .Values.worker.mountUsrSrc }}
- name: host-usr-src - name: host-usr-src
hostPath: hostPath:
path: "/usr/src" path: "/usr/src"
{{- end }} {{- end }}
- name: source-d
hostPath:
path: "/etc/kubernetes/node-feature-discovery/source.d/"
- name: features-d - name: features-d
hostPath: hostPath:
path: "/etc/kubernetes/node-feature-discovery/features.d/" path: "/etc/kubernetes/node-feature-discovery/features.d/"
@@ -139,12 +177,7 @@ spec:
items: items:
- key: nfd-worker.conf - key: nfd-worker.conf
path: nfd-worker.conf path: nfd-worker.conf
{{- if .Values.tls.enable }} {{- with .Values.worker.nodeSelector }}
- name: nfd-worker-cert
secret:
secretName: nfd-worker-cert
{{- end }}
{{- with .Values.worker.nodeSelector }}
nodeSelector: nodeSelector:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}

View File

@@ -3,69 +3,84 @@ image:
# This should be set to 'IfNotPresent' for released version # This should be set to 'IfNotPresent' for released version
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
# tag, if defined will use the given image tag, else Chart.AppVersion will be used # tag, if defined will use the given image tag, else Chart.AppVersion will be used
tag: v0.15.7 # tag
imagePullSecrets: [] imagePullSecrets: []
nameOverride: "" nameOverride: ""
fullnameOverride: "" fullnameOverride: ""
namespaceOverride: "" namespaceOverride: ""
enableNodeFeatureApi: true featureGates:
NodeFeatureGroupAPI: false
priorityClassName: ""
postDeleteCleanup: true
master: master:
enable: true enable: true
extraArgs: []
extraEnvs: []
hostNetwork: false
dnsPolicy: ClusterFirstWithHostNet
config: ### <NFD-MASTER-CONF-START-DO-NOT-REMOVE> config: ### <NFD-MASTER-CONF-START-DO-NOT-REMOVE>
# noPublish: false # noPublish: false
# autoDefaultNs: true # extraLabelNs: ["added.ns.io","added.kubernets.io"]
# extraLabelNs: ["added.ns.io","added.kubernets.io"] # denyLabelNs: ["denied.ns.io","denied.kubernetes.io"]
# denyLabelNs: ["denied.ns.io","denied.kubernetes.io"] # enableTaints: false
# resourceLabels: ["vendor-1.com/feature-1","vendor-2.io/feature-2"] # informerPageSize: 200
# enableTaints: false # labelWhiteList: "foo"
# labelWhiteList: "foo" # resyncPeriod: "2h"
# resyncPeriod: "2h" # restrictions:
# klog: # disableLabels: true
# addDirHeader: false # disableTaints: true
# alsologtostderr: false # disableExtendedResources: true
# logBacktraceAt: # disableAnnotations: true
# logtostderr: true # allowOverwrite: false
# skipHeaders: false # denyNodeFeatureLabels: true
# stderrthreshold: 2 # nodeFeatureNamespaceSelector:
# v: 0 # matchLabels:
# vmodule: # kubernetes.io/metadata.name: "node-feature-discovery"
## NOTE: the following options are not dynamically run-time configurable # matchExpressions:
## and require a nfd-master restart to take effect after being changed # - key: "kubernetes.io/metadata.name"
# logDir: # operator: "In"
# logFile: # values:
# logFileMaxSize: 1800 # - "node-feature-discovery"
# skipLogHeaders: false # klog:
# leaderElection: # addDirHeader: false
# leaseDuration: 15s # alsologtostderr: false
# # this value has to be lower than leaseDuration and greater than retryPeriod*1.2 # logBacktraceAt:
# renewDeadline: 10s # logtostderr: true
# # this value has to be greater than 0 # skipHeaders: false
# retryPeriod: 2s # stderrthreshold: 2
# nfdApiParallelism: 10 # v: 0
# vmodule:
## NOTE: the following options are not dynamically run-time configurable
## and require a nfd-master restart to take effect after being changed
# logDir:
# logFile:
# logFileMaxSize: 1800
# skipLogHeaders: false
# leaderElection:
# leaseDuration: 15s
# # this value has to be lower than leaseDuration and greater than retryPeriod*1.2
# renewDeadline: 10s
# # this value has to be greater than 0
# retryPeriod: 2s
# nfdApiParallelism: 10
### <NFD-MASTER-CONF-END-DO-NOT-REMOVE> ### <NFD-MASTER-CONF-END-DO-NOT-REMOVE>
# The TCP port that nfd-master listens for incoming requests. Default: 8080
# Deprecated this parameter is related to the deprecated gRPC API and will
# be removed with it in a future release
port: 8080 port: 8080
metricsPort: 8081
instance: instance:
featureApi:
resyncPeriod: resyncPeriod:
denyLabelNs: [] denyLabelNs: []
extraLabelNs: [] extraLabelNs: []
resourceLabels: []
enableTaints: false enableTaints: false
crdController: null
featureRulesController: null
nfdApiParallelism: null nfdApiParallelism: null
deploymentAnnotations: {} deploymentAnnotations: {}
replicaCount: 1 replicaCount: 1
podSecurityContext: {} podSecurityContext: {}
# fsGroup: 2000 # fsGroup: 2000
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
@@ -84,48 +99,46 @@ master:
# If not set and create is true, a name is generated using the fullname template # If not set and create is true, a name is generated using the fullname template
name: name:
# specify how many old ReplicaSets for the Deployment to retain.
revisionHistoryLimit:
rbac: rbac:
create: true create: true
service:
type: ClusterIP
port: 8080
resources: {} resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious #limits:
# choice for the user. This also increases chances charts run on environments with little # memory: 4Gi
# resources, such as Minikube. If you do want to specify resources, uncomment the following #requests:
# lines, adjust them as necessary, and remove the curly braces after 'resources:'. # cpu: 100m
# limits: # You may want to use the same value for `requests.memory` and `limits.memory`. The “requests” value affects scheduling to accommodate pods on nodes.
# cpu: 100m # If there is a large difference between “requests” and “limits” and nodes experience memory pressure, the kernel may invoke
# memory: 128Mi # the OOM Killer, even if the memory does not exceed the “limits” threshold. This can cause unexpected pod evictions. Memory
# requests: # cannot be compressed and once allocated to a pod, it can only be reclaimed by killing the pod.
# cpu: 100m # Natan Yellin 22/09/2022 https://home.robusta.dev/blog/kubernetes-memory-limit
# memory: 128Mi # memory: 128Mi
nodeSelector: {} nodeSelector: {}
tolerations: tolerations:
- key: "node-role.kubernetes.io/master" - key: "node-role.kubernetes.io/master"
operator: "Equal" operator: "Equal"
value: "" value: ""
effect: "NoSchedule" effect: "NoSchedule"
- key: "node-role.kubernetes.io/control-plane" - key: "node-role.kubernetes.io/control-plane"
operator: "Equal" operator: "Equal"
value: "" value: ""
effect: "NoSchedule" effect: "NoSchedule"
podDisruptionBudget:
enable: false
minAvailable: 1
unhealthyPodEvictionPolicy: AlwaysAllow
annotations: {} annotations: {}
affinity: affinity:
nodeAffinity: nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution: preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: "node-role.kubernetes.io/master"
operator: In
values: [""]
- weight: 1 - weight: 1
preference: preference:
matchExpressions: matchExpressions:
@@ -133,255 +146,274 @@ master:
operator: In operator: In
values: [""] values: [""]
startupProbe:
failureThreshold: 30
# periodSeconds: 10
livenessProbe: {}
# failureThreshold: 3
# initialDelaySeconds: 0
# periodSeconds: 10
# timeoutSeconds: 1
readinessProbe:
failureThreshold: 10
# initialDelaySeconds: 0
# periodSeconds: 10
# timeoutSeconds: 1
# successThreshold: 1
worker: worker:
enable: true enable: true
extraArgs: []
extraEnvs: []
hostNetwork: false
dnsPolicy: ClusterFirstWithHostNet
config: ### <NFD-WORKER-CONF-START-DO-NOT-REMOVE> config: ### <NFD-WORKER-CONF-START-DO-NOT-REMOVE>
#core: #core:
# labelWhiteList: # labelWhiteList:
# noPublish: false # noPublish: false
# sleepInterval: 60s # noOwnerRefs: false
# featureSources: [all] # sleepInterval: 60s
# labelSources: [all] # featureSources: [all]
# klog: # labelSources: [all]
# addDirHeader: false # klog:
# alsologtostderr: false # addDirHeader: false
# logBacktraceAt: # alsologtostderr: false
# logtostderr: true # logBacktraceAt:
# skipHeaders: false # logtostderr: true
# stderrthreshold: 2 # skipHeaders: false
# v: 0 # stderrthreshold: 2
# vmodule: # v: 0
## NOTE: the following options are not dynamically run-time configurable # vmodule:
## and require a nfd-worker restart to take effect after being changed ## NOTE: the following options are not dynamically run-time configurable
# logDir: ## and require a nfd-worker restart to take effect after being changed
# logFile: # logDir:
# logFileMaxSize: 1800 # logFile:
# skipLogHeaders: false # logFileMaxSize: 1800
#sources: # skipLogHeaders: false
# cpu: #sources:
# cpuid: # cpu:
## NOTE: whitelist has priority over blacklist # cpuid:
# attributeBlacklist: ## NOTE: whitelist has priority over blacklist
# - "BMI1" # attributeBlacklist:
# - "BMI2" # - "AVX10"
# - "CLMUL" # - "BMI1"
# - "CMOV" # - "BMI2"
# - "CX16" # - "CLMUL"
# - "ERMS" # - "CMOV"
# - "F16C" # - "CX16"
# - "HTT" # - "ERMS"
# - "LZCNT" # - "F16C"
# - "MMX" # - "HTT"
# - "MMXEXT" # - "LZCNT"
# - "NX" # - "MMX"
# - "POPCNT" # - "MMXEXT"
# - "RDRAND" # - "NX"
# - "RDSEED" # - "POPCNT"
# - "RDTSCP" # - "RDRAND"
# - "SGX" # - "RDSEED"
# - "SSE" # - "RDTSCP"
# - "SSE2" # - "SGX"
# - "SSE3" # - "SSE"
# - "SSE4" # - "SSE2"
# - "SSE42" # - "SSE3"
# - "SSSE3" # - "SSE4"
# - "TDX_GUEST" # - "SSE42"
# attributeWhitelist: # - "SSSE3"
# kernel: # - "TDX_GUEST"
# kconfigFile: "/path/to/kconfig" # attributeWhitelist:
# configOpts: # kernel:
# - "NO_HZ" # kconfigFile: "/path/to/kconfig"
# - "X86" # configOpts:
# - "DMI" # - "NO_HZ"
# pci: # - "X86"
# deviceClassWhitelist: # - "DMI"
# - "0200" # pci:
# - "03" # deviceClassWhitelist:
# - "12" # - "0200"
# deviceLabelFields: # - "03"
# - "class" # - "12"
# - "vendor" # deviceLabelFields:
# - "device" # - "class"
# - "subsystem_vendor" # - "vendor"
# - "subsystem_device" # - "device"
# usb: # - "subsystem_vendor"
# deviceClassWhitelist: # - "subsystem_device"
# - "0e" # usb:
# - "ef" # deviceClassWhitelist:
# - "fe" # - "0e"
# - "ff" # - "ef"
# deviceLabelFields: # - "fe"
# - "class" # - "ff"
# - "vendor" # deviceLabelFields:
# - "device" # - "class"
# local: # - "vendor"
# hooksEnabled: false # - "device"
# custom: # custom:
# # The following feature demonstrates the capabilities of the matchFeatures # # The following feature demonstrates the capabilities of the matchFeatures
# - name: "my custom rule" # - name: "my custom rule"
# labels: # labels:
# "vendor.io/my-ng-feature": "true" # "vendor.io/my-ng-feature": "true"
# # matchFeatures implements a logical AND over all matcher terms in the # # matchFeatures implements a logical AND over all matcher terms in the
# # list (i.e. all of the terms, or per-feature matchers, must match) # # list (i.e. all of the terms, or per-feature matchers, must match)
# matchFeatures: # matchFeatures:
# - feature: cpu.cpuid # - feature: cpu.cpuid
# matchExpressions: # matchExpressions:
# AVX512F: {op: Exists} # AVX512F: {op: Exists}
# - feature: cpu.cstate # - feature: cpu.cstate
# matchExpressions: # matchExpressions:
# enabled: {op: IsTrue} # enabled: {op: IsTrue}
# - feature: cpu.pstate # - feature: cpu.pstate
# matchExpressions: # matchExpressions:
# no_turbo: {op: IsFalse} # no_turbo: {op: IsFalse}
# scaling_governor: {op: In, value: ["performance"]} # scaling_governor: {op: In, value: ["performance"]}
# - feature: cpu.rdt # - feature: cpu.rdt
# matchExpressions: # matchExpressions:
# RDTL3CA: {op: Exists} # RDTL3CA: {op: Exists}
# - feature: cpu.sst # - feature: cpu.sst
# matchExpressions: # matchExpressions:
# bf.enabled: {op: IsTrue} # bf.enabled: {op: IsTrue}
# - feature: cpu.topology # - feature: cpu.topology
# matchExpressions: # matchExpressions:
# hardware_multithreading: {op: IsFalse} # hardware_multithreading: {op: IsFalse}
# #
# - feature: kernel.config # - feature: kernel.config
# matchExpressions: # matchExpressions:
# X86: {op: Exists} # X86: {op: Exists}
# LSM: {op: InRegexp, value: ["apparmor"]} # LSM: {op: InRegexp, value: ["apparmor"]}
# - feature: kernel.loadedmodule # - feature: kernel.loadedmodule
# matchExpressions: # matchExpressions:
# e1000e: {op: Exists} # e1000e: {op: Exists}
# - feature: kernel.selinux # - feature: kernel.selinux
# matchExpressions: # matchExpressions:
# enabled: {op: IsFalse} # enabled: {op: IsFalse}
# - feature: kernel.version # - feature: kernel.version
# matchExpressions: # matchExpressions:
# major: {op: In, value: ["5"]} # major: {op: In, value: ["5"]}
# minor: {op: Gt, value: ["10"]} # minor: {op: Gt, value: ["10"]}
# #
# - feature: storage.block # - feature: storage.block
# matchExpressions: # matchExpressions:
# rotational: {op: In, value: ["0"]} # rotational: {op: In, value: ["0"]}
# dax: {op: In, value: ["0"]} # dax: {op: In, value: ["0"]}
# #
# - feature: network.device # - feature: network.device
# matchExpressions: # matchExpressions:
# operstate: {op: In, value: ["up"]} # operstate: {op: In, value: ["up"]}
# speed: {op: Gt, value: ["100"]} # speed: {op: Gt, value: ["100"]}
# #
# - feature: memory.numa # - feature: memory.numa
# matchExpressions: # matchExpressions:
# node_count: {op: Gt, value: ["2"]} # node_count: {op: Gt, value: ["2"]}
# - feature: memory.nv # - feature: memory.nv
# matchExpressions: # matchExpressions:
# devtype: {op: In, value: ["nd_dax"]} # devtype: {op: In, value: ["nd_dax"]}
# mode: {op: In, value: ["memory"]} # mode: {op: In, value: ["memory"]}
# #
# - feature: system.osrelease # - feature: system.osrelease
# matchExpressions: # matchExpressions:
# ID: {op: In, value: ["fedora", "centos"]} # ID: {op: In, value: ["fedora", "centos"]}
# - feature: system.name # - feature: system.name
# matchExpressions: # matchExpressions:
# nodename: {op: InRegexp, value: ["^worker-X"]} # nodename: {op: InRegexp, value: ["^worker-X"]}
# #
# - feature: local.label # - feature: local.label
# matchExpressions: # matchExpressions:
# custom-feature-knob: {op: Gt, value: ["100"]} # custom-feature-knob: {op: Gt, value: ["100"]}
# #
# # The following feature demonstrates the capabilities of the matchAny # # The following feature demonstrates the capabilities of the matchAny
# - name: "my matchAny rule" # - name: "my matchAny rule"
# labels: # labels:
# "vendor.io/my-ng-feature-2": "my-value" # "vendor.io/my-ng-feature-2": "my-value"
# # matchAny implements a logical IF over all elements (sub-matchers) in # # matchAny implements a logical IF over all elements (sub-matchers) in
# # the list (i.e. at least one feature matcher must match) # # the list (i.e. at least one feature matcher must match)
# matchAny: # matchAny:
# - matchFeatures: # - matchFeatures:
# - feature: kernel.loadedmodule # - feature: kernel.loadedmodule
# matchExpressions: # matchExpressions:
# driver-module-X: {op: Exists} # driver-module-X: {op: Exists}
# - feature: pci.device # - feature: pci.device
# matchExpressions: # matchExpressions:
# vendor: {op: In, value: ["8086"]} # vendor: {op: In, value: ["8086"]}
# class: {op: In, value: ["0200"]} # class: {op: In, value: ["0200"]}
# - matchFeatures: # - matchFeatures:
# - feature: kernel.loadedmodule # - feature: kernel.loadedmodule
# matchExpressions: # matchExpressions:
# driver-module-Y: {op: Exists} # driver-module-Y: {op: Exists}
# - feature: usb.device # - feature: usb.device
# matchExpressions: # matchExpressions:
# vendor: {op: In, value: ["8086"]} # vendor: {op: In, value: ["8086"]}
# class: {op: In, value: ["02"]} # class: {op: In, value: ["02"]}
# #
# - name: "avx wildcard rule" # - name: "avx wildcard rule"
# labels: # labels:
# "my-avx-feature": "true" # "my-avx-feature": "true"
# matchFeatures: # matchFeatures:
# - feature: cpu.cpuid # - feature: cpu.cpuid
# matchName: {op: InRegexp, value: ["^AVX512"]} # matchName: {op: InRegexp, value: ["^AVX512"]}
# #
# # The following features demonstreate label templating capabilities # # The following features demonstreate label templating capabilities
# - name: "my template rule" # - name: "my template rule"
# labelsTemplate: | # labelsTemplate: |
# {{ range .system.osrelease }}vendor.io/my-system-feature.{{ .Name }}={{ .Value }} # {{ range .system.osrelease }}vendor.io/my-system-feature.{{ .Name }}={{ .Value }}
# {{ end }} # {{ end }}
# matchFeatures: # matchFeatures:
# - feature: system.osrelease # - feature: system.osrelease
# matchExpressions: # matchExpressions:
# ID: {op: InRegexp, value: ["^open.*"]} # ID: {op: InRegexp, value: ["^open.*"]}
# VERSION_ID.major: {op: In, value: ["13", "15"]} # VERSION_ID.major: {op: In, value: ["13", "15"]}
# #
# - name: "my template rule 2" # - name: "my template rule 2"
# labelsTemplate: | # labelsTemplate: |
# {{ range .pci.device }}vendor.io/my-pci-device.{{ .class }}-{{ .device }}=with-cpuid # {{ range .pci.device }}vendor.io/my-pci-device.{{ .class }}-{{ .device }}=with-cpuid
# {{ end }} # {{ end }}
# matchFeatures: # matchFeatures:
# - feature: pci.device # - feature: pci.device
# matchExpressions: # matchExpressions:
# class: {op: InRegexp, value: ["^06"]} # class: {op: InRegexp, value: ["^06"]}
# vendor: ["8086"] # vendor: ["8086"]
# - feature: cpu.cpuid # - feature: cpu.cpuid
# matchExpressions: # matchExpressions:
# AVX: {op: Exists} # AVX: {op: Exists}
# #
# # The following examples demonstrate vars field and back-referencing # # The following examples demonstrate vars field and back-referencing
# # previous labels and vars # # previous labels and vars
# - name: "my dummy kernel rule" # - name: "my dummy kernel rule"
# labels: # labels:
# "vendor.io/my.kernel.feature": "true" # "vendor.io/my.kernel.feature": "true"
# matchFeatures: # matchFeatures:
# - feature: kernel.version # - feature: kernel.version
# matchExpressions: # matchExpressions:
# major: {op: Gt, value: ["2"]} # major: {op: Gt, value: ["2"]}
# #
# - name: "my dummy rule with no labels" # - name: "my dummy rule with no labels"
# vars: # vars:
# "my.dummy.var": "1" # "my.dummy.var": "1"
# matchFeatures: # matchFeatures:
# - feature: cpu.cpuid # - feature: cpu.cpuid
# matchExpressions: {} # matchExpressions: {}
# #
# - name: "my rule using backrefs" # - name: "my rule using backrefs"
# labels: # labels:
# "vendor.io/my.backref.feature": "true" # "vendor.io/my.backref.feature": "true"
# matchFeatures: # matchFeatures:
# - feature: rule.matched # - feature: rule.matched
# matchExpressions: # matchExpressions:
# vendor.io/my.kernel.feature: {op: IsTrue} # vendor.io/my.kernel.feature: {op: IsTrue}
# my.dummy.var: {op: Gt, value: ["0"]} # my.dummy.var: {op: Gt, value: ["0"]}
# #
# - name: "kconfig template rule" # - name: "kconfig template rule"
# labelsTemplate: | # labelsTemplate: |
# {{ range .kernel.config }}kconfig-{{ .Name }}={{ .Value }} # {{ range .kernel.config }}kconfig-{{ .Name }}={{ .Value }}
# {{ end }} # {{ end }}
# matchFeatures: # matchFeatures:
# - feature: kernel.config # - feature: kernel.config
# matchName: {op: In, value: ["SWAP", "X86", "ARM"]} # matchName: {op: In, value: ["SWAP", "X86", "ARM"]}
### <NFD-WORKER-CONF-END-DO-NOT-REMOVE> ### <NFD-WORKER-CONF-END-DO-NOT-REMOVE>
metricsPort: 8081 port: 8080
daemonsetAnnotations: {} daemonsetAnnotations: {}
podSecurityContext: {} podSecurityContext: {}
# fsGroup: 2000 # fsGroup: 2000
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
@@ -391,6 +423,18 @@ worker:
runAsNonRoot: true runAsNonRoot: true
# runAsUser: 1000 # runAsUser: 1000
livenessProbe:
initialDelaySeconds: 10
# failureThreshold: 3
# periodSeconds: 10
# timeoutSeconds: 1
readinessProbe:
initialDelaySeconds: 5
failureThreshold: 10
# periodSeconds: 10
# timeoutSeconds: 1
# successThreshold: 1
serviceAccount: serviceAccount:
# Specifies whether a service account should be created. # Specifies whether a service account should be created.
# We create this by default to make it easier for downstream users to apply PodSecurityPolicies. # We create this by default to make it easier for downstream users to apply PodSecurityPolicies.
@@ -401,6 +445,9 @@ worker:
# If not set and create is true, a name is generated using the fullname template # If not set and create is true, a name is generated using the fullname template
name: name:
# specify how many old ControllerRevisions for the DaemonSet to retain.
revisionHistoryLimit:
rbac: rbac:
create: true create: true
@@ -409,16 +456,11 @@ worker:
mountUsrSrc: false mountUsrSrc: false
resources: {} resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious #limits:
# choice for the user. This also increases chances charts run on environments with little # memory: 512Mi
# resources, such as Minikube. If you do want to specify resources, uncomment the following #requests:
# lines, adjust them as necessary, and remove the curly braces after 'resources:'. # cpu: 5m
# limits: # memory: 64Mi
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {} nodeSelector: {}
@@ -430,28 +472,42 @@ worker:
priorityClassName: "" priorityClassName: ""
updateStrategy: {}
# type: RollingUpdate
# rollingUpdate:
# maxSurge: 0
# maxUnavailable: "10%"
topologyUpdater: topologyUpdater:
config: ### <NFD-TOPOLOGY-UPDATER-CONF-START-DO-NOT-REMOVE> config: ### <NFD-TOPOLOGY-UPDATER-CONF-START-DO-NOT-REMOVE>
## key = node name, value = list of resources to be excluded. ## key = node name, value = list of resources to be excluded.
## use * to exclude from all nodes. ## use * to exclude from all nodes.
## an example for how the exclude list should looks like ## an example for how the exclude list should looks like
#excludeList: #excludeList:
# node1: [cpu] # node1: [cpu]
# node2: [memory, example/deviceA] # node2: [memory, example/deviceA]
# *: [hugepages-2Mi] # *: [hugepages-2Mi]
### <NFD-TOPOLOGY-UPDATER-CONF-END-DO-NOT-REMOVE> ### <NFD-TOPOLOGY-UPDATER-CONF-END-DO-NOT-REMOVE>
enable: false enable: false
createCRDs: false createCRDs: false
extraArgs: []
extraEnvs: []
hostNetwork: false
dnsPolicy: ClusterFirstWithHostNet
serviceAccount: serviceAccount:
create: true create: true
annotations: {} annotations: {}
name: name:
# specify how many old ControllerRevisions for the DaemonSet to retain.
revisionHistoryLimit:
rbac: rbac:
create: true create: true
metricsPort: 8081 port: 8080
kubeletConfigPath: kubeletConfigPath:
kubeletPodResourcesSockPath: kubeletPodResourcesSockPath:
updateInterval: 60s updateInterval: 60s
@@ -466,17 +522,24 @@ topologyUpdater:
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
runAsUser: 0 runAsUser: 0
livenessProbe:
initialDelaySeconds: 10
# failureThreshold: 3
# periodSeconds: 10
# timeoutSeconds: 1
readinessProbe:
initialDelaySeconds: 5
failureThreshold: 10
# periodSeconds: 10
# timeoutSeconds: 1
# successThreshold: 1
resources: {} resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious #limits:
# choice for the user. This also increases chances charts run on environments with little # memory: 60Mi
# resources, such as Minikube. If you do want to specify resources, uncomment the following #requests:
# lines, adjust them as necessary, and remove the curly braces after 'resources:'. # cpu: 50m
# limits: # memory: 40Mi
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {} nodeSelector: {}
tolerations: [] tolerations: []
@@ -487,7 +550,11 @@ topologyUpdater:
gc: gc:
enable: true enable: true
extraArgs: []
extraEnvs: []
hostNetwork: false
replicaCount: 1 replicaCount: 1
dnsPolicy: ClusterFirstWithHostNet
serviceAccount: serviceAccount:
create: true create: true
@@ -500,19 +567,26 @@ gc:
podSecurityContext: {} podSecurityContext: {}
resources: {} livenessProbe:
# We usually recommend not to specify default resources and to leave this as a conscious initialDelaySeconds: 10
# choice for the user. This also increases chances charts run on environments with little # failureThreshold: 3
# resources, such as Minikube. If you do want to specify resources, uncomment the following # periodSeconds: 10
# lines, adjust them as necessary, and remove the curly braces after 'resources:'. # timeoutSeconds: 1
# limits: readinessProbe:
# cpu: 100m initialDelaySeconds: 5
# memory: 128Mi # failureThreshold: 3
# requests: # periodSeconds: 10
# cpu: 100m # timeoutSeconds: 1
# memory: 128Mi # successThreshold: 1
metricsPort: 8081 resources: {}
#limits:
# memory: 1Gi
#requests:
# cpu: 10m
# memory: 128Mi
port: 8080
nodeSelector: {} nodeSelector: {}
tolerations: [] tolerations: []
@@ -520,15 +594,15 @@ gc:
deploymentAnnotations: {} deploymentAnnotations: {}
affinity: {} affinity: {}
# Optionally use encryption for worker <--> master comms podDisruptionBudget:
# TODO: verify hostname is not yet supported enable: false
# minAvailable: 1
# If you do not enable certManager (and have it installed) you will unhealthyPodEvictionPolicy: AlwaysAllow
# need to manually, or otherwise, provision the TLS certs as secrets
tls: # specify how many old ReplicaSets for the Deployment to retain.
enable: false revisionHistoryLimit:
certManager: false
prometheus: prometheus:
enable: false enable: false
scrapeInterval: 10s
labels: {} labels: {}

View File

@@ -5,13 +5,15 @@ $ kubectl -n {{ .Release.Namespace }} get pods
For additional instructions on how to use SR-IOV network operator, For additional instructions on how to use SR-IOV network operator,
refer to: https://github.com/k8snetworkplumbingwg/sriov-network-operator refer to: https://github.com/k8snetworkplumbingwg/sriov-network-operator
{{- if .Values.operator.enableAdmissionController }} {{- if .Values.operator.admissionControllers.enabled }}
{{- if not .Values.cert_manager }} {{- if not .Values.operator.admissionControllers.certificates.certManager.enabled }}
Thank you for installing {{ .Chart.Name }}. Thank you for installing {{ .Chart.Name }}.
WARNING! Self signed certificates have been generated for webhooks. WARNING! Self signed certificates have been generated for the two
These certificates have a one-year validity and will not be rotated deployed SRIOV dynamic admission controllers: sriov-network-webhook
automatically. This should not be a production cluster. Please deploy and network-resources-injector. These certificates have a one-year
and use cert-manager for production clusters. validity and will not be rotated automatically.
This should NOT be a production cluster. Please deploy and use
cert-manager for production clusters.
{{- end }} {{- end }}
{{- end }} {{- end }}

View File

@@ -68,18 +68,3 @@ Create the name of the service account to use
{{- "" -}} {{- "" -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{/*
Windows cluster will add default taint for linux nodes,
add below linux tolerations to workloads could be scheduled to those linux nodes
*/}}
{{- define "linux-node-tolerations" -}}
- key: "cattle.io/os"
value: "linux"
effect: "NoSchedule"
operator: "Equal"
{{- end -}}
{{- define "linux-node-selector" -}}
kubernetes.io/os: linux
{{- end -}}

View File

@@ -1,30 +0,0 @@
{{/*
Generate TLS certificates for webhooks.
Note: these 2 lines, that are repeated several times below, are a trick to
ensure the CA certs are generated only once:
$ca := .ca | default (genCA "sriov-network-operator.k8s.cni.cncf.io" 365)
$_ := set . "ca" $ca
Please, don't try to "simplify" them as without this trick, every generated
certificate would be signed by a different CA.
*/}}
{{- define "sriov_operator_ca_cert" }}
{{- $ca := .ca | default (genCA "sriov-network-operator.k8s.cni.cncf.io" 365) -}}
{{- $_ := set . "ca" $ca -}}
{{- printf "%s" $ca.Cert | b64enc -}}
{{- end }}
{{- define "sriov_operator_cert" }}
{{- $ca := .ca | default (genCA "sriov-network-operator.k8s.cni.cncf.io" 365) -}}
{{- $_ := set . "ca" $ca -}}
{{- $cn := printf "operator-webhook-service.%s.svc" .Release.Namespace -}}
{{- $cert := genSignedCert $cn nil (list $cn) 365 $ca -}}
tls.crt: {{ $cert.Cert | b64enc }}
tls.key: {{ $cert.Key | b64enc }}
{{- end }}
{{- define "sriov_resource_injector_cert" }}
{{- $ca := .ca | default (genCA "sriov-network-operator.k8s.cni.cncf.io" 365) -}}
{{- $_ := set . "ca" $ca -}}
{{- $cn := printf "network-resources-injector-service.%s.svc" .Release.Namespace -}}
{{- $cert := genSignedCert $cn nil (list $cn) 365 $ca -}}
tls.crt: {{ $cert.Cert | b64enc }}
tls.key: {{ $cert.Key | b64enc }}
{{- end }}

View File

@@ -8,8 +8,8 @@ metadata:
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
spec: spec:
dnsNames: dnsNames:
- operator-webhook-service.{{ .Release.Namespace }}.svc - operator-webhook-service.{{ .Release.Namespace }}.svc
- operator-webhook-service.{{ .Release.Namespace }}.svc.cluster.local - operator-webhook-service.{{ .Release.Namespace }}.svc.cluster.local
issuerRef: issuerRef:
kind: Issuer kind: Issuer
name: operator-webhook-selfsigned-issuer name: operator-webhook-selfsigned-issuer
@@ -30,8 +30,8 @@ metadata:
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
spec: spec:
dnsNames: dnsNames:
- network-resources-injector-service.{{ .Release.Namespace }}.svc - network-resources-injector-service.{{ .Release.Namespace }}.svc
- network-resources-injector-service.{{ .Release.Namespace }}.svc.cluster.local - network-resources-injector-service.{{ .Release.Namespace }}.svc.cluster.local
issuerRef: issuerRef:
kind: Issuer kind: Issuer
name: network-resources-injector-selfsigned-issuer name: network-resources-injector-selfsigned-issuer

View File

@@ -1,40 +0,0 @@
{{- if and (.Values.operator.enableAdmissionController) (.Values.cert_manager) -}}
{{- if not (.Capabilities.APIVersions.Has "cert-manager.io/v1") -}}
{{- required "cert-manager is required but not found" "" -}}
{{- end -}}
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: sriov-network-operator-selfsigned-issuer
namespace: {{ .Release.Namespace }}
spec:
selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: operator-webhook-service
namespace: {{ .Release.Namespace }}
spec:
secretName: operator-webhook-service
dnsNames:
- operator-webhook-service.{{ .Release.Namespace }}.svc
issuerRef:
name: sriov-network-operator-selfsigned-issuer
privateKey:
rotationPolicy: Always
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: network-resources-injector-service
namespace: {{ .Release.Namespace }}
spec:
secretName: network-resources-injector-secret
dnsNames:
- network-resources-injector-service.{{ .Release.Namespace }}.svc
issuerRef:
name: sriov-network-operator-selfsigned-issuer
privateKey:
rotationPolicy: Always
{{- end -}}

View File

@@ -25,6 +25,11 @@ data:
Intel_ice_Columbiapark_E823C: "8086 188a 1889" Intel_ice_Columbiapark_E823C: "8086 188a 1889"
Intel_ice_Columbiapark_E823L_SFP: "8086 124d 1889" Intel_ice_Columbiapark_E823L_SFP: "8086 124d 1889"
Intel_ice_Columbiapark_E823L_BACKPLANE: "8086 124c 1889" Intel_ice_Columbiapark_E823L_BACKPLANE: "8086 124c 1889"
Intel_ice_Columbiapark_E825C_BACKPLANE: "8086 579c 1889"
Intel_ice_Columbiapark_E825C_QSFP: "8086 579d 1889"
Intel_ice_Columbiapark_E825C_SFP: "8086 579e 1889"
Intel_ice_Connorsville_E830_QSFP: "8086 12d2 1889"
Intel_ice_Connorsville_E830_SFP: "8086 12d3 1889"
Nvidia_mlx5_ConnectX-4: "15b3 1013 1014" Nvidia_mlx5_ConnectX-4: "15b3 1013 1014"
Nvidia_mlx5_ConnectX-4LX: "15b3 1015 1016" Nvidia_mlx5_ConnectX-4LX: "15b3 1015 1016"
Nvidia_mlx5_ConnectX-5: "15b3 1017 1018" Nvidia_mlx5_ConnectX-5: "15b3 1017 1018"

View File

@@ -6,7 +6,6 @@ apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: {{ include "sriov-network-operator.fullname" . }} name: {{ include "sriov-network-operator.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: labels:
{{- include "sriov-network-operator.labels" . | nindent 4 }} {{- include "sriov-network-operator.labels" . | nindent 4 }}
spec: spec:
@@ -15,9 +14,7 @@ spec:
matchLabels: matchLabels:
name: sriov-network-operator name: sriov-network-operator
strategy: strategy:
type: RollingUpdate type: Recreate
rollingUpdate:
maxUnavailable: 33%
template: template:
metadata: metadata:
annotations: annotations:
@@ -42,7 +39,7 @@ spec:
{{- if .Values.imagePullSecrets }} {{- if .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
{{- range .Values.imagePullSecrets }} {{- range .Values.imagePullSecrets }}
- name: {{ . }} - name: {{ . }}
{{- end }} {{- end }}
{{- end }} {{- end }}
containers: containers:

View File

@@ -17,7 +17,7 @@ spec:
{{- if .Values.imagePullSecrets }} {{- if .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
{{- range .Values.imagePullSecrets }} {{- range .Values.imagePullSecrets }}
- name: {{ . }} - name: {{ . }}
{{- end }} {{- end }}
{{- end }} {{- end }}
containers: containers:

View File

@@ -28,6 +28,15 @@ rules:
- statefulsets - statefulsets
verbs: verbs:
- '*' - '*'
- apiGroups:
- networking.k8s.io
resources:
- networkpolicies
verbs:
- get
- create
- update
- delete
- apiGroups: - apiGroups:
- monitoring.coreos.com - monitoring.coreos.com
resources: resources:

View File

@@ -1,19 +0,0 @@
{{- if not .Values.cert_manager -}}
{{- if .Values.operator.enableAdmissionController }}
apiVersion: v1
kind: Secret
metadata:
name: operator-webhook-service
namespace: {{ .Release.Namespace }}
data: {{ include "sriov_operator_cert" . | nindent 2 }}
{{- end }}
---
{{- if .Values.operator.enableAdmissionController }}
apiVersion: v1
kind: Secret
metadata:
name: network-resources-injector-secret
namespace: {{ .Release.Namespace }}
data: {{ include "sriov_resource_injector_cert" . | nindent 2 }}
{{- end }}
{{- end }}

View File

@@ -8,13 +8,13 @@
# {{- set $found "sriovnetwork.openshift.io/v1/SriovNetwork" false -}} # {{- set $found "sriovnetwork.openshift.io/v1/SriovNetwork" false -}}
# {{- set $found "sriovnetwork.openshift.io/v1/SriovOperatorConfig" false -}} # {{- set $found "sriovnetwork.openshift.io/v1/SriovOperatorConfig" false -}}
# {{- range .Capabilities.APIVersions -}} # {{- range .Capabilities.APIVersions -}}
# {{- if hasKey $found (toString .) -}} # {{- if hasKey $found (toString .) -}}
# {{- set $found (toString .) true -}} # {{- set $found (toString .) true -}}
# {{- end -}} # {{- end -}}
# {{- end -}} # {{- end -}}
# {{- range $_, $exists := $found -}} # {{- range $_, $exists := $found -}}
# {{- if (eq $exists false) -}} # {{- if (eq $exists false) -}}
# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} # {{- required "Required CRDs are missing. Please install the corresponding CRDs chart before installing this chart." "" -}}
# {{- end -}}
# {{- end -}} # {{- end -}}
# {{- end -}} #{{- end -}}
#{{- end -}}

View File

@@ -50,38 +50,39 @@ operator:
# cluster. In that case, the ca.crt must be base64 encoded twice since it ends up being an env variable. # cluster. In that case, the ca.crt must be base64 encoded twice since it ends up being an env variable.
custom: custom:
enabled: false enabled: false
# operator: # operator:
# caCrt: | # caCrt: |
# -----BEGIN CERTIFICATE----- # -----BEGIN CERTIFICATE-----
# MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G # MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
# ... # ...
# -----END CERTIFICATE----- # -----END CERTIFICATE-----
# tlsCrt: | # tlsCrt: |
# -----BEGIN CERTIFICATE----- # -----BEGIN CERTIFICATE-----
# MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G # MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
# ... # ...
# -----END CERTIFICATE----- # -----END CERTIFICATE-----
# tlsKey: | # tlsKey: |
# -----BEGIN EC PRIVATE KEY----- # -----BEGIN EC PRIVATE KEY-----
# MHcl4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo= # MHcl4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
# ... # ...
# -----END EC PRIVATE KEY----- # -----END EC PRIVATE KEY-----
# injector: # injector:
# caCrt: | # caCrt: |
# -----BEGIN CERTIFICATE----- # -----BEGIN CERTIFICATE-----
# MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G # MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
# ... # ...
# -----END CERTIFICATE----- # -----END CERTIFICATE-----
# tlsCrt: | # tlsCrt: |
# -----BEGIN CERTIFICATE----- # -----BEGIN CERTIFICATE-----
# MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G # MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
# ... # ...
# -----END CERTIFICATE----- # -----END CERTIFICATE-----
# tlsKey: | # tlsKey: |
# -----BEGIN EC PRIVATE KEY----- # -----BEGIN EC PRIVATE KEY-----
# MHcl4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo= # MHcl4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
# ... # ...
# -----END EC PRIVATE KEY----- # -----END EC PRIVATE KEY-----
sriovOperatorConfig: sriovOperatorConfig:
# deploy sriovOperatorConfig CR with the below values # deploy sriovOperatorConfig CR with the below values
deploy: true deploy: true
@@ -102,25 +103,25 @@ supportedExtraNICs: []
images: images:
operator: operator:
repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-manager" repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-manager"
tag: v1.5.0 tag: v1.6.0
sriovConfigDaemon: sriovConfigDaemon:
repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-config-daemon" repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-config-daemon"
tag: v1.5.0 tag: v1.6.0
sriovCni: sriovCni:
repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-cni" repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-cni"
tag: v2.9.0 tag: v2.10.0
ibSriovCni: ibSriovCni:
repository: "%%IMG_REPO%%/%%IMG_PREFIX%%ib-sriov-cni" repository: "%%IMG_REPO%%/%%IMG_PREFIX%%ib-sriov-cni"
tag: v1.2.1 tag: v1.3.0
sriovDevicePlugin: sriovDevicePlugin:
repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-device-plugin" repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-device-plugin"
tag: v3.9.0 tag: v3.10.0
resourcesInjector: resourcesInjector:
repository: "%%IMG_REPO%%/%%IMG_PREFIX%%network-resources-injector" repository: "%%IMG_REPO%%/%%IMG_PREFIX%%network-resources-injector"
tag: v1.7.1 tag: v1.8.0
webhook: webhook:
repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-webhook" repository: "%%IMG_REPO%%/%%IMG_PREFIX%%sriov-network-webhook"
tag: v1.5.0 tag: v1.6.0
imagePullSecrets: [] imagePullSecrets: []
extraDeploy: [] extraDeploy: []
global: global:

View File

@@ -2,7 +2,7 @@
<service name="obs_scm"> <service name="obs_scm">
<param name="url">https://github.com/k8snetworkplumbingwg/sriov-network-operator</param> <param name="url">https://github.com/k8snetworkplumbingwg/sriov-network-operator</param>
<param name="scm">git</param> <param name="scm">git</param>
<param name="revision">v1.5.0</param> <param name="revision">v1.6.0</param>
<param name="version">_auto_</param> <param name="version">_auto_</param>
<param name="versionformat">@PARENT_TAG@</param> <param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param> <param name="changesgenerate">enable</param>

View File

@@ -17,14 +17,14 @@
Name: sriov-network-operator Name: sriov-network-operator
Version: 1.5.0 Version: 0
Release: 0 Release: 0
Summary: Implements a Kubernetes operator for handling SRIOV VF resources Summary: Implements a Kubernetes operator for handling SRIOV VF resources
License: Apache-2.0 License: Apache-2.0
URL: https://github.com/k8snetworkplumbingwg/sriov-network-operator URL: https://github.com/k8snetworkplumbingwg/sriov-network-operator
Source: sriov-network-operator-%{version}.tar Source: sriov-network-operator-%{version}.tar
Source1: vendor.tar.gz Source1: vendor.tar.gz
BuildRequires: golang(API) = 1.22 BuildRequires: golang(API) = 1.23
ExcludeArch: s390 ExcludeArch: s390
ExcludeArch: %{ix86} ExcludeArch: %{ix86}

View File

@@ -1,6 +1,6 @@
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
#!BuildTag: %%IMG_PREFIX%%suse-edge-components-versions:0.2.2 #!BuildTag: %%IMG_PREFIX%%suse-edge-components-versions:0.2.3
#!BuildTag: %%IMG_PREFIX%%suse-edge-components-versions:0.2.2-%RELEASE% #!BuildTag: %%IMG_PREFIX%%suse-edge-components-versions:0.2.3-%RELEASE%
ARG SLE_VERSION ARG SLE_VERSION
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
@@ -29,8 +29,8 @@ LABEL org.opencontainers.image.description="Gather and display component version
LABEL org.opencontainers.image.url="https://github.com/suse-edge/support-tools/tree/main/components-versions" LABEL org.opencontainers.image.url="https://github.com/suse-edge/support-tools/tree/main/components-versions"
LABEL org.opencontainers.image.created="%BUILDTIME%" LABEL org.opencontainers.image.created="%BUILDTIME%"
LABEL org.opencontainers.image.vendor="SUSE LLC" LABEL org.opencontainers.image.vendor="SUSE LLC"
LABEL org.opencontainers.image.version="0.2.2" LABEL org.opencontainers.image.version="0.2.3"
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%suse-edge-components-versions:0.2.2-%RELEASE%" LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%suse-edge-components-versions:0.2.3-%RELEASE%"
LABEL org.openbuildservice.disturl="%DISTURL%" LABEL org.openbuildservice.disturl="%DISTURL%"
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
LABEL com.suse.eula="SUSE Combined EULA February 2024" LABEL com.suse.eula="SUSE Combined EULA February 2024"