From e3c7d3d4153d3a9383d4ebcaa004e54b1b0b64c2 Mon Sep 17 00:00:00 2001 From: Todd Malsbary Date: Tue, 27 Oct 2020 14:46:29 -0700 Subject: Upgrade kubespray from 2.12.6 to 2.14.1 - 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 Change-Id: I9f50bb4e123fdcacab6b6a97e79cd09fb5c96634 --- kud/deployment_infra/galaxy-requirements.yml | 2 +- .../playbooks/configure-emco-reset.yml | 11 +---------- kud/deployment_infra/playbooks/configure-emco.yml | 11 +---------- kud/deployment_infra/playbooks/configure-kud.yml | 5 ----- .../playbooks/configure-onap4k8s-reset.yml | 11 +---------- kud/deployment_infra/playbooks/configure-onap4k8s.yml | 11 +---------- kud/deployment_infra/playbooks/kud-vars.yml | 5 +++-- .../playbooks/preconfigure-kubespray.yml | 19 +++++++++++++++++++ kud/hosting_providers/containerized/installer.sh | 12 ++++++++---- .../inventory/group_vars/k8s-cluster.yml | 3 --- kud/hosting_providers/vagrant/installer.sh | 4 +++- .../vagrant/inventory/group_vars/k8s-cluster.yml | 3 --- 12 files changed, 38 insertions(+), 59 deletions(-) create mode 100644 kud/deployment_infra/playbooks/preconfigure-kubespray.yml (limited to 'kud') diff --git a/kud/deployment_infra/galaxy-requirements.yml b/kud/deployment_infra/galaxy-requirements.yml index 3191dc19..9747dc99 100644 --- a/kud/deployment_infra/galaxy-requirements.yml +++ b/kud/deployment_infra/galaxy-requirements.yml @@ -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 diff --git a/kud/deployment_infra/playbooks/configure-emco-reset.yml b/kud/deployment_infra/playbooks/configure-emco-reset.yml index a4560cc2..7cad36e4 100644 --- a/kud/deployment_infra/playbooks/configure-emco-reset.yml +++ b/kud/deployment_infra/playbooks/configure-emco-reset.yml @@ -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 @@ -41,15 +41,6 @@ - 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 diff --git a/kud/deployment_infra/playbooks/configure-emco.yml b/kud/deployment_infra/playbooks/configure-emco.yml index 255ce6a4..eb6adcf2 100644 --- a/kud/deployment_infra/playbooks/configure-emco.yml +++ b/kud/deployment_infra/playbooks/configure-emco.yml @@ -27,15 +27,6 @@ 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 diff --git a/kud/deployment_infra/playbooks/configure-kud.yml b/kud/deployment_infra/playbooks/configure-kud.yml index 6ac0477d..0e32e69d 100644 --- a/kud/deployment_infra/playbooks/configure-kud.yml +++ b/kud/deployment_infra/playbooks/configure-kud.yml @@ -23,11 +23,6 @@ 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 diff --git a/kud/deployment_infra/playbooks/configure-onap4k8s-reset.yml b/kud/deployment_infra/playbooks/configure-onap4k8s-reset.yml index d6f2f6bc..ddfedbb4 100644 --- a/kud/deployment_infra/playbooks/configure-onap4k8s-reset.yml +++ b/kud/deployment_infra/playbooks/configure-onap4k8s-reset.yml @@ -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 @@ -41,15 +41,6 @@ - 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 diff --git a/kud/deployment_infra/playbooks/configure-onap4k8s.yml b/kud/deployment_infra/playbooks/configure-onap4k8s.yml index 11729171..c016cf1c 100644 --- a/kud/deployment_infra/playbooks/configure-onap4k8s.yml +++ b/kud/deployment_infra/playbooks/configure-onap4k8s.yml @@ -27,15 +27,6 @@ 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 diff --git a/kud/deployment_infra/playbooks/kud-vars.yml b/kud/deployment_infra/playbooks/kud-vars.yml index 30e54f03..8011c901 100644 --- a/kud/deployment_infra/playbooks/kud-vars.yml +++ b/kud/deployment_infra/playbooks/kud-vars.yml @@ -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 index 00000000..78e7eda6 --- /dev/null +++ b/kud/deployment_infra/playbooks/preconfigure-kubespray.yml @@ -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 diff --git a/kud/hosting_providers/containerized/installer.sh b/kud/hosting_providers/containerized/installer.sh index ae16b1dd..6fd7c915 100755 --- a/kud/hosting_providers/containerized/installer.sh +++ b/kud/hosting_providers/containerized/installer.sh @@ -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" diff --git a/kud/hosting_providers/containerized/inventory/group_vars/k8s-cluster.yml b/kud/hosting_providers/containerized/inventory/group_vars/k8s-cluster.yml index 5560dd97..0a2953ce 100644 --- a/kud/hosting_providers/containerized/inventory/group_vars/k8s-cluster.yml +++ b/kud/hosting_providers/containerized/inventory/group_vars/k8s-cluster.yml @@ -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 diff --git a/kud/hosting_providers/vagrant/installer.sh b/kud/hosting_providers/vagrant/installer.sh index 71e4d8b7..94f3c58c 100755 --- a/kud/hosting_providers/vagrant/installer.sh +++ b/kud/hosting_providers/vagrant/installer.sh @@ -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 diff --git a/kud/hosting_providers/vagrant/inventory/group_vars/k8s-cluster.yml b/kud/hosting_providers/vagrant/inventory/group_vars/k8s-cluster.yml index 30fd5c0b..ba79b4b9 100644 --- a/kud/hosting_providers/vagrant/inventory/group_vars/k8s-cluster.yml +++ b/kud/hosting_providers/vagrant/inventory/group_vars/k8s-cluster.yml @@ -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 -- cgit 1.2.3-korg