Skip to content

Commit 194037a

Browse files
authored
Merge pull request #466 from lizzzcai/helm-parameterize-provisioner-1118
helmchart: allow parameterize storageClass.provisioner
2 parents 76b1c86 + 9798596 commit 194037a

File tree

5 files changed

+180
-4
lines changed

5 files changed

+180
-4
lines changed

helm/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ provisioner chart and their default values.
142142
| classes.[n].storageClass | Create storage class for this class and configure it optionally. | bool/map | `false` |
143143
| classes.[n].storageClass.reclaimPolicy | Specify reclaimPolicy of storage class, available: Delete/Retain. | str | `Delete` |
144144
| classes.[n].storageClass.isDefaultClass | Set storage class as default | bool | `false` |
145+
| classes.[n].storageClass.provisioner | Specify provisioner of storage class. | str | `kubernetes.io/no-provisioner` |
145146
| podAnnotations | Annotations for each Pod in the DaemonSet. | map | `-` |
146147
| podLabels | Labels for each Pod in the DaemonSet. | map | `-` |
147148
| image | Provisioner image. | str | `registry.k8s.io/sig-storage/local-volume-provisioner:v2.5.0` |
@@ -171,6 +172,7 @@ Here are a list of examples for various environments:
171172
* [examples/baremetal-cleanbyjobs.yaml](examples/baremetal-cleanbyjobs.yaml)
172173
* [examples/baremetal-resyncperiod.yaml](examples/baremetal-resyncperiod.yaml)
173174
* [examples/baremetal-tolerations.yaml](examples/baremetal-tolerations.yaml)
175+
* [examples/baremetal-provisioner.yaml](examples/baremetal-provisioner.yaml)
174176
* [examples/baremetal-with-resource-limits.yaml](examples/baremetal-with-resource-limits.yaml)
175177
* [examples/baremetal-without-rbac.yaml](examples/baremetal-without-rbac.yaml)
176178
* [examples/baremetal.yaml](examples/baremetal.yaml)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
classes:
2+
- name: local-storage
3+
hostDir: /mnt/disks
4+
blockCleanerCommand:
5+
- "/scripts/quick_reset.sh"
6+
volumeMode: Block
7+
storageClass:
8+
provisioner: "local-provisioner"
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
---
2+
# Source: local-static-provisioner/templates/serviceaccount.yaml
3+
apiVersion: v1
4+
kind: ServiceAccount
5+
metadata:
6+
name: local-static-provisioner
7+
namespace: default
8+
labels:
9+
helm.sh/chart: local-static-provisioner-2.0.0
10+
app.kubernetes.io/name: local-static-provisioner
11+
app.kubernetes.io/managed-by: Helm
12+
app.kubernetes.io/instance: local-static-provisioner
13+
---
14+
# Source: local-static-provisioner/templates/configmap.yaml
15+
apiVersion: v1
16+
kind: ConfigMap
17+
metadata:
18+
name: local-static-provisioner-config
19+
namespace: default
20+
labels:
21+
helm.sh/chart: local-static-provisioner-2.0.0
22+
app.kubernetes.io/name: local-static-provisioner
23+
app.kubernetes.io/managed-by: Helm
24+
app.kubernetes.io/instance: local-static-provisioner
25+
data:
26+
storageClassMap: |
27+
local-storage:
28+
hostDir: /mnt/disks
29+
mountDir: /mnt/disks
30+
blockCleanerCommand:
31+
- "/scripts/quick_reset.sh"
32+
volumeMode: Block
33+
---
34+
# Source: local-static-provisioner/templates/storageclass.yaml
35+
apiVersion: storage.k8s.io/v1
36+
kind: StorageClass
37+
metadata:
38+
name: local-storage
39+
labels:
40+
helm.sh/chart: local-static-provisioner-2.0.0
41+
app.kubernetes.io/name: local-static-provisioner
42+
app.kubernetes.io/managed-by: Helm
43+
app.kubernetes.io/instance: local-static-provisioner
44+
provisioner: local-provisioner
45+
volumeBindingMode: WaitForFirstConsumer
46+
reclaimPolicy: Delete
47+
---
48+
# Source: local-static-provisioner/templates/rbac.yaml
49+
apiVersion: rbac.authorization.k8s.io/v1
50+
kind: ClusterRole
51+
metadata:
52+
name: local-static-provisioner-node-clusterrole
53+
labels:
54+
helm.sh/chart: local-static-provisioner-2.0.0
55+
app.kubernetes.io/name: local-static-provisioner
56+
app.kubernetes.io/managed-by: Helm
57+
app.kubernetes.io/instance: local-static-provisioner
58+
rules:
59+
- apiGroups: [""]
60+
resources: ["persistentvolumes"]
61+
verbs: ["get", "list", "watch", "create", "delete"]
62+
- apiGroups: ["storage.k8s.io"]
63+
resources: ["storageclasses"]
64+
verbs: ["get", "list", "watch"]
65+
- apiGroups: [""]
66+
resources: ["events"]
67+
verbs: ["watch"]
68+
- apiGroups: ["", "events.k8s.io"]
69+
resources: ["events"]
70+
verbs: ["create", "update", "patch"]
71+
- apiGroups: [""]
72+
resources: ["nodes"]
73+
verbs: ["get"]
74+
---
75+
# Source: local-static-provisioner/templates/rbac.yaml
76+
apiVersion: rbac.authorization.k8s.io/v1
77+
kind: ClusterRoleBinding
78+
metadata:
79+
name: local-static-provisioner-node-binding
80+
labels:
81+
helm.sh/chart: local-static-provisioner-2.0.0
82+
app.kubernetes.io/name: local-static-provisioner
83+
app.kubernetes.io/managed-by: Helm
84+
app.kubernetes.io/instance: local-static-provisioner
85+
subjects:
86+
- kind: ServiceAccount
87+
name: local-static-provisioner
88+
namespace: default
89+
roleRef:
90+
kind: ClusterRole
91+
name: local-static-provisioner-node-clusterrole
92+
apiGroup: rbac.authorization.k8s.io
93+
---
94+
# Source: local-static-provisioner/templates/daemonset_linux.yaml
95+
apiVersion: apps/v1
96+
kind: DaemonSet
97+
metadata:
98+
name: local-static-provisioner
99+
namespace: default
100+
labels:
101+
helm.sh/chart: local-static-provisioner-2.0.0
102+
app.kubernetes.io/name: local-static-provisioner
103+
app.kubernetes.io/managed-by: Helm
104+
app.kubernetes.io/instance: local-static-provisioner
105+
spec:
106+
selector:
107+
matchLabels:
108+
app.kubernetes.io/name: local-static-provisioner
109+
app.kubernetes.io/instance: local-static-provisioner
110+
template:
111+
metadata:
112+
labels:
113+
app.kubernetes.io/name: local-static-provisioner
114+
app.kubernetes.io/instance: local-static-provisioner
115+
annotations:
116+
checksum/config: ab47134c2d9ee94cf8fc7f8a5a8dc9e51c2ab005a6ce67ff013328751015dec8
117+
spec:
118+
serviceAccountName: local-static-provisioner
119+
nodeSelector:
120+
kubernetes.io/os: linux
121+
containers:
122+
- name: provisioner
123+
image: registry.k8s.io/sig-storage/local-volume-provisioner:v2.6.0
124+
securityContext:
125+
privileged: true
126+
env:
127+
- name: MY_NODE_NAME
128+
valueFrom:
129+
fieldRef:
130+
fieldPath: spec.nodeName
131+
- name: MY_NAMESPACE
132+
valueFrom:
133+
fieldRef:
134+
fieldPath: metadata.namespace
135+
- name: JOB_CONTAINER_IMAGE
136+
value: registry.k8s.io/sig-storage/local-volume-provisioner:v2.6.0
137+
ports:
138+
- name: metrics
139+
containerPort: 8080
140+
volumeMounts:
141+
- name: provisioner-config
142+
mountPath: /etc/provisioner/config
143+
readOnly: true
144+
- name: provisioner-dev
145+
mountPath: /dev
146+
- name: local-storage
147+
mountPath: /mnt/disks
148+
mountPropagation: HostToContainer
149+
volumes:
150+
- name: provisioner-config
151+
configMap:
152+
name: local-static-provisioner-config
153+
- name: provisioner-dev
154+
hostPath:
155+
path: /dev
156+
- name: local-storage
157+
hostPath:
158+
path: /mnt/disks

helm/provisioner/templates/storageclass.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ metadata:
1616
app.kubernetes.io/name: {{ template "provisioner.name" $ }}
1717
app.kubernetes.io/managed-by: {{ $.Release.Service }}
1818
app.kubernetes.io/instance: {{ $.Release.Name }}
19+
{{- if kindIs "map" $val.storageClass }}
20+
provisioner: {{ $val.storageClass.provisioner | default "kubernetes.io/no-provisioner" }}
21+
{{- else }}
1922
provisioner: kubernetes.io/no-provisioner
23+
{{- end }}
2024
volumeBindingMode: WaitForFirstConsumer
2125
{{- if kindIs "map" $val.storageClass }}
2226
reclaimPolicy: {{ $val.storageClass.reclaimPolicy | default "Delete" }}

helm/provisioner/values.yaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,16 @@ classes:
8282
- "2"
8383
# or blkdiscard utility by uncommenting the line below.
8484
# - "/scripts/blkdiscard.sh"
85-
# Uncomment to create storage class object with default configuration.
86-
# storageClass: true
87-
# Uncomment to create storage class object and configure it.
88-
# storageClass:
85+
# Uncomment to create storage class object with default configuration.
86+
# storageClass: true
87+
# Uncomment to create storage class object and configure it.
88+
# storageClass:
8989
# reclaimPolicy: Delete # Available reclaim policies: Delete/Retain, defaults: Delete.
9090
# isDefaultClass: true # set as default class
91+
# If you are using cluster autoscaler to scale the workload using volume provisioned by this storage class,
92+
# set the provisioner of the storage class to another value other than the default.
93+
# Ref: https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/issues/288
94+
# provisioner: kubernetes.io/no-provisioner
9195

9296
# Defines annotations for each Pod in the DaemonSet.
9397
podAnnotations: {}

0 commit comments

Comments
 (0)