[SEBA-83]
Create charts/docs for Persistent Storage
- Ceph (block volumes, and shared filesystem) using Rook
- Local mounted volumes with local-provisioner
- Local directories with local-directory
Change-Id: I65e8a55ca4fbdb6c9754beec6b7ce5ea010ad642
diff --git a/storage/local-directory/Chart.yaml b/storage/local-directory/Chart.yaml
new file mode 100644
index 0000000..d343bf9
--- /dev/null
+++ b/storage/local-directory/Chart.yaml
@@ -0,0 +1,17 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+name: local-directory
+version: 0.1.0-dev0
diff --git a/storage/local-directory/local-directory-playbook.yaml b/storage/local-directory/local-directory-playbook.yaml
new file mode 100644
index 0000000..0c03add
--- /dev/null
+++ b/storage/local-directory/local-directory-playbook.yaml
@@ -0,0 +1,41 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+# This playbook will create directories needed by the local-directories helm
+# chart that will be turned into k8s PersistentVolumes
+#
+# For dev use only - use real volumes/disks in production
+
+- hosts: all
+ become: yes
+
+ vars:
+ helm_values_file: ./values.yaml
+
+ tasks:
+ - name: Read yaml from helm_values_file
+ set_fact:
+ helm_values: "{{ lookup('file', helm_values_file) | from_yaml }}"
+
+ - name: Create directories on nodes
+ when: item.host == ansible_hostname
+ file:
+ path: "{{ item.directory }}"
+ state: directory
+ owner: root
+ group: root
+ mode: 0755
+ with_items: "{{ helm_values.volumes }}"
+
diff --git a/storage/local-directory/templates/NOTES.txt b/storage/local-directory/templates/NOTES.txt
new file mode 100644
index 0000000..7cf053a
--- /dev/null
+++ b/storage/local-directory/templates/NOTES.txt
@@ -0,0 +1,9 @@
+A StorageClass was created: {{ .Values.storageClassName }}
+
+The following PersistentVolumes were created using directories on these nodes:
+
+# PV Name, Host, Size, Host Directory
+{{- range $volume := .Values.volumes }}
+{{ $volume.name }}, {{ $volume.host}}, {{ $volume.size }}, {{ $volume.directory }}
+{{- end }}
+
diff --git a/storage/local-directory/templates/localdirs.yaml b/storage/local-directory/templates/localdirs.yaml
new file mode 100644
index 0000000..04a9f51
--- /dev/null
+++ b/storage/local-directory/templates/localdirs.yaml
@@ -0,0 +1,46 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# 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: StorageClass
+apiVersion: storage.k8s.io/v1
+metadata:
+ name: {{ .Values.storageClassName }}
+provisioner: kubernetes.io/no-provisioner
+volumeBindingMode: WaitForFirstConsumer
+
+{{- range $volume := .Values.volumes }}
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+ name: {{ $volume.name }}
+spec:
+ capacity:
+ storage: {{ $volume.size }}
+ accessModes:
+ - ReadWriteOnce
+ persistentVolumeReclaimPolicy: Retain
+ storageClassName: {{ $.Values.storageClassName }}
+ local:
+ path: {{ $volume.directory }}
+ nodeAffinity:
+ required:
+ nodeSelectorTerms:
+ - matchExpressions:
+ - key: kubernetes.io/hostname
+ operator: In
+ values:
+ - {{ $volume.host }}
+{{- end }}
diff --git a/storage/local-directory/values.yaml b/storage/local-directory/values.yaml
new file mode 100644
index 0000000..fbafd9b
--- /dev/null
+++ b/storage/local-directory/values.yaml
@@ -0,0 +1,27 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+storageClassName: local-directory
+
+volumes:
+ - name: "small-pv"
+ size: "2Gi"
+ host: "node1"
+ directory: "/var/kubernetes_local_directories/small-pv"
+ - name: "large-pv"
+ size: "10Gi"
+ host: "node1"
+ directory: "/var/kubernetes_local_directories/large-pv"
+