Compare commits
57 Commits
v4.0.1
...
nfs-subdir
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f955d1a21 | ||
|
|
5f97c83a65 | ||
|
|
1271831fbd | ||
|
|
b74a204cda | ||
|
|
7b9f0e8db2 | ||
|
|
e289a21201 | ||
|
|
5c0dd02dfb | ||
|
|
6b5f99c430 | ||
|
|
65ce8894da | ||
|
|
23c664fd54 | ||
|
|
c848d9c7ce | ||
|
|
f552bc6a79 | ||
|
|
5e1b342945 | ||
|
|
4ee25693f5 | ||
|
|
ba1654f02c | ||
|
|
09a32a7aad | ||
|
|
ae50b6da6c | ||
|
|
2cad8da61c | ||
|
|
d8db2d111e | ||
|
|
7947697c42 | ||
|
|
1cafa67771 | ||
|
|
48e51b160c | ||
|
|
9a5d466349 | ||
|
|
466cf8be73 | ||
|
|
172cab36f1 | ||
|
|
a3f57e1527 | ||
|
|
eae7143d98 | ||
|
|
888d6dbd39 | ||
|
|
b8e203661b | ||
|
|
cadce2dbc9 | ||
|
|
fab8b5623e | ||
|
|
b668ec9f74 | ||
|
|
b5b2918215 | ||
|
|
2bee3e0f77 | ||
|
|
f86551598e | ||
|
|
522d8f83d5 | ||
|
|
012a016471 | ||
|
|
5364f1b4bf | ||
|
|
7417303508 | ||
|
|
c53f80160a | ||
|
|
9affea2658 | ||
|
|
8c82a35627 | ||
|
|
863e96984b | ||
|
|
a5117cbedb | ||
|
|
681319b3bd | ||
|
|
74123487f2 | ||
|
|
e5d160f03e | ||
|
|
8b8d398b53 | ||
|
|
707f140b76 | ||
|
|
8e20383b4c | ||
|
|
b33cad598a | ||
|
|
c50d1aea01 | ||
|
|
5fda156007 | ||
|
|
1e913d1ade | ||
|
|
a57db9a5a7 | ||
|
|
819f6d382d | ||
|
|
0869cb9ec6 |
@@ -1 +0,0 @@
|
||||
./release-tools/cloudbuild.sh
|
||||
21
.cloudbuild.sh
Executable file
21
.cloudbuild.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#! /bin/bash
|
||||
|
||||
# Copyright 2020 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
: ${CSI_PROW_BUILD_PLATFORMS:="linux amd64; linux arm -arm; linux arm64 -arm64; linux ppc64le -ppc64le; linux s390x -s390x"}
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
. release-tools/cloudbuild.sh
|
||||
@@ -1,3 +1,9 @@
|
||||
# v4.0.2
|
||||
- Add arm7 (32bit) support (https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/pull/58)
|
||||
|
||||
# v4.0.1
|
||||
- Preserve name of the PV directory name during archiving (https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/pull/59)
|
||||
|
||||
# v4.0.0
|
||||
- Remove redundant field in the rbac.yaml (https://github.com/kubernetes-retired/external-storage/pull/970)
|
||||
- Use `kubernetes-sigs/sig-storage-lib-external-provisioner` instead of `incubator/external-storage/lib` (https://github.com/kubernetes-retired/external-storage/pull/1026)
|
||||
|
||||
14
README.md
14
README.md
@@ -3,7 +3,7 @@
|
||||
**NFS subdir external provisioner** is an automatic provisioner that use your _existing and already configured_ NFS server to support dynamic provisioning of Kubernetes Persistent Volumes via Persistent Volume Claims. Persistent volumes are provisioned as `${namespace}-${pvcName}-${pvName}`.
|
||||
|
||||
Note: This repository is migrated from https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client. As part of the migration:
|
||||
- The container image name and repository has changed to `gcr.io/k8s-staging-sig-storage` and `nfs-subdir-external-provisioner` respectively.
|
||||
- The container image name and repository has changed to `k8s.gcr.io/sig-storage` and `nfs-subdir-external-provisioner` respectively.
|
||||
- To maintain backward compatibility with earlier deployment files, the naming of NFS Client Provisioner is retained as `nfs-client-provisioner` in the deployment YAMLs.
|
||||
- One of the pending areas for development on this repository is to add automated e2e tests. If you would like to contribute, please raise an issue or reach us on the Kubernetes slack #sig-storage channel.
|
||||
|
||||
@@ -58,10 +58,9 @@ On OpenShift the service account used to bind volumes does not have the necessar
|
||||
```sh
|
||||
# Set the subject of the RBAC objects to the current namespace where the provisioner is being deployed
|
||||
$ NAMESPACE=`oc project -q`
|
||||
$ sed -i'' "s/namespace:.*/namespace: $NAMESPACE/g" ./deploy/rbac.yaml
|
||||
$ sed -i'' "s/namespace:.*/namespace: $NAMESPACE/g" ./deploy/rbac.yaml ./deploy/deployment.yaml
|
||||
$ oc create -f deploy/rbac.yaml
|
||||
$ oc create role use-scc-hostmount-anyuid --verb=use --resource=scc --resource-name=hostmount-anyuid -n $NAMESPACE
|
||||
$ oc adm policy add-role-to-user use-scc-hostmount-anyuid system:serviceaccount:$NAMESPACE:nfs-client-provisioner
|
||||
$ oc adm policy add-scc-to-user hostmount-anyuid system:serviceaccount:$NAMESPACE:nfs-client-provisioner
|
||||
```
|
||||
|
||||
**Step 4: Configure the NFS subdir external provisioner**
|
||||
@@ -90,7 +89,7 @@ spec:
|
||||
serviceAccountName: nfs-client-provisioner
|
||||
containers:
|
||||
- name: nfs-client-provisioner
|
||||
image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0
|
||||
image: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
|
||||
volumeMounts:
|
||||
- name: nfs-client-root
|
||||
mountPath: /persistentvolumes
|
||||
@@ -207,4 +206,7 @@ The pipeline adds several labels:
|
||||
* You also need to provide the `DOCKER_IMAGE` secret specifying your Docker image name, e.g., `quay.io/[username]/nfs-subdir-external-provisioner`.
|
||||
|
||||
|
||||
|
||||
## NFS provisioner limitations/pitfalls
|
||||
* The provisioned storage is not guaranteed. You may allocate more than the NFS share's total size. The share may also not have enough storage space left to actually accommodate the request.
|
||||
* The provisioned storage limit is not enforced. The application can expand to use all the available storage regardless of the provisioned size.
|
||||
* Storage resize/expansion operations are not presently supported in any form. You will end up in an error state: `Ignoring the PVC: didn't find a plugin capable of expanding the volume; waiting for an external controller to process this PVC.`
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
apiVersion: v1
|
||||
appVersion: 4.0.0
|
||||
appVersion: 4.0.2
|
||||
description: nfs-subdir-external-provisioner is an automatic provisioner that used your *already configured* NFS server, automatically creating Persistent Volumes.
|
||||
name: nfs-subdir-external-provisioner
|
||||
home: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner
|
||||
version: 4.0.4
|
||||
version: 4.0.13
|
||||
kubeVersion: ">=1.9.0-0"
|
||||
sources:
|
||||
- https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner
|
||||
|
||||
@@ -48,31 +48,38 @@ The command removes all the Kubernetes components associated with the chart and
|
||||
|
||||
The following tables lists the configurable parameters of this chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ----------------------------------- | ----------------------------------------------------------- | ------------------------------------------------- |
|
||||
| `replicaCount` | Number of provisioner instances to deployed | `1` |
|
||||
| `strategyType` | Specifies the strategy used to replace old Pods by new ones | `Recreate` |
|
||||
| `image.repository` | Provisioner image | `gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner` |
|
||||
| `image.tag` | Version of provisioner image | `v4.0.0` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `storageClass.name` | Name of the storageClass | `nfs-client` |
|
||||
| `storageClass.defaultClass` | Set as the default StorageClass | `false` |
|
||||
| `storageClass.allowVolumeExpansion` | Allow expanding the volume | `true` |
|
||||
| `storageClass.reclaimPolicy` | Method used to reclaim an obsoleted volume | `Delete` |
|
||||
| `storageClass.provisionerName` | Name of the provisionerName | null |
|
||||
| `storageClass.archiveOnDelete` | Archive pvc when deleting | `true` |
|
||||
| `storageClass.pathPattern` | Specifies a template for the directory name | null |
|
||||
| `storageClass.accessModes` | Set access mode for PV | `ReadWriteOnce` |
|
||||
| `leaderElection.enabled` | Enables or disables leader election | `true` |
|
||||
| `nfs.server` | Hostname of the NFS server (required) | null (ip or hostname) |
|
||||
| `nfs.path` | Basepath of the mount point to be used | `/nfs-storage` |
|
||||
| `nfs.mountOptions` | Mount options (e.g. 'nfsvers=3') | null |
|
||||
| `resources` | Resources required (e.g. CPU, memory) | `{}` |
|
||||
| `rbac.create` | Use Role-based Access Control | `true` |
|
||||
| `podSecurityPolicy.enabled` | Create & use Pod Security Policy resources | `false` |
|
||||
| `priorityClassName` | Set pod priorityClassName | null |
|
||||
| `serviceAccount.create` | Should we create a ServiceAccount | `true` |
|
||||
| `serviceAccount.name` | Name of the ServiceAccount to use | null |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `affinity` | Affinity settings | `{}` |
|
||||
| `tolerations` | List of node taints to tolerate | `[]` |
|
||||
| Parameter | Description | Default |
|
||||
| ----------------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
|
||||
| `replicaCount` | Number of provisioner instances to deployed | `1` |
|
||||
| `strategyType` | Specifies the strategy used to replace old Pods by new ones | `Recreate` |
|
||||
| `image.repository` | Provisioner image | `k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner` |
|
||||
| `image.tag` | Version of provisioner image | `v4.0.2` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `imagePullSecrets` | Image pull secrets | `[]` |
|
||||
| `storageClass.name` | Name of the storageClass | `nfs-client` |
|
||||
| `storageClass.defaultClass` | Set as the default StorageClass | `false` |
|
||||
| `storageClass.allowVolumeExpansion` | Allow expanding the volume | `true` |
|
||||
| `storageClass.reclaimPolicy` | Method used to reclaim an obsoleted volume | `Delete` |
|
||||
| `storageClass.provisionerName` | Name of the provisionerName | null |
|
||||
| `storageClass.archiveOnDelete` | Archive PVC when deleting | `true` |
|
||||
| `storageClass.onDelete` | Strategy on PVC deletion. Overrides archiveOnDelete when set to lowercase values 'delete' or 'retain' | null |
|
||||
| `storageClass.pathPattern` | Specifies a template for the directory name | null |
|
||||
| `storageClass.accessModes` | Set access mode for PV | `ReadWriteOnce` |
|
||||
| `storageClass.annotations` | Set additional annotations for the StorageClass | `{}` |
|
||||
| `leaderElection.enabled` | Enables or disables leader election | `true` |
|
||||
| `nfs.server` | Hostname of the NFS server (required) | null (ip or hostname) |
|
||||
| `nfs.path` | Basepath of the mount point to be used | `/nfs-storage` |
|
||||
| `nfs.mountOptions` | Mount options (e.g. 'nfsvers=3') | null |
|
||||
| `nfs.volumeName` | Volume name used inside the pods | `nfs-subdir-external-provisioner-root` |
|
||||
| `resources` | Resources required (e.g. CPU, memory) | `{}` |
|
||||
| `rbac.create` | Use Role-based Access Control | `true` |
|
||||
| `podSecurityPolicy.enabled` | Create & use Pod Security Policy resources | `false` |
|
||||
| `podAnnotations` | Additional annotations for the Pods | `{}` |
|
||||
| `priorityClassName` | Set pod priorityClassName | null |
|
||||
| `serviceAccount.create` | Should we create a ServiceAccount | `true` |
|
||||
| `serviceAccount.name` | Name of the ServiceAccount to use | null |
|
||||
| `serviceAccount.annotations` | Additional annotations for the ServiceAccount | `{}` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `affinity` | Affinity settings | `{}` |
|
||||
| `tolerations` | List of node taints to tolerate | `[]` |
|
||||
| `labels` | Additional labels for any resource created | `{}` |
|
||||
|
||||
@@ -59,4 +59,34 @@ Return the appropriate apiVersion for podSecurityPolicy.
|
||||
{{- else -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "nfs-subdir-external-provisioner.labels" -}}
|
||||
chart: {{ template "nfs-subdir-external-provisioner.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{ include "nfs-subdir-external-provisioner.selectorLabels" . }}
|
||||
{{- with .Values.labels }}
|
||||
{{- toYaml . | nindent 0 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Pod template labels
|
||||
*/}}
|
||||
{{- define "nfs-subdir-external-provisioner.podLabels" -}}
|
||||
{{ include "nfs-subdir-external-provisioner.selectorLabels" . }}
|
||||
{{- with .Values.labels }}
|
||||
{{- toYaml . | nindent 0 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "nfs-subdir-external-provisioner.selectorLabels" -}}
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
@@ -3,12 +3,12 @@ kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
chart: {{ template "nfs-subdir-external-provisioner.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
name: {{ template "nfs-subdir-external-provisioner.fullname" . }}-runner
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "delete"]
|
||||
|
||||
@@ -3,10 +3,7 @@ kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
chart: {{ template "nfs-subdir-external-provisioner.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
name: run-{{ template "nfs-subdir-external-provisioner.fullname" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
|
||||
@@ -3,27 +3,25 @@ kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "nfs-subdir-external-provisioner.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
chart: {{ template "nfs-subdir-external-provisioner.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
strategy:
|
||||
type: {{ .Values.strategyType }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
{{- with .Values.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if and (.Values.tolerations) (semverCompare "<1.6-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||
scheduler.alpha.kubernetes.io/tolerations: '{{ toJson .Values.tolerations }}'
|
||||
{{- end }}
|
||||
labels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.podLabels" . | nindent 8 }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "nfs-subdir-external-provisioner.serviceAccountName" . }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
@@ -37,16 +35,16 @@ spec:
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{ toYaml .Values.imagePullSecrets | indent 8 }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: nfs-subdir-external-provisioner-root
|
||||
- name: {{ .Values.nfs.volumeName }}
|
||||
mountPath: /persistentvolumes
|
||||
env:
|
||||
- name: PROVISIONER_NAME
|
||||
@@ -64,7 +62,7 @@ spec:
|
||||
{{ toYaml . | indent 12 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: nfs-subdir-external-provisioner-root
|
||||
- name: {{ .Values.nfs.volumeName }}
|
||||
{{- if .Values.buildMode }}
|
||||
emptyDir: {}
|
||||
{{- else if .Values.nfs.mountOptions }}
|
||||
|
||||
@@ -4,6 +4,7 @@ kind: PersistentVolume
|
||||
metadata:
|
||||
name: pv-{{ template "nfs-subdir-external-provisioner.fullname" . }}
|
||||
labels:
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
nfs-subdir-external-provisioner: {{ template "nfs-subdir-external-provisioner.fullname" . }}
|
||||
spec:
|
||||
capacity:
|
||||
|
||||
@@ -3,6 +3,8 @@ kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: pvc-{{ template "nfs-subdir-external-provisioner.fullname" . }}
|
||||
labels:
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ .Values.storageClass.accessModes }}
|
||||
|
||||
@@ -4,10 +4,7 @@ kind: PodSecurityPolicy
|
||||
metadata:
|
||||
name: {{ template "nfs-subdir-external-provisioner.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
spec:
|
||||
privileged: false
|
||||
allowPrivilegeEscalation: false
|
||||
@@ -16,6 +13,7 @@ spec:
|
||||
volumes:
|
||||
- 'secret'
|
||||
- 'nfs'
|
||||
- 'persistentVolumeClaim'
|
||||
hostNetwork: false
|
||||
hostIPC: false
|
||||
hostPID: false
|
||||
|
||||
@@ -3,10 +3,7 @@ kind: Role
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
chart: {{ template "nfs-subdir-external-provisioner.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
name: leader-locking-{{ template "nfs-subdir-external-provisioner.fullname" . }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
|
||||
@@ -3,10 +3,7 @@ kind: RoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
chart: {{ template "nfs-subdir-external-provisioner.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
name: leader-locking-{{ template "nfs-subdir-external-provisioner.fullname" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
|
||||
@@ -3,9 +3,10 @@ apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
chart: {{ template "nfs-subdir-external-provisioner.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
name: {{ template "nfs-subdir-external-provisioner.serviceAccountName" . }}
|
||||
{{- end -}}
|
||||
|
||||
@@ -3,15 +3,15 @@ apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "nfs-subdir-external-provisioner.name" . }}
|
||||
chart: {{ template "nfs-subdir-external-provisioner.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- include "nfs-subdir-external-provisioner.labels" . | nindent 4 }}
|
||||
name: {{ .Values.storageClass.name }}
|
||||
{{- if .Values.storageClass.defaultClass }}
|
||||
annotations:
|
||||
{{- if .Values.storageClass.defaultClass }}
|
||||
storageclass.kubernetes.io/is-default-class: "true"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.storageClass.annotations }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
provisioner: {{ template "nfs-subdir-external-provisioner.provisionerName" . }}
|
||||
allowVolumeExpansion: {{ .Values.storageClass.allowVolumeExpansion }}
|
||||
reclaimPolicy: {{ .Values.storageClass.reclaimPolicy }}
|
||||
@@ -20,6 +20,9 @@ parameters:
|
||||
{{- if .Values.storageClass.pathPattern }}
|
||||
pathPattern: "{{ .Values.storageClass.pathPattern }}"
|
||||
{{- end }}
|
||||
{{- if .Values.storageClass.onDelete }}
|
||||
onDelete: "{{ .Values.storageClass.onDelete }}"
|
||||
{{- end }}
|
||||
{{- if .Values.nfs.mountOptions }}
|
||||
mountOptions:
|
||||
{{- range .Values.nfs.mountOptions }}
|
||||
|
||||
@@ -2,14 +2,16 @@ replicaCount: 1
|
||||
strategyType: Recreate
|
||||
|
||||
image:
|
||||
repository: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner
|
||||
tag: v4.0.0
|
||||
repository: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner
|
||||
tag: v4.0.2
|
||||
pullPolicy: IfNotPresent
|
||||
imagePullSecrets: []
|
||||
|
||||
nfs:
|
||||
server:
|
||||
path: /nfs-storage
|
||||
mountOptions:
|
||||
volumeName: nfs-subdir-external-provisioner-root
|
||||
|
||||
# For creating the StorageClass automatically:
|
||||
storageClass:
|
||||
@@ -35,6 +37,11 @@ storageClass:
|
||||
# When set to false your PVs will not be archived by the provisioner upon deletion of the PVC.
|
||||
archiveOnDelete: true
|
||||
|
||||
# If it exists and has 'delete' value, delete the directory. If it exists and has 'retain' value, save the directory.
|
||||
# Overrides archiveOnDelete.
|
||||
# Ignored if value not set.
|
||||
onDelete:
|
||||
|
||||
# Specifies a template for creating a directory path via PVC metadata's such as labels, annotations, name or namespace.
|
||||
# Ignored if value not set.
|
||||
pathPattern:
|
||||
@@ -42,6 +49,9 @@ storageClass:
|
||||
# Set access mode - ReadWriteOnce, ReadOnlyMany or ReadWriteMany
|
||||
accessModes: ReadWriteOnce
|
||||
|
||||
# Storage class annotations
|
||||
annotations: {}
|
||||
|
||||
leaderElection:
|
||||
# When set to false leader election will be disabled
|
||||
enabled: true
|
||||
@@ -56,6 +66,9 @@ rbac:
|
||||
podSecurityPolicy:
|
||||
enabled: false
|
||||
|
||||
# Deployment pod annotations
|
||||
podAnnotations: {}
|
||||
|
||||
## Set pod priorityClassName
|
||||
# priorityClassName: ""
|
||||
|
||||
@@ -63,6 +76,9 @@ serviceAccount:
|
||||
# Specifies whether a ServiceAccount should be created
|
||||
create: true
|
||||
|
||||
# Annotations to add to the service account
|
||||
annotations: {}
|
||||
|
||||
# The name of the ServiceAccount to use.
|
||||
# If not set and create is true, a name is generated using the fullname template
|
||||
name:
|
||||
@@ -80,3 +96,6 @@ nodeSelector: {}
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
# Additional labels for any resource created
|
||||
labels: {}
|
||||
|
||||
@@ -104,8 +104,10 @@ func (p *nfsProvisioner) Provision(ctx context.Context, options controller.Provi
|
||||
pathPattern, exists := options.StorageClass.Parameters["pathPattern"]
|
||||
if exists {
|
||||
customPath := metadata.stringParser(pathPattern)
|
||||
path = filepath.Join(p.path, customPath)
|
||||
fullPath = filepath.Join(mountPath, customPath)
|
||||
if customPath != "" {
|
||||
path = filepath.Join(p.path, customPath)
|
||||
fullPath = filepath.Join(mountPath, customPath)
|
||||
}
|
||||
}
|
||||
|
||||
glog.V(4).Infof("creating path %s", fullPath)
|
||||
|
||||
@@ -21,7 +21,7 @@ spec:
|
||||
serviceAccountName: nfs-client-provisioner
|
||||
containers:
|
||||
- name: nfs-client-provisioner
|
||||
image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0
|
||||
image: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
|
||||
volumeMounts:
|
||||
- name: nfs-client-root
|
||||
mountPath: /persistentvolumes
|
||||
|
||||
@@ -3,6 +3,9 @@ apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: nfs-client-provisioner-runner
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "delete"]
|
||||
|
||||
@@ -14,7 +14,7 @@ spec:
|
||||
serviceAccountName: nfs-client-provisioner
|
||||
containers:
|
||||
- name: nfs-client-provisioner
|
||||
image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0
|
||||
image: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
|
||||
volumeMounts:
|
||||
- name: nfs-client-root
|
||||
mountPath: /persistentvolumes
|
||||
|
||||
@@ -10,6 +10,9 @@ apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: nfs-client-provisioner-runner
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "delete"]
|
||||
|
||||
Reference in New Issue
Block a user