From 0311df550cc4531d55a34376a3c4f5836a48fd0c Mon Sep 17 00:00:00 2001 From: Zhe Huang Date: Sun, 18 Aug 2019 00:10:52 -0400 Subject: [PATCH] Add support for Ceph based PV for chartmuseum and dashboard Signed-off-by: Zhe Huang Change-Id: Id157c1284260c0a789faf2945a2991fcf0a1f378 --- RECIPE_EXAMPLE/RIC_INFRA_RECIPE_EXAMPLE | 7 ++- .../bin/clear_data_path => bin/clean-up-aux | 31 ++--------- ric-aux/80-Auxiliary-Functions/bin/install | 63 ++++++++++++++++++++++ .../helm/dashboard/templates/persistentVolume.yaml | 16 +++++- .../dashboard/templates/persistentVolumeClaim.yaml | 2 +- .../helm/dashboard/templates/storageClass.yaml | 6 --- .../helm/dashboard/values.yaml | 4 +- ric-infra/15-Chartmuseum/bin/install | 57 +++++++++++++++++--- .../helm/chartmuseum/templates/deployment.yaml | 3 ++ .../helm/chartmuseum/templates/job-save-certs.yaml | 5 +- .../chartmuseum/templates/persistentVolume.yaml | 15 +++++- .../templates/persistentVolumeClaim.yaml | 2 +- .../helm/chartmuseum/templates/storageClass.yaml | 6 --- .../15-Chartmuseum/helm/chartmuseum/values.yaml | 13 +++-- ric-infra/45-Tiller/bin/install | 35 ++++++------ 15 files changed, 188 insertions(+), 77 deletions(-) rename ric-infra/15-Chartmuseum/bin/clear_data_path => bin/clean-up-aux (68%) delete mode 100644 ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/storageClass.yaml delete mode 100644 ric-infra/15-Chartmuseum/helm/chartmuseum/templates/storageClass.yaml diff --git a/RECIPE_EXAMPLE/RIC_INFRA_RECIPE_EXAMPLE b/RECIPE_EXAMPLE/RIC_INFRA_RECIPE_EXAMPLE index 6488385f..786356e2 100644 --- a/RECIPE_EXAMPLE/RIC_INFRA_RECIPE_EXAMPLE +++ b/RECIPE_EXAMPLE/RIC_INFRA_RECIPE_EXAMPLE @@ -108,10 +108,13 @@ credential: chartmuseum: - repositoryOverride: "registry.hub.docker.com" + repositoryOverride: "docker.io" image: name: chartmuseum/chartmuseum tag: v0.8.2 + job: + image: + name: alpine + tag: latest storagesize: 2Gi - datapath: /tmp/chartmuseum-data/ diff --git a/ric-infra/15-Chartmuseum/bin/clear_data_path b/bin/clean-up-aux similarity index 68% rename from ric-infra/15-Chartmuseum/bin/clear_data_path rename to bin/clean-up-aux index f7a37808..e36393b5 100755 --- a/ric-infra/15-Chartmuseum/bin/clear_data_path +++ b/bin/clean-up-aux @@ -16,32 +16,7 @@ # limitations under the License. # ################################################################################ -OVERRIDEYAML=$1 -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" - - - - - - -if [ -z $OVERRIDEYAML ]; then - - DATAPATH=$(cat $DIR/../helm/chartmuseum/values.yaml | awk '/^.*datapath:.*/{ print $2;}') - -else - DATAPATH=$(cat $OVERRIDEYAML | awk '/^chartmuseum:.*/{ getline; while ( match($0, / .*/) || (!$0)){ if(getline == 0){break;}; if (match($0, /^ .*datapath:.*/)){print $2}} }') - - - if [ -z $DATAPATH ]; then - DATAPATH=$(cat $DIR/../helm/chartmuseum/values.yaml | awk '/^.*datapath:.*/{ print $2;}') - fi - -fi - - rm -rf $DATAPATH - - mkdir -p $DATAPATH - - - chmod -R a+rwx $DATAPATH +# This script clean up the PV data for aux cluster +rm -rf /opt/data/dashboard-data +rm -rf /opt/data/chartmuseum-data diff --git a/ric-aux/80-Auxiliary-Functions/bin/install b/ric-aux/80-Auxiliary-Functions/bin/install index eae092cf..52bf88d7 100755 --- a/ric-aux/80-Auxiliary-Functions/bin/install +++ b/ric-aux/80-Auxiliary-Functions/bin/install @@ -59,6 +59,69 @@ else COMMON_OVERRIDE=$RIC_COMMON_OVERRIDE fi + + +NODENAME=$(kubectl get node | awk '{print $1}') +LABELFOUND=false +for f in $NODENAME; do + LABEL=$(kubectl describe node $f | grep local-storage) + if [ ! -z "$LABEL" ]; then + LABELFOUND=true + fi +done + +if [ ! -z $OVERRIDEYAML ]; then + FOUND_STORAGECLASS=$(grep storageclass $OVERRIDEYAML) +fi + + + +if ! $LABELFOUND && [ -z "$FOUND_STORAGECLASS" ]; then + echo "***********************************************************************************************" + echo "* ERROR!!!!!!!!!!!!! *" + echo "***********************************************************************************************" + echo "* Nodes label \"local-storage=enable\" is not found in any of the cluster node. *" + echo "* Please pick a node and label it using the following command. *" + echo "* kubectl label --overwrite nodes local-storage=enable *" + echo "***********************************************************************************************" + + exit 1 +fi + + + + +if [ -z "$FOUND_STORAGECLASS" ] && $LABELFOUND; then + + DATAPATH=$(cat $DIR/../helm/dashboard/values.yaml | grep datapath | awk '{ print $2}' ) + + + if [ ! -z $OVERRIDEYAML ]; then + DATAPATHOVERRIDE=$(cat $OVERRIDEYAML | grep datapath | awk '{ print $2}' ) + fi + + if [ ! -z "$DATAPATHOVERRIDE" ]; then + DATAPATH=$DATAPATHOVERRIDE + fi + + + echo "***********************************************************************************************" + echo "* WARNING!!!!!!!!!!!!! *" + echo "***********************************************************************************************" + echo "* Chartmuseume will use local storage. Please make sure that directory *" + echo "* $DATAPATH *" + echo "* exists on the selected cluster node, and contains the proper files. *" + echo "***********************************************************************************************" + + +fi + + + + + + + RICAUX_COMPONENTS="dashboard ves message-router" echo "Deploying RIC AUX components [$RICAUX_COMPONENTS]" diff --git a/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/persistentVolume.yaml b/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/persistentVolume.yaml index cb63ba9d..01bc7b33 100644 --- a/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/persistentVolume.yaml +++ b/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/persistentVolume.yaml @@ -1,4 +1,14 @@ -# Remove this persistent volume when cloud storage is available +{{- if not .Values.dashboard.storageclass }} + +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + name: storageclass-{{ include "common.name.dashboard" . }} +provisioner: kubernetes.io/no-provisioner +volumeBindingMode: WaitForFirstConsumer + +--- + apiVersion: v1 kind: PersistentVolume metadata: @@ -16,7 +26,9 @@ spec: required: nodeSelectorTerms: - matchExpressions: - - key: dashboard-node + - key: local-storage operator: In values: - enable +{{- end -}} + diff --git a/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/persistentVolumeClaim.yaml b/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/persistentVolumeClaim.yaml index a13dde14..c436a424 100644 --- a/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/persistentVolumeClaim.yaml +++ b/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/persistentVolumeClaim.yaml @@ -5,7 +5,7 @@ metadata: spec: accessModes: - ReadWriteOnce - storageClassName: storageclass-{{ include "common.name.dashboard" . }} + storageClassName: {{ .Values.dashboard.storageclass | default (printf "storageclass-%s" ( include "common.name.dashboard" . )) }} resources: requests: storage: {{ .Values.dashboard.storagesize }} diff --git a/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/storageClass.yaml b/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/storageClass.yaml deleted file mode 100644 index eb1fb94f..00000000 --- a/ric-aux/80-Auxiliary-Functions/helm/dashboard/templates/storageClass.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: storageclass-{{ include "common.name.dashboard" . }} -provisioner: kubernetes.io/no-provisioner -volumeBindingMode: WaitForFirstConsumer diff --git a/ric-aux/80-Auxiliary-Functions/helm/dashboard/values.yaml b/ric-aux/80-Auxiliary-Functions/helm/dashboard/values.yaml index a4992a07..d263ce76 100644 --- a/ric-aux/80-Auxiliary-Functions/helm/dashboard/values.yaml +++ b/ric-aux/80-Auxiliary-Functions/helm/dashboard/values.yaml @@ -34,12 +34,14 @@ dashboard: # The keys listed below MUST be configured in each deployment; # this list does not include all keys recognized by the app. + # Specify a storage class to bypass the local storage definition. + # storageclass: # persist user details as JSON to a persistent volume storagesize: 1Mi # in the container userfile: /dashboard-data/users.json # on the server - datapath: /tmp/dashboard-data + datapath: /opt/data/dashboard-data # The URL prefixes use K8S/Kong service names a1med: diff --git a/ric-infra/15-Chartmuseum/bin/install b/ric-infra/15-Chartmuseum/bin/install index ae097fea..6a6fe8c0 100755 --- a/ric-infra/15-Chartmuseum/bin/install +++ b/ric-infra/15-Chartmuseum/bin/install @@ -59,17 +59,62 @@ fi +NODENAME=$(kubectl get node | awk '{print $1}') +LABELFOUND=false +for f in $NODENAME; do + LABEL=$(kubectl describe node $f | grep local-storage) + if [ ! -z "$LABEL" ]; then + LABELFOUND=true + fi +done + +if [ ! -z $OVERRIDEYAML ]; then + FOUND_STORAGECLASS=$(grep storageclass $OVERRIDEYAML) +fi + + + +if ! $LABELFOUND && [ -z "$FOUND_STORAGECLASS" ]; then + echo "***********************************************************************************************" + echo "* ERROR!!!!!!!!!!!!! *" + echo "***********************************************************************************************" + echo "* Nodes label \"local-storage=enable\" is not found in any of the cluster node. *" + echo "* Please pick a node and label it using the following command. *" + echo "* kubectl label --overwrite nodes local-storage=enable *" + echo "***********************************************************************************************" + + exit 1 +fi + + + + +if [ -z "$FOUND_STORAGECLASS" ] && $LABELFOUND; then + + DATAPATH=$(cat $DIR/../helm/chartmuseum/values.yaml | grep datapath | awk '{ print $2}' ) + + + if [ ! -z $OVERRIDEYAML ]; then + DATAPATHOVERRIDE=$(cat $OVERRIDEYAML | grep datapath | awk '{ print $2}' ) + fi + + if [ ! -z "$DATAPATHOVERRIDE" ]; then + DATAPATH=$DATAPATHOVERRIDE + fi + -NODENAME=$(kubectl get node | awk 'NR==2{print $1}') -kubectl label --overwrite nodes $NODENAME helm-node=enable + echo "***********************************************************************************************" + echo "* WARNING!!!!!!!!!!!!! *" + echo "***********************************************************************************************" + echo "* Chartmuseume will use local storage. Please make sure that directory *" + echo "* $DATAPATH *" + echo "* exists on the selected cluster node, and contains the proper files. *" + echo "***********************************************************************************************" -DIRTEMP=$DIR -. "$DIR/clear_data_path" -DIR=$DIRTEMP +fi RICINFRA_COMPONENTS="chartmuseum" -mkdir -p /tmp/chartmuseum-data echo "Deploying RIC infra components [$RICINFRA_COMPONENTS]" echo "Helm Release Name: $RELEASE_NAME" diff --git a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/deployment.yaml b/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/deployment.yaml index c283c19d..faee6f37 100644 --- a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/deployment.yaml +++ b/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/deployment.yaml @@ -36,6 +36,9 @@ spec: app: {{ include "common.namespace.infra" . }}-{{ include "common.name.chartmuseum" . }} release: {{ .Release.Name }} spec: + securityContext: + fsGroup: 0 + runAsUser: 0 hostname: {{ .Chart.Name }} imagePullSecrets: - name: {{ include "common.repositoryCred" . }} diff --git a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/job-save-certs.yaml b/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/job-save-certs.yaml index 01f5ac64..6253d53c 100644 --- a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/job-save-certs.yaml +++ b/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/job-save-certs.yaml @@ -22,9 +22,12 @@ metadata: spec: template: spec: + imagePullSecrets: + - name: {{ include "common.repositoryCred" . }} containers: - name: cert-copy - image: alpine + image: {{ include "common.repository" . }}/{{ .Values.chartmuseum.job.image.name }}:{{ .Values.chartmuseum.job.image.tag }} + imagePullPolicy: {{ include "common.pullPolicy" . }} command: [ "/bin/sh","-c","cp -rL /var/run/helmcerts/..data/tls.crt /var/run/certs-copy/helmtls.crt"] # command: ["tail", "-f", "/dev/null"] volumeMounts: diff --git a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/persistentVolume.yaml b/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/persistentVolume.yaml index 93127ca6..42939be1 100644 --- a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/persistentVolume.yaml +++ b/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/persistentVolume.yaml @@ -1,3 +1,14 @@ +{{- if not .Values.chartmuseum.storageclass }} + +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + name: storageclass-{{ include "common.name.chartmuseum" . }} +provisioner: kubernetes.io/no-provisioner +volumeBindingMode: WaitForFirstConsumer + +--- + apiVersion: v1 kind: PersistentVolume metadata: @@ -15,7 +26,9 @@ spec: required: nodeSelectorTerms: - matchExpressions: - - key: helm-node + - key: local-storage operator: In values: - enable +{{- end -}} + diff --git a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/persistentVolumeClaim.yaml b/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/persistentVolumeClaim.yaml index 11e0314a..9a945b2c 100644 --- a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/persistentVolumeClaim.yaml +++ b/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/persistentVolumeClaim.yaml @@ -5,7 +5,7 @@ metadata: spec: accessModes: - ReadWriteOnce - storageClassName: storageclass-{{ include "common.name.chartmuseum" . }} + storageClassName: {{ .Values.chartmuseum.storageclass | default (printf "storageclass-%s" ( include "common.name.chartmuseum" . )) }} resources: requests: storage: {{ .Values.chartmuseum.storagesize }} diff --git a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/storageClass.yaml b/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/storageClass.yaml deleted file mode 100644 index 85eed19d..00000000 --- a/ric-infra/15-Chartmuseum/helm/chartmuseum/templates/storageClass.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: storageclass-{{ include "common.name.chartmuseum" . }} -provisioner: kubernetes.io/no-provisioner -volumeBindingMode: WaitForFirstConsumer diff --git a/ric-infra/15-Chartmuseum/helm/chartmuseum/values.yaml b/ric-infra/15-Chartmuseum/helm/chartmuseum/values.yaml index 203a678a..026e3fd0 100644 --- a/ric-infra/15-Chartmuseum/helm/chartmuseum/values.yaml +++ b/ric-infra/15-Chartmuseum/helm/chartmuseum/values.yaml @@ -18,20 +18,27 @@ # Default values for nexus. # This is a YAML-formatted file. # Declare variables to be passed into your templates. -repository: "registry.hub.docker.com" +repository: "docker.io" imagePullPolicy: IfNotPresent repositoryCred: docker-reg-cred helmRepositoryCert: xapp-mgr-certs chartmuseum: + repositoryOverride: "docker.io" replicaCount: 1 + job: + image: + name: alpine + tag: latest + # This is designed to be deployed using local image image: name: chartmuseum/chartmuseum tag: v0.8.2 - +# Specify a storage class to bypass the local storage definition. +# storageclass: storagesize: 2Gi - datapath: /tmp/chartmuseum-data/ + datapath: /opt/data/chartmuseum-data diff --git a/ric-infra/45-Tiller/bin/install b/ric-infra/45-Tiller/bin/install index c246fc1b..74313b15 100755 --- a/ric-infra/45-Tiller/bin/install +++ b/ric-infra/45-Tiller/bin/install @@ -15,51 +15,48 @@ # See the License for the specific language governing permissions and # # limitations under the License. # ################################################################################ - - OVERRIDEYAML=$1 - - DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" - source $DIR/../etc/tiller.conf if [ -z "$RICINFRA_RELEASE_NAME" ];then - RELEASE_NAME=$helm_release_name + RELEASE_NAME=$helm_release_name else - RELEASE_NAME=$RICINFRA_RELEASE_NAME + RELEASE_NAME=$RICINFRA_RELEASE_NAME fi + # Namespace configuration if [ -z "$RICPLT_NAMESPACE" ];then - PLT_NAMESPACE=$plt_namespace + PLT_NAMESPACE=$plt_namespace else - PLT_NAMESPACE=$RICPLT_NAMESPACE + PLT_NAMESPACE=$RICPLT_NAMESPACE fi + if [ -z "$RICXAPP_NAMESPACE" ];then - XAPP_NAMESPACE=$xapp_namespace + XAPP_NAMESPACE=$xapp_namespace else - XAPP_NAMESPACE=$RICXAPP_NAMESPACE + XAPP_NAMESPACE=$RICXAPP_NAMESPACE fi + if [ -z "$RICAUX_NAMESPACE" ];then - AUX_NAMESPACE=$aux_namespace + AUX_NAMESPACE=$aux_namespace else - AUX_NAMESPACE=$RICAUX_NAMESPACE + AUX_NAMESPACE=$RICAUX_NAMESPACE fi + if [ -z "$RICINFRA_NAMESPACE" ];then - INFRA_NAMESPACE=$infra_namespace + INFRA_NAMESPACE=$infra_namespace else - INFRA_NAMESPACE=$RICINFRA_NAMESPACE + INFRA_NAMESPACE=$RICINFRA_NAMESPACE fi if [ -z "$RIC_COMMON_OVERRIDE" ];then - COMMON_OVERRIDE="--set global.namespace.platform=$PLT_NAMESPACE --set global.namespace.xapp=$XAPP_NAMESPACE --set global.namespace.aux=$AUX_NAMESPACE --set global.namespace.infra=$INFRA_NAMESPACE" + COMMON_OVERRIDE="--set global.namespace.platform=$PLT_NAMESPACE --set global.namespace.xapp=$XAPP_NAMESPACE --set global.namespace.aux=$AUX_NAMESPACE --set global.namespace.infra=$INFRA_NAMESPACE" else - COMMON_OVERRIDE=$RIC_COMMON_OVERRIDE + COMMON_OVERRIDE=$RIC_COMMON_OVERRIDE fi - - RICINFRA_COMPONENTS="xapp-tiller" echo "Deploying RIC infra components [$RICINFRA_COMPONENTS]" -- 2.16.6