aboutsummaryrefslogtreecommitdiff
path: root/deploy/helm
diff options
context:
space:
mode:
Diffstat (limited to 'deploy/helm')
-rw-r--r--deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml10
-rw-r--r--deploy/helm/seaweedfs-csi-driver/templates/kubemod_modrule.yml29
-rw-r--r--deploy/helm/seaweedfs-csi-driver/values.yaml8
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