From 280096fce4053579b4baf1c4808a6aecd95af054 Mon Sep 17 00:00:00 2001 From: Spyros Trigazis <strigazi@gmail.com> Date: Wed, 4 Jan 2017 17:32:16 +0100 Subject: [PATCH 1/4] [cern] Upgrade to Fedora Atomic 25 Cherry-pick: https://review.openstack.org/#/c/417457/8 Image contains: kubernetes-1.4.7-1.fc25.x86_64 docker-1.12.5-4.git03508cc.fc25.x86_64 flannel-0.5.5-8.fc25.x86_64 etcd-3.0.15-1.fc25.x86_64 * 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. [1] https://fedorapeople.org/groups/magnum/fedora-atomic-25-20161221.qcow2 Change-Id: Iac6e30c530821a49a5c3978e335e0b1d56a576e0 Conflicts: magnum/drivers/common/templates/fragments/configure_docker_storage_driver_atomic.sh magnum/drivers/common/templates/kubernetes/fragments/write-network-config.sh magnum/drivers/k8s_fedora_atomic_v1/version.py magnum/drivers/swarm_fedora_atomic_v1/version.py magnum/tests/contrib/gate_hook.sh --- .../fragments/configure-docker-storage.sh | 6 ++++++ .../configure_docker_storage_driver_atomic.sh | 15 ++++++++------- .../fragments/configure-kubernetes-minion.sh | 4 ++-- .../fragments/network-config-service.sh | 4 ++-- .../kubernetes/fragments/write-network-config.sh | 2 +- .../templates/kubecluster.yaml | 2 +- magnum/drivers/k8s_fedora_atomic_v1/version.py | 4 ++-- .../templates/kubecluster.yaml | 2 +- .../templates/fragments/enable-services.sh | 5 +++++ magnum/drivers/swarm_fedora_atomic_v1/version.py | 4 ++-- magnum/tests/contrib/copy_instance_logs.sh | 3 +++ magnum/tests/contrib/gate_hook.sh | 8 ++++---- 12 files changed, 37 insertions(+), 22 deletions(-) diff --git a/magnum/drivers/common/templates/fragments/configure-docker-storage.sh b/magnum/drivers/common/templates/fragments/configure-docker-storage.sh index 104c3ac5e..2b22ab23e 100644 --- a/magnum/drivers/common/templates/fragments/configure-docker-storage.sh +++ b/magnum/drivers/common/templates/fragments/configure-docker-storage.sh @@ -1,5 +1,7 @@ #!/bin/sh +set -x + . /etc/sysconfig/heat-params if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then @@ -30,6 +32,8 @@ if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then fi fi +systemctl stop docker + $configure_docker_storage_driver if [ "$DOCKER_STORAGE_DRIVER" = "overlay" ]; then @@ -44,3 +48,5 @@ if [ "$DOCKER_STORAGE_DRIVER" = "overlay" ]; then else configure_devicemapper fi + +systemctl start docker-storage-setup 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 a28dc8f73..4785cabd8 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,19 +1,20 @@ # 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_congiguration () { +# - Remove any existing docker-storage configuration. In case of an +# existing configuration, docker-storage-setup will fail. +# - Remove the current storage graph. +clear_docker_storage () { if [ -f /etc/sysconfig/docker-storage ]; then sed -i "/^DOCKER_STORAGE_OPTIONS=/ s/=.*/=/" /etc/sysconfig/docker-storage fi + + rm -rf /var/lib/docker/* } # Configure docker storage with xfs as backing filesystem. configure_overlay () { - clear_docker_storage_congiguration - - rm -rf /var/lib/docker/* + clear_docker_storage if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then mkfs.xfs -f ${device_path} @@ -31,7 +32,7 @@ configure_overlay () { # Configure docker storage with devicemapper using direct LVM configure_devicemapper () { - clear_docker_storage_congiguration + clear_docker_storage if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then pvcreate -f ${device_path} 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 2ce5a8afb..745709189 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 1cac6b580..643179cf2 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 1fcadcded..3b2c54b1b 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/k8s_fedora_atomic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml index 3befb49c6..692d9b093 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml @@ -256,7 +256,7 @@ parameters: kube_version: type: string description: version of kubernetes used for kubernetes cluster - default: v1.2.0 + default: v1.4.7 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 7f1702c33..ebe1bbafa 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/version.py +++ b/magnum/drivers/k8s_fedora_atomic_v1/version.py @@ -13,5 +13,5 @@ # limitations under the License. version = '1.0.0' -driver = 'k8s_fedora_atomic' -container_version = '1.9.1' +driver = 'k8s_fedora_atomic_v1' +container_version = '1.12.5' diff --git a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml index baec083fc..e95cf100d 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.4.7 insecure_registry_url: type: string diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/enable-services.sh b/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/enable-services.sh index 1c7ed9790..79d12626e 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/enable-services.sh +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/enable-services.sh @@ -1,5 +1,10 @@ #!/bin/sh +set -x + +echo "stopping docker" +systemctl stop docker + echo "starting services" systemctl daemon-reload for service in $NODE_SERVICES; do diff --git a/magnum/drivers/swarm_fedora_atomic_v1/version.py b/magnum/drivers/swarm_fedora_atomic_v1/version.py index a36bff97b..09cd1519d 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/version.py +++ b/magnum/drivers/swarm_fedora_atomic_v1/version.py @@ -13,5 +13,5 @@ # limitations under the License. version = '1.0.0' -driver = 'swarm_atomic' -container_version = '1.9.1' +driver = 'swarm_fedora_atomic_v1' +container_version = '1.12.5' diff --git a/magnum/tests/contrib/copy_instance_logs.sh b/magnum/tests/contrib/copy_instance_logs.sh index a12db1a4d..ebb9e3f5c 100755 --- a/magnum/tests/contrib/copy_instance_logs.sh +++ b/magnum/tests/contrib/copy_instance_logs.sh @@ -81,6 +81,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 +90,8 @@ 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 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 d88e9c260..5b8c3098a 100755 --- a/magnum/tests/contrib/gate_hook.sh +++ b/magnum/tests/contrib/gate_hook.sh @@ -32,8 +32,8 @@ if [ "$coe" = "mesos" ]; then elif [ "$coe" = "k8s-coreos" ]; then echo "MAGNUM_GUEST_IMAGE_URL=http://beta.release.core-os.net/amd64-usr/1153.4.0/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 @@ -78,8 +78,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-f23-dib.qcow2'" - export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_IMAGE_NAME='fedora-atomic-f23-dib'" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_GUEST_IMAGE_URL='https://fedorapeople.org/groups/magnum/fedora-atomic-25-20170106.qcow2'" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"MAGNUM_IMAGE_NAME='fedora-atomic-25-20170106'" fi # Enable magnum plugin in the last step -- GitLab From 29798308e822a833c884d4690e3c6754c8a2cef2 Mon Sep 17 00:00:00 2001 From: Spyros Trigazis <strigazi@gmail.com> Date: Wed, 30 Nov 2016 15:20:28 +0100 Subject: [PATCH 2/4] [cern] Add docker-d options in sysconfig/docker Cherry-pick: https://review.openstack.org/#/c/404789/7 Remove custom docker unit file and pass the necessary options through /etc/sysconfig/docker file. Change-Id: I6bf91843b9120b700d13aad54cef38342ae1f8bd Closes-Bug: #1646123 Conflicts: magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-docker-service.sh magnum/drivers/swarm_fedora_atomic_v1/templates/swarmmaster.yaml magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml --- .../fragments/add-docker-daemon-options.sh | 13 +++++ .../fragments/write-docker-service.sh | 52 ------------------- .../fragments/write-docker-socket.yaml | 1 + .../templates/swarmmaster.yaml | 6 +-- .../templates/swarmnode.yaml | 6 +-- 5 files changed, 20 insertions(+), 58 deletions(-) create mode 100644 magnum/drivers/common/templates/swarm/fragments/add-docker-daemon-options.sh delete mode 100644 magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-docker-service.sh diff --git a/magnum/drivers/common/templates/swarm/fragments/add-docker-daemon-options.sh b/magnum/drivers/common/templates/swarm/fragments/add-docker-daemon-options.sh new file mode 100644 index 000000000..b08eb3132 --- /dev/null +++ b/magnum/drivers/common/templates/swarm/fragments/add-docker-daemon-options.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +. /etc/sysconfig/heat-params + +opts="-H fd:// -H tcp://0.0.0.0:2375 " + +if [ "$TLS_DISABLED" = 'False' ]; then + opts=$opts"--tlsverify --tlscacert=/etc/docker/ca.crt " + opts=$opts"--tlskey=/etc/docker/server.key " + opts=$opts"--tlscert=/etc/docker/server.crt " +fi + +sed -i '/^OPTIONS=/ s#\(OPTIONS='"'"'\)#\1'"$opts"'#' /etc/sysconfig/docker diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-docker-service.sh b/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-docker-service.sh deleted file mode 100644 index f8b35bd10..000000000 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-docker-service.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh - -. /etc/sysconfig/heat-params - -mkdir -p /etc/systemd/system/docker.service.d - -cat > /etc/systemd/system/docker.service << END_SERVICE_TOP -[Unit] -Description=Docker Application Container Engine -Documentation=http://docs.docker.com -After=network.target docker.socket -Requires=docker.socket -Wants=docker-storage-setup.service - -[Service] -TimeoutStartSec=300 -Type=notify -EnvironmentFile=-/etc/sysconfig/docker -EnvironmentFile=-/etc/sysconfig/docker-storage -EnvironmentFile=-/etc/sysconfig/docker-network -Environment=GOTRACEBACK=crash -ExecStart=/usr/bin/docker daemon -H fd:// \\ - -H tcp://0.0.0.0:2375 \\ -END_SERVICE_TOP - -if [ "$TLS_DISABLED" = 'False' ]; then - -cat >> /etc/systemd/system/docker.service << END_TLS - --tlsverify \\ - --tlscacert="/etc/docker/ca.crt" \\ - --tlskey="/etc/docker/server.key" \\ - --tlscert="/etc/docker/server.crt" \\ -END_TLS - -fi - -cat >> /etc/systemd/system/docker.service << END_SERVICE_BOTTOM - \$OPTIONS \\ - \$DOCKER_STORAGE_OPTIONS \\ - \$DOCKER_NETWORK_OPTIONS \\ - \$INSECURE_REGISTRY -LimitNOFILE=1048576 -LimitNPROC=1048576 -LimitCORE=infinity -MountFlags=slave - -[Install] -WantedBy=multi-user.target -END_SERVICE_BOTTOM - -chown root:root /etc/systemd/system/docker.service -chmod 644 /etc/systemd/system/docker.service diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-docker-socket.yaml b/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-docker-socket.yaml index 59cf0991c..4c1b9fcd0 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-docker-socket.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-docker-socket.yaml @@ -9,6 +9,7 @@ write_files: Description=Docker Socket for the API PartOf=docker.service After=docker-storage-setup.service + Before=docker.service [Socket] ListenStream=/var/run/docker.sock diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmmaster.yaml b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmmaster.yaml index 70fcb247a..72dc5b0bd 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmmaster.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmmaster.yaml @@ -255,11 +255,11 @@ resources: group: ungrouped config: {get_file: fragments/make-cert.py} - write_docker_service: + add_docker_daemon_options: type: "OS::Heat::SoftwareConfig" properties: group: ungrouped - config: {get_file: fragments/write-docker-service.sh} + config: {get_file: ../../common/templates/swarm/fragments/add-docker-daemon-options.sh} write_swarm_manager_failure_service: type: "OS::Heat::SoftwareConfig" @@ -345,7 +345,7 @@ resources: - config: {get_resource: network_service} - config: {get_resource: configure_docker_storage} - config: {get_resource: write_swarm_manager_failure_service} - - config: {get_resource: write_docker_service} + - config: {get_resource: add_docker_daemon_options} - config: {get_resource: write_docker_socket} - config: {get_resource: write_swarm_master_service} - config: {get_resource: add_proxy} diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml index ea61a069f..507fecb7b 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml @@ -246,11 +246,11 @@ resources: group: ungrouped config: {get_file: ../../common/templates/fragments/configure-docker-registry.sh} - write_docker_service: + add_docker_daemon_options: type: "OS::Heat::SoftwareConfig" properties: group: ungrouped - config: {get_file: fragments/write-docker-service.sh} + config: {get_file: ../../common/templates/swarm/fragments/add-docker-daemon-options.sh} write_docker_socket: type: "OS::Heat::SoftwareConfig" @@ -341,7 +341,7 @@ resources: - config: {get_resource: configure_docker_registry} - config: {get_resource: write_swarm_agent_failure_service} - config: {get_resource: write_swarm_agent_service} - - config: {get_resource: write_docker_service} + - config: {get_resource: add_docker_daemon_options} - config: {get_resource: write_docker_socket} - config: {get_resource: add_proxy} - config: {get_resource: enable_docker_registry} -- GitLab From decea7aa34dee133d596daf135138b7807857095 Mon Sep 17 00:00:00 2001 From: Spyros Trigazis <strigazi@gmail.com> Date: Sat, 26 Nov 2016 17:10:00 +0100 Subject: [PATCH 3/4] [cern] [k8s_fedora_atomic] Remove podmaster Cherry-pick: https://review.openstack.org/#/c/404782/ Podmaster is deprecated since k8s 1.2 and its docker image is v1, incompatible with docker >=1.12. * Remove podmaster pod * Update manifests of kube-controller-manager and kube-scheduler * Rename SoftwareConfig to reflect the new functionality Closes-Bug: #1646109 Change-Id: Ibf4ce06cbf5b79a4241c58c67b13a7c68145d3ae Conflicts: magnum/drivers/k8s_fedora_atomic_v1/templates/kubemaster.yaml --- ...able-kube-controller-manager-scheduler.sh} | 58 +------------------ .../templates/kubemaster.yaml | 6 +- .../templates/kubemaster.yaml | 6 +- 3 files changed, 8 insertions(+), 62 deletions(-) rename magnum/drivers/common/templates/kubernetes/fragments/{enable-kube-podmaster.sh => enable-kube-controller-manager-scheduler.sh} (58%) diff --git a/magnum/drivers/common/templates/kubernetes/fragments/enable-kube-podmaster.sh b/magnum/drivers/common/templates/kubernetes/fragments/enable-kube-controller-manager-scheduler.sh similarity index 58% rename from magnum/drivers/common/templates/kubernetes/fragments/enable-kube-podmaster.sh rename to magnum/drivers/common/templates/kubernetes/fragments/enable-kube-controller-manager-scheduler.sh index 5aa1bfaba..3474ea8e1 100644 --- a/magnum/drivers/common/templates/kubernetes/fragments/enable-kube-podmaster.sh +++ b/magnum/drivers/common/templates/kubernetes/fragments/enable-kube-controller-manager-scheduler.sh @@ -3,67 +3,13 @@ . /etc/sysconfig/heat-params if [ -n "${INSECURE_REGISTRY_URL}" ]; then - PODMASTER_IMAGE="${INSECURE_REGISTRY_URL}/google_containers/podmaster:1.1" HYPERKUBE_IMAGE="${INSECURE_REGISTRY_URL}/google_containers/hyperkube:${KUBE_VERSION}" else - PODMASTER_IMAGE="gcr.io/google_containers/podmaster:1.1" HYPERKUBE_IMAGE="gcr.io/google_containers/hyperkube:${KUBE_VERSION}" fi init_templates () { - local TEMPLATE=/etc/kubernetes/manifests/kube-podmaster.yaml - [ -f ${TEMPLATE} ] || { - echo "TEMPLATE: $TEMPLATE" - mkdir -p $(dirname ${TEMPLATE}) - cat << EOF > ${TEMPLATE} -apiVersion: v1 -kind: Pod -metadata: - name: kube-podmaster - namespace: kube-system -spec: - hostNetwork: true - containers: - - name: scheduler-elector - image: ${PODMASTER_IMAGE} - command: - - /podmaster - - --etcd-servers=http://127.0.0.1:2379 - - --key=scheduler - - --source-file=/src/manifests/kube-scheduler.yaml - - --dest-file=/dst/manifests/kube-scheduler.yaml - volumeMounts: - - mountPath: /src/manifests - name: manifest-src - readOnly: true - - mountPath: /dst/manifests - name: manifest-dst - - name: controller-manager-elector - image: ${PODMASTER_IMAGE} - command: - - /podmaster - - --etcd-servers=http://127.0.0.1:2379 - - --key=controller - - --source-file=/src/manifests/kube-controller-manager.yaml - - --dest-file=/dst/manifests/kube-controller-manager.yaml - terminationMessagePath: /dev/termination-log - volumeMounts: - - mountPath: /src/manifests - name: manifest-src - readOnly: true - - mountPath: /dst/manifests - name: manifest-dst - volumes: - - hostPath: - path: /srv/kubernetes/manifests - name: manifest-src - - hostPath: - path: /etc/kubernetes/manifests - name: manifest-dst -EOF - } - local SERVICE_ACCOUNT_PRIVATE_KEY_FILE=/etc/kubernetes/ssl/server.key local ROOT_CA_FILE=/etc/kubernetes/ssl/ca.crt @@ -72,7 +18,7 @@ EOF ROOT_CA_FILE= fi - local TEMPLATE=/srv/kubernetes/manifests/kube-controller-manager.yaml + local TEMPLATE=/etc/kubernetes/manifests/kube-controller-manager.yaml [ -f ${TEMPLATE} ] || { echo "TEMPLATE: $TEMPLATE" mkdir -p $(dirname ${TEMPLATE}) @@ -124,7 +70,7 @@ spec: EOF } - local TEMPLATE=/srv/kubernetes/manifests/kube-scheduler.yaml + local TEMPLATE=/etc/kubernetes/manifests/kube-scheduler.yaml [ -f ${TEMPLATE} ] || { echo "TEMPLATE: $TEMPLATE" mkdir -p $(dirname ${TEMPLATE}) diff --git a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubemaster.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubemaster.yaml index 8b4cf6eba..c6ea154dc 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubemaster.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubemaster.yaml @@ -306,11 +306,11 @@ resources: group: ungrouped config: {get_file: ../../common/templates/kubernetes/fragments/network-service.sh} - enable_kube_podmaster: + enable_kube_controller_manager_scheduler: type: OS::Heat::SoftwareConfig properties: group: ungrouped - config: {get_file: ../../common/templates/kubernetes/fragments/enable-kube-podmaster.sh} + config: {get_file: ../../common/templates/kubernetes/fragments/enable-kube-controller-manager-scheduler.sh} kube_system_namespace_service: type: OS::Heat::SoftwareConfig @@ -378,7 +378,7 @@ resources: - config: {get_resource: network_service} - config: {get_resource: kube_system_namespace_service} - config: {get_resource: kube_dns_service} - - config: {get_resource: enable_kube_podmaster} + - config: {get_resource: enable_kube_controller_manager_scheduler} - config: {get_resource: enable_kube_proxy} - config: {get_resource: kube_ui_service} - config: {get_resource: kube_examples} diff --git a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubemaster.yaml b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubemaster.yaml index 27f4fe2e5..1b1f1d1f8 100644 --- a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubemaster.yaml +++ b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubemaster.yaml @@ -319,11 +319,11 @@ resources: group: ungrouped config: {get_file: ../../common/templates/kubernetes/fragments/network-service.sh} - enable_kube_podmaster: + enable_kube_controller_manager_scheduler: type: OS::Heat::SoftwareConfig properties: group: ungrouped - config: {get_file: ../../common/templates/kubernetes/fragments/enable-kube-podmaster.sh} + config: {get_file: ../../common/templates/kubernetes/fragments/enable-kube-controller-manager-scheduler.sh} kube_system_namespace_service: type: OS::Heat::SoftwareConfig @@ -378,7 +378,7 @@ resources: - config: {get_resource: network_config_service} - config: {get_resource: network_service} - config: {get_resource: kube_system_namespace_service} - - config: {get_resource: enable_kube_podmaster} + - config: {get_resource: enable_kube_controller_manager_scheduler} - config: {get_resource: enable_kube_proxy} - config: {get_resource: kube_ui_service} - config: {get_resource: kube_examples} -- GitLab From 1d1ad781c4d4eb43d0f2be2d57235b47a499f92a Mon Sep 17 00:00:00 2001 From: Ricardo Rocha <rocha.porto@gmail.com> Date: Tue, 10 Jan 2017 14:17:02 +0100 Subject: [PATCH 4/4] [cern] add cvmfs container configuration add systemd setup to configure cvmfs via docker-volume-cvmfs. add new labels to configure cvmfs: * cvmfs_enabled: if cvmfs configuration should be done (default true) * cvmfs_tag: which docker-volume-cvmfs tag to use (default latest) Implements OS-3825. --- .../templates/fragments/configure-cvmfs.sh | 25 +++++++++++++++++++ .../kubernetes/fragments/configure-cvmfs.sh | 25 +++++++++++++++++++ .../fragments/configure-kubernetes-minion.sh | 2 +- .../fragments/write-heat-params.yaml | 2 ++ .../templates/kubecluster.yaml | 14 +++++++++++ .../templates/kubeminion.yaml | 21 ++++++++++++++++ .../swarm_fedora_atomic_v1/template_def.py | 3 ++- .../templates/cluster.yaml | 14 +++++++++++ .../fragments/write-heat-params-node.sh | 2 ++ .../templates/swarmnode.yaml | 23 ++++++++++++++++- 10 files changed, 128 insertions(+), 3 deletions(-) create mode 100644 magnum/drivers/common/templates/fragments/configure-cvmfs.sh create mode 100644 magnum/drivers/common/templates/kubernetes/fragments/configure-cvmfs.sh diff --git a/magnum/drivers/common/templates/fragments/configure-cvmfs.sh b/magnum/drivers/common/templates/fragments/configure-cvmfs.sh new file mode 100644 index 000000000..fd2c8c669 --- /dev/null +++ b/magnum/drivers/common/templates/fragments/configure-cvmfs.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +. /etc/sysconfig/heat-params + +if [ "$CVMFS_ENABLED" = "False" ]; then + exit 0 +fi + +chattr -i / +mkdir /cvmfs +chattr +i / + +atomic install gitlab-registry.cern.ch/cloud-infrastructure/docker-volume-cvmfs:${CVMFS_TAG} + +# add selinux policy +docker cp docker-volume-cvmfs:/dockercvmfs.pp /tmp +semodule -i /tmp/dockercvmfs.pp + +# install kubernetes volume plugin +mkdir -p /var/lib/kubelet/plugins/volume/exec/cern~cvmfs +docker cp docker-volume-cvmfs:/usr/sbin/docker-volume-cvmfs /var/lib/kubelet/plugins/volume/exec/cern~cvmfs/cvmfs + +# TODO: move this elsewhere +lvextend /dev/atomicos/root --size 5G +xfs_growfs /dev/mapper/atomicos-root diff --git a/magnum/drivers/common/templates/kubernetes/fragments/configure-cvmfs.sh b/magnum/drivers/common/templates/kubernetes/fragments/configure-cvmfs.sh new file mode 100644 index 000000000..20bdb0374 --- /dev/null +++ b/magnum/drivers/common/templates/kubernetes/fragments/configure-cvmfs.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +. /etc/sysconfig/heat-params + +if [ "$CVMFS_ENABLED" = "False" ]; then + exit 0 +fi + +chattr -i / +mkdir /cvmfs +chattr +i / + +atomic install gitlab-registry.cern.ch/cloud-infrastructure/docker-volume-cvmfs:${CVMFS_TAG} + +# add selinux policy +docker cp docker-volume-cvmfs:/dockercvmfs.pp /tmp +semodule -i /tmp/dockercvmfs.pp + +# install kubernetes volume plugin +mkdir -p /var/lib/kubelet/plugins/volume/cern~cvmfs +docker cp docker-volume-cvmfs:/usr/sbin/docker-volume-cvmfs /var/lib/kubelet/plugins/volume/cern~cvmfs/cvmfs + +# TODO: move this elsewhere +lvextend /dev/atomicos/root --size 5G +xfs_growfs /dev/mapper/atomicos-root 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 745709189..f51f5101a 100644 --- a/magnum/drivers/common/templates/kubernetes/fragments/configure-kubernetes-minion.sh +++ b/magnum/drivers/common/templates/kubernetes/fragments/configure-kubernetes-minion.sh @@ -53,7 +53,7 @@ sed -i ' # the option --hostname-override for kubelet uses the hostname to register the node. # Using any other name will break the load balancer and cinder volume features. HOSTNAME=$(hostname -I | cut -d' ' -f1) -KUBELET_ARGS="--config=/etc/kubernetes/manifests --cadvisor-port=4194 --hostname-override=${HOSTNAME} --cluster-dns=10.254.10.10 --cluster-domain=cluster.local ${KUBE_CONFIG}" +KUBELET_ARGS="--config=/etc/kubernetes/manifests --cadvisor-port=4194 --hostname-override=${HOSTNAME} --cluster-dns=10.254.10.10 --cluster-domain=cluster.local --volume-plugin-dir /var/lib/kubelet/plugins/volume/exec ${KUBE_CONFIG}" if [ -n "${INSECURE_REGISTRY_URL}" ]; then KUBELET_ARGS="${KUBELET_ARGS} --pod-infra-container-image=${INSECURE_REGISTRY_URL}/google_containers/pause\:0.8.0" diff --git a/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params.yaml b/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params.yaml index d455a23e4..efa1817f4 100644 --- a/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params.yaml +++ b/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params.yaml @@ -43,3 +43,5 @@ write_files: TRUST_ID="$TRUST_ID" AUTH_URL="$AUTH_URL" INSECURE_REGISTRY_URL="$INSECURE_REGISTRY_URL" + CVMFS_ENABLED="$CVMFS_ENABLED" + CVMFS_TAG="$CVMFS_TAG" diff --git a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml index 692d9b093..add4a8c8a 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml @@ -263,6 +263,18 @@ parameters: description: insecure registry url default: "" + cvmfs_enabled: + type: boolean + description: > + Indicates whether cvmfs support should be enabled in the cluster. + default: true + + cvmfs_tag: + type: string + description: > + The tag to use for the docker-volume-cvmfs container. + default: "latest" + resources: ###################################################################### @@ -373,6 +385,8 @@ resources: trust_id: {get_param: trust_id} auth_url: {get_param: auth_url} insecure_registry_url: {get_param: insecure_registry_url} + cvmfs_enabled: {get_param: cvmfs_enabled} + cvmfs_tag: {get_param: cvmfs_tag} outputs: diff --git a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubeminion.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubeminion.yaml index 4811e833a..024a002a5 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubeminion.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubeminion.yaml @@ -193,6 +193,18 @@ parameters: insecure_registry_url: type: string description: insecure registry url + + cvmfs_enabled: + type: boolean + description: > + Indicates whether cvmfs support should be enabled in the cluster. + default: true + + cvmfs_tag: + type: string + description: > + The tag to use for the docker-volume-cvmfs container. + default: "latest" resources: @@ -256,6 +268,8 @@ resources: $TRUST_ID: {get_param: trust_id} $AUTH_URL: {get_param: auth_url} $INSECURE_REGISTRY_URL: {get_param: insecure_registry_url} + $CVMFS_ENABLED: {get_param: cvmfs_enabled} + $CVMFS_TAG: {get_param: cvmfs_tag} write_kubeconfig: type: OS::Heat::SoftwareConfig @@ -356,6 +370,12 @@ resources: group: ungrouped config: {get_file: ../../common/templates/kubernetes/fragments/add-proxy.sh} + configure_cvmfs: + type: "OS::Heat::SoftwareConfig" + properties: + group: ungrouped + config: {get_file: ../../common/templates/fragments/configure-cvmfs.sh} + kube_minion_init: type: OS::Heat::MultipartMime properties: @@ -374,6 +394,7 @@ resources: - config: {get_resource: enable_kube_proxy} - config: {get_resource: enable_docker_registry} - config: {get_resource: install_cern_certs} + - config: {get_resource: configure_cvmfs} - config: {get_resource: minion_wc_notify} ###################################################################### diff --git a/magnum/drivers/swarm_fedora_atomic_v1/template_def.py b/magnum/drivers/swarm_fedora_atomic_v1/template_def.py index 103c7db50..e76230418 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/template_def.py +++ b/magnum/drivers/swarm_fedora_atomic_v1/template_def.py @@ -100,7 +100,8 @@ class AtomicSwarmTemplateDefinition(template_def.BaseTemplateDefinition): extra_params['magnum_url'] = osc.magnum_url() label_list = ['flannel_network_cidr', 'flannel_backend', - 'flannel_network_subnetlen', 'rexray_preempt'] + 'flannel_network_subnetlen', 'rexray_preempt', + 'cvmfs_enabled', 'cvmfs_tag'] extra_params['auth_url'] = context.auth_url diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml b/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml index 3d1c75be3..99309b3ca 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml @@ -226,6 +226,18 @@ parameters: other hosts are using the volume default: "false" + cvmfs_enabled: + type: boolean + description: > + Indicates whether cvmfs support should be enabled in the cluster. + default: true + + cvmfs_tag: + type: string + description: > + The tag to use for the docker-volume-cvmfs container. + default: "latest" + resources: @@ -321,6 +333,8 @@ resources: registry_chunksize: {get_param: registry_chunksize} volume_driver: {get_param: volume_driver} rexray_preempt: {get_param: rexray_preempt} + cvmfs_enabled: {get_param: cvmfs_enabled} + cvmfs_tag: {get_param: cvmfs_tag} outputs: diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-heat-params-node.sh b/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-heat-params-node.sh index 872ed7ea6..6cd13bde1 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-heat-params-node.sh +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/fragments/write-heat-params-node.sh @@ -36,4 +36,6 @@ REGISTRY_INSECURE="$REGISTRY_INSECURE" REGISTRY_CHUNKSIZE="$REGISTRY_CHUNKSIZE" VOLUME_DRIVER="$VOLUME_DRIVER" REXRAY_PREEMPT="$REXRAY_PREEMPT" +CVMFS_ENABLED="$CVMFS_ENABLED" +CVMFS_TAG="$CVMFS_TAG" END_SERVICE diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml index 507fecb7b..f9868f4a7 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/swarmnode.yaml @@ -161,6 +161,18 @@ parameters: other hosts are using the volume default: "false" + cvmfs_enabled: + type: boolean + description: > + Indicates whether cvmfs support should be enabled in the cluster. + default: true + + cvmfs_tag: + type: string + description: > + The tag to use for the docker-volume-cvmfs container. + default: "latest" + resources: node_wait_handle: @@ -217,6 +229,8 @@ resources: "$REGISTRY_CHUNKSIZE": {get_param: registry_chunksize} "$VOLUME_DRIVER": {get_param: volume_driver} "$REXRAY_PREEMPT": {get_param: rexray_preempt} + "$CVMFS_ENABLED": {get_param: cvmfs_enabled} + "$CVMFS_TAG": {get_param: cvmfs_tag} remove_docker_key: type: "OS::Heat::SoftwareConfig" @@ -328,6 +342,12 @@ resources: group: ungrouped config: {get_file: ../../common/templates/fragments/install-cern-certs.sh} + configure_docker_cvmfs: + type: "OS::Heat::SoftwareConfig" + properties: + group: ungrouped + config: {get_file: ../../common/templates/fragments/configure-cvmfs.sh} + swarm_node_init: type: "OS::Heat::MultipartMime" properties: @@ -347,8 +367,9 @@ resources: - config: {get_resource: enable_docker_registry} - config: {get_resource: enable_services} - config: {get_resource: install_cern_certs} - - config: {get_resource: cfn_signal} - config: {get_resource: volume_service} + - config: {get_resource: configure_docker_cvmfs} + - config: {get_resource: cfn_signal} swarm-node: type: "OS::Nova::Server" -- GitLab