From d2532a3af2a396a2b7cb9b9fa2394cf2d2c1f0a6 Mon Sep 17 00:00:00 2001 From: Spyros Trigazis Date: Wed, 4 Jan 2017 17:32:16 +0100 Subject: [PATCH] Upgrade to Fedora 25 Atomic image contains: kubernetes-1.5.2-2.fc25.x86_64 docker-1.12.6-5.git037a2f5.fc25.x86_64 flannel-0.5.5-8.fc25.x86_64 etcd-3.0.15-1.fc25.x86_64 The ironic image contains exactly the same packages. * For this upgrade the upstream image is used, which is uploaded here [1]. * Minor changes for flannel and docker-storage-setup were needed. * The image will be built in the CI and uploaded to tarballs.openstack.org as soon as possible. * Ironic image [2]. Notes: * docker-storage-setup config changes were needed because in the previous images it was disabled and it was started by us. * We can have selinux enables in containers since the images have kernel 4.9.x. [1] https://fedorapeople.org/groups/magnum/fedora-atomic-25-latest.qcow2 [2] https://fedorapeople.org/groups/magnum/fedora-25-kubernetes-ironic.tar.gz Change-Id: Iac6e30c530821a49a5c3978e335e0b1d56a576e0 --- .../configure_docker_storage_driver_atomic.sh | 39 +++++++++++++------ .../fragments/configure-kubernetes-minion.sh | 4 +- .../fragments/network-config-service.sh | 4 +- .../fragments/write-network-config.sh | 2 +- .../swarm/fragments/enable-services.sh | 4 ++ .../templates/kubecluster.yaml | 2 +- .../drivers/k8s_fedora_atomic_v1/version.py | 2 +- .../templates/kubecluster.yaml | 2 +- .../drivers/k8s_fedora_ironic_v1/version.py | 2 +- .../templates/swarmmaster.yaml | 2 +- .../templates/swarmnode.yaml | 2 +- .../drivers/swarm_fedora_atomic_v1/version.py | 2 +- magnum/tests/contrib/copy_instance_logs.sh | 6 +++ magnum/tests/contrib/gate_hook.sh | 8 ++-- 14 files changed, 53 insertions(+), 28 deletions(-) diff --git a/magnum/drivers/common/templates/fragments/configure_docker_storage_driver_atomic.sh b/magnum/drivers/common/templates/fragments/configure_docker_storage_driver_atomic.sh index ec289fbc8a..9d92a666d2 100644 --- a/magnum/drivers/common/templates/fragments/configure_docker_storage_driver_atomic.sh +++ b/magnum/drivers/common/templates/fragments/configure_docker_storage_driver_atomic.sh @@ -1,9 +1,17 @@ # This file contains docker storage drivers configuration for fedora # atomic hosts. Currently, devicemapper and overlay are supported. -# Remove any existing docker-storage configuration. In case of an -# existing configuration, docker-storage-setup will fail. -clear_docker_storage_configuration () { +# * Remove any existing docker-storage configuration. In case of an +# existing configuration, docker-storage-setup will fail. +# * Remove docker storage graph +clear_docker_storage () { + # stop docker + systemctl stop docker + # clear storage graph + rm -rf /var/lib/docker/* + # remove current LVs + docker-storage-setup --reset + if [ -f /etc/sysconfig/docker-storage ]; then sed -i "/^DOCKER_STORAGE_OPTIONS=/ s/=.*/=/" /etc/sysconfig/docker-storage fi @@ -11,9 +19,7 @@ clear_docker_storage_configuration () { # Configure docker storage with xfs as backing filesystem. configure_overlay () { - clear_docker_storage_configuration - - rm -rf /var/lib/docker/* + clear_docker_storage if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then mkfs.xfs -f ${device_path} @@ -23,20 +29,29 @@ configure_overlay () { echo "STORAGE_DRIVER=overlay" > /etc/sysconfig/docker-storage-setup - # SELinux must be enabled and in enforcing mode on the physical - # machine, but must be disabled in the container when performing - # container separation - sed -i "/^OPTIONS=/ s/--selinux-enabled/--selinux-enabled=false/" /etc/sysconfig/docker + docker-storage-setup + + local lvname=$(lvdisplay | grep "LV\ Path" | awk '{print $3}') + local pvname=$(pvdisplay | grep "PV\ Name" | awk '{print $3}') + lvextend -r $lvname $pvname } # Configure docker storage with devicemapper using direct LVM configure_devicemapper () { - clear_docker_storage_configuration + clear_docker_storage + + echo "GROWROOT=True" > /etc/sysconfig/docker-storage-setup + echo "ROOT_SIZE=5GB" >> /etc/sysconfig/docker-storage-setup if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then + pvcreate -f ${device_path} vgcreate docker ${device_path} - echo "VG=docker" > /etc/sysconfig/docker-storage-setup + echo "VG=docker" >> /etc/sysconfig/docker-storage-setup + else + echo "DATA_SIZE=95%FREE" >> /etc/sysconfig/docker-storage-setup fi + + docker-storage-setup } diff --git a/magnum/drivers/common/templates/kubernetes/fragments/configure-kubernetes-minion.sh b/magnum/drivers/common/templates/kubernetes/fragments/configure-kubernetes-minion.sh index 56071c4572..d48cbb4cbe 100644 --- a/magnum/drivers/common/templates/kubernetes/fragments/configure-kubernetes-minion.sh +++ b/magnum/drivers/common/templates/kubernetes/fragments/configure-kubernetes-minion.sh @@ -73,13 +73,13 @@ sed -i ' if [ "$NETWORK_DRIVER" = "flannel" ]; then sed -i ' - /^FLANNEL_ETCD=/ s|=.*|="'"$PROTOCOL"'://'"$ETCD_SERVER_IP"':2379"| + /^FLANNEL_ETCD_ENDPOINTS=/ s|=.*|="'"$PROTOCOL"'://'"$ETCD_SERVER_IP"':2379"| ' $FLANNELD_CONFIG # Make sure etcd has a flannel configuration . $FLANNELD_CONFIG until curl -sf $ETCD_CURL_OPTIONS \ - "$FLANNEL_ETCD/v2/keys${FLANNEL_ETCD_KEY}/config?quorum=false&recursive=false&sorted=false" + "$FLANNEL_ETCD_ENDPOINTS/v2/keys${FLANNEL_ETCD_PREFIX}/config?quorum=false&recursive=false&sorted=false" do echo "Waiting for flannel configuration in etcd..." sleep 5 diff --git a/magnum/drivers/common/templates/kubernetes/fragments/network-config-service.sh b/magnum/drivers/common/templates/kubernetes/fragments/network-config-service.sh index 1cac6b5806..643179cf2e 100644 --- a/magnum/drivers/common/templates/kubernetes/fragments/network-config-service.sh +++ b/magnum/drivers/common/templates/kubernetes/fragments/network-config-service.sh @@ -41,14 +41,14 @@ if ! [ -f "$FLANNEL_JSON" ]; then exit 1 fi -if ! [ "$FLANNEL_ETCD" ] && [ "$FLANNEL_ETCD_KEY" ]; then +if [ -z "$FLANNEL_ETCD_ENDPOINTS" ] || [ -z "$FLANNEL_ETCD_PREFIX" ]; then echo "ERROR: missing required configuration" >&2 exit 1 fi echo "creating flanneld config in etcd" while ! curl -sf -L $ETCD_CURL_OPTIONS \ - $FLANNEL_ETCD/v2/keys${FLANNEL_ETCD_KEY}/config \ + $FLANNEL_ETCD_ENDPOINTS/v2/keys${FLANNEL_ETCD_PREFIX}/config \ -X PUT --data-urlencode value@${FLANNEL_JSON}; do echo "waiting for etcd" sleep 1 diff --git a/magnum/drivers/common/templates/kubernetes/fragments/write-network-config.sh b/magnum/drivers/common/templates/kubernetes/fragments/write-network-config.sh index f2f36ee573..3b2c54b1bf 100644 --- a/magnum/drivers/common/templates/kubernetes/fragments/write-network-config.sh +++ b/magnum/drivers/common/templates/kubernetes/fragments/write-network-config.sh @@ -12,7 +12,7 @@ FLANNEL_JSON=/etc/sysconfig/flannel-network.json FLANNELD_CONFIG=/etc/sysconfig/flanneld sed -i ' - /^FLANNEL_ETCD=/ s/=.*/="http:\/\/127.0.0.1:2379"/ + /^FLANNEL_ETCD_ENDPOINTS=/ s/=.*/="http:\/\/127.0.0.1:2379"/ ' /etc/sysconfig/flanneld # Generate a flannel configuration that we will diff --git a/magnum/drivers/common/templates/swarm/fragments/enable-services.sh b/magnum/drivers/common/templates/swarm/fragments/enable-services.sh index 1c7ed9790a..b01917a2ce 100644 --- a/magnum/drivers/common/templates/swarm/fragments/enable-services.sh +++ b/magnum/drivers/common/templates/swarm/fragments/enable-services.sh @@ -1,5 +1,9 @@ #!/bin/sh +set -x + +systemctl stop docker + echo "starting services" systemctl daemon-reload for service in $NODE_SERVICES; do diff --git a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml index bb04f74eb0..9948849ff3 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml @@ -266,7 +266,7 @@ parameters: kube_version: type: string description: version of kubernetes used for kubernetes cluster - default: v1.2.0 + default: v1.5.2 insecure_registry_url: type: string diff --git a/magnum/drivers/k8s_fedora_atomic_v1/version.py b/magnum/drivers/k8s_fedora_atomic_v1/version.py index acaa5c4fff..2de5b8fc69 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/version.py +++ b/magnum/drivers/k8s_fedora_atomic_v1/version.py @@ -14,4 +14,4 @@ version = '1.0.0' driver = 'k8s_fedora_atomic_v1' -container_version = '1.9.1' +container_version = '1.12.6' diff --git a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml index bb274259f0..3b4d45548a 100644 --- a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml @@ -269,7 +269,7 @@ parameters: kube_version: type: string description: version of kubernetes used for kubernetes cluster - default: v1.2.0 + default: v1.5.2 insecure_registry_url: type: string diff --git a/magnum/drivers/k8s_fedora_ironic_v1/version.py b/magnum/drivers/k8s_fedora_ironic_v1/version.py index 88fbdcebb1..785358afab 100644 --- a/magnum/drivers/k8s_fedora_ironic_v1/version.py +++ b/magnum/drivers/k8s_fedora_ironic_v1/version.py @@ -14,4 +14,4 @@ version = '1.0.0' driver = 'k8s_fedora_ironic_v1' -container_version = '1.9.1' +container_version = '1.12.6' diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmmaster.yaml b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmmaster.yaml index e67445ce27..3af471a2e7 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmmaster.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmmaster.yaml @@ -333,7 +333,7 @@ resources: str_replace: template: {get_file: ../../common/templates/swarm/fragments/enable-services.sh} params: - "$NODE_SERVICES": "etcd docker.socket swarm-manager" + "$NODE_SERVICES": "etcd docker.socket docker swarm-manager" cfn_signal: type: "OS::Heat::SoftwareConfig" diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml index 9feae81535..9f75db9c1b 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml @@ -296,7 +296,7 @@ resources: str_replace: template: {get_file: ../../common/templates/swarm/fragments/enable-services.sh} params: - "$NODE_SERVICES": "docker.socket swarm-agent" + "$NODE_SERVICES": "docker.socket docker swarm-agent" cfn_signal: type: "OS::Heat::SoftwareConfig" diff --git a/magnum/drivers/swarm_fedora_atomic_v1/version.py b/magnum/drivers/swarm_fedora_atomic_v1/version.py index 5b788dfd07..6bf10862bd 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/version.py +++ b/magnum/drivers/swarm_fedora_atomic_v1/version.py @@ -14,4 +14,4 @@ version = '1.0.0' driver = 'swarm_fedora_atomic_v1' -container_version = '1.9.1' +container_version = '1.12.6' diff --git a/magnum/tests/contrib/copy_instance_logs.sh b/magnum/tests/contrib/copy_instance_logs.sh index a12db1a4dd..e7ac69dc79 100755 --- a/magnum/tests/contrib/copy_instance_logs.sh +++ b/magnum/tests/contrib/copy_instance_logs.sh @@ -42,6 +42,8 @@ function remote_exec { mkdir -p $LOG_PATH +cat /proc/cpuinfo > /opt/stack/logs/cpuinfo.log + if [[ "$COE" == "kubernetes" ]]; then SSH_USER=fedora remote_exec $SSH_USER "sudo systemctl --full list-units --no-pager" systemctl_list_units.log @@ -81,6 +83,7 @@ elif [[ "$COE" == "swarm" ]]; then remote_exec $SSH_USER "sudo journalctl -u cloud-final --no-pager" cloud-final.log remote_exec $SSH_USER "sudo journalctl -u cloud-init-local --no-pager" cloud-init-local.log remote_exec $SSH_USER "sudo journalctl -u cloud-init --no-pager" cloud-init.log + remote_exec $SSH_USER "sudo cat /var/log/cloud-init-output.log" cloud-init-output.log remote_exec $SSH_USER "sudo journalctl -u etcd --no-pager" etcd.log remote_exec $SSH_USER "sudo journalctl -u swarm-manager --no-pager" swarm-manager.log remote_exec $SSH_USER "sudo journalctl -u swarm-agent --no-pager" swarm-agent.log @@ -89,6 +92,9 @@ elif [[ "$COE" == "swarm" ]]; then remote_exec $SSH_USER "sudo systemctl show docker-storage-setup --no-pager" docker-storage-setup.service.show.log remote_exec $SSH_USER "sudo cat /etc/sysconfig/docker-storage-setup 2>/dev/null" docker-storage-setup.sysconfig.env.log remote_exec $SSH_USER "sudo journalctl -u docker --no-pager" docker.log + remote_exec $SSH_USER "sudo journalctl -u docker-containerd --no-pager" docker-containerd.log + remote_exec $SSH_USER "sudo systemctl status docker.socket -l" docker.socket.status.log + remote_exec $SSH_USER "sudo systemctl show docker.socket --no-pager" docker.socket.show.log remote_exec $SSH_USER "sudo systemctl status docker -l" docker.service.status.log remote_exec $SSH_USER "sudo systemctl show docker --no-pager" docker.service.show.log remote_exec $SSH_USER "sudo cat /etc/sysconfig/docker" docker.sysconfig.env.log diff --git a/magnum/tests/contrib/gate_hook.sh b/magnum/tests/contrib/gate_hook.sh index 58165e159d..f125d35a75 100755 --- a/magnum/tests/contrib/gate_hook.sh +++ b/magnum/tests/contrib/gate_hook.sh @@ -38,8 +38,8 @@ if [ "$coe" = "mesos" ]; then elif [ "$coe" = "k8s-coreos" ]; then echo "MAGNUM_GUEST_IMAGE_URL=http://beta.release.core-os.net/amd64-usr/current/coreos_production_openstack_image.img.bz2" >> $BASE/new/devstack/localrc elif [ "${coe}${special}" = "k8s-ironic" ]; then - export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_GUEST_IMAGE_URL='https://fedorapeople.org/groups/magnum/fedora-24-kubernetes-ironic.tar.gz'" - export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_IMAGE_NAME='fedora-24-kubernetes-ironic'" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_GUEST_IMAGE_URL='https://fedorapeople.org/groups/magnum/fedora-25-kubernetes-ironic.tar.gz'" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_IMAGE_NAME='fedora-25-kubernetes-ironic'" export DEVSTACK_GATE_VIRT_DRIVER="ironic" # NOTE(yuanying): Current implementation requires only 1 subnet under network @@ -75,8 +75,8 @@ elif [ "${coe}${special}" = "k8s-ironic" ]; then export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_SPECS_DISK=10" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_EPHEMERAL_DISK=5" else - export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_GUEST_IMAGE_URL='http://tarballs.openstack.org/magnum/images/fedora-atomic-24-dib.qcow2'" - export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_IMAGE_NAME='fedora-atomic-24-dib'" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_GUEST_IMAGE_URL='https://fedorapeople.org/groups/magnum/fedora-atomic-25-latest.qcow2'" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_IMAGE_NAME='fedora-atomic-25-latest'" fi # Enable magnum plugin in the last step