diff --git a/longhorn/values.yaml b/longhorn/values.yaml index dc4dfdd..0cf38d5 100644 --- a/longhorn/values.yaml +++ b/longhorn/values.yaml @@ -4,6 +4,7 @@ defaultSettings: backupTargetCredentialSecret: longhorn-backup-target replicaAutoBalance: best-effort defaultLonghornStaticStorageClass: longhorn + createDefaultDiskLabeledNodes: true ingress: enabled: true ingressClassName: nginx diff --git a/node-labeler/node-labeler.yaml b/node-labeler/node-labeler.yaml index 09f1e45..a8e389d 100644 --- a/node-labeler/node-labeler.yaml +++ b/node-labeler/node-labeler.yaml @@ -3,6 +3,21 @@ kind: Namespace metadata: name: node-labeler --- +apiVersion: v1 +kind: ConfigMap +metadata: + name: labeler-script + namespace: node-labeler +data: + run.sh: | + #!/usr/bin/env sh + while true; do + kubectl get node $1 -o=jsonpath='{.metadata.labels}' | grep -q node-role.kubernetes.io/worker || kubectl label node $1 node-role.kubernetes.io/worker= + kubectl get node $1 -o=jsonpath='{.metadata.labels}' | grep -q node.longhorn.io/create-default-disk || kubectl label node $1 node.longhorn.io/create-default-disk='config' + kubectl get node $1 -o=jsonpath='{.metadata.annotations}' | grep -q node.longhorn.io/default-disks-config || kubectl annotate node $1 node.longhorn.io/default-disks-config='[ { "path":"/storage1", "allowScheduling":true }, { "name":"storage2", "path":"/storage2", "allowScheduling":true, "storageReserved":0 }]' + sleep 60 + done +--- apiVersion: apps/v1 kind: DaemonSet metadata: @@ -21,6 +36,11 @@ spec: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule + volumes: + - name: labeler-script + configMap: + name: labeler-script + defaultMode: 0777 containers: - name: labeler image: bitnami/kubectl @@ -29,8 +49,11 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName - command: ["/bin/sh", "-c", "while true; do kubectl get node $(NODE_NAME) -o=jsonpath='{.metadata.labels}' | grep -q node-role.kubernetes.io/worker || kubectl label node $(NODE_NAME) node-role.kubernetes.io/worker=; sleep 60; done"] + command: ["/bin/sh", "-c", "/labeler-script/run.sh $(NODE_NAME)"] imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /labeler-script + name: labeler-script restartPolicy: Always --- apiVersion: rbac.authorization.k8s.io/v1 @@ -41,7 +64,7 @@ metadata: rules: - apiGroups: [""] resources: ["nodes"] - verbs: ["get", "patch"] + verbs: ["get", "patch", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding