mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-09 16:00:22 +00:00
refactor: Merge 1.13 and 1.14 Helm charts and improve charts
Signed-off-by: wilmardo <info@wilmardenouden.nl>
This commit is contained in:
parent
b8568a5bb9
commit
6ee381db3a
@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
appVersion: "1.3.0"
|
appVersion: canary
|
||||||
description: "Container Storage Interface (CSI) driver,
|
description: "Container Storage Interface (CSI) driver,
|
||||||
provisioner, and attacher for Ceph cephfs"
|
provisioner, and attacher for Ceph cephfs"
|
||||||
name: ceph-csi-cephfs
|
name: ceph-csi-cephfs
|
||||||
version: 0.9.0
|
version: 1.3.0-canary
|
||||||
keywords:
|
keywords:
|
||||||
- ceph
|
- ceph
|
||||||
- cephfs
|
- cephfs
|
||||||
- ceph-csi
|
- ceph-csi
|
||||||
home: https://github.com/ceph/ceph-csi
|
home: https://github.com/ceph/ceph-csi
|
||||||
sources:
|
sources:
|
||||||
- https://github.com/ceph/ceph-csi/tree/csi-v1.0/deploy/cephfs/helm
|
- https://github.com/ceph/ceph-csi/tree/master/charts/ceph-csi-cephfs
|
||||||
icon: https://raw.githubusercontent.com/ceph/ceph-csi/master/assets/ceph-logo.png
|
icon: https://raw.githubusercontent.com/ceph/ceph-csi/master/assets/ceph-logo.png
|
@ -25,5 +25,5 @@ helm delete --purge "ceph-csi-cephfs"
|
|||||||
If you want to delete the namespace, use this command
|
If you want to delete the namespace, use this command
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl delete namespace ceph-csi-rbd
|
kubectl delete namespace ceph-csi-cephfs
|
||||||
```
|
```
|
@ -1,5 +1,4 @@
|
|||||||
---
|
{{- if not .Values.provisioner.attacher.enabled -}}
|
||||||
{{ if not .Values.provisioner.attacher.enabled }}
|
|
||||||
apiVersion: storage.k8s.io/v1beta1
|
apiVersion: storage.k8s.io/v1beta1
|
||||||
kind: CSIDriver
|
kind: CSIDriver
|
||||||
metadata:
|
metadata:
|
||||||
@ -8,4 +7,4 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
attachRequired: false
|
attachRequired: false
|
||||||
podInfoOnMount: false
|
podInfoOnMount: false
|
||||||
{{ end }}
|
{{- end -}}
|
@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
@ -12,4 +11,4 @@ metadata:
|
|||||||
heritage: {{ .Release.Service }}
|
heritage: {{ .Release.Service }}
|
||||||
data:
|
data:
|
||||||
config.json: |-
|
config.json: |-
|
||||||
[]
|
{{ toJson .Values.csiConfig | indent 4 -}}
|
@ -26,57 +26,59 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
serviceAccountName: {{ include "ceph-csi-cephfs.serviceAccountName.nodeplugin" . }}
|
serviceAccountName: {{ include "ceph-csi-cephfs.serviceAccountName.nodeplugin" . }}
|
||||||
hostNetwork: true
|
hostNetwork: true
|
||||||
hostPID: true
|
|
||||||
# to use e.g. Rook orchestrated cluster, and mons' FQDN is
|
# to use e.g. Rook orchestrated cluster, and mons' FQDN is
|
||||||
# resolved through k8s service, set dns policy to cluster first
|
# resolved through k8s service, set dns policy to cluster first
|
||||||
dnsPolicy: ClusterFirstWithHostNet
|
dnsPolicy: ClusterFirstWithHostNet
|
||||||
containers:
|
containers:
|
||||||
- name: driver-registrar
|
- name: driver-registrar
|
||||||
image: "{{ .Values.nodeplugin.registrar.image.repository }}:{{ .Values.nodeplugin.registrar.image.tag }}"
|
image: "{{ .Values.nodeplugin.registrar.image.repository }}:{{ .Values.nodeplugin.registrar.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.nodeplugin.registrar.image.pullPolicy }}
|
||||||
args:
|
args:
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--csi-address=/csi/{{ .Values.socketFile }}"
|
- "--csi-address=/csi/{{ .Values.pluginSocketFile }}"
|
||||||
- "--kubelet-registration-path={{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
- "--kubelet-registration-path={{ .Values.socketDir }}/{{ .Values.pluginSocketFile }}"
|
||||||
lifecycle:
|
lifecycle:
|
||||||
preStop:
|
preStop:
|
||||||
exec:
|
exec:
|
||||||
command: [
|
{{- /*
|
||||||
"/bin/sh", "-c",
|
NOTE(wilmardo): The replace functions ensures there are no spaces in the string.
|
||||||
'rm -rf /registration/{{ .Values.driverName }}
|
To avoid `rm -rf /registration/driver name`
|
||||||
/registration/{{ .Values.driverName }}-reg.sock'
|
*/}}
|
||||||
]
|
command: [
|
||||||
|
"/bin/sh", "-c",
|
||||||
|
"rm -rf /registration/{{ .Values.driverName | replace " " "" }} \
|
||||||
|
/registration/{{ .Values.driverName | replace " " "" }}-reg.sock"
|
||||||
|
]
|
||||||
env:
|
env:
|
||||||
- name: KUBE_NODE_NAME
|
- name: KUBE_NODE_NAME
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.nodeName
|
fieldPath: spec.nodeName
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.registrar.image.pullPolicy }}
|
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: plugin-dir
|
- name: socket-dir
|
||||||
mountPath: /csi
|
mountPath: /csi
|
||||||
- name: registration-dir
|
- name: registration-dir
|
||||||
mountPath: /registration
|
mountPath: /registration
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.registrar.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.registrar.resources | indent 12 }}
|
||||||
- name: csi-cephfsplugin
|
- name: csi-cephfsplugin
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
capabilities:
|
|
||||||
add: ["SYS_ADMIN"]
|
|
||||||
allowPrivilegeEscalation: true
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
args :
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
- "--type=cephfs"
|
- "--type=cephfs"
|
||||||
- "--nodeserver=true"
|
- "--nodeserver=true"
|
||||||
|
- "--pidlimit=-1"
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.enabled }}
|
||||||
|
- "--metricsport={{ .Values.nodeplugin.grpcMetrics.containerPort }}"
|
||||||
|
- "--metricspath=/metrics"
|
||||||
|
- "--enablegrpcmetrics=true"
|
||||||
|
{{- end }}
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
- "--metadatastorage=k8s_configmap"
|
- "--metadatastorage=k8s_configmap"
|
||||||
- "--mountcachedir=/mount-cache-dir"
|
- "--mountcachedir=/mount-cache-dir"
|
||||||
- "--metricsport=8091"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--enablegrpcmetrics=false"
|
|
||||||
env:
|
env:
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
@ -88,24 +90,30 @@ spec:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.nodeName
|
fieldPath: spec.nodeName
|
||||||
|
- name: POD_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.pluginSocketFile }}"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
capabilities:
|
||||||
|
add: ["SYS_ADMIN"]
|
||||||
|
allowPrivilegeEscalation: true
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: mount-cache-dir
|
- name: mount-cache-dir
|
||||||
mountPath: /mount-cache-dir
|
mountPath: /mount-cache-dir
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
- name: plugin-dir
|
|
||||||
mountPath: {{ .Values.pluginDir }}
|
|
||||||
mountPropagation: "Bidirectional"
|
|
||||||
- name: mountpoint-dir
|
- name: mountpoint-dir
|
||||||
mountPath: /var/lib/kubelet/pods
|
mountPath: /var/lib/kubelet/pods
|
||||||
|
mountPropagation: Bidirectional
|
||||||
|
- name: plugin-dir
|
||||||
|
mountPath: /var/lib/kubelet/plugins
|
||||||
mountPropagation: "Bidirectional"
|
mountPropagation: "Bidirectional"
|
||||||
- mountPath: /dev
|
- mountPath: /dev
|
||||||
name: host-dev
|
name: host-dev
|
||||||
- mountPath: /rootfs
|
|
||||||
name: host-rootfs
|
|
||||||
- mountPath: /sys
|
- mountPath: /sys
|
||||||
name: host-sys
|
name: host-sys
|
||||||
- mountPath: /lib/modules
|
- mountPath: /lib/modules
|
||||||
@ -117,28 +125,30 @@ spec:
|
|||||||
mountPath: /tmp/csi/keys
|
mountPath: /tmp/csi/keys
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.enabled }}
|
||||||
- name: liveness-prometheus
|
- name: liveness-prometheus
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
args:
|
args:
|
||||||
- "--type=liveness"
|
- "--type=liveness"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--metricsport=8081"
|
- "--metricsport={{ .Values.nodeplugin.httpMetrics.containerPort }}"
|
||||||
- "--metricspath=/metrics"
|
- "--metricspath=/metrics"
|
||||||
- "--polltime=60s"
|
- "--polltime=60s"
|
||||||
- "--timeout=3s"
|
- "--timeout=3s"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
env:
|
env:
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.pluginSocketFile }}"
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: status.podIP
|
fieldPath: status.podIP
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: plugin-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- end }}
|
||||||
volumes:
|
volumes:
|
||||||
- name: mount-cache-dir
|
- name: mount-cache-dir
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
@ -148,28 +158,25 @@ spec:
|
|||||||
type: DirectoryOrCreate
|
type: DirectoryOrCreate
|
||||||
- name: registration-dir
|
- name: registration-dir
|
||||||
hostPath:
|
hostPath:
|
||||||
path: {{ .Values.registrationDir }}
|
path: /var/lib/kubelet/plugins_registry/
|
||||||
type: Directory
|
|
||||||
- name: plugin-dir
|
|
||||||
hostPath:
|
|
||||||
path: {{ .Values.pluginDir }}
|
|
||||||
type: Directory
|
type: Directory
|
||||||
- name: mountpoint-dir
|
- name: mountpoint-dir
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /var/lib/kubelet/pods
|
path: /var/lib/kubelet/pods
|
||||||
type: DirectoryOrCreate
|
type: DirectoryOrCreate
|
||||||
- name: host-dev
|
- name: plugin-dir
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /dev
|
path: /var/lib/kubelet/plugins
|
||||||
- name: host-rootfs
|
type: Directory
|
||||||
hostPath:
|
|
||||||
path: /
|
|
||||||
- name: host-sys
|
- name: host-sys
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /sys
|
path: /sys
|
||||||
- name: lib-modules
|
- name: lib-modules
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /lib/modules
|
path: /lib/modules
|
||||||
|
- name: host-dev
|
||||||
|
hostPath:
|
||||||
|
path: /dev
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
configMap:
|
configMap:
|
||||||
name: {{ .Values.configMapName | quote }}
|
name: {{ .Values.configMapName | quote }}
|
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.nodeplugin.grpcMetrics.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}-grpc-metrics
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: {{ include "ceph-csi-cephfs.fullname" . }}
|
||||||
|
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
||||||
|
component: {{ .Values.nodeplugin.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.nodeplugin.grpcMetrics.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.nodeplugin.grpcMetrics.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: "{{ .Values.nodeplugin.grpcMetrics.service.loadBalancerIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.nodeplugin.grpcMetrics.service.loadBalancerSourceRanges | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: grpc-metrics
|
||||||
|
port: {{ .Values.nodeplugin.grpcMetrics.service.servicePort }}
|
||||||
|
targetPort: {{ .Values.nodeplugin.grpcMetrics.containerPort }}
|
||||||
|
selector:
|
||||||
|
app: {{ include "ceph-csi-cephfs.name" . }}
|
||||||
|
component: {{ .Values.nodeplugin.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
type: "{{ .Values.nodeplugin.grpcMetrics.service.type }}"
|
||||||
|
{{- end -}}
|
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.nodeplugin.httpMetrics.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}-http-metrics
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: {{ include "ceph-csi-cephfs.fullname" . }}
|
||||||
|
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
||||||
|
component: {{ .Values.nodeplugin.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.nodeplugin.httpMetrics.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.nodeplugin.httpMetrics.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: "{{ .Values.nodeplugin.httpMetrics.service.loadBalancerIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.nodeplugin.httpMetrics.service.loadBalancerSourceRanges | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http-metrics
|
||||||
|
port: {{ .Values.nodeplugin.httpMetrics.service.servicePort }}
|
||||||
|
targetPort: {{ .Values.nodeplugin.httpMetrics.containerPort }}
|
||||||
|
selector:
|
||||||
|
app: {{ include "ceph-csi-cephfs.name" . }}
|
||||||
|
component: {{ .Values.nodeplugin.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
type: "{{ .Values.nodeplugin.httpMetrics.service.type }}"
|
||||||
|
{{- end -}}
|
@ -1,3 +1,4 @@
|
|||||||
|
{{- if semverCompare ">=1.14" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
metadata:
|
metadata:
|
||||||
@ -29,22 +30,22 @@ spec:
|
|||||||
containers:
|
containers:
|
||||||
- name: csi-provisioner
|
- name: csi-provisioner
|
||||||
image: "{{ .Values.provisioner.provisioner.image.repository }}:{{ .Values.provisioner.provisioner.image.tag }}"
|
image: "{{ .Values.provisioner.provisioner.image.repository }}:{{ .Values.provisioner.provisioner.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.provisioner.provisioner.image.pullPolicy }}
|
||||||
args:
|
args:
|
||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--timeout=60s"
|
- "--timeout={{ .Values.provisioner.timeout }}"
|
||||||
- "--enable-leader-election=true"
|
- "--enable-leader-election=true"
|
||||||
- "--leader-election-type=leases"
|
- "--leader-election-type=leases"
|
||||||
- "--retry-interval-start=500ms"
|
- "--retry-interval-start=500ms"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
imagePullPolicy: {{ .Values.provisioner.provisioner.image.pullPolicy }}
|
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.provisioner.resources | indent 12 }}
|
{{ toYaml .Values.provisioner.provisioner.resources | indent 12 }}
|
||||||
{{- if .Values.provisioner.attacher.enabled }}
|
{{- if .Values.provisioner.attacher.enabled }}
|
||||||
- name: csi-attacher
|
- name: csi-attacher
|
||||||
image: "{{ .Values.provisioner.attacher.image.repository }}:{{ .Values.provisioner.attacher.image.tag }}"
|
image: "{{ .Values.provisioner.attacher.image.repository }}:{{ .Values.provisioner.attacher.image.tag }}"
|
||||||
@ -52,36 +53,34 @@ spec:
|
|||||||
args:
|
args:
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
- "leader-election=true"
|
- "--leader-election=true"
|
||||||
- "--leader-election-type=leases"
|
- "--leader-election-type=leases"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
- name: csi-cephfsplugin
|
- name: csi-cephfsplugin
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
capabilities:
|
|
||||||
add: ["SYS_ADMIN"]
|
|
||||||
allowPrivilegeEscalation: true
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
args :
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
- "--type=cephfs"
|
- "--type=cephfs"
|
||||||
- "--controllerserver=true"
|
- "--controllerserver=true"
|
||||||
|
- "--pidlimit=-1"
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.enabled }}
|
||||||
|
- "--metricsport={{ .Values.nodeplugin.grpcMetrics.containerPort }}"
|
||||||
|
- "--metricspath=/metrics"
|
||||||
|
- "--enablegrpcmetrics=true"
|
||||||
|
{{- end }}
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
- "--metadatastorage=k8s_configmap"
|
- "--metadatastorage=k8s_configmap"
|
||||||
- "--pidlimit=-1"
|
|
||||||
- "--metricsport=8091"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--enablegrpcmetrics=false"
|
|
||||||
env:
|
env:
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
@ -93,49 +92,71 @@ spec:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.nodeName
|
fieldPath: spec.nodeName
|
||||||
|
- name: POD_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
capabilities:
|
||||||
|
add: ["SYS_ADMIN"]
|
||||||
|
allowPrivilegeEscalation: true
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
- name: host-rootfs
|
- name: host-sys
|
||||||
mountPath: "/rootfs"
|
mountPath: /sys
|
||||||
|
- name: lib-modules
|
||||||
|
mountPath: /lib/modules
|
||||||
|
readOnly: true
|
||||||
|
- name: host-dev
|
||||||
|
mountPath: /dev
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
mountPath: /etc/ceph-csi-config/
|
mountPath: /etc/ceph-csi-config/
|
||||||
- name: keys-tmp-dir
|
- name: keys-tmp-dir
|
||||||
mountPath: /tmp/csi/keys
|
mountPath: /tmp/csi/keys
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.enabled }}
|
||||||
- name: liveness-prometheus
|
- name: liveness-prometheus
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
args:
|
args:
|
||||||
- "--type=liveness"
|
- "--type=liveness"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--metricsport=8081"
|
- "--metricsport={{ .Values.provisioner.httpMetrics.containerPort }}"
|
||||||
- "--metricspath=/metrics"
|
- "--metricspath=/metrics"
|
||||||
- "--polltime=60s"
|
- "--polltime=60s"
|
||||||
- "--timeout=3s"
|
- "--timeout=3s"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
env:
|
env:
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: status.podIP
|
fieldPath: status.podIP
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- end }}
|
||||||
volumes:
|
volumes:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
emptyDir: {}
|
|
||||||
#FIXME this seems way too much. Why is it needed at all for this?
|
|
||||||
- name: host-rootfs
|
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /
|
path: {{ .Values.socketDir }}
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
- name: host-sys
|
||||||
|
hostPath:
|
||||||
|
path: /sys
|
||||||
|
- name: lib-modules
|
||||||
|
hostPath:
|
||||||
|
path: /lib/modules
|
||||||
|
- name: host-dev
|
||||||
|
hostPath:
|
||||||
|
path: /dev
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
configMap:
|
configMap:
|
||||||
name: {{ .Values.configMapName | quote }}
|
name: {{ .Values.configMapName | quote }}
|
||||||
@ -155,3 +176,4 @@ spec:
|
|||||||
tolerations:
|
tolerations:
|
||||||
{{ toYaml .Values.provisioner.tolerations | indent 8 -}}
|
{{ toYaml .Values.provisioner.tolerations | indent 8 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end -}}
|
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.provisioner.grpcMetrics.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.provisioner.grpcMetrics.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}-grpc-metrics
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: {{ include "ceph-csi-cephfs.fullname" . }}
|
||||||
|
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
||||||
|
component: {{ .Values.provisioner.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.provisioner.grpcMetrics.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.provisioner.grpcMetrics.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: "{{ .Values.provisioner.grpcMetrics.service.loadBalancerIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.provisioner.grpcMetrics.service.loadBalancerSourceRanges | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: grpc-metrics
|
||||||
|
port: {{ .Values.provisioner.grpcMetrics.service.servicePort }}
|
||||||
|
targetPort: {{ .Values.provisioner.grpcMetrics.containerPort }}
|
||||||
|
selector:
|
||||||
|
app: {{ include "ceph-csi-cephfs.name" . }}
|
||||||
|
component: {{ .Values.provisioner.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
type: "{{ .Values.provisioner.grpcMetrics.service.type }}"
|
||||||
|
{{- end -}}
|
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.provisioner.httpMetrics.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.provisioner.httpMetrics.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}-http-metrics
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: {{ include "ceph-csi-cephfs.fullname" . }}
|
||||||
|
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
||||||
|
component: {{ .Values.provisioner.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.provisioner.httpMetrics.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.provisioner.httpMetrics.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: "{{ .Values.provisioner.httpMetrics.service.loadBalancerIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.provisioner.httpMetrics.service.loadBalancerSourceRanges | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http-metrics
|
||||||
|
port: {{ .Values.provisioner.httpMetrics.service.servicePort }}
|
||||||
|
targetPort: {{ .Values.provisioner.httpMetrics.containerPort }}
|
||||||
|
selector:
|
||||||
|
app: {{ include "ceph-csi-cephfs.name" . }}
|
||||||
|
component: {{ .Values.provisioner.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
type: "{{ .Values.provisioner.httpMetrics.service.type }}"
|
||||||
|
{{- end -}}
|
@ -17,7 +17,9 @@ rules:
|
|||||||
- apiGroups: [""]
|
- apiGroups: [""]
|
||||||
resources: ["configmaps"]
|
resources: ["configmaps"]
|
||||||
verbs: ["get", "list", "watch", "create", "delete"]
|
verbs: ["get", "list", "watch", "create", "delete"]
|
||||||
|
{{- if semverCompare ">=1.14" .Capabilities.KubeVersion.GitVersion }}
|
||||||
- apiGroups: ["coordination.k8s.io"]
|
- apiGroups: ["coordination.k8s.io"]
|
||||||
resources: ["leases"]
|
resources: ["leases"]
|
||||||
verbs: ["get", "watch", "list", "delete", "update", "create"]
|
verbs: ["get", "watch", "list", "delete", "update", "create"]
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end -}}
|
@ -32,9 +32,9 @@ rules:
|
|||||||
- apiGroups: ["csi.storage.k8s.io"]
|
- apiGroups: ["csi.storage.k8s.io"]
|
||||||
resources: ["csinodeinfos"]
|
resources: ["csinodeinfos"]
|
||||||
verbs: ["get", "list", "watch"]
|
verbs: ["get", "list", "watch"]
|
||||||
{{ if .Values.provisioner.attacher.enabled }}
|
{{- if .Values.provisioner.attacher.enabled }}
|
||||||
- apiGroups: ["storage.k8s.io"]
|
- apiGroups: ["storage.k8s.io"]
|
||||||
resources: ["volumeattachments"]
|
resources: ["volumeattachments"]
|
||||||
verbs: ["get", "list", "watch", "update"]
|
verbs: ["get", "list", "watch", "update", "patch"]
|
||||||
{{ end }}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
@ -1,3 +1,4 @@
|
|||||||
|
{{- if semverCompare "<=1.13" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
kind: Service
|
kind: Service
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
@ -23,3 +24,4 @@ spec:
|
|||||||
port: 8090
|
port: 8090
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
targetPort: 8091
|
targetPort: 8091
|
||||||
|
{{- end -}}
|
@ -1,3 +1,4 @@
|
|||||||
|
{{- if semverCompare "<=1.13" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
kind: StatefulSet
|
kind: StatefulSet
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
metadata:
|
metadata:
|
||||||
@ -11,7 +12,7 @@ metadata:
|
|||||||
heritage: {{ .Release.Service }}
|
heritage: {{ .Release.Service }}
|
||||||
spec:
|
spec:
|
||||||
serviceName: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}
|
serviceName: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}
|
||||||
replicas: {{ .Values.provisioner.replicaCount }}
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
app: {{ include "ceph-csi-cephfs.name" . }}
|
||||||
@ -25,6 +26,7 @@ spec:
|
|||||||
component: {{ .Values.provisioner.name }}
|
component: {{ .Values.provisioner.name }}
|
||||||
release: {{ .Release.Name }}
|
release: {{ .Release.Name }}
|
||||||
heritage: {{ .Release.Service }}
|
heritage: {{ .Release.Service }}
|
||||||
|
contains: liveness
|
||||||
spec:
|
spec:
|
||||||
serviceAccountName: {{ include "ceph-csi-cephfs.serviceAccountName.provisioner" . }}
|
serviceAccountName: {{ include "ceph-csi-cephfs.serviceAccountName.provisioner" . }}
|
||||||
containers:
|
containers:
|
||||||
@ -34,16 +36,16 @@ spec:
|
|||||||
args:
|
args:
|
||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--timeout=60s"
|
- "--timeout={{ .Values.provisioner.timeout }}"
|
||||||
- "--retry-interval-start=500ms"
|
- "--retry-interval-start=500ms"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.provisioner.resources | indent 12 }}
|
{{ toYaml .Values.provisioner.provisioner.resources | indent 12 }}
|
||||||
{{- if .Values.provisioner.attacher.enabled }}
|
{{- if .Values.provisioner.attacher.enabled }}
|
||||||
- name: csi-attacher
|
- name: csi-attacher
|
||||||
image: "{{ .Values.provisioner.attacher.image.repository }}:{{ .Values.provisioner.attacher.image.tag }}"
|
image: "{{ .Values.provisioner.attacher.image.repository }}:{{ .Values.provisioner.attacher.image.tag }}"
|
||||||
@ -53,33 +55,29 @@ spec:
|
|||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.provisioner.attacher.resources | indent 12 }}
|
{{ toYaml .Values.provisioner.attacher.resources | indent 12 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
- name: csi-cephfsplugin
|
- name: csi-cephfsplugin
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
capabilities:
|
|
||||||
add: ["SYS_ADMIN"]
|
|
||||||
allowPrivilegeEscalation: true
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
args :
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
- "--type=cephfs"
|
- "--type=cephfs"
|
||||||
- "--controllerserver=true"
|
- "--controllerserver=true"
|
||||||
|
- "--pidlimit=-1"
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.enabled }}
|
||||||
|
- "--metricsport={{ .Values.nodeplugin.grpcMetrics.containerPort }}"
|
||||||
|
- "--metricspath=/metrics"
|
||||||
|
- "--enablegrpcmetrics=true"
|
||||||
|
{{- end }}
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
- "--metadatastorage=k8s_configmap"
|
|
||||||
- "--pidlimit=-1"
|
|
||||||
- "--metricsport=8091"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--enablegrpcmetrics=false"
|
|
||||||
env:
|
env:
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
@ -91,48 +89,71 @@ spec:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.nodeName
|
fieldPath: spec.nodeName
|
||||||
|
- name: POD_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
capabilities:
|
||||||
|
add: ["SYS_ADMIN"]
|
||||||
|
allowPrivilegeEscalation: true
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
- name: host-rootfs
|
- name: host-sys
|
||||||
mountPath: "/rootfs"
|
mountPath: /sys
|
||||||
|
- name: lib-modules
|
||||||
|
mountPath: /lib/modules
|
||||||
|
readOnly: true
|
||||||
|
- name: host-dev
|
||||||
|
mountPath: /dev
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
mountPath: /etc/ceph-csi-config/
|
mountPath: /etc/ceph-csi-config/
|
||||||
- name: keys-tmp-dir
|
- name: keys-tmp-dir
|
||||||
mountPath: /tmp/csi/keys
|
mountPath: /tmp/csi/keys
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.enabled }}
|
||||||
- name: liveness-prometheus
|
- name: liveness-prometheus
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
args:
|
args:
|
||||||
- "--type=liveness"
|
- "--type=liveness"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--metricsport=8081"
|
- "--metricsport={{ .Values.provisioner.httpMetrics.containerPort }}"
|
||||||
- "--metricspath=/metrics"
|
- "--metricspath=/metrics"
|
||||||
- "--polltime=60s"
|
- "--polltime=60s"
|
||||||
- "--timeout=3s"
|
- "--timeout=3s"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
env:
|
env:
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: status.podIP
|
fieldPath: status.podIP
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- end }}
|
||||||
volumes:
|
volumes:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
emptyDir: {}
|
|
||||||
#FIXME this seems way too much. Why is it needed at all for this?
|
|
||||||
- name: host-rootfs
|
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /
|
path: {{ .Values.socketDir }}
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
- name: host-sys
|
||||||
|
hostPath:
|
||||||
|
path: /sys
|
||||||
|
- name: lib-modules
|
||||||
|
hostPath:
|
||||||
|
path: /lib/modules
|
||||||
|
- name: host-dev
|
||||||
|
hostPath:
|
||||||
|
path: /dev
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
configMap:
|
configMap:
|
||||||
name: {{ .Values.configMapName | quote }}
|
name: {{ .Values.configMapName | quote }}
|
||||||
@ -152,3 +173,4 @@ spec:
|
|||||||
tolerations:
|
tolerations:
|
||||||
{{ toYaml .Values.provisioner.tolerations | indent 8 -}}
|
{{ toYaml .Values.provisioner.tolerations | indent 8 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end -}}
|
224
charts/ceph-csi-cephfs/values.yaml
Normal file
224
charts/ceph-csi-cephfs/values.yaml
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
---
|
||||||
|
rbac:
|
||||||
|
# Specifies whether RBAC resources should be created
|
||||||
|
create: true
|
||||||
|
|
||||||
|
serviceAccounts:
|
||||||
|
nodeplugin:
|
||||||
|
# Specifies whether a ServiceAccount should be created
|
||||||
|
create: true
|
||||||
|
# The name of the ServiceAccount to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname
|
||||||
|
name:
|
||||||
|
provisioner:
|
||||||
|
# Specifies whether a ServiceAccount should be created
|
||||||
|
create: true
|
||||||
|
# The name of the ServiceAccount to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname
|
||||||
|
name:
|
||||||
|
|
||||||
|
# Configuration for the CSI to connect to the cluster
|
||||||
|
# Ref: https://github.com/ceph/ceph-csi/blob/master/examples/README.md
|
||||||
|
# Example:
|
||||||
|
# csiConfig:
|
||||||
|
# - clusterID: "<cluster-id>"
|
||||||
|
# monitors:
|
||||||
|
# - "<MONValue1>"
|
||||||
|
# - "<MONValue2>"
|
||||||
|
csiConfig: []
|
||||||
|
|
||||||
|
nodeplugin:
|
||||||
|
name: nodeplugin
|
||||||
|
|
||||||
|
httpMetrics:
|
||||||
|
# Metrics only available for cephcis/cephsi => 1.2.0
|
||||||
|
# Specifies whether http metrics should be exposed
|
||||||
|
enabled: true
|
||||||
|
# The port of the container to expose the metrics
|
||||||
|
containerPort: 8081
|
||||||
|
|
||||||
|
service:
|
||||||
|
# Specifies whether a service should be created fot the metrics
|
||||||
|
enabled: true
|
||||||
|
# The port to use for the service
|
||||||
|
servicePort: 8080
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
# Annotations for the service
|
||||||
|
# Example:
|
||||||
|
# annotations:
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/port: "9080"
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
clusterIP: ""
|
||||||
|
|
||||||
|
## List of IP addresses at which the stats-exporter service is available
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
|
||||||
|
##
|
||||||
|
externalIPs: []
|
||||||
|
|
||||||
|
loadBalancerIP: ""
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
grpcMetrics:
|
||||||
|
# Metrics only available for cephcis/cephsi => 1.2.0
|
||||||
|
# Specifies whether grpc metrics should be exposed
|
||||||
|
enabled: true
|
||||||
|
# The port of the container to expose the metrics
|
||||||
|
containerPort: 8091
|
||||||
|
|
||||||
|
service:
|
||||||
|
# Specifies whether a service should be created fot the metrics
|
||||||
|
enabled: true
|
||||||
|
# The port to use for the service
|
||||||
|
servicePort: 8090
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
# Annotations for the service
|
||||||
|
# Example:
|
||||||
|
# annotations:
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/port: "9090"
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
clusterIP: ""
|
||||||
|
|
||||||
|
## List of IP addresses at which the stats-exporter service is available
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
|
||||||
|
##
|
||||||
|
externalIPs: []
|
||||||
|
|
||||||
|
loadBalancerIP: ""
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
registrar:
|
||||||
|
image:
|
||||||
|
repository: quay.io/k8scsi/csi-node-driver-registrar
|
||||||
|
tag: v1.1.0
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
plugin:
|
||||||
|
image:
|
||||||
|
repository: quay.io/cephcsi/cephcsi
|
||||||
|
tag: canary
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: provisioner
|
||||||
|
# When using Kubernetes <1.14 this value is ignored
|
||||||
|
# The statefulset is deployed with replicas: 1
|
||||||
|
replicaCount: 3
|
||||||
|
# Timeout for waiting for creation or deletion of a volume
|
||||||
|
timeout: 60s
|
||||||
|
|
||||||
|
httpMetrics:
|
||||||
|
# Metrics only available for cephcsi/cephcsi => 1.2.0
|
||||||
|
# Specifies whether http metrics should be exposed
|
||||||
|
enabled: true
|
||||||
|
# The port of the container to expose the metrics
|
||||||
|
containerPort: 8081
|
||||||
|
|
||||||
|
service:
|
||||||
|
# Specifies whether a service should be created fot the metrics
|
||||||
|
enabled: true
|
||||||
|
# The port to use for the service
|
||||||
|
servicePort: 8080
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
# Annotations for the service
|
||||||
|
# Example:
|
||||||
|
# annotations:
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/port: "9080"
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
clusterIP: ""
|
||||||
|
|
||||||
|
## List of IP addresses at which the stats-exporter service is available
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
|
||||||
|
##
|
||||||
|
externalIPs: []
|
||||||
|
|
||||||
|
loadBalancerIP: ""
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
grpcMetrics:
|
||||||
|
# Metrics only available for cephcsi/cephcsi => 1.2.0
|
||||||
|
# Specifies whether grpc metrics should be exposed
|
||||||
|
enabled: true
|
||||||
|
# The port of the container to expose the metrics
|
||||||
|
containerPort: 8091
|
||||||
|
|
||||||
|
service:
|
||||||
|
# Specifies whether a service should be created fot the metrics
|
||||||
|
enabled: true
|
||||||
|
# The port to use for the service
|
||||||
|
servicePort: 8090
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
# Annotations for the service
|
||||||
|
# Example:
|
||||||
|
# annotations:
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/port: "9090"
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
clusterIP: ""
|
||||||
|
|
||||||
|
## List of IP addresses at which the stats-exporter service is available
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
|
||||||
|
##
|
||||||
|
externalIPs: []
|
||||||
|
|
||||||
|
loadBalancerIP: ""
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
image:
|
||||||
|
repository: quay.io/k8scsi/csi-provisioner
|
||||||
|
tag: v1.3.0
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
attacher:
|
||||||
|
name: attacher
|
||||||
|
enabled: true
|
||||||
|
image:
|
||||||
|
repository: quay.io/k8scsi/csi-attacher
|
||||||
|
tag: v1.2.1
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
#########################################################
|
||||||
|
# Variables for 'internal' use please use with caution! #
|
||||||
|
#########################################################
|
||||||
|
|
||||||
|
# The directory where the provisioner and pluginSocketFile will be mounted
|
||||||
|
socketDir: /var/lib/kubelet/plugins/cephfs.csi.ceph.com
|
||||||
|
# The filename of the provisioner socket
|
||||||
|
provisionerSocketFile: csi-provisioner.sock
|
||||||
|
# The filename of the plugin socket
|
||||||
|
pluginSocketFile: csi.sock
|
||||||
|
# The directory where nodeplugin socket is created
|
||||||
|
registrationDir: /var/lib/kubelet/plugins_registry
|
||||||
|
# The nodeplugin plugins directory
|
||||||
|
pluginDir: /var/lib/kubelet/plugins
|
||||||
|
# Name of the csi-driver
|
||||||
|
driverName: cephfs.csi.ceph.com
|
||||||
|
# Name of the configmap used for state
|
||||||
|
configMapName: ceph-csi-config-cephfs
|
@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
appVersion: "1.3.0"
|
appVersion: canary
|
||||||
description: "Container Storage Interface (CSI) driver,
|
description: "Container Storage Interface (CSI) driver,
|
||||||
provisioner, snapshotter, and attacher for Ceph RBD"
|
provisioner, snapshotter, and attacher for Ceph RBD"
|
||||||
name: ceph-csi-rbd
|
name: ceph-csi-rbd
|
||||||
version: 0.9.0
|
version: 1.3.0-canary
|
||||||
keywords:
|
keywords:
|
||||||
- ceph
|
- ceph
|
||||||
- rbd
|
- rbd
|
||||||
- ceph-csi
|
- ceph-csi
|
||||||
home: https://github.com/ceph/ceph-csi
|
home: https://github.com/ceph/ceph-csi
|
||||||
sources:
|
sources:
|
||||||
- https://github.com/ceph/ceph-csi/tree/csi-v1.0/deploy/rbd/helm
|
- https://github.com/ceph/ceph-csi/tree/master/charts/ceph-csi-rbd
|
||||||
icon: https://raw.githubusercontent.com/ceph/ceph-csi/master/assets/ceph-logo.png
|
icon: https://raw.githubusercontent.com/ceph/ceph-csi/master/assets/ceph-logo.png
|
@ -1,5 +1,4 @@
|
|||||||
---
|
{{- if not .Values.provisioner.attacher.enabled -}}
|
||||||
{{ if not .Values.provisioner.attacher.enabled }}
|
|
||||||
apiVersion: storage.k8s.io/v1beta1
|
apiVersion: storage.k8s.io/v1beta1
|
||||||
kind: CSIDriver
|
kind: CSIDriver
|
||||||
metadata:
|
metadata:
|
||||||
@ -8,4 +7,4 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
attachRequired: false
|
attachRequired: false
|
||||||
podInfoOnMount: false
|
podInfoOnMount: false
|
||||||
{{ end }}
|
{{- end -}}
|
@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
@ -12,4 +11,4 @@ metadata:
|
|||||||
heritage: {{ .Release.Service }}
|
heritage: {{ .Release.Service }}
|
||||||
data:
|
data:
|
||||||
config.json: |-
|
config.json: |-
|
||||||
[]
|
{{ toJson .Values.csiConfig | indent 4 -}}
|
@ -35,24 +35,28 @@ spec:
|
|||||||
containers:
|
containers:
|
||||||
- name: driver-registrar
|
- name: driver-registrar
|
||||||
image: "{{ .Values.nodeplugin.registrar.image.repository }}:{{ .Values.nodeplugin.registrar.image.tag }}"
|
image: "{{ .Values.nodeplugin.registrar.image.repository }}:{{ .Values.nodeplugin.registrar.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.nodeplugin.registrar.image.pullPolicy }}
|
||||||
args:
|
args:
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--csi-address=/csi/{{ .Values.socketFile }}"
|
- "--csi-address=/csi/{{ .Values.pluginSocketFile }}"
|
||||||
- "--kubelet-registration-path={{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
- "--kubelet-registration-path={{ .Values.socketDir }}/{{ .Values.pluginSocketFile }}"
|
||||||
lifecycle:
|
lifecycle:
|
||||||
preStop:
|
preStop:
|
||||||
exec:
|
exec:
|
||||||
command: [
|
{{- /*
|
||||||
"/bin/sh", "-c",
|
NOTE(wilmardo): The replace functions ensures there are no spaces in the string.
|
||||||
'rm -rf /registration/{{ .Values.driverName }}
|
To avoid `rm -rf /registration/driver name`
|
||||||
/registration/{{ .Values.driverName }}-reg.sock'
|
*/}}
|
||||||
]
|
command: [
|
||||||
|
"/bin/sh", "-c",
|
||||||
|
"rm -rf /registration/{{ .Values.driverName | replace " " "" }} \
|
||||||
|
/registration/{{ .Values.driverName | replace " " "" }}-reg.sock"
|
||||||
|
]
|
||||||
env:
|
env:
|
||||||
- name: KUBE_NODE_NAME
|
- name: KUBE_NODE_NAME
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.nodeName
|
fieldPath: spec.nodeName
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.registrar.image.pullPolicy }}
|
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: /csi
|
mountPath: /csi
|
||||||
@ -61,22 +65,21 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.registrar.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.registrar.resources | indent 12 }}
|
||||||
- name: csi-rbdplugin
|
- name: csi-rbdplugin
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
capabilities:
|
|
||||||
add: ["SYS_ADMIN"]
|
|
||||||
allowPrivilegeEscalation: true
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
args :
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
- "--type=rbd"
|
- "--type=rbd"
|
||||||
- "--nodeserver=true"
|
- "--nodeserver=true"
|
||||||
|
- "--pidlimit=-1"
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.enabled }}
|
||||||
|
- "--metricsport={{ .Values.nodeplugin.grpcMetrics.containerPort }}"
|
||||||
|
- "--metricspath=/metrics"
|
||||||
|
- "--enablegrpcmetrics=true"
|
||||||
|
{{- end }}
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
- "--metricsport=8090"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--enablegrpcmetrics=false"
|
|
||||||
env:
|
env:
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
@ -84,22 +87,24 @@ spec:
|
|||||||
fieldPath: status.podIP
|
fieldPath: status.podIP
|
||||||
- name: DRIVER_NAME
|
- name: DRIVER_NAME
|
||||||
value: {{ .Values.driverName }}
|
value: {{ .Values.driverName }}
|
||||||
|
- name: POD_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
- name: NODE_ID
|
- name: NODE_ID
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.nodeName
|
fieldPath: spec.nodeName
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.pluginSocketFile }}"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
capabilities:
|
||||||
|
add: ["SYS_ADMIN"]
|
||||||
|
allowPrivilegeEscalation: true
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
- name: plugin-dir
|
|
||||||
mountPath: {{ .Values.pluginDir }}
|
|
||||||
mountPropagation: "Bidirectional"
|
|
||||||
- name: mountpoint-dir
|
|
||||||
mountPath: /var/lib/kubelet/pods
|
|
||||||
mountPropagation: "Bidirectional"
|
|
||||||
- mountPath: /dev
|
- mountPath: /dev
|
||||||
name: host-dev
|
name: host-dev
|
||||||
- mountPath: /sys
|
- mountPath: /sys
|
||||||
@ -109,32 +114,40 @@ spec:
|
|||||||
readOnly: true
|
readOnly: true
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
mountPath: /etc/ceph-csi-config/
|
mountPath: /etc/ceph-csi-config/
|
||||||
|
- name: plugin-dir
|
||||||
|
mountPath: /var/lib/kubelet/plugins
|
||||||
|
mountPropagation: "Bidirectional"
|
||||||
|
- name: mountpoint-dir
|
||||||
|
mountPath: /var/lib/kubelet/pods
|
||||||
|
mountPropagation: "Bidirectional"
|
||||||
- name: keys-tmp-dir
|
- name: keys-tmp-dir
|
||||||
mountPath: /tmp/csi/keys
|
mountPath: /tmp/csi/keys
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.enabled }}
|
||||||
- name: liveness-prometheus
|
- name: liveness-prometheus
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
args:
|
args:
|
||||||
- "--type=liveness"
|
- "--type=liveness"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--metricsport=8080"
|
- "--metricsport={{ .Values.nodeplugin.httpMetrics.containerPort }}"
|
||||||
- "--metricspath=/metrics"
|
- "--metricspath=/metrics"
|
||||||
- "--polltime=60s"
|
- "--polltime=60s"
|
||||||
- "--timeout=3s"
|
- "--timeout=3s"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
env:
|
env:
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.pluginSocketFile }}"
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: status.podIP
|
fieldPath: status.podIP
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: plugin-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- end }}
|
||||||
volumes:
|
volumes:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
hostPath:
|
hostPath:
|
41
charts/ceph-csi-rbd/templates/nodeplugin-grpc-service.yaml
Normal file
41
charts/ceph-csi-rbd/templates/nodeplugin-grpc-service.yaml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.nodeplugin.grpcMetrics.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ceph-csi-rbd.nodeplugin.fullname" . }}-grpc-metrics
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: {{ include "ceph-csi-rbd.fullname" . }}
|
||||||
|
chart: {{ include "ceph-csi-rbd.chart" . }}
|
||||||
|
component: {{ .Values.nodeplugin.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.nodeplugin.grpcMetrics.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.nodeplugin.grpcMetrics.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: "{{ .Values.nodeplugin.grpcMetrics.service.loadBalancerIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.grpcMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.nodeplugin.grpcMetrics.service.loadBalancerSourceRanges | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: grpc-metrics
|
||||||
|
port: {{ .Values.nodeplugin.grpcMetrics.service.servicePort }}
|
||||||
|
targetPort: {{ .Values.nodeplugin.grpcMetrics.containerPort }}
|
||||||
|
selector:
|
||||||
|
app: {{ include "ceph-csi-rbd.name" . }}
|
||||||
|
component: {{ .Values.nodeplugin.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
type: "{{ .Values.nodeplugin.grpcMetrics.service.type }}"
|
||||||
|
{{- end -}}
|
41
charts/ceph-csi-rbd/templates/nodeplugin-http-service.yaml
Normal file
41
charts/ceph-csi-rbd/templates/nodeplugin-http-service.yaml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.nodeplugin.httpMetrics.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ceph-csi-rbd.nodeplugin.fullname" . }}-http-metrics
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: {{ include "ceph-csi-rbd.fullname" . }}
|
||||||
|
chart: {{ include "ceph-csi-rbd.chart" . }}
|
||||||
|
component: {{ .Values.nodeplugin.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.nodeplugin.httpMetrics.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.nodeplugin.httpMetrics.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: "{{ .Values.nodeplugin.httpMetrics.service.loadBalancerIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeplugin.httpMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.nodeplugin.httpMetrics.service.loadBalancerSourceRanges | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http-metrics
|
||||||
|
port: {{ .Values.nodeplugin.httpMetrics.service.servicePort }}
|
||||||
|
targetPort: {{ .Values.nodeplugin.httpMetrics.containerPort }}
|
||||||
|
selector:
|
||||||
|
app: {{ include "ceph-csi-rbd.name" . }}
|
||||||
|
component: {{ .Values.nodeplugin.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
type: "{{ .Values.nodeplugin.httpMetrics.service.type }}"
|
||||||
|
{{- end -}}
|
@ -1,3 +1,4 @@
|
|||||||
|
{{- if semverCompare ">=1.14" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
metadata:
|
metadata:
|
||||||
@ -33,16 +34,16 @@ spec:
|
|||||||
args:
|
args:
|
||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--timeout=60s"
|
- "--timeout={{ .Values.provisioner.timeout }}"
|
||||||
- "--enable-leader-election=true"
|
- "--enable-leader-election=true"
|
||||||
- "--leader-election-type=leases"
|
- "--leader-election-type=leases"
|
||||||
- "--retry-interval-start=500ms"
|
- "--retry-interval-start=500ms"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.provisioner.provisioner.resources | indent 12 }}
|
{{ toYaml .Values.provisioner.provisioner.resources | indent 12 }}
|
||||||
- name: csi-snapshotter
|
- name: csi-snapshotter
|
||||||
@ -51,16 +52,16 @@ spec:
|
|||||||
args:
|
args:
|
||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--timeout=60s"
|
- "--timeout={{ .Values.provisioner.timeout }}"
|
||||||
- "leader-election=true"
|
- "leader-election=true"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
securityContext:
|
securityContext:
|
||||||
privileged: true
|
privileged: true
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.provisioner.snapshotter.resources | indent 12 }}
|
{{ toYaml .Values.provisioner.snapshotter.resources | indent 12 }}
|
||||||
{{- if .Values.provisioner.attacher.enabled }}
|
{{- if .Values.provisioner.attacher.enabled }}
|
||||||
@ -70,36 +71,33 @@ spec:
|
|||||||
args:
|
args:
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
- "leader-election=true"
|
- "--leader-election=true"
|
||||||
- "--leader-election-type=leases"
|
- "--leader-election-type=leases"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.provisioner.attacher.resources | indent 12 }}
|
{{ toYaml .Values.provisioner.attacher.resources | indent 12 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
- name: csi-rbdplugin
|
- name: csi-rbdplugin
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
capabilities:
|
|
||||||
add: ["SYS_ADMIN"]
|
|
||||||
allowPrivilegeEscalation: true
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
args :
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
- "--type=rbd"
|
- "--type=rbd"
|
||||||
- "--controllerserver=true"
|
- "--controllerserver=true"
|
||||||
|
- "--pidlimit=-1"
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.enabled }}
|
||||||
|
- "--metricsport={{ .Values.nodeplugin.grpcMetrics.containerPort }}"
|
||||||
|
- "--metricspath=/metrics"
|
||||||
|
- "--enablegrpcmetrics=true"
|
||||||
|
{{- end }}
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
- "--pidlimit=-1"
|
|
||||||
- "--metricsport=8090"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--enablegrpcmetrics=false"
|
|
||||||
env:
|
env:
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
@ -112,25 +110,66 @@ spec:
|
|||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.nodeName
|
fieldPath: spec.nodeName
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
capabilities:
|
||||||
|
add: ["SYS_ADMIN"]
|
||||||
|
allowPrivilegeEscalation: true
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
- name: host-rootfs
|
- mountPath: /dev
|
||||||
mountPath: "/rootfs"
|
name: host-dev
|
||||||
|
- mountPath: /sys
|
||||||
|
name: host-sys
|
||||||
|
- mountPath: /lib/modules
|
||||||
|
name: lib-modules
|
||||||
|
readOnly: true
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
mountPath: /etc/ceph-csi-config/
|
mountPath: /etc/ceph-csi-config/
|
||||||
- name: keys-tmp-dir
|
- name: keys-tmp-dir
|
||||||
mountPath: /tmp/csi/keys
|
mountPath: /tmp/csi/keys
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.enabled }}
|
||||||
|
- name: liveness-prometheus
|
||||||
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
|
args:
|
||||||
|
- "--type=liveness"
|
||||||
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
|
- "--metricsport={{ .Values.provisioner.httpMetrics.containerPort }}"
|
||||||
|
- "--metricspath=/metrics"
|
||||||
|
- "--polltime=60s"
|
||||||
|
- "--timeout=3s"
|
||||||
|
env:
|
||||||
|
- name: CSI_ENDPOINT
|
||||||
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
|
- name: POD_IP
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: status.podIP
|
||||||
|
volumeMounts:
|
||||||
|
- name: socket-dir
|
||||||
|
mountPath: /csi
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- end }}
|
||||||
volumes:
|
volumes:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
emptyDir: {}
|
|
||||||
#FIXME this seems way too much. Why is it needed at all for this?
|
|
||||||
- name: host-rootfs
|
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /
|
path: {{ .Values.socketDir }}
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
- name: host-dev
|
||||||
|
hostPath:
|
||||||
|
path: /dev
|
||||||
|
- name: host-sys
|
||||||
|
hostPath:
|
||||||
|
path: /sys
|
||||||
|
- name: lib-modules
|
||||||
|
hostPath:
|
||||||
|
path: /lib/modules
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
configMap:
|
configMap:
|
||||||
name: {{ .Values.configMapName | quote }}
|
name: {{ .Values.configMapName | quote }}
|
||||||
@ -150,3 +189,4 @@ spec:
|
|||||||
tolerations:
|
tolerations:
|
||||||
{{ toYaml .Values.provisioner.tolerations | indent 8 -}}
|
{{ toYaml .Values.provisioner.tolerations | indent 8 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end -}}
|
41
charts/ceph-csi-rbd/templates/provisioner-grpc-service.yaml
Normal file
41
charts/ceph-csi-rbd/templates/provisioner-grpc-service.yaml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.provisioner.grpcMetrics.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.provisioner.grpcMetrics.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ceph-csi-rbd.provisioner.fullname" . }}-grpc-metrics
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: {{ include "ceph-csi-rbd.fullname" . }}
|
||||||
|
chart: {{ include "ceph-csi-rbd.chart" . }}
|
||||||
|
component: {{ .Values.provisioner.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.provisioner.grpcMetrics.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.provisioner.grpcMetrics.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: "{{ .Values.provisioner.grpcMetrics.service.loadBalancerIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.provisioner.grpcMetrics.service.loadBalancerSourceRanges | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: grpc-metrics
|
||||||
|
port: {{ .Values.provisioner.grpcMetrics.service.servicePort }}
|
||||||
|
targetPort: {{ .Values.provisioner.grpcMetrics.containerPort }}
|
||||||
|
selector:
|
||||||
|
app: {{ include "ceph-csi-rbd.name" . }}
|
||||||
|
component: {{ .Values.provisioner.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
type: "{{ .Values.provisioner.grpcMetrics.service.type }}"
|
||||||
|
{{- end -}}
|
41
charts/ceph-csi-rbd/templates/provisioner-http-service.yaml
Normal file
41
charts/ceph-csi-rbd/templates/provisioner-http-service.yaml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.provisioner.httpMetrics.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.provisioner.httpMetrics.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ceph-csi-rbd.provisioner.fullname" . }}-http-metrics
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: {{ include "ceph-csi-rbd.fullname" . }}
|
||||||
|
chart: {{ include "ceph-csi-rbd.chart" . }}
|
||||||
|
component: {{ .Values.provisioner.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.provisioner.httpMetrics.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.provisioner.httpMetrics.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: "{{ .Values.provisioner.httpMetrics.service.loadBalancerIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.provisioner.httpMetrics.service.loadBalancerSourceRanges | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http-metrics
|
||||||
|
port: {{ .Values.provisioner.httpMetrics.service.servicePort }}
|
||||||
|
targetPort: {{ .Values.provisioner.httpMetrics.containerPort }}
|
||||||
|
selector:
|
||||||
|
app: {{ include "ceph-csi-rbd.name" . }}
|
||||||
|
component: {{ .Values.provisioner.name }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
type: "{{ .Values.provisioner.httpMetrics.service.type }}"
|
||||||
|
{{- end -}}
|
@ -14,7 +14,9 @@ rules:
|
|||||||
- apiGroups: [""]
|
- apiGroups: [""]
|
||||||
resources: ["configmaps"]
|
resources: ["configmaps"]
|
||||||
verbs: ["get", "list", "watch", "create", "delete"]
|
verbs: ["get", "list", "watch", "create", "delete"]
|
||||||
|
{{- if semverCompare ">=1.14" .Capabilities.KubeVersion.GitVersion }}
|
||||||
- apiGroups: ["coordination.k8s.io"]
|
- apiGroups: ["coordination.k8s.io"]
|
||||||
resources: ["leases"]
|
resources: ["leases"]
|
||||||
verbs: ["get", "watch", "list", "delete", "update", "create"]
|
verbs: ["get", "watch", "list", "delete", "update", "create"]
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end -}}
|
@ -35,24 +35,30 @@ rules:
|
|||||||
- apiGroups: ["snapshot.storage.k8s.io"]
|
- apiGroups: ["snapshot.storage.k8s.io"]
|
||||||
resources: ["volumesnapshots"]
|
resources: ["volumesnapshots"]
|
||||||
verbs: ["get", "list", "watch", "update"]
|
verbs: ["get", "list", "watch", "update"]
|
||||||
{{ if .Values.provisioner.attacher.enabled }}
|
{{- if .Values.provisioner.attacher.enabled }}
|
||||||
- apiGroups: ["storage.k8s.io"]
|
- apiGroups: ["storage.k8s.io"]
|
||||||
resources: ["volumeattachments"]
|
resources: ["volumeattachments"]
|
||||||
verbs: ["get", "list", "watch", "update"]
|
verbs: ["get", "list", "watch", "update", "patch"]
|
||||||
{{ end }}
|
{{- end }}
|
||||||
- apiGroups: ["snapshot.storage.k8s.io"]
|
- apiGroups: ["snapshot.storage.k8s.io"]
|
||||||
resources: ["volumesnapshotcontents"]
|
resources: ["volumesnapshotcontents"]
|
||||||
verbs: ["create", "get", "list", "watch", "update", "delete"]
|
verbs: ["create", "get", "list", "watch", "update", "delete"]
|
||||||
- apiGroups: ["snapshot.storage.k8s.io"]
|
- apiGroups: ["snapshot.storage.k8s.io"]
|
||||||
resources: ["volumesnapshotclasses"]
|
resources: ["volumesnapshotclasses"]
|
||||||
verbs: ["get", "list", "watch"]
|
verbs: ["get", "list", "watch"]
|
||||||
- apiGroups: ["apiextensions.k8s.io"]
|
|
||||||
resources: ["customresourcedefinitions"]
|
|
||||||
verbs: ["create", "list", "watch", "delete", "get", "update"]
|
|
||||||
- apiGroups: ["csi.storage.k8s.io"]
|
- apiGroups: ["csi.storage.k8s.io"]
|
||||||
resources: ["csinodeinfos"]
|
resources: ["csinodeinfos"]
|
||||||
verbs: ["get", "list", "watch"]
|
verbs: ["get", "list", "watch"]
|
||||||
|
- apiGroups: ["apiextensions.k8s.io"]
|
||||||
|
resources: ["customresourcedefinitions"]
|
||||||
|
{{- if semverCompare ">=1.14" .Capabilities.KubeVersion.GitVersion }}
|
||||||
|
verbs: ["create", "list", "watch", "delete", "get", "update"]
|
||||||
|
{{- else }}
|
||||||
|
verbs: ["create"]
|
||||||
|
{{- end -}}
|
||||||
|
{{- if semverCompare ">=1.14" .Capabilities.KubeVersion.GitVersion }}
|
||||||
- apiGroups: ["snapshot.storage.k8s.io"]
|
- apiGroups: ["snapshot.storage.k8s.io"]
|
||||||
resources: ["volumesnapshots/status"]
|
resources: ["volumesnapshots/status"]
|
||||||
verbs: ["update"]
|
verbs: ["update"]
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end -}}
|
@ -1,3 +1,4 @@
|
|||||||
|
{{- if semverCompare "<=1.13" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
kind: Service
|
kind: Service
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
@ -18,8 +19,9 @@ spec:
|
|||||||
- name: http-metrics
|
- name: http-metrics
|
||||||
port: 8080
|
port: 8080
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
targetPort: 8080
|
targetPort: 8081
|
||||||
- name: grpc-metrics
|
- name: grpc-metrics
|
||||||
port: 8090
|
port: 8090
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
targetPort: 8090
|
targetPort: 8091
|
||||||
|
{{- end -}}
|
@ -1,3 +1,4 @@
|
|||||||
|
{{- if semverCompare "<=1.13" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
kind: StatefulSet
|
kind: StatefulSet
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
metadata:
|
metadata:
|
||||||
@ -11,7 +12,7 @@ metadata:
|
|||||||
heritage: {{ .Release.Service }}
|
heritage: {{ .Release.Service }}
|
||||||
spec:
|
spec:
|
||||||
serviceName: {{ include "ceph-csi-rbd.provisioner.fullname" . }}
|
serviceName: {{ include "ceph-csi-rbd.provisioner.fullname" . }}
|
||||||
replicas: {{ .Values.provisioner.replicaCount }}
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
app: {{ include "ceph-csi-rbd.name" . }}
|
||||||
@ -35,14 +36,14 @@ spec:
|
|||||||
args:
|
args:
|
||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--timeout=60s"
|
- "--timeout={{ .Values.provisioner.timeout }}"
|
||||||
- "--retry-interval-start=500ms"
|
- "--retry-interval-start=500ms"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.provisioner.provisioner.resources | indent 12 }}
|
{{ toYaml .Values.provisioner.provisioner.resources | indent 12 }}
|
||||||
- name: csi-snapshotter
|
- name: csi-snapshotter
|
||||||
@ -51,15 +52,15 @@ spec:
|
|||||||
args:
|
args:
|
||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--timeout=60s"
|
- "--timeout={{ .Values.provisioner.timeout }}"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
securityContext:
|
securityContext:
|
||||||
privileged: true
|
privileged: true
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.provisioner.snapshotter.resources | indent 12 }}
|
{{ toYaml .Values.provisioner.snapshotter.resources | indent 12 }}
|
||||||
{{- if .Values.provisioner.attacher.enabled }}
|
{{- if .Values.provisioner.attacher.enabled }}
|
||||||
@ -71,32 +72,29 @@ spec:
|
|||||||
- "--csi-address=$(ADDRESS)"
|
- "--csi-address=$(ADDRESS)"
|
||||||
env:
|
env:
|
||||||
- name: ADDRESS
|
- name: ADDRESS
|
||||||
value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.provisioner.attacher.resources | indent 12 }}
|
{{ toYaml .Values.provisioner.attacher.resources | indent 12 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
- name: csi-rbdplugin
|
- name: csi-rbdplugin
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
capabilities:
|
|
||||||
add: ["SYS_ADMIN"]
|
|
||||||
allowPrivilegeEscalation: true
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
args :
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
- "--type=rbd"
|
- "--type=rbd"
|
||||||
- "--controllerserver=true"
|
- "--controllerserver=true"
|
||||||
|
- "--pidlimit=-1"
|
||||||
|
{{- if .Values.provisioner.grpcMetrics.enabled }}
|
||||||
|
- "--metricsport={{ .Values.nodeplugin.grpcMetrics.containerPort }}"
|
||||||
|
- "--metricspath=/metrics"
|
||||||
|
- "--enablegrpcmetrics=true"
|
||||||
|
{{- end }}
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
- "--pidlimit=-1"
|
|
||||||
- "--metricsport=8090"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--enablegrpcmetrics=false"
|
|
||||||
env:
|
env:
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
@ -109,69 +107,66 @@ spec:
|
|||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.nodeName
|
fieldPath: spec.nodeName
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
capabilities:
|
||||||
|
add: ["SYS_ADMIN"]
|
||||||
|
allowPrivilegeEscalation: true
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
- name: host-rootfs
|
- mountPath: /dev
|
||||||
mountPath: "/rootfs"
|
name: host-dev
|
||||||
|
- mountPath: /sys
|
||||||
|
name: host-sys
|
||||||
|
- mountPath: /lib/modules
|
||||||
|
name: lib-modules
|
||||||
|
readOnly: true
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
mountPath: /etc/ceph-csi-config/
|
mountPath: /etc/ceph-csi-config/
|
||||||
- name: keys-tmp-dir
|
- name: keys-tmp-dir
|
||||||
mountPath: /tmp/csi/keys
|
mountPath: /tmp/csi/keys
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- if .Values.provisioner.httpMetrics.enabled }}
|
||||||
- name: liveness-prometheus
|
- name: liveness-prometheus
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
||||||
args:
|
args:
|
||||||
- "--type=liveness"
|
- "--type=liveness"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--metricsport=8080"
|
- "--metricsport={{ .Values.provisioner.httpMetrics.containerPort }}"
|
||||||
- "--metricspath=/metrics"
|
- "--metricspath=/metrics"
|
||||||
- "--polltime=60s"
|
- "--polltime=60s"
|
||||||
- "--timeout=3s"
|
- "--timeout=3s"
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
env:
|
env:
|
||||||
- name: CSI_ENDPOINT
|
- name: CSI_ENDPOINT
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
value: "unix:///csi/{{ .Values.provisionerSocketFile }}"
|
||||||
- name: POD_IP
|
- name: POD_IP
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: status.podIP
|
fieldPath: status.podIP
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
mountPath: {{ .Values.socketDir }}
|
mountPath: /csi
|
||||||
resources:
|
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
|
||||||
- name: liveness-prometheus
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
|
||||||
args:
|
|
||||||
- "--type=liveness"
|
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
|
||||||
- "--metricsport=8081"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--polltime=60s"
|
|
||||||
- "--timeout=3s"
|
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
env:
|
|
||||||
- name: CSI_ENDPOINT
|
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
|
||||||
- name: POD_IP
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: status.podIP
|
|
||||||
volumeMounts:
|
|
||||||
- name: socket-dir
|
|
||||||
mountPath: {{ .Values.socketDir }}
|
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
||||||
|
{{- end }}
|
||||||
volumes:
|
volumes:
|
||||||
- name: socket-dir
|
- name: socket-dir
|
||||||
emptyDir: {}
|
|
||||||
#FIXME this seems way too much. Why is it needed at all for this?
|
|
||||||
- name: host-rootfs
|
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /
|
path: {{ .Values.socketDir }}
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
- name: host-dev
|
||||||
|
hostPath:
|
||||||
|
path: /dev
|
||||||
|
- name: host-sys
|
||||||
|
hostPath:
|
||||||
|
path: /sys
|
||||||
|
- name: lib-modules
|
||||||
|
hostPath:
|
||||||
|
path: /lib/modules
|
||||||
- name: ceph-csi-config
|
- name: ceph-csi-config
|
||||||
configMap:
|
configMap:
|
||||||
name: {{ .Values.configMapName | quote }}
|
name: {{ .Values.configMapName | quote }}
|
||||||
@ -191,3 +186,4 @@ spec:
|
|||||||
tolerations:
|
tolerations:
|
||||||
{{ toYaml .Values.provisioner.tolerations | indent 8 -}}
|
{{ toYaml .Values.provisioner.tolerations | indent 8 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end -}}
|
231
charts/ceph-csi-rbd/values.yaml
Normal file
231
charts/ceph-csi-rbd/values.yaml
Normal file
@ -0,0 +1,231 @@
|
|||||||
|
---
|
||||||
|
rbac:
|
||||||
|
# Specifies whether RBAC resources should be created
|
||||||
|
create: true
|
||||||
|
|
||||||
|
serviceAccounts:
|
||||||
|
nodeplugin:
|
||||||
|
# Specifies whether a ServiceAccount should be created
|
||||||
|
create: true
|
||||||
|
# The name of the ServiceAccount to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname
|
||||||
|
name:
|
||||||
|
provisioner:
|
||||||
|
# Specifies whether a ServiceAccount should be created
|
||||||
|
create: true
|
||||||
|
# The name of the ServiceAccount to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname
|
||||||
|
name:
|
||||||
|
|
||||||
|
# Configuration for the CSI to connect to the cluster
|
||||||
|
# Ref: https://github.com/ceph/ceph-csi/blob/master/examples/README.md
|
||||||
|
# Example:
|
||||||
|
# csiConfig:
|
||||||
|
# - clusterID: "<cluster-id>"
|
||||||
|
# monitors:
|
||||||
|
# - "<MONValue1>"
|
||||||
|
# - "<MONValue2>"
|
||||||
|
csiConfig: []
|
||||||
|
|
||||||
|
nodeplugin:
|
||||||
|
name: nodeplugin
|
||||||
|
|
||||||
|
httpMetrics:
|
||||||
|
# Metrics only available for cephcsi/cephcsi => 1.2.0
|
||||||
|
# Specifies whether http metrics should be exposed
|
||||||
|
enabled: true
|
||||||
|
# The port of the container to expose the metrics
|
||||||
|
containerPort: 8080
|
||||||
|
|
||||||
|
service:
|
||||||
|
# Specifies whether a service should be created fot the metrics
|
||||||
|
enabled: true
|
||||||
|
# The port to use for the service
|
||||||
|
servicePort: 8080
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
# Annotations for the service
|
||||||
|
# Example:
|
||||||
|
# annotations:
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/port: "8080"
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
clusterIP: ""
|
||||||
|
|
||||||
|
## List of IP addresses at which the stats-exporter service is available
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
|
||||||
|
##
|
||||||
|
externalIPs: []
|
||||||
|
|
||||||
|
loadBalancerIP: ""
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
grpcMetrics:
|
||||||
|
# Metrics only available for cephcsi/cephcsi => 1.2.0
|
||||||
|
# Specifies whether grpc metrics should be exposed
|
||||||
|
enabled: true
|
||||||
|
# The port of the container to expose the metrics
|
||||||
|
containerPort: 8090
|
||||||
|
|
||||||
|
service:
|
||||||
|
# Specifies whether a service should be created fot the metrics
|
||||||
|
enabled: true
|
||||||
|
# The port to use for the service
|
||||||
|
servicePort: 8090
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
# Annotations for the service
|
||||||
|
# Example:
|
||||||
|
# annotations:
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/port: "8090"
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
clusterIP: ""
|
||||||
|
|
||||||
|
## List of IP addresses at which the stats-exporter service is available
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
|
||||||
|
##
|
||||||
|
externalIPs: []
|
||||||
|
|
||||||
|
loadBalancerIP: ""
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
registrar:
|
||||||
|
image:
|
||||||
|
repository: quay.io/k8scsi/csi-node-driver-registrar
|
||||||
|
tag: v1.1.0
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
plugin:
|
||||||
|
image:
|
||||||
|
repository: quay.io/cephcsi/cephcsi
|
||||||
|
tag: canary
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: provisioner
|
||||||
|
# When using Kubernetes <1.14 this value is ignored
|
||||||
|
# The statefulset is deployed with replicas: 1
|
||||||
|
replicaCount: 3
|
||||||
|
# Timeout for waiting for creation or deletion of a volume
|
||||||
|
timeout: 60s
|
||||||
|
|
||||||
|
httpMetrics:
|
||||||
|
# Metrics only available for cephcis/cephsi => 1.2.0
|
||||||
|
# Specifies whether http metrics should be exposed
|
||||||
|
enabled: true
|
||||||
|
# The port of the container to expose the metrics
|
||||||
|
containerPort: 8080
|
||||||
|
|
||||||
|
service:
|
||||||
|
# Specifies whether a service should be created fot the metrics
|
||||||
|
enabled: true
|
||||||
|
# The port to use for the service
|
||||||
|
servicePort: 8080
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
# Annotations for the service
|
||||||
|
# Example:
|
||||||
|
# annotations:
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/port: "8080"
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
clusterIP: ""
|
||||||
|
|
||||||
|
## List of IP addresses at which the stats-exporter service is available
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
|
||||||
|
##
|
||||||
|
externalIPs: []
|
||||||
|
|
||||||
|
loadBalancerIP: ""
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
grpcMetrics:
|
||||||
|
# Metrics only available for cephcis/cephsi => 1.2.0
|
||||||
|
# Specifies whether grpc metrics should be exposed
|
||||||
|
enabled: true
|
||||||
|
# The port of the container to expose the metrics
|
||||||
|
containerPort: 8090
|
||||||
|
|
||||||
|
service:
|
||||||
|
# Specifies whether a service should be created fot the metrics
|
||||||
|
enabled: true
|
||||||
|
# The port to use for the service
|
||||||
|
servicePort: 8090
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
# Annotations for the service
|
||||||
|
# Example:
|
||||||
|
# annotations:
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/port: "8090"
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
clusterIP: ""
|
||||||
|
|
||||||
|
## List of IP addresses at which the stats-exporter service is available
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
|
||||||
|
##
|
||||||
|
externalIPs: []
|
||||||
|
|
||||||
|
loadBalancerIP: ""
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
image:
|
||||||
|
repository: quay.io/k8scsi/csi-provisioner
|
||||||
|
tag: v1.3.0
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
attacher:
|
||||||
|
name: attacher
|
||||||
|
enabled: true
|
||||||
|
image:
|
||||||
|
repository: quay.io/k8scsi/csi-attacher
|
||||||
|
tag: v1.2.1
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
snapshotter:
|
||||||
|
image:
|
||||||
|
repository: quay.io/k8scsi/csi-snapshotter
|
||||||
|
tag: v1.2.1
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
#########################################################
|
||||||
|
# Variables for 'internal' use please use with caution! #
|
||||||
|
#########################################################
|
||||||
|
|
||||||
|
# The directory where the provisioner and pluginSocketFile will be mounted
|
||||||
|
socketDir: /var/lib/kubelet/plugins/rbd.csi.ceph.com
|
||||||
|
# The filename of the provisioner socket
|
||||||
|
provisionerSocketFile: csi-provisioner.sock
|
||||||
|
# The filename of the plugin socket
|
||||||
|
pluginSocketFile: csi.sock
|
||||||
|
# The directory where nodeplugin socket is created
|
||||||
|
registrationDir: /var/lib/kubelet/plugins_registry
|
||||||
|
# The nodeplugin plugins directory
|
||||||
|
pluginDir: /var/lib/kubelet/plugins
|
||||||
|
# Name of the csi-driver
|
||||||
|
driverName: rbd.csi.ceph.com
|
||||||
|
# Name of the configmap used for state
|
||||||
|
configMapName: ceph-csi-config-rbd
|
19
deploy.sh
19
deploy.sh
@ -3,15 +3,26 @@
|
|||||||
push_helm_charts() {
|
push_helm_charts() {
|
||||||
PACKAGE=$1
|
PACKAGE=$1
|
||||||
CHANGED=0
|
CHANGED=0
|
||||||
VERSION=$(grep 'version:' deploy/"$PACKAGE"/helm/Chart.yaml | awk '{print $2}')
|
VERSION=${ENV_CSI_IMAGE_VERSION//v} # Set version (without v prefix)
|
||||||
|
|
||||||
if [ ! -f "tmp/csi-charts/docs/$PACKAGE/ceph-csi-$PACKAGE-$VERSION.tgz" ]; then
|
# Always run when version is canary, when versioned only when the package doesn't exist yet
|
||||||
|
if [ ! -f "tmp/csi-charts/docs/$PACKAGE/ceph-csi-$PACKAGE-$VERSION.tgz" ] && [ -z "$VERSION" ]; then
|
||||||
CHANGED=1
|
CHANGED=1
|
||||||
ln -s helm deploy/"$PACKAGE"/ceph-csi-"$PACKAGE"
|
|
||||||
|
# When version defined it is a release, not a canary build
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
# Replace appVersion: canary and version: *-canary with the actual version
|
||||||
|
sed -i "s/\(\s.*canary\)/$VERSION/" "charts/ceph-csi-$PACKAGE/Chart.yaml"
|
||||||
|
|
||||||
|
# Replace master with the version branch
|
||||||
|
sed -i "s/tree\/master/tree\/release-v$VERSION/" "charts/ceph-csi-$PACKAGE/Chart.yaml"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -s helm charts/ceph-csi-"$PACKAGE"
|
||||||
mkdir -p tmp/csi-charts/docs/"$PACKAGE"
|
mkdir -p tmp/csi-charts/docs/"$PACKAGE"
|
||||||
pushd tmp/csi-charts/docs/"$PACKAGE" >/dev/null
|
pushd tmp/csi-charts/docs/"$PACKAGE" >/dev/null
|
||||||
helm init --client-only
|
helm init --client-only
|
||||||
helm package ../../../../deploy/"$PACKAGE"/ceph-csi-"$PACKAGE"
|
helm package ../../../../charts/ceph-csi-"$PACKAGE"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
# ceph-csi-cephfs
|
|
||||||
|
|
||||||
The ceph-csi-cephfs chart adds cephfs volume support to your cluster.
|
|
||||||
|
|
||||||
## Install Chart
|
|
||||||
|
|
||||||
To install the Chart into your Kubernetes cluster
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm install --namespace "ceph-csi-cephfs" --name "ceph-csi-cephfs" ceph-csi/ceph-csi-cephfs
|
|
||||||
```
|
|
||||||
|
|
||||||
After installation succeeds, you can get a status of Chart
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm status "ceph-csi-cephfs"
|
|
||||||
```
|
|
||||||
|
|
||||||
If you want to delete your Chart, use this command
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm delete --purge "ceph-csi-cephfs"
|
|
||||||
```
|
|
||||||
|
|
||||||
If you want to delete the namespace, use this command
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl delete namespace ceph-csi-rbd
|
|
||||||
```
|
|
@ -1,11 +0,0 @@
|
|||||||
---
|
|
||||||
{{ if not .Values.provisioner.attacher.enabled }}
|
|
||||||
apiVersion: storage.k8s.io/v1beta1
|
|
||||||
kind: CSIDriver
|
|
||||||
metadata:
|
|
||||||
name: {{ .Values.driverName }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
spec:
|
|
||||||
attachRequired: false
|
|
||||||
podInfoOnMount: false
|
|
||||||
{{ end }}
|
|
@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: {{ .Values.configMapName | quote }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
data:
|
|
||||||
config.json: |-
|
|
||||||
[]
|
|
@ -1,25 +0,0 @@
|
|||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: csi-metrics
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
ports:
|
|
||||||
- name: http-metrics
|
|
||||||
port: 8080
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8081
|
|
||||||
- name: grpc-metrics
|
|
||||||
port: 8090
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8091
|
|
@ -1,20 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: Role
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["endpoints"]
|
|
||||||
verbs: ["get", "watch", "list", "delete", "update", "create"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["configmaps"]
|
|
||||||
verbs: ["get", "list", "watch", "create", "delete"]
|
|
||||||
{{- end -}}
|
|
@ -1,71 +0,0 @@
|
|||||||
---
|
|
||||||
rbac:
|
|
||||||
create: true
|
|
||||||
|
|
||||||
serviceAccounts:
|
|
||||||
attacher:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
nodeplugin:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
provisioner:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
|
|
||||||
socketDir: /var/lib/kubelet/plugins/cephfs.csi.ceph.com
|
|
||||||
socketFile: csi.sock
|
|
||||||
registrationDir: /var/lib/kubelet/plugins_registry
|
|
||||||
pluginDir: /var/lib/kubelet/plugins
|
|
||||||
driverName: cephfs.csi.ceph.com
|
|
||||||
configMapName: ceph-csi-config
|
|
||||||
|
|
||||||
nodeplugin:
|
|
||||||
name: nodeplugin
|
|
||||||
|
|
||||||
registrar:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-node-driver-registrar
|
|
||||||
tag: v1.1.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
plugin:
|
|
||||||
image:
|
|
||||||
repository: quay.io/cephcsi/cephcsi
|
|
||||||
# for stable functionality replace canary with latest release version
|
|
||||||
tag: canary
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
name: provisioner
|
|
||||||
replicaCount: 1
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-provisioner
|
|
||||||
tag: v1.3.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
attacher:
|
|
||||||
name: attacher
|
|
||||||
enabled: true
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-attacher
|
|
||||||
tag: v1.2.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
affinity: {}
|
|
@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
appVersion: "1.3.0"
|
|
||||||
description: "Container Storage Interface (CSI) driver,
|
|
||||||
provisioner, and attacher for Ceph cephfs"
|
|
||||||
name: ceph-csi-cephfs
|
|
||||||
version: 0.9.0
|
|
||||||
keywords:
|
|
||||||
- ceph
|
|
||||||
- cephfs
|
|
||||||
- ceph-csi
|
|
||||||
home: https://github.com/ceph/ceph-csi
|
|
||||||
sources:
|
|
||||||
- https://github.com/ceph/ceph-csi/tree/csi-v1.0/deploy/cephfs/helm
|
|
||||||
icon: https://raw.githubusercontent.com/ceph/ceph-csi/master/assets/ceph-logo.png
|
|
@ -1,2 +0,0 @@
|
|||||||
Examples on how to configure a storage class and start using the driver are here:
|
|
||||||
https://github.com/ceph/ceph-csi/tree/csi-v1.0/examples/cephfs
|
|
@ -1,90 +0,0 @@
|
|||||||
{{/* vim: set filetype=mustache: */}}
|
|
||||||
{{/*
|
|
||||||
Expand the name of the chart.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-cephfs.name" -}}
|
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
If release name contains chart name it will be used as a full name.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-cephfs.fullname" -}}
|
|
||||||
{{- if .Values.fullnameOverride -}}
|
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
||||||
{{- if contains $name .Release.Name -}}
|
|
||||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
If release name contains chart name it will be used as a full name.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-cephfs.nodeplugin.fullname" -}}
|
|
||||||
{{- if .Values.nodeplugin.fullnameOverride -}}
|
|
||||||
{{- .Values.nodeplugin.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
||||||
{{- if contains $name .Release.Name -}}
|
|
||||||
{{- printf "%s-%s" .Release.Name .Values.nodeplugin.name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- printf "%s-%s-%s" .Release.Name $name .Values.nodeplugin.name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
If release name contains chart name it will be used as a full name.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-cephfs.provisioner.fullname" -}}
|
|
||||||
{{- if .Values.provisioner.fullnameOverride -}}
|
|
||||||
{{- .Values.provisioner.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
||||||
{{- if contains $name .Release.Name -}}
|
|
||||||
{{- printf "%s-%s" .Release.Name .Values.provisioner.name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- printf "%s-%s-%s" .Release.Name $name .Values.provisioner.name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create chart name and version as used by the chart label.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-cephfs.chart" -}}
|
|
||||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create the name of the service account to use
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-cephfs.serviceAccountName.nodeplugin" -}}
|
|
||||||
{{- if .Values.serviceAccounts.nodeplugin.create -}}
|
|
||||||
{{ default (include "ceph-csi-cephfs.nodeplugin.fullname" .) .Values.serviceAccounts.nodeplugin.name }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ default "default" .Values.serviceAccounts.nodeplugin.name }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create the name of the service account to use
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-cephfs.serviceAccountName.provisioner" -}}
|
|
||||||
{{- if .Values.serviceAccounts.provisioner.create -}}
|
|
||||||
{{ default (include "ceph-csi-cephfs.provisioner.fullname" .) .Values.serviceAccounts.provisioner.name }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ default "default" .Values.serviceAccounts.provisioner.name }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
@ -1,17 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
aggregationRule:
|
|
||||||
clusterRoleSelectors:
|
|
||||||
- matchLabels:
|
|
||||||
rbac.cephfs.csi.ceph.com/aggregate-to-{{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}: "true"
|
|
||||||
rules: []
|
|
||||||
{{- end -}}
|
|
@ -1,20 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ include "ceph-csi-cephfs.serviceAccountName.nodeplugin" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
roleRef:
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
{{- end -}}
|
|
@ -1,191 +0,0 @@
|
|||||||
kind: DaemonSet
|
|
||||||
apiVersion: apps/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: {{ include "ceph-csi-cephfs.serviceAccountName.nodeplugin" . }}
|
|
||||||
hostNetwork: true
|
|
||||||
hostPID: true
|
|
||||||
# to use e.g. Rook orchestrated cluster, and mons' FQDN is
|
|
||||||
# resolved through k8s service, set dns policy to cluster first
|
|
||||||
dnsPolicy: ClusterFirstWithHostNet
|
|
||||||
containers:
|
|
||||||
- name: driver-registrar
|
|
||||||
image: "{{ .Values.nodeplugin.registrar.image.repository }}:{{ .Values.nodeplugin.registrar.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.registrar.image.pullPolicy }}
|
|
||||||
args:
|
|
||||||
- "--v=5"
|
|
||||||
- "--csi-address=/csi/{{ .Values.socketFile }}"
|
|
||||||
- "--kubelet-registration-path={{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
|
||||||
lifecycle:
|
|
||||||
preStop:
|
|
||||||
exec:
|
|
||||||
command: [
|
|
||||||
"/bin/sh", "-c",
|
|
||||||
'rm -rf /registration/{{ .Values.driverName }}
|
|
||||||
/registration/{{ .Values.driverName }}-reg.sock'
|
|
||||||
]
|
|
||||||
env:
|
|
||||||
- name: KUBE_NODE_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: spec.nodeName
|
|
||||||
volumeMounts:
|
|
||||||
- name: plugin-dir
|
|
||||||
mountPath: /csi
|
|
||||||
- name: registration-dir
|
|
||||||
mountPath: /registration
|
|
||||||
resources:
|
|
||||||
{{ toYaml .Values.nodeplugin.registrar.resources | indent 12 }}
|
|
||||||
- name: csi-cephfsplugin
|
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
capabilities:
|
|
||||||
add: ["SYS_ADMIN"]
|
|
||||||
allowPrivilegeEscalation: true
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
|
||||||
args :
|
|
||||||
- "--nodeid=$(NODE_ID)"
|
|
||||||
- "--type=cephfs"
|
|
||||||
- "--nodeserver=true"
|
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
|
||||||
- "--v=5"
|
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
|
||||||
- "--metadatastorage=k8s_configmap"
|
|
||||||
- "--mountcachedir=/mount-cache-dir"
|
|
||||||
- "--metricsport=8091"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--enablegrpcmetrics=false"
|
|
||||||
env:
|
|
||||||
- name: POD_IP
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: status.podIP
|
|
||||||
- name: DRIVER_NAME
|
|
||||||
value: {{ .Values.driverName }}
|
|
||||||
- name: NODE_ID
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: spec.nodeName
|
|
||||||
- name: CSI_ENDPOINT
|
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
volumeMounts:
|
|
||||||
- name: mount-cache-dir
|
|
||||||
mountPath: /mount-cache-dir
|
|
||||||
- name: socket-dir
|
|
||||||
mountPath: {{ .Values.socketDir }}
|
|
||||||
- name: plugin-dir
|
|
||||||
mountPath: {{ .Values.pluginDir }}
|
|
||||||
mountPropagation: "Bidirectional"
|
|
||||||
- name: mountpoint-dir
|
|
||||||
mountPath: /var/lib/kubelet/pods
|
|
||||||
mountPropagation: "Bidirectional"
|
|
||||||
- mountPath: /dev
|
|
||||||
name: host-dev
|
|
||||||
- mountPath: /rootfs
|
|
||||||
name: host-rootfs
|
|
||||||
- mountPath: /sys
|
|
||||||
name: host-sys
|
|
||||||
- mountPath: /lib/modules
|
|
||||||
name: lib-modules
|
|
||||||
readOnly: true
|
|
||||||
- name: ceph-csi-config
|
|
||||||
mountPath: /etc/ceph-csi-config/
|
|
||||||
- name: keys-tmp-dir
|
|
||||||
mountPath: /tmp/csi/keys
|
|
||||||
resources:
|
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
|
||||||
- name: liveness-prometheus
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
|
||||||
args:
|
|
||||||
- "--type=liveness"
|
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
|
||||||
- "--metricsport=8081"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--polltime=60s"
|
|
||||||
- "--timeout=3s"
|
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
env:
|
|
||||||
- name: CSI_ENDPOINT
|
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
|
||||||
- name: POD_IP
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: status.podIP
|
|
||||||
volumeMounts:
|
|
||||||
- name: plugin-dir
|
|
||||||
mountPath: {{ .Values.socketDir }}
|
|
||||||
resources:
|
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
|
||||||
volumes:
|
|
||||||
- name: mount-cache-dir
|
|
||||||
emptyDir: {}
|
|
||||||
- name: socket-dir
|
|
||||||
hostPath:
|
|
||||||
path: {{ .Values.socketDir }}
|
|
||||||
type: DirectoryOrCreate
|
|
||||||
- name: registration-dir
|
|
||||||
hostPath:
|
|
||||||
path: {{ .Values.registrationDir }}
|
|
||||||
type: Directory
|
|
||||||
- name: plugin-dir
|
|
||||||
hostPath:
|
|
||||||
path: {{ .Values.pluginDir }}
|
|
||||||
type: Directory
|
|
||||||
- name: mountpoint-dir
|
|
||||||
hostPath:
|
|
||||||
path: /var/lib/kubelet/pods
|
|
||||||
type: DirectoryOrCreate
|
|
||||||
- name: host-dev
|
|
||||||
hostPath:
|
|
||||||
path: /dev
|
|
||||||
- name: host-rootfs
|
|
||||||
hostPath:
|
|
||||||
path: /
|
|
||||||
- name: host-sys
|
|
||||||
hostPath:
|
|
||||||
path: /sys
|
|
||||||
- name: lib-modules
|
|
||||||
hostPath:
|
|
||||||
path: /lib/modules
|
|
||||||
- name: ceph-csi-config
|
|
||||||
configMap:
|
|
||||||
name: {{ .Values.configMapName | quote }}
|
|
||||||
- name: keys-tmp-dir
|
|
||||||
emptyDir: {
|
|
||||||
medium: "Memory"
|
|
||||||
}
|
|
||||||
{{- if .Values.nodeplugin.affinity }}
|
|
||||||
affinity:
|
|
||||||
{{ toYaml .Values.nodeplugin.affinity . | indent 8 -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- if .Values.nodeplugin.nodeSelector }}
|
|
||||||
nodeSelector:
|
|
||||||
{{ toYaml .Values.nodeplugin.nodeSelector | indent 8 -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- if .Values.nodeplugin.tolerations }}
|
|
||||||
tolerations:
|
|
||||||
{{ toYaml .Values.nodeplugin.tolerations | indent 8 -}}
|
|
||||||
{{- end -}}
|
|
@ -1,32 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}-rules
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
rbac.cephfs.csi.ceph.com/aggregate-to-{{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}: "true"
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["configmaps"]
|
|
||||||
verbs: ["get", "list"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["nodes"]
|
|
||||||
verbs: ["get", "list", "update"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["namespaces"]
|
|
||||||
verbs: ["get", "list"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["persistentvolumes"]
|
|
||||||
verbs: ["get", "list", "watch", "update"]
|
|
||||||
- apiGroups: ["storage.k8s.io"]
|
|
||||||
resources: ["volumeattachments"]
|
|
||||||
verbs: ["get", "list", "watch", "update"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["configmaps"]
|
|
||||||
verbs: ["get", "list"]
|
|
||||||
{{- end -}}
|
|
@ -1,25 +0,0 @@
|
|||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.nodeplugin.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: csi-metrics
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
ports:
|
|
||||||
- name: http-metrics
|
|
||||||
port: 8080
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8081
|
|
||||||
- name: grpc-metrics
|
|
||||||
port: 8090
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8091
|
|
@ -1,13 +0,0 @@
|
|||||||
{{- if .Values.serviceAccounts.nodeplugin.create -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.serviceAccountName.nodeplugin" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
{{- end -}}
|
|
@ -1,17 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
aggregationRule:
|
|
||||||
clusterRoleSelectors:
|
|
||||||
- matchLabels:
|
|
||||||
rbac.cephfs.csi.ceph.com/aggregate-to-{{ include "ceph-csi-cephfs.provisioner.fullname" . }}: "true"
|
|
||||||
rules: []
|
|
||||||
{{- end -}}
|
|
@ -1,20 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ include "ceph-csi-cephfs.serviceAccountName.provisioner" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
roleRef:
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
{{- end -}}
|
|
@ -1,21 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: RoleBinding
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ include "ceph-csi-cephfs.serviceAccountName.provisioner" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
roleRef:
|
|
||||||
kind: Role
|
|
||||||
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
{{- end -}}
|
|
@ -1,40 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}-rules
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
rbac.cephfs.csi.ceph.com/aggregate-to-{{ include "ceph-csi-cephfs.provisioner.fullname" . }}: "true"
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["nodes"]
|
|
||||||
verbs: ["get", "list", "watch"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["secrets"]
|
|
||||||
verbs: ["get", "list"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["persistentvolumes"]
|
|
||||||
verbs: ["get", "list", "watch", "create", "delete"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["persistentvolumeclaims"]
|
|
||||||
verbs: ["get", "list", "watch", "update"]
|
|
||||||
- apiGroups: ["storage.k8s.io"]
|
|
||||||
resources: ["storageclasses"]
|
|
||||||
verbs: ["get", "list", "watch"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["events"]
|
|
||||||
verbs: ["list", "watch", "create", "update", "patch"]
|
|
||||||
- apiGroups: ["csi.storage.k8s.io"]
|
|
||||||
resources: ["csinodeinfos"]
|
|
||||||
verbs: ["get", "list", "watch"]
|
|
||||||
{{ if .Values.provisioner.attacher.enabled }}
|
|
||||||
- apiGroups: ["storage.k8s.io"]
|
|
||||||
resources: ["volumeattachments"]
|
|
||||||
verbs: ["get", "list", "watch", "update"]
|
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
|
@ -1,25 +0,0 @@
|
|||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: csi-metrics
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
ports:
|
|
||||||
- name: http-metrics
|
|
||||||
port: 8080
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8081
|
|
||||||
- name: grpc-metrics
|
|
||||||
port: 8090
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8091
|
|
@ -1,13 +0,0 @@
|
|||||||
{{- if .Values.serviceAccounts.provisioner.create -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-cephfs.serviceAccountName.provisioner" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-cephfs.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-cephfs.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
{{- end -}}
|
|
@ -1,71 +0,0 @@
|
|||||||
---
|
|
||||||
rbac:
|
|
||||||
create: true
|
|
||||||
|
|
||||||
serviceAccounts:
|
|
||||||
attacher:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
nodeplugin:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
provisioner:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
|
|
||||||
socketDir: /var/lib/kubelet/plugins/cephfs.csi.ceph.com
|
|
||||||
socketFile: csi.sock
|
|
||||||
registrationDir: /var/lib/kubelet/plugins_registry
|
|
||||||
pluginDir: /var/lib/kubelet/plugins
|
|
||||||
driverName: cephfs.csi.ceph.com
|
|
||||||
configMapName: ceph-csi-config
|
|
||||||
|
|
||||||
nodeplugin:
|
|
||||||
name: nodeplugin
|
|
||||||
|
|
||||||
registrar:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-node-driver-registrar
|
|
||||||
tag: v1.1.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
plugin:
|
|
||||||
image:
|
|
||||||
repository: quay.io/cephcsi/cephcsi
|
|
||||||
# for stable functionality replace canary with latest release version
|
|
||||||
tag: canary
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
name: provisioner
|
|
||||||
replicaCount: 3
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-provisioner
|
|
||||||
tag: v1.3.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
attacher:
|
|
||||||
name: attacher
|
|
||||||
enabled: true
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-attacher
|
|
||||||
tag: v1.2.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
affinity: {}
|
|
@ -1,21 +0,0 @@
|
|||||||
# Patterns to ignore when building packages.
|
|
||||||
# This supports shell glob matching, relative path matching, and
|
|
||||||
# negation (prefixed with !). Only one pattern per line.
|
|
||||||
.DS_Store
|
|
||||||
# Common VCS dirs
|
|
||||||
.git/
|
|
||||||
.gitignore
|
|
||||||
.bzr/
|
|
||||||
.bzrignore
|
|
||||||
.hg/
|
|
||||||
.hgignore
|
|
||||||
.svn/
|
|
||||||
# Common backup files
|
|
||||||
*.swp
|
|
||||||
*.bak
|
|
||||||
*.tmp
|
|
||||||
*~
|
|
||||||
# Various IDEs
|
|
||||||
.project
|
|
||||||
.idea/
|
|
||||||
*.tmproj
|
|
@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
{{ if not .Values.provisioner.attacher.enabled }}
|
|
||||||
apiVersion: storage.k8s.io/v1beta1
|
|
||||||
kind: CSIDriver
|
|
||||||
metadata:
|
|
||||||
name: {{ .Values.driverName }}
|
|
||||||
spec:
|
|
||||||
attachRequired: false
|
|
||||||
podInfoOnMount: false
|
|
||||||
{{ end }}
|
|
@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: {{ .Values.configMapName | quote }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
data:
|
|
||||||
config.json: |-
|
|
||||||
[]
|
|
@ -1,25 +0,0 @@
|
|||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.nodeplugin.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: csi-metrics
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
ports:
|
|
||||||
- name: http-metrics
|
|
||||||
port: 8080
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8080
|
|
||||||
- name: grpc-metrics
|
|
||||||
port: 8090
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8090
|
|
@ -1,17 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: Role
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.provisioner.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["configmaps"]
|
|
||||||
verbs: ["get", "list", "watch", "create", "delete"]
|
|
||||||
{{- end -}}
|
|
@ -1,55 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.provisioner.fullname" . }}-rules
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
rbac.rbd.csi.ceph.com/aggregate-to-{{ include "ceph-csi-rbd.provisioner.fullname" . }}: "true"
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["nodes"]
|
|
||||||
verbs: ["get", "list", "watch"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["secrets"]
|
|
||||||
verbs: ["get", "list"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["persistentvolumes"]
|
|
||||||
verbs: ["get", "list", "watch", "create", "update", "delete"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["persistentvolumeclaims"]
|
|
||||||
verbs: ["get", "list", "watch", "update"]
|
|
||||||
- apiGroups: ["storage.k8s.io"]
|
|
||||||
resources: ["storageclasses"]
|
|
||||||
verbs: ["get", "list", "watch"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["events"]
|
|
||||||
verbs: ["list", "watch", "create", "update", "patch"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["endpoints"]
|
|
||||||
verbs: ["get", "create", "update"]
|
|
||||||
- apiGroups: ["snapshot.storage.k8s.io"]
|
|
||||||
resources: ["volumesnapshots"]
|
|
||||||
verbs: ["get", "list", "watch", "update"]
|
|
||||||
{{ if .Values.provisioner.attacher.enabled }}
|
|
||||||
- apiGroups: ["storage.k8s.io"]
|
|
||||||
resources: ["volumeattachments"]
|
|
||||||
verbs: ["get", "list", "watch", "update"]
|
|
||||||
{{ end }}
|
|
||||||
- apiGroups: ["snapshot.storage.k8s.io"]
|
|
||||||
resources: ["volumesnapshotcontents"]
|
|
||||||
verbs: ["create", "get", "list", "watch", "update", "delete"]
|
|
||||||
- apiGroups: ["snapshot.storage.k8s.io"]
|
|
||||||
resources: ["volumesnapshotclasses"]
|
|
||||||
verbs: ["get", "list", "watch"]
|
|
||||||
- apiGroups: ["apiextensions.k8s.io"]
|
|
||||||
resources: ["customresourcedefinitions"]
|
|
||||||
verbs: ["create"]
|
|
||||||
- apiGroups: ["csi.storage.k8s.io"]
|
|
||||||
resources: ["csinodeinfos"]
|
|
||||||
verbs: ["get", "list", "watch"]
|
|
||||||
{{- end -}}
|
|
@ -1,77 +0,0 @@
|
|||||||
---
|
|
||||||
rbac:
|
|
||||||
create: true
|
|
||||||
|
|
||||||
serviceAccounts:
|
|
||||||
attacher:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
nodeplugin:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
provisioner:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
|
|
||||||
socketDir: /var/lib/kubelet/plugins/rbd.csi.ceph.com
|
|
||||||
socketFile: csi.sock
|
|
||||||
registrationDir: /var/lib/kubelet/plugins_registry
|
|
||||||
pluginDir: /var/lib/kubelet/plugins
|
|
||||||
driverName: rbd.csi.ceph.com
|
|
||||||
configMapName: ceph-csi-config
|
|
||||||
|
|
||||||
nodeplugin:
|
|
||||||
name: nodeplugin
|
|
||||||
|
|
||||||
registrar:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-node-driver-registrar
|
|
||||||
tag: v1.1.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
plugin:
|
|
||||||
image:
|
|
||||||
repository: quay.io/cephcsi/cephcsi
|
|
||||||
# for stable functionality replace canary with latest release version
|
|
||||||
tag: canary
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
name: provisioner
|
|
||||||
replicaCount: 1
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-provisioner
|
|
||||||
tag: v1.3.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
snapshotter:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-snapshotter
|
|
||||||
tag: v1.1.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
attacher:
|
|
||||||
enabled: true
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-attacher
|
|
||||||
tag: v1.2.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
affinity: {}
|
|
@ -1,21 +0,0 @@
|
|||||||
# Patterns to ignore when building packages.
|
|
||||||
# This supports shell glob matching, relative path matching, and
|
|
||||||
# negation (prefixed with !). Only one pattern per line.
|
|
||||||
.DS_Store
|
|
||||||
# Common VCS dirs
|
|
||||||
.git/
|
|
||||||
.gitignore
|
|
||||||
.bzr/
|
|
||||||
.bzrignore
|
|
||||||
.hg/
|
|
||||||
.hgignore
|
|
||||||
.svn/
|
|
||||||
# Common backup files
|
|
||||||
*.swp
|
|
||||||
*.bak
|
|
||||||
*.tmp
|
|
||||||
*~
|
|
||||||
# Various IDEs
|
|
||||||
.project
|
|
||||||
.idea/
|
|
||||||
*.tmproj
|
|
@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
appVersion: "1.0.0"
|
|
||||||
description: "Container Storage Interface (CSI) driver,
|
|
||||||
provisioner, snapshotter, and attacher for Ceph RBD"
|
|
||||||
name: ceph-csi-rbd
|
|
||||||
version: 0.8.0
|
|
||||||
keywords:
|
|
||||||
- ceph
|
|
||||||
- rbd
|
|
||||||
- ceph-csi
|
|
||||||
home: https://github.com/ceph/ceph-csi
|
|
||||||
sources:
|
|
||||||
- https://github.com/ceph/ceph-csi/tree/csi-v1.0/deploy/rbd/helm
|
|
||||||
icon: https://raw.githubusercontent.com/ceph/ceph-csi/master/assets/ceph-logo.png
|
|
@ -1,29 +0,0 @@
|
|||||||
# ceph-csi-rbd
|
|
||||||
|
|
||||||
The ceph-csi-rbd chart adds rbd volume support to your cluster.
|
|
||||||
|
|
||||||
## Install Chart
|
|
||||||
|
|
||||||
To install the Chart into your Kubernetes cluster
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm install --namespace "ceph-csi-rbd" --name "ceph-csi-rbd" ceph-csi/ceph-csi-rbd
|
|
||||||
```
|
|
||||||
|
|
||||||
After installation succeeds, you can get a status of Chart
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm status "ceph-csi-rbd"
|
|
||||||
```
|
|
||||||
|
|
||||||
If you want to delete your Chart, use this command
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm delete --purge "ceph-csi-rbd"
|
|
||||||
```
|
|
||||||
|
|
||||||
If you want to delete the namespace, use this command
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl delete namespace ceph-csi-rbd
|
|
||||||
```
|
|
@ -1,2 +0,0 @@
|
|||||||
Examples on how to configure a storage class and start using the driver are here:
|
|
||||||
https://github.com/ceph/ceph-csi/tree/csi-v1.0/examples/rbd
|
|
@ -1,90 +0,0 @@
|
|||||||
{{/* vim: set filetype=mustache: */}}
|
|
||||||
{{/*
|
|
||||||
Expand the name of the chart.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-rbd.name" -}}
|
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
If release name contains chart name it will be used as a full name.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-rbd.fullname" -}}
|
|
||||||
{{- if .Values.fullnameOverride -}}
|
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
||||||
{{- if contains $name .Release.Name -}}
|
|
||||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
If release name contains chart name it will be used as a full name.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-rbd.nodeplugin.fullname" -}}
|
|
||||||
{{- if .Values.nodeplugin.fullnameOverride -}}
|
|
||||||
{{- .Values.nodeplugin.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
||||||
{{- if contains $name .Release.Name -}}
|
|
||||||
{{- printf "%s-%s" .Release.Name .Values.nodeplugin.name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- printf "%s-%s-%s" .Release.Name $name .Values.nodeplugin.name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
If release name contains chart name it will be used as a full name.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-rbd.provisioner.fullname" -}}
|
|
||||||
{{- if .Values.provisioner.fullnameOverride -}}
|
|
||||||
{{- .Values.provisioner.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
||||||
{{- if contains $name .Release.Name -}}
|
|
||||||
{{- printf "%s-%s" .Release.Name .Values.provisioner.name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{- printf "%s-%s-%s" .Release.Name $name .Values.provisioner.name | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create chart name and version as used by the chart label.
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-rbd.chart" -}}
|
|
||||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create the name of the service account to use
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-rbd.serviceAccountName.nodeplugin" -}}
|
|
||||||
{{- if .Values.serviceAccounts.nodeplugin.create -}}
|
|
||||||
{{ default (include "ceph-csi-rbd.nodeplugin.fullname" .) .Values.serviceAccounts.nodeplugin.name }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ default "default" .Values.serviceAccounts.nodeplugin.name }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create the name of the service account to use
|
|
||||||
*/}}
|
|
||||||
{{- define "ceph-csi-rbd.serviceAccountName.provisioner" -}}
|
|
||||||
{{- if .Values.serviceAccounts.provisioner.create -}}
|
|
||||||
{{ default (include "ceph-csi-rbd.provisioner.fullname" .) .Values.serviceAccounts.provisioner.name }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ default "default" .Values.serviceAccounts.provisioner.name }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
@ -1,17 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.nodeplugin.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
aggregationRule:
|
|
||||||
clusterRoleSelectors:
|
|
||||||
- matchLabels:
|
|
||||||
rbac.rbd.csi.ceph.com/aggregate-to-{{ include "ceph-csi-rbd.nodeplugin.fullname" . }}: "true"
|
|
||||||
rules: []
|
|
||||||
{{- end -}}
|
|
@ -1,20 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.nodeplugin.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ include "ceph-csi-rbd.serviceAccountName.nodeplugin" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
roleRef:
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ include "ceph-csi-rbd.nodeplugin.fullname" . }}
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
{{- end -}}
|
|
@ -1,182 +0,0 @@
|
|||||||
kind: DaemonSet
|
|
||||||
apiVersion: apps/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.nodeplugin.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
updateStrategy:
|
|
||||||
type: OnDelete
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: {{ include "ceph-csi-rbd.serviceAccountName.nodeplugin" . }}
|
|
||||||
hostNetwork: true
|
|
||||||
hostPID: true
|
|
||||||
# to use e.g. Rook orchestrated cluster, and mons' FQDN is
|
|
||||||
# resolved through k8s service, set dns policy to cluster first
|
|
||||||
dnsPolicy: ClusterFirstWithHostNet
|
|
||||||
containers:
|
|
||||||
- name: driver-registrar
|
|
||||||
image: "{{ .Values.nodeplugin.registrar.image.repository }}:{{ .Values.nodeplugin.registrar.image.tag }}"
|
|
||||||
args:
|
|
||||||
- "--v=5"
|
|
||||||
- "--csi-address=/csi/{{ .Values.socketFile }}"
|
|
||||||
- "--kubelet-registration-path={{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
|
||||||
lifecycle:
|
|
||||||
preStop:
|
|
||||||
exec:
|
|
||||||
command: [
|
|
||||||
"/bin/sh", "-c",
|
|
||||||
'rm -rf /registration/{{ .Values.driverName }}
|
|
||||||
/registration/{{ .Values.driverName }}-reg.sock'
|
|
||||||
]
|
|
||||||
env:
|
|
||||||
- name: KUBE_NODE_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: spec.nodeName
|
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.registrar.image.pullPolicy }}
|
|
||||||
volumeMounts:
|
|
||||||
- name: socket-dir
|
|
||||||
mountPath: /csi
|
|
||||||
- name: registration-dir
|
|
||||||
mountPath: /registration
|
|
||||||
resources:
|
|
||||||
{{ toYaml .Values.nodeplugin.registrar.resources | indent 12 }}
|
|
||||||
- name: csi-rbdplugin
|
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
capabilities:
|
|
||||||
add: ["SYS_ADMIN"]
|
|
||||||
allowPrivilegeEscalation: true
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
|
||||||
args :
|
|
||||||
- "--nodeid=$(NODE_ID)"
|
|
||||||
- "--type=rbd"
|
|
||||||
- "--nodeserver=true"
|
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
|
||||||
- "--v=5"
|
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
|
||||||
- "--metricsport=8090"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--enablegrpcmetrics=false"
|
|
||||||
env:
|
|
||||||
- name: POD_IP
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: status.podIP
|
|
||||||
- name: DRIVER_NAME
|
|
||||||
value: {{ .Values.driverName }}
|
|
||||||
- name: NODE_ID
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: spec.nodeName
|
|
||||||
- name: CSI_ENDPOINT
|
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
volumeMounts:
|
|
||||||
- name: socket-dir
|
|
||||||
mountPath: {{ .Values.socketDir }}
|
|
||||||
- name: plugin-dir
|
|
||||||
mountPath: {{ .Values.pluginDir }}
|
|
||||||
mountPropagation: "Bidirectional"
|
|
||||||
- name: mountpoint-dir
|
|
||||||
mountPath: /var/lib/kubelet/pods
|
|
||||||
mountPropagation: "Bidirectional"
|
|
||||||
- mountPath: /dev
|
|
||||||
name: host-dev
|
|
||||||
- mountPath: /sys
|
|
||||||
name: host-sys
|
|
||||||
- mountPath: /lib/modules
|
|
||||||
name: lib-modules
|
|
||||||
readOnly: true
|
|
||||||
- name: ceph-csi-config
|
|
||||||
mountPath: /etc/ceph-csi-config/
|
|
||||||
- name: keys-tmp-dir
|
|
||||||
mountPath: /tmp/csi/keys
|
|
||||||
resources:
|
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
|
||||||
- name: liveness-prometheus
|
|
||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
|
||||||
args:
|
|
||||||
- "--type=liveness"
|
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
|
||||||
- "--metricsport=8081"
|
|
||||||
- "--metricspath=/metrics"
|
|
||||||
- "--polltime=60s"
|
|
||||||
- "--timeout=3s"
|
|
||||||
imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }}
|
|
||||||
env:
|
|
||||||
- name: CSI_ENDPOINT
|
|
||||||
value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}"
|
|
||||||
- name: POD_IP
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: status.podIP
|
|
||||||
volumeMounts:
|
|
||||||
- name: plugin-dir
|
|
||||||
mountPath: {{ .Values.socketDir }}
|
|
||||||
resources:
|
|
||||||
{{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }}
|
|
||||||
volumes:
|
|
||||||
- name: socket-dir
|
|
||||||
hostPath:
|
|
||||||
path: {{ .Values.socketDir }}
|
|
||||||
type: DirectoryOrCreate
|
|
||||||
- name: registration-dir
|
|
||||||
hostPath:
|
|
||||||
path: {{ .Values.registrationDir }}
|
|
||||||
type: Directory
|
|
||||||
- name: plugin-dir
|
|
||||||
hostPath:
|
|
||||||
path: {{ .Values.pluginDir }}
|
|
||||||
type: Directory
|
|
||||||
- name: mountpoint-dir
|
|
||||||
hostPath:
|
|
||||||
path: /var/lib/kubelet/pods
|
|
||||||
type: DirectoryOrCreate
|
|
||||||
- name: host-dev
|
|
||||||
hostPath:
|
|
||||||
path: /dev
|
|
||||||
- name: host-sys
|
|
||||||
hostPath:
|
|
||||||
path: /sys
|
|
||||||
- name: lib-modules
|
|
||||||
hostPath:
|
|
||||||
path: /lib/modules
|
|
||||||
- name: ceph-csi-config
|
|
||||||
configMap:
|
|
||||||
name: {{ .Values.configMapName | quote }}
|
|
||||||
- name: keys-tmp-dir
|
|
||||||
emptyDir: {
|
|
||||||
medium: "Memory"
|
|
||||||
}
|
|
||||||
{{- if .Values.nodeplugin.affinity }}
|
|
||||||
affinity:
|
|
||||||
{{ toYaml .Values.nodeplugin.affinity . | indent 8 -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- if .Values.nodeplugin.nodeSelector }}
|
|
||||||
nodeSelector:
|
|
||||||
{{ toYaml .Values.nodeplugin.nodeSelector | indent 8 -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- if .Values.nodeplugin.tolerations }}
|
|
||||||
tolerations:
|
|
||||||
{{ toYaml .Values.nodeplugin.tolerations | indent 8 -}}
|
|
||||||
{{- end -}}
|
|
@ -1,29 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.nodeplugin.fullname" . }}-rules
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
rbac.rbd.csi.ceph.com/aggregate-to-{{ include "ceph-csi-rbd.nodeplugin.fullname" . }}: "true"
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["nodes"]
|
|
||||||
verbs: ["get", "list", "update"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["namespaces"]
|
|
||||||
verbs: ["get", "list"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["persistentvolumes"]
|
|
||||||
verbs: ["get", "list", "watch", "update"]
|
|
||||||
- apiGroups: ["storage.k8s.io"]
|
|
||||||
resources: ["volumeattachments"]
|
|
||||||
verbs: ["get", "list", "watch", "update"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["configmaps"]
|
|
||||||
verbs: ["get", "list"]
|
|
||||||
{{- end -}}
|
|
@ -1,25 +0,0 @@
|
|||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.nodeplugin.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: csi-metrics
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
ports:
|
|
||||||
- name: http-metrics
|
|
||||||
port: 8080
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8080
|
|
||||||
- name: grpc-metrics
|
|
||||||
port: 8090
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8090
|
|
@ -1,13 +0,0 @@
|
|||||||
{{- if .Values.serviceAccounts.nodeplugin.create -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.serviceAccountName.nodeplugin" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.nodeplugin.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
{{- end -}}
|
|
@ -1,17 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.provisioner.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
aggregationRule:
|
|
||||||
clusterRoleSelectors:
|
|
||||||
- matchLabels:
|
|
||||||
rbac.rbd.csi.ceph.com/aggregate-to-{{ include "ceph-csi-rbd.provisioner.fullname" . }}: "true"
|
|
||||||
rules: []
|
|
||||||
{{- end -}}
|
|
@ -1,20 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.provisioner.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ include "ceph-csi-rbd.serviceAccountName.provisioner" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
roleRef:
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ include "ceph-csi-rbd.provisioner.fullname" . }}
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
{{- end -}}
|
|
@ -1,21 +0,0 @@
|
|||||||
{{- if .Values.rbac.create -}}
|
|
||||||
kind: RoleBinding
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.provisioner.fullname" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ include "ceph-csi-rbd.serviceAccountName.provisioner" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
roleRef:
|
|
||||||
kind: Role
|
|
||||||
name: {{ include "ceph-csi-rbd.provisioner.fullname" . }}
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
{{- end -}}
|
|
@ -1,13 +0,0 @@
|
|||||||
{{- if .Values.serviceAccounts.provisioner.create -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ceph-csi-rbd.serviceAccountName.provisioner" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "ceph-csi-rbd.name" . }}
|
|
||||||
chart: {{ include "ceph-csi-rbd.chart" . }}
|
|
||||||
component: {{ .Values.provisioner.name }}
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
heritage: {{ .Release.Service }}
|
|
||||||
{{- end -}}
|
|
@ -1,78 +0,0 @@
|
|||||||
---
|
|
||||||
rbac:
|
|
||||||
create: true
|
|
||||||
|
|
||||||
serviceAccounts:
|
|
||||||
attacher:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
nodeplugin:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
provisioner:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
|
|
||||||
socketDir: /var/lib/kubelet/plugins/rbd.csi.ceph.com
|
|
||||||
socketFile: csi.sock
|
|
||||||
registrationDir: /var/lib/kubelet/plugins_registry
|
|
||||||
pluginDir: /var/lib/kubelet/plugins
|
|
||||||
driverName: rbd.csi.ceph.com
|
|
||||||
configMapName: ceph-csi-config
|
|
||||||
|
|
||||||
nodeplugin:
|
|
||||||
name: nodeplugin
|
|
||||||
|
|
||||||
registrar:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-node-driver-registrar
|
|
||||||
tag: v1.1.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
plugin:
|
|
||||||
image:
|
|
||||||
repository: quay.io/cephcsi/cephcsi
|
|
||||||
# for stable functionality replace canary with latest release version
|
|
||||||
tag: canary
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
name: provisioner
|
|
||||||
replicaCount: 3
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-provisioner
|
|
||||||
tag: v1.3.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
attacher:
|
|
||||||
name: attacher
|
|
||||||
enabled: true
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-attacher
|
|
||||||
tag: v1.2.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
snapshotter:
|
|
||||||
image:
|
|
||||||
repository: quay.io/k8scsi/csi-snapshotter
|
|
||||||
tag: v1.2.1
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
affinity: {}
|
|
@ -190,3 +190,14 @@ Dynamically povisioned volumes are deleted by the driver, when requested to
|
|||||||
do so. Statically provisioned volumes, from plugin versions less than or
|
do so. Statically provisioned volumes, from plugin versions less than or
|
||||||
equal to 1.0.0, are a no-op when a delete operation is performed against the
|
equal to 1.0.0, are a no-op when a delete operation is performed against the
|
||||||
same, and are expected to be deleted on the Ceph cluster by the user.
|
same, and are expected to be deleted on the Ceph cluster by the user.
|
||||||
|
|
||||||
|
## Deployment with Helm
|
||||||
|
|
||||||
|
The same requirements from the Kubernetes section apply here, i.e. Kubernetes
|
||||||
|
version, privileged flag and shared mounts.
|
||||||
|
|
||||||
|
The Helm chart is located in `charts/ceph-csi-cephfs`.
|
||||||
|
|
||||||
|
**Deploy Helm Chart:**
|
||||||
|
|
||||||
|
[See the Helm chart readme for installation instructions.](../charts/ceph-csi-cephfs/README.md)
|
||||||
|
@ -151,14 +151,8 @@ test the deployment further.
|
|||||||
The same requirements from the Kubernetes section apply here, i.e. Kubernetes
|
The same requirements from the Kubernetes section apply here, i.e. Kubernetes
|
||||||
version, privileged flag and shared mounts.
|
version, privileged flag and shared mounts.
|
||||||
|
|
||||||
The Helm chart is located in `deploy/rbd/kubernetes/v1.14+/helm/ceph-csi-rbd`.
|
The Helm chart is located in `charts/ceph-csi-rbd`.
|
||||||
|
|
||||||
**Deploy Helm Chart:**
|
**Deploy Helm Chart:**
|
||||||
|
|
||||||
```bash
|
[See the Helm chart readme for installation instructions.](../charts/ceph-csi-rbd/README.md)
|
||||||
helm install deploy/rbd/kubernetes/v1.14+/helm/ceph-csi-rbd
|
|
||||||
```
|
|
||||||
|
|
||||||
The Helm chart deploys all of the required resources to use the CSI RBD driver.
|
|
||||||
After deploying the chart you can verify the deployment using the instructions
|
|
||||||
above for verifying the deployment with Kubernetes
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user