From acba0494772e847337a87b4c16b946069663a440 Mon Sep 17 00:00:00 2001 From: sushil masal Date: Mon, 25 Mar 2019 18:32:16 +0530 Subject: [PATCH] default storageclass and nfs provisioner Issue-ID: OOM-1500 Change-Id: I15dd98ea8042914220f1b6025e93f65224bb9adb Signed-off-by: sushil masal --- kubernetes/common/nfs-provisioner/Chart.yaml | 18 +++++ .../common/nfs-provisioner/requirements.yaml | 18 +++++ .../nfs-provisioner/templates/nfs-provisoner.yaml | 78 ++++++++++++++++++++++ .../common/nfs-provisioner/templates/service.yaml | 39 +++++++++++ kubernetes/common/nfs-provisioner/values.yaml | 50 ++++++++++++++ kubernetes/onap/requirements.yaml | 6 +- kubernetes/onap/templates/storageclass.yaml | 34 ++++++++++ kubernetes/onap/values.yaml | 8 ++- 8 files changed, 249 insertions(+), 2 deletions(-) create mode 100644 kubernetes/common/nfs-provisioner/Chart.yaml create mode 100644 kubernetes/common/nfs-provisioner/requirements.yaml create mode 100644 kubernetes/common/nfs-provisioner/templates/nfs-provisoner.yaml create mode 100644 kubernetes/common/nfs-provisioner/templates/service.yaml create mode 100644 kubernetes/common/nfs-provisioner/values.yaml create mode 100644 kubernetes/onap/templates/storageclass.yaml diff --git a/kubernetes/common/nfs-provisioner/Chart.yaml b/kubernetes/common/nfs-provisioner/Chart.yaml new file mode 100644 index 0000000000..fcb69b31e3 --- /dev/null +++ b/kubernetes/common/nfs-provisioner/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2019 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: NFS provisioner +name: nfs-provisioner +version: 4.0.0 diff --git a/kubernetes/common/nfs-provisioner/requirements.yaml b/kubernetes/common/nfs-provisioner/requirements.yaml new file mode 100644 index 0000000000..d175386e2b --- /dev/null +++ b/kubernetes/common/nfs-provisioner/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright © 2019 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~4.x-0 + repository: '@local' diff --git a/kubernetes/common/nfs-provisioner/templates/nfs-provisoner.yaml b/kubernetes/common/nfs-provisioner/templates/nfs-provisoner.yaml new file mode 100644 index 0000000000..58cf7a3866 --- /dev/null +++ b/kubernetes/common/nfs-provisioner/templates/nfs-provisoner.yaml @@ -0,0 +1,78 @@ +{{/* +# Copyright © 2019 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + strategy: + type: Recreate + template: + metadata: + labels: + app: {{ include "common.fullname" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ include "common.fullname" . }} + image: "{{ .Values.global.nfsprovisionerRepository | default .Values.nfsprovisionerRepository }}/{{ .Values.nfsprovisionerImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - name: nfs + containerPort: {{ .Values.service.nfsPort }} + - name: mountd + containerPort: {{ .Values.service.mountdPort }} + - name: rpcbind + containerPort: {{ .Values.service.rpcbindPort }} + - name: rpcbind-udp + containerPort: {{ .Values.service.rpcbindUdpPort }} + protocol: UDP + securityContext: + capabilities: + add: + - DAC_READ_SEARCH + - SYS_RESOURCE + args: + - "-provisioner={{ include "common.namespace" . }}/nfs" + env: + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: SERVICE_NAME + value: {{ include "common.servicename" . }} + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumeMounts: + - name: export-volume + mountPath: /export + {{- if .Values.affinity }} + affinity: + {{ toYaml .Values.affinity | indent 8 }} + {{- end }} + volumes: + - name: export-volume + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }} diff --git a/kubernetes/common/nfs-provisioner/templates/service.yaml b/kubernetes/common/nfs-provisioner/templates/service.yaml new file mode 100644 index 0000000000..f9bba0f872 --- /dev/null +++ b/kubernetes/common/nfs-provisioner/templates/service.yaml @@ -0,0 +1,39 @@ +{{/* +# Copyright © 2019 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +kind: Service +apiVersion: v1 +metadata: + name: {{ include "common.servicename" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + ports: + - name: nfs + port: {{ .Values.service.nfsPort }} + - name: mountd + port: {{ .Values.service.mountdPort }} + - name: rpcbind + port: {{ .Values.service.rpcbindPort }} + - name: rpcbind-udp + port: {{ .Values.service.rpcbindUdpPort }} + protocol: UDP + selector: + app: {{ include "common.fullname" . }} \ No newline at end of file diff --git a/kubernetes/common/nfs-provisioner/values.yaml b/kubernetes/common/nfs-provisioner/values.yaml new file mode 100644 index 0000000000..687219d680 --- /dev/null +++ b/kubernetes/common/nfs-provisioner/values.yaml @@ -0,0 +1,50 @@ +# Copyright © 2019 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + persistence: + mountPath: /dockerdata-nfs + +################################################################# +# Application configuration defaults. +################################################################# + +dockerHubRepository: registry.hub.docker.com +pullPolicy: Always + +# default number of instances + +nodeSelector: {} + +affinity: {} + +service: + name: nfs-provisioner + nfsPort: 2049 + mountdPort: 20048 + rpcbindPort: 111 + rpcbindUdpPort: 111 + +## Persist data to a persitent volume +persistence: + enabled: true + mountPath: /dockerdata-nfs + +## NFS provisioner image properties +nfsprovisionerRepository: quay.io +nfsprovisionerImage: kubernetes_incubator/nfs-provisioner:v1.0.8 + diff --git a/kubernetes/onap/requirements.yaml b/kubernetes/onap/requirements.yaml index 43794d286d..ad6aadacb7 100644 --- a/kubernetes/onap/requirements.yaml +++ b/kubernetes/onap/requirements.yaml @@ -1,4 +1,4 @@ -# Copyright © 2017 Amdocs, Bell Canada +# Copyright © 2019 Amdocs, Bell Canada # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -88,6 +88,10 @@ dependencies: version: ~4.x-0 repository: '@local' condition: nbi.enabled + - name: nfs-provisioner + version: ~4.x-0 + repository: '@local' + condition: nfs-provisioner.enabled - name: pnda version: ~4.x-0 repository: '@local' diff --git a/kubernetes/onap/templates/storageclass.yaml b/kubernetes/onap/templates/storageclass.yaml new file mode 100644 index 0000000000..5418da78b5 --- /dev/null +++ b/kubernetes/onap/templates/storageclass.yaml @@ -0,0 +1,34 @@ +{{/* +# Copyright © 2019 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{ if .Values.global.persistence.enableDefaultStorageclass }} +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + name: "{{ include "common.namespace" . }}-default-storageclass" + namespace: {{ include "common.namespace" . }} + annotations: + storageclass.kubernetes.io/is-default-class: "true" + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +provisioner: {{ .Values.global.persistence.storageclassProvisioner }} +reclaimPolicy: {{ .Values.global.persistence.volumeReclaimPolicy }} +parameters: +{{ toYaml .Values.global.persistence.parameters | indent 2 }} +{{ end }} diff --git a/kubernetes/onap/values.yaml b/kubernetes/onap/values.yaml index 6b283dbc94..b62606ebde 100644 --- a/kubernetes/onap/values.yaml +++ b/kubernetes/onap/values.yaml @@ -1,4 +1,4 @@ -# Copyright © 2018 Amdocs, Bell Canada +# Copyright © 2019 Amdocs, Bell Canada # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -46,6 +46,10 @@ global: # by persistent volumes and log files persistence: mountPath: /dockerdata-nfs + enableDefaultStorageclass: false + parameters: {} + storageclassProvisioner: kubernetes.io/no-provisioner + volumeReclaimPolicy: Retain # override default resource limit flavor for all charts flavor: unlimited @@ -107,6 +111,8 @@ nbi: # openstack configuration openStackRegion: "Yolo" openStackVNFTenantId: "1234" +nfs-provisioner: + enabled: true policy: enabled: false pomba: -- 2.16.6