Upgrade kubespray from 2.12.6 to 2.14.1 64/114464/1
authorTodd Malsbary <todd.malsbary@intel.com>
Tue, 27 Oct 2020 21:46:29 +0000 (14:46 -0700)
committerTodd Malsbary <todd.malsbary@intel.com>
Fri, 30 Oct 2020 23:48:04 +0000 (16:48 -0700)
- Replace move of ansible.cfg from kubespray distribution to
  /etc/ansible with ANSIBLE_CONFIG environment variable.  Ansible
  modifies ansible.cfg during installation, and the paths in it are
  relative.

- kubespray 2.14.1 requires a kubernetes version > 1.16.  Use the
  default versions of kubernetes and helm provided by kubespray
  2.14.1.

- kubespray 2.14.1 replaces helm 2 with helm 3.  This removes support
  for helm init and helm serve.  It is no longer necessary to call
  helm init, and the helm serve repository is replaced with file
  relative URLs.  This also triggered a subsequent update of the
  kubernetes-helm ansible module to include the newer helm versions.

- Add "storageType: hostPath" to etcd/values.yaml.  Helm deploy of
  etcd will fail without this due to nil
  PersistentVolume.metadata.labels.type.

- The mitogen module used by kubespray/ansible requires python2 on the
  hosts.  Use the linear strategy to bypass mitogen and install
  python2 on the cluster hosts.

Issue-ID: MULTICLOUD-1230
Signed-off-by: Todd Malsbary <todd.malsbary@intel.com>
Change-Id: I9f50bb4e123fdcacab6b6a97e79cd09fb5c96634

33 files changed:
deployments/helm/onap4k8s/Makefile
deployments/helm/onap4k8s/README.txt
deployments/helm/onap4k8s/charts/etcd/requirements.yaml
deployments/helm/onap4k8s/charts/etcd/values.yaml
deployments/helm/onap4k8s/charts/mongo/requirements.yaml
deployments/helm/onap4k8s/charts/multicloud-k8s/requirements.yaml
deployments/helm/v2/emco/Makefile
deployments/helm/v2/emco/README.md
deployments/helm/v2/emco/clm/requirements.yaml
deployments/helm/v2/emco/dcm/requirements.yaml
deployments/helm/v2/emco/emco-db/requirements.yaml
deployments/helm/v2/emco/emco-services/requirements.yaml
deployments/helm/v2/emco/emco-tools/requirements.yaml
deployments/helm/v2/emco/emco/requirements.yaml
deployments/helm/v2/emco/etcd/requirements.yaml
deployments/helm/v2/emco/etcd/values.yaml
deployments/helm/v2/emco/mongo/requirements.yaml
deployments/helm/v2/emco/ncm/requirements.yaml
deployments/helm/v2/emco/orchestrator/requirements.yaml
deployments/helm/v2/emco/ovnaction/requirements.yaml
deployments/helm/v2/emco/rsync/requirements.yaml
kud/deployment_infra/galaxy-requirements.yml
kud/deployment_infra/playbooks/configure-emco-reset.yml
kud/deployment_infra/playbooks/configure-emco.yml
kud/deployment_infra/playbooks/configure-kud.yml
kud/deployment_infra/playbooks/configure-onap4k8s-reset.yml
kud/deployment_infra/playbooks/configure-onap4k8s.yml
kud/deployment_infra/playbooks/kud-vars.yml
kud/deployment_infra/playbooks/preconfigure-kubespray.yml [new file with mode: 0644]
kud/hosting_providers/containerized/installer.sh
kud/hosting_providers/containerized/inventory/group_vars/k8s-cluster.yml
kud/hosting_providers/vagrant/installer.sh
kud/hosting_providers/vagrant/inventory/group_vars/k8s-cluster.yml

index 2047087..f078765 100644 (file)
@@ -54,16 +54,5 @@ clean:
        @rm -rf $(PACKAGE_DIR)/*
        @rm -rf $(OUTPUT_DIR)
 
-# start up a local helm repo to serve up helm chart packages
-repo:
-       @mkdir -p $(PACKAGE_DIR)
-       @helm serve --repo-path $(PACKAGE_DIR) &
-       @helm repo index $(PACKAGE_DIR)
-       @helm repo add onap4k8s http://127.0.0.1:8879
-
-# stop local helm repo
-repo-stop:
-       @pkill helm
-       @helm repo remove onap4k8s
 %:
        @:
index 857b0a0..1528c74 100644 (file)
@@ -16,9 +16,6 @@
 # Installation of ONAP4K8S helm chart
 #################################################################
 
-1. Create a helm repo (onap4k8s) from Makefile
-$ make repo
-
 1. Run "Makefile" in ONAP4K8S repo
 $ make all
 
index ff2221f..8c46d63 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~5.x-0
-    repository: '@onap4k8s'
+    repository: 'file://../common'
index 7f53d22..ab891da 100644 (file)
@@ -55,6 +55,7 @@ persistence:
   ##
   #storageClass: "-"
   accessMode: "ReadWriteOnce"
+  storageType: hostPath
   storage: "1Gi"
   mountPath: /dockerdata-nfs
   mountSubPath: k8s-etcd
index 0693dd3..ed88792 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~5.x-0
-    repository: '@onap4k8s'
+    repository: 'file://../common'
index c5102e4..b114c96 100644 (file)
@@ -18,10 +18,10 @@ dependencies:
     # local reference to common chart, as it is
     # a part of this chart's package and will not
     # be published independently to a repo (at this point)
-    repository: '@onap4k8s'
+    repository: 'file://../common'
   - name: mongo
     version: ~5.x-0
-    repository: '@onap4k8s'
+    repository: 'file://../mongo'
   - name: etcd
     version: ~5.x-0
-    repository: '@onap4k8s'
+    repository: 'file://../etcd'
index dc88ff8..355fc3f 100644 (file)
@@ -64,16 +64,5 @@ clean:
        @rm -rf $(PACKAGE_DIR)/*
        @rm -rf $(OUTPUT_DIR)
 
-# start up a local helm repo to serve up helm chart packages
-repo:
-       @mkdir -p $(PACKAGE_DIR)
-       @helm serve --repo-path $(PACKAGE_DIR) &
-       @helm repo index $(PACKAGE_DIR)
-       @helm repo add local http://127.0.0.1:8879
-
-# stop local helm repo
-repo-stop:
-       @pkill helm
-       @helm repo remove local
 %:
        @:
index 407f450..70cbfcd 100644 (file)
@@ -6,11 +6,7 @@ EMCO Helm charts include charts for EMCO microservices along with MongoDb, etcd,
 
 
 ### Steps to generate and install packages
-**1. Create a local helm repo from Makefile**
-
-`$ make repo`
-
-**2. Run make file to package all the required chart**
+**1. Run make file to package all the required chart**
 
 `$ make clean`
 
@@ -26,13 +22,13 @@ Pacakges helm charts in tar.gz format. All packages are in **dist/packages** dir
   | **emco-0.1.0.tgz**   | Includes all charts including database, all services and tools        |
 
 
-**3. Deploy EMCO Packages for Databases and Services**
+**2. Deploy EMCO Packages for Databases and Services**
 
 `$ helm install dist/packages/emco-db-0.1.0.tgz --name emco-db --namespace emco`
 
 `$ helm install dist/packages/emco-services-0.1.0.tgz --name emco-services --namespace emco`
 
-**4. Deploy tools (Optional)**
+**3. Deploy tools (Optional)**
 
 `$ helm install dist/packages/emco-tools-0.1.0.tgz --name emco-tools --namespace emco`
 
@@ -41,12 +37,12 @@ NOTE: Deploy the Chart emco-0.1.0.tgz to deploy all packages including database,
 `$ helm install dist/packages/emco-0.1.0.tgz --name emco --namespace emco`
 
 
-**5. To check logs of the different Microservices check fluentd logs**
+**4. To check logs of the different Microservices check fluentd logs**
 
 `kubectl logs emco-tools-fluentd-0 -n emco | grep orchestrator`
 
 
-**6. Delete all packages**
+**5. Delete all packages**
 
 `$ helm delete emco-services --purge`
 
@@ -61,7 +57,7 @@ NOTE: If the Chart emco-0.1.0.tgz was deployed
 `$ helm delete emco --purge`
 
 
-**7. Delete local helm repo**
+**6. Delete local helm repo**
 
 `make repo-stop`
 
@@ -74,4 +70,4 @@ After deleting the db package and before installing the package again following
 Workarounds:
 
 * remove the  finalizers section using `kubectl edit persistentvolumes emco-db-emco-etcd-data-0`
-* or, if appropriate, delete the entire namespace using `kubectl delete namespace emco`
\ No newline at end of file
+* or, if appropriate, delete the entire namespace using `kubectl delete namespace emco`
index c2253cf..bba5c27 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
index a379260..c5c2012 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
index 52a40b6..62e807b 100644 (file)
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
   - name: mongo
     version: ~4.x-0
-    repository: '@local'
+    repository: 'file://../mongo'
   - name: etcd
     version: ~3.x-0
-    repository: '@local'
+    repository: 'file://../etcd'
index dbb1466..ddb9fb7 100644 (file)
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
   - name: orchestrator
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../orchestrator'
   - name: ncm
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../ncm'
   - name: rsync
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../rsync'
   - name: clm
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../clm'
   - name: ovnaction
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../ovnaction'
   - name: dcm
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../dcm'
index ddb91c5..14ad537 100644 (file)
@@ -15,7 +15,7 @@
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
   - name: fluentd
     version: ~1.x-0
-    repository: '@local'
+    repository: 'file://../fluentd'
index 21649c3..c704d2f 100644 (file)
 dependencies:
   - name: emco-db
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../emco-db'
   - name: emco-tools
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../emco-tools'
   - name: emco-services
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../emco-services'
 
index d71b975..9802dac 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
index 226b459..ef9494b 100644 (file)
@@ -48,6 +48,7 @@ persistence:
   enabled: false
   volumeReclaimPolicy: Retain
   accessMode:  ReadWriteMany
+  storageType: hostPath
   storage: 1Gi
   mountPath: /dockerdata-nfs
   mountSubPath: "etcd/data"
index 38a832b..b8b139f 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
index c2253cf..bba5c27 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
index c2253cf..bba5c27 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
index c2253cf..bba5c27 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
index c2253cf..bba5c27 100644 (file)
@@ -15,4 +15,4 @@
 dependencies:
   - name: common
     version: ~0.x-0
-    repository: '@local'
+    repository: 'file://../common'
index 3191dc1..9747dc9 100644 (file)
@@ -10,6 +10,6 @@
 - src: andrewrothstein.go
   version: v2.1.15
 - src: andrewrothstein.kubernetes-helm
-  version: v1.2.17
+  version: v1.3.16
 - src: geerlingguy.docker
   version: 2.5.2
index a4560cc..7cad36e 100644 (file)
@@ -15,7 +15,7 @@
         file: kud-vars.yml
 
     - name: Change the emco directory and run helm delete
-      command: /usr/local/bin/helm delete --purge emco
+      command: /usr/local/bin/helm uninstall --namespace emco emco
       register: helm_delete
       args:
         chdir: /opt/multicloud/deployments/helm/v2/emco
     - debug:
         var: make_clean.stdout_lines
 
-    - name: Change the emco directory and make repo-stop
-      command: /usr/bin/make repo-stop
-      register: make_repo_stop
-      args:
-        chdir: /opt/multicloud/deployments/helm/v2/emco
-
-    - debug:
-        var: make_repo_stop.stdout_lines
-
     - name: clean multicloud-k8s path
       file:
         state: absent
index 255ce6a..eb6adcf 100644 (file)
       yum: name=make state=present update_cache=yes
       when: ansible_distribution == "CentOS"
 
-    - name: Change the emco directory and run the command make repo
-      command: /usr/bin/make repo
-      register: make_repo
-      args:
-        chdir: /opt/multicloud/deployments/helm/v2/emco
-
-    - debug:
-        var: make_repo.stdout_lines
-
     - name: Change the emco directory and run the command make all
       command: /usr/bin/make all
       register: make_all
@@ -46,7 +37,7 @@
         var: make_all.stdout_lines
 
     - name: Change the emco directory and run the command helm install
-      command: /usr/local/bin/helm install dist/packages/emco-0.1.0.tgz --name emco --namespace emco
+      command: /usr/local/bin/helm install --namespace emco --create-namespace --set emco-tools.fluentd.clusterDomain={{ cluster_name.stdout }} emco dist/packages/emco-0.1.0.tgz
       register: helm_install
       args:
         chdir: /opt/multicloud/deployments/helm/v2/emco
index 6ac0477..0e32e69 100644 (file)
       when: helm_client.rc != 0
       vars:
           kubernetes_helm_ver: "v{{ helm_client_version }}"
-  tasks:
-    - name: Initialize helm client
-      command: helm init -c
-      args:
-        creates: ~/.helm
 
 - hosts: kube-node
   become: yes
index d6f2f6b..ddfedbb 100644 (file)
@@ -15,7 +15,7 @@
         file: kud-vars.yml
 
     - name: Change the onap4k8s directory and run helm delete
-      command: /usr/local/bin/helm delete --purge multicloud-onap8ks
+      command: /usr/local/bin/helm uninstall --namespace onap4k8s-ns multicloud-onap8ks
       register: helm_delete
       args:
         chdir: /opt/multicloud/deployments/helm/onap4k8s
     - debug:
         var: make_clean.stdout_lines
 
-    - name: Change the onap4k8s directory and make repo-stop
-      command: /usr/bin/make repo-stop
-      register: make_repo_stop
-      args:
-        chdir: /opt/multicloud/deployments/helm/onap4k8s
-
-    - debug:
-        var: make_repo_stop.stdout_lines
-
     - name: clean multicloud-k8s path
       file:
         state: absent
index 1172917..c016cf1 100644 (file)
       yum: name=make state=present update_cache=yes
       when: ansible_distribution == "CentOS"
 
-    - name: Change the onap4k8s directory and run the command make repo
-      command: /usr/bin/make repo
-      register: make_repo
-      args:
-        chdir: /opt/multicloud/deployments/helm/onap4k8s
-
-    - debug:
-        var: make_repo.stdout_lines
-
     - name: Change the onap4k8s directory and run the command make all
       command: /usr/bin/make all
       register: make_all
@@ -46,7 +37,7 @@
         var: make_all.stdout_lines
 
     - name: Change the onap4k8s directory and run the command helm install
-      command: /usr/local/bin/helm install dist/packages/multicloud-k8s-5.0.0.tgz --name multicloud-onap8ks --namespace onap4k8s-ns --set service.type=NodePort
+      command: /usr/local/bin/helm install --namespace onap4k8s-ns --create-namespace --set service.type=NodePort multicloud-onap8ks dist/packages/multicloud-k8s-5.0.0.tgz
       register: helm_install
       args:
         chdir: /opt/multicloud/deployments/helm/onap4k8s
index 30e54f0..8011c90 100644 (file)
@@ -57,8 +57,9 @@ cmk_untaint_required: true
 #cmk_exclusive_mode: packed # choose between: packed, spread, default: packed
 
 go_version: '1.12.5'
-kubespray_version: 2.12.6
-helm_client_version: 2.13.1
+kubespray_version: 2.14.1
+# This matches the helm_version from kubespray defaults
+helm_client_version: 3.2.4
 # kud playbooks not compatible with 2.8.0 - see MULTICLOUD-634
 ansible_version: 2.9.7
 
diff --git a/kud/deployment_infra/playbooks/preconfigure-kubespray.yml b/kud/deployment_infra/playbooks/preconfigure-kubespray.yml
new file mode 100644 (file)
index 0000000..78e7eda
--- /dev/null
@@ -0,0 +1,19 @@
+---
+# The mitogen module used in kubespray requires python2 on the nodes.
+# On some distributions (i.e. Ubuntu 18.04), the default version of
+# python is python3.
+#
+# When python2 is not present a failure message similar to "bash:
+# /usr/bin/python: No such file or directory" will be reported.
+#
+# Note the use of "strategy: linear" below to temporarily bypass
+# mitogen.
+#
+- name: Install python2
+  hosts: k8s-cluster
+  strategy: linear
+  tasks:
+    - name: Install python2
+      package:
+        name: python
+        state: present
index ae16b1d..6fd7c91 100755 (executable)
@@ -36,7 +36,6 @@ function _install_ansible {
     pip install --no-cache-dir ansible==$version
 }
 
-# install_k8s() - Install Kubernetes using kubespray tool
 function install_kubespray {
     echo "Deploying kubernetes"
     version=$(grep "kubespray_version" ${kud_playbooks}/kud-vars.yml | \
@@ -50,7 +49,6 @@ function install_kubespray {
     _install_ansible
     wget https://github.com/kubernetes-incubator/kubespray/archive/$tarball
     tar -C $dest_folder -xzf $tarball
-    mv $dest_folder/kubespray-$version/ansible.cfg /etc/ansible/ansible.cfg
     chown -R root:root $dest_folder/kubespray-$version
     mkdir -p ${local_release_dir}/containers
     rm $tarball
@@ -79,10 +77,13 @@ function install_kubespray {
     fi
 }
 
+# install_k8s() - Install Kubernetes using kubespray tool
 function install_k8s {
-    version=$(grep "kubespray_version" ${kud_playbooks}/kud-vars.yml | \
-        awk -F ': ' '{print $2}')
     local cluster_name=$1
+    ansible-playbook $verbose -i \
+        $kud_inventory $kud_playbooks/preconfigure-kubespray.yml \
+        --become --become-user=root | \
+        tee $cluster_log/setup-kubernetes.log
     ansible-playbook $verbose -i \
         $kud_inventory $dest_folder/kubespray-$version/cluster.yml \
         -e cluster_name=$cluster_name --become --become-user=root | \
@@ -199,6 +200,9 @@ function install_pkg {
 }
 
 function install_cluster {
+    version=$(grep "kubespray_version" ${kud_playbooks}/kud-vars.yml | \
+        awk -F ': ' '{print $2}')
+    export ANSIBLE_CONFIG=$dest_folder/kubespray-$version/ansible.cfg
     install_k8s $1
     if [ ${2:+1} ]; then
         echo "install default addons and $2"
index 5560dd9..0a2953c 100644 (file)
@@ -49,9 +49,6 @@ kubectl_localhost: true
 local_volumes_enabled: true
 local_volume_provisioner_enabled: true
 
-## Change this to use another Kubernetes version, e.g. a current beta release
-kube_version: v1.16.9
-
 # Helm deployment
 helm_enabled: true
 
index 71e4d8b..94f3c58 100755 (executable)
@@ -102,6 +102,7 @@ function _set_environment_file {
     echo "export OVN_CENTRAL_ADDRESS=$(get_ovn_central_address)" | sudo tee --append /etc/environment
     echo "export KUBE_CONFIG_DIR=/opt/kubeconfig" | sudo tee --append /etc/environment
     echo "export CSAR_DIR=/opt/csar" | sudo tee --append /etc/environment
+    echo "export ANSIBLE_CONFIG=${ANSIBLE_CONFIG}" | sudo tee --append /etc/environment
 }
 
 # install_k8s() - Install Kubernetes using kubespray tool
@@ -117,7 +118,6 @@ function install_k8s {
     _install_ansible
     wget https://github.com/kubernetes-incubator/kubespray/archive/$tarball
     sudo tar -C $dest_folder -xzf $tarball
-    sudo mv $dest_folder/kubespray-$version/ansible.cfg /etc/ansible/ansible.cfg
     sudo chown -R $USER $dest_folder/kubespray-$version
     sudo mkdir -p ${local_release_dir}/containers
     rm $tarball
@@ -139,6 +139,8 @@ function install_k8s {
     if [[ -n "${https_proxy:-}" ]]; then
         echo "https_proxy: \"$https_proxy\"" | tee --append $kud_inventory_folder/group_vars/all.yml
     fi
+    export ANSIBLE_CONFIG=$dest_folder/kubespray-$version/ansible.cfg
+    ansible-playbook $verbose -i $kud_inventory $kud_playbooks/preconfigure-kubespray.yml --become --become-user=root | sudo tee $log_folder/setup-kubernetes.log
     ansible-playbook $verbose -i $kud_inventory $dest_folder/kubespray-$version/cluster.yml --become --become-user=root | sudo tee $log_folder/setup-kubernetes.log
 
     # Configure environment
index 30fd5c0..ba79b4b 100644 (file)
@@ -50,9 +50,6 @@ enable_nodelocaldns: false
 local_volumes_enabled: true
 local_volume_provisioner_enabled: true
 
-## Change this to use another Kubernetes version, e.g. a current beta release
-kube_version: v1.16.9
-
 # Helm deployment
 helm_enabled: true