Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Release.Name }}-node
namespace: {{ .Release.Namespace }}
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-node
rules:
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["create", "delete", "get", "list", "watch", "update"]
- apiGroups: [""]
resources: ["persistentvolumesclaims"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: [""]
resources: ["events"]
verbs: ["get", "list", "watch", "create", "update", "patch"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "watch", "update", "patch"]
- apiGroups: ["storage.k8s.io"]
resources: ["volumeattachments"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["volumeattachments"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: [ "security.openshift.io" ]
resourceNames: [ "privileged" ]
resources: [ "securitycontextconstraints" ]
verbs: [ "use" ]
{{- if hasKey .Values "podmon" }}
{{- if eq .Values.podmon.enabled true }}
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch", "update", "delete"]
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["get", "watch", "list", "delete", "update", "create"]
{{ end }}
{{ end }}
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-node
subjects:
- kind: ServiceAccount
name: {{ .Release.Name }}-node
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-node
apiGroup: rbac.authorization.k8s.io
---
kind: DaemonSet
apiVersion: apps/v1
metadata:
name: {{ .Release.Name }}-node
namespace: {{ .Release.Namespace }}
{{- if hasKey .Values "authorization" }}
{{- if eq .Values.authorization.enabled true }}
annotations:
com.dell.karavi-authorization-proxy: "true"
{{ end }}
{{ end }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}-node
template:
metadata:
labels:
app: {{ .Release.Name }}-node
{{- if .Values.podmon.enabled }}
driver.dellemc.com: dell-storage
{{- end }}
spec:
serviceAccount: {{ .Release.Name }}-node
{{ if .Values.node.nodeSelector }}
nodeSelector:
{{- toYaml .Values.node.nodeSelector | nindent 8 }}
{{ end }}
{{ if .Values.node.tolerations }}
tolerations:
{{- toYaml .Values.node.tolerations | nindent 8 }}
{{ end }}
hostNetwork: true
dnsPolicy: {{ .Values.node.dnsPolicy }}
containers:
{{- $encModes := list false }}
{{- if eq .Values.encryption.enabled true }}
{{- $encModes = list false true }}
{{- end }}
{{- range $encrypted := $encModes }}
{{- with $ }}
{{- $driverSock := "csi_sock" }}
{{- $csiSidecarSuffix := "" }}
{{- if $encrypted }}
{{- $driverSock = "csi_sec_sock" }}
{{- $csiSidecarSuffix = "-sec" }}
{{- end }}
{{- if hasKey .Values "podmon" }}
{{- if eq .Values.podmon.enabled true }}
- name: podmon
securityContext:
privileged: true
capabilities:
add: ["SYS_ADMIN"]
allowPrivilegeEscalation: true
image: {{ required "Must provide the podmon container image." .Values.podmon.image }}
imagePullPolicy: {{ .Values.imagePullPolicy }}
args:
{{- toYaml .Values.podmon.node.args | nindent 12 }}
env:
- name: KUBE_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
- name: X_CSI_PRIVATE_MOUNT_DIR
value: "{{ .Values.kubeletConfigDir }}/plugins/csi-isilon/disks"
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: kubelet-pods
mountPath: {{ .Values.kubeletConfigDir }}/pods
mountPropagation: "Bidirectional"
- name: driver-path
mountPath: {{ .Values.kubeletConfigDir }}/plugins/csi-isilon
mountPropagation: "Bidirectional"
- name: volumedevices-path
mountPath: {{ .Values.kubeletConfigDir }}/plugins/kubernetes.io/csi/volumeDevices
mountPropagation: "Bidirectional"
- name: dev
mountPath: /dev
- name: usr-bin
mountPath: /usr-bin
- name: var-run
mountPath: /var/run
- name: csi-isilon-config-params
mountPath: /csi-isilon-config-params
{{- end }}
{{- end }}
{{- if not $encrypted }}
- name: driver
command: ["/csi-isilon"]
args:
- "--driver-config-params=/csi-isilon-config-params/driver-config-params.yaml"
securityContext:
privileged: true
capabilities:
add: ["SYS_ADMIN"]
allowPrivilegeEscalation: true
image: {{ required "Must provide the Isilon driver image repository." .Values.images.driverRepository }}/{{ .Chart.Name }}:{{ .Values.version }}
imagePullPolicy: {{ .Values.imagePullPolicy }}
env:
- name: CSI_ENDPOINT
value: "{{ .Values.kubeletConfigDir }}/plugins/csi-isilon/{{ $driverSock }}"
- name: X_CSI_MODE
value: node
- name: X_CSI_ISI_SKIP_CERTIFICATE_VALIDATION
value: "{{ .Values.skipCertificateValidation }}"
- name: X_CSI_ISI_AUTH_TYPE
value: "{{ .Values.isiAuthType }}"
- name: X_CSI_ALLOWED_NETWORKS
value: "{{ .Values.allowedNetworks }}"
- name: X_CSI_VERBOSE
value: "{{ .Values.verbose }}"
- name: X_CSI_PRIVATE_MOUNT_DIR
value: "{{ .Values.kubeletConfigDir }}/plugins/csi-isilon/disks"
- name: X_CSI_ISI_PORT
value: "{{ .Values.endpointPort }}"
- name: X_CSI_ISI_PATH
value: {{ .Values.isiPath }}
- name: X_CSI_ISI_NO_PROBE_ON_START
value: "{{ .Values.noProbeOnStart }}"
- name: X_CSI_ISI_AUTOPROBE
value: "{{ .Values.autoProbe }}"
- name: X_CSI_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: X_CSI_NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: SSL_CERT_DIR
value: /certs
- name: X_CSI_ISI_QUOTA_ENABLED
value: "{{ .Values.enableQuota }}"
- name: X_CSI_CUSTOM_TOPOLOGY_ENABLED
value: "{{ .Values.enableCustomTopology }}"
- name: X_CSI_ISI_CONFIG_PATH
value: /isilon-configs/config
- name: X_CSI_MAX_VOLUMES_PER_NODE
value: "{{ .Values.maxIsilonVolumesPerNode }}"
- name: X_CSI_HEALTH_MONITOR_ENABLED
value: "{{ .Values.node.healthMonitor.enabled }}"
- name: X_CSI_PODMON_ENABLED
value: "{{ .Values.podmon.enabled }}"
- name: X_CSI_PODMON_API_PORT
value: "{{ .Values.podmonAPIPort }}"
{{- if eq .Values.podmon.enabled true }}
{{- range $key, $value := .Values.podmon.node.args }}
{{- if contains "--arrayConnectivityPollRate" $value }}
- name: X_CSI_PODMON_ARRAY_CONNECTIVITY_POLL_RATE
value: "{{ (split "=" $value)._1 }}"
{{ end }}
{{ end }}
{{ end }}
- name: X_CSI_MAX_PATH_LIMIT
value: "{{ .Values.maxPathLen }}"
volumeMounts:
- name: driver-path
mountPath: {{ .Values.kubeletConfigDir }}/plugins/csi-isilon
{{- if eq .Values.encryption.enabled true }}
- name: staging-dir
mountPath: {{ .Values.kubeletConfigDir }}/plugins/kubernetes.io/csi
mountPropagation: Bidirectional
{{- else }}
- name: volumedevices-path
mountPath: {{ .Values.kubeletConfigDir }}/plugins/kubernetes.io/csi/volumeDevices
{{- end }}
- name: pods-path
mountPath: {{ .Values.kubeletConfigDir }}/pods
mountPropagation: "Bidirectional"
- name: dev
mountPath: /dev
- name: certs
mountPath: /certs
readOnly: true
- name: isilon-configs
mountPath: /isilon-configs
- name: csi-isilon-config-params
mountPath: /csi-isilon-config-params
{{- end }}
- name: registrar{{ $csiSidecarSuffix }}
image: {{ required "Must provide the CSI node registrar container image." ( include "csi-isilon.registrarImage" . ) }}
imagePullPolicy: {{ .Values.imagePullPolicy }}
args:
- "--v=5"
- "--csi-address=/csi/{{ $driverSock }}"
- --kubelet-registration-path={{ .Values.kubeletConfigDir }}/plugins/csi-isilon/{{ $driverSock }}
env:
- name: KUBE_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
volumeMounts:
- name: registration-dir
mountPath: /registration
- name: driver-path
mountPath: /csi
{{- if not $encrypted }}
{{- if hasKey .Values "authorization" }}
{{- if eq .Values.authorization.enabled true }}
- name: karavi-authorization-proxy
imagePullPolicy: {{ .Values.imagePullPolicy }}
image: {{ required "Must provide the authorization sidecar container image." .Values.authorization.sidecarProxyImage }}
env:
- name: PROXY_HOST
value: "{{ .Values.authorization.proxyHost }}"
- name: SKIP_CERTIFICATE_VALIDATION
value: "{{ .Values.authorization.skipCertificateValidation }}"
- name: PLUGIN_IDENTIFIER
value: powerscale
- name: ACCESS_TOKEN
valueFrom:
secretKeyRef:
name: proxy-authz-tokens
key: access
- name: REFRESH_TOKEN
valueFrom:
secretKeyRef:
name: proxy-authz-tokens
key: refresh
volumeMounts:
- name: karavi-authorization-config
mountPath: /etc/karavi-authorization/config
- name: proxy-server-root-certificate
mountPath: /etc/karavi-authorization/root-certificates
- name: csi-isilon-config-params
mountPath: /etc/karavi-authorization
{{ end }}
{{ end }}
{{- end }}
{{- if $encrypted }}
- name: driver-sec
image: {{ .Values.encryption.image }}
imagePullPolicy: {{ .Values.imagePullPolicy }}
securityContext:
privileged: true
allowPrivilegeEscalation: true
capabilities:
add: ["SYS_ADMIN"]
args:
- --name={{ .Values.encryption.pluginName }}
- --nodeId=$(NODE_ID)
- "--endpoint=unix://var/run/csi/csi_sec_sock"
- "--targetEndpoint=unix://var/run/csi/csi_sock"
- --targetType=Isilon
- --vaultClientConfig=/etc/dea/vault/client.json
- --logLevel={{ .Values.encryption.logLevel }}
- --licenseName=/etc/dea/license/license
{{- if .Values.encryption.livenessPort }}
- --livenessPort={{ .Values.encryption.livenessPort }}
{{- end}}
- --apiPort={{ .Values.encryption.apiPort }}
{{- range index .Values.encryption.extraArgs }}
- {{ . | quote }}
{{- end }}
env:
- name: NODE_ID
valueFrom:
fieldRef:
fieldPath: spec.nodeName
{{- if eq .Values.encryption.ocp true }}
- name: CORE_ID
value: "{{ required "encryption.ocpCoreID not set to core user uid:gid" .Values.encryption.ocpCoreID }}"
{{- end }}
volumeMounts:
- name: vault-config
mountPath: /etc/dea/vault
- name: driver-path
mountPath: /var/run/csi
- name: pods-path
mountPath: {{ .Values.kubeletConfigDir }}/pods
mountPropagation: Bidirectional
- name: staging-dir
mountPath: {{ .Values.kubeletConfigDir }}/plugins/kubernetes.io/csi
mountPropagation: Bidirectional
- name: user-home
{{- if eq .Values.encryption.ocp true }}
mountPath: /corehome
{{- else }}
mountPath: /roothome
{{- end }}
- name: license-config
mountPath: /etc/dea/license
{{- if .Values.encryption.livenessPort }}
livenessProbe:
httpGet:
path: /liveprobe
port: {{ .Values.encryption.livenessPort }}
initialDelaySeconds: 1500
periodSeconds: 1000
timeoutSeconds: 3
failureThreshold: 100
{{- end }}
{{- end }}
{{- end }}
{{- end }}
volumes:
- name: registration-dir
hostPath:
path: {{ .Values.kubeletConfigDir }}/plugins_registry/
type: DirectoryOrCreate
- name: driver-path
hostPath:
path: {{ .Values.kubeletConfigDir }}/plugins/csi-isilon
type: DirectoryOrCreate
- name: volumedevices-path
hostPath:
path: {{ .Values.kubeletConfigDir }}/plugins/kubernetes.io/csi/volumeDevices
type: DirectoryOrCreate
- name: pods-path
hostPath:
path: {{ .Values.kubeletConfigDir }}/pods
type: Directory
- name: dev
hostPath:
path: /dev
type: Directory
- name: certs
projected:
sources:
{{- range $i, $e := until (int .Values.certSecretCount ) }}
- secret:
name: {{ print $.Release.Name "-certs-" $e }}
items:
- key: cert-{{ $e }}
path: cert-{{ $e }}
{{- end }}
- name: isilon-configs
secret:
secretName: {{ .Release.Name }}-creds
- name: csi-isilon-config-params
configMap:
name: {{ .Release.Name }}-config-params
{{- if hasKey .Values "authorization" }}
{{- if eq .Values.authorization.enabled true }}
- name: karavi-authorization-config
secret:
secretName: karavi-authorization-config
- name: proxy-server-root-certificate
secret:
secretName: proxy-server-root-certificate
{{ end }}
{{ end }}
{{- if hasKey .Values "podmon" }}
{{- if eq .Values.podmon.enabled true }}
- name: usr-bin
hostPath:
path: /usr/bin
type: Directory
- name: kubelet-pods
hostPath:
path: /var/lib/kubelet/pods
type: Directory
- name: var-run
hostPath:
path: /var/run
type: Directory
{{ end }}
{{ end }}
{{- if eq .Values.encryption.enabled true }}
- name: vault-config
projected:
sources:
- secret:
name: vault-cert
- secret:
name: vault-auth
- configMap:
name: vault-client-conf
- name: staging-dir
hostPath:
path: {{ .Values.kubeletConfigDir }}/plugins/kubernetes.io/csi
type: DirectoryOrCreate
- name: user-home
hostPath:
{{- if eq .Values.encryption.ocp true }}
path: /home/core
{{- else }}
path: /root
{{- end }}
type: Directory
- name: license-config
secret:
secretName: encryption-license
{{- end }}