diff options
Diffstat (limited to 'deploy/helm')
| -rw-r--r-- | deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml | 10 | ||||
| -rw-r--r-- | deploy/helm/seaweedfs-csi-driver/templates/kubemod_modrule.yml | 29 | ||||
| -rw-r--r-- | deploy/helm/seaweedfs-csi-driver/values.yaml | 8 |
3 files changed, 47 insertions, 0 deletions
diff --git a/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml b/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml index 324b292..b3b8401 100644 --- a/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml +++ b/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml @@ -60,6 +60,9 @@ spec: - "--nodeid=$(NODE_ID)" - "--cacheDir=/var/cache/seaweedfs" - "--dataLocality={{ .Values.dataLocality }}" + {{- if .Values.node.injectTopologyInfoFromNodeLabel.enabled }} + - "--dataCenter=$(DATACENTER)" + {{- end }} env: - name: CSI_ENDPOINT value: unix:///csi/csi.sock @@ -69,6 +72,13 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName + {{- if .Values.node.injectTopologyInfoFromNodeLabel.enabled }} + - name: DATACENTER + valueFrom: + fieldRef: + # Injected by ModRule 'inject-topology-labels' + fieldPath: metadata.labels['{{ .Values.node.injectTopologyInfoFromNodeLabel.labels.dataCenter }}'] + {{- end }} {{- if .Values.tlsSecret }} - name: WEED_GRPC_CLIENT_KEY value: /var/run/secrets/app/tls/tls.key diff --git a/deploy/helm/seaweedfs-csi-driver/templates/kubemod_modrule.yml b/deploy/helm/seaweedfs-csi-driver/templates/kubemod_modrule.yml new file mode 100644 index 0000000..9e78b04 --- /dev/null +++ b/deploy/helm/seaweedfs-csi-driver/templates/kubemod_modrule.yml @@ -0,0 +1,29 @@ +# Based on https://github.com/kubernetes/kubernetes/issues/40610#issuecomment-1364368282 +{{- if .Values.node.injectTopologyInfoFromNodeLabel.enabled }} +apiVersion: api.kubemod.io/v1beta1 +kind: ModRule +metadata: + name: inject-topology-labels + #namespace: kubemod-system +spec: + type: Patch + targetNamespaceRegex: ".*" + admissionOperations: + - UPDATE + + match: + # Match pods... + - select: '{{ template "seaweedfs-csi-driver.name" . }}-node' + matchValue: 'Pod' + # ...which have access to the node's manifest through the synthetic ref injected by KubeMod. + - select: '$.syntheticRefs.node.metadata.labels' + + patch: + # Grab the node's region and zone and put them in the pod's corresponding labels. + - op: add + path: /metadata/labels/topology.kubernetes.io~1region + value: '"{{ index .Target.syntheticRefs.node.metadata.labels "topology.kubernetes.io/region"}}"' + - op: add + path: /metadata/labels/topology.kubernetes.io~1zone + value: '"{{ index .Target.syntheticRefs.node.metadata.labels "topology.kubernetes.io/zone"}}"' +{{- end }} diff --git a/deploy/helm/seaweedfs-csi-driver/values.yaml b/deploy/helm/seaweedfs-csi-driver/values.yaml index 388888f..bb29782 100644 --- a/deploy/helm/seaweedfs-csi-driver/values.yaml +++ b/deploy/helm/seaweedfs-csi-driver/values.yaml @@ -60,6 +60,14 @@ node: affinity: {} tolerations: {} + # Auto-Inject Topology-Info from Kubernetes node-labels using KubeMod (https://github.com/kubemod/kubemod) + # Necessary because DownwardAPI doesnt support passing node-labels (see: https://github.com/kubernetes/kubernetes/issues/40610) + # Requires KubeMod to be installed + injectTopologyInfoFromNodeLabel: + enabled: false + labels: + dataCenter: "topology.kubernetes.io/zone" + ## Change if not using standard kubernetes deployments, like k0s volumes: registration_dir: /var/lib/kubelet/plugins_registry |
