From eed58c1f3369049b937e5fe9659961fdf46bbef6 Mon Sep 17 00:00:00 2001 From: Danil-Grigorev Date: Wed, 28 Apr 2021 12:30:43 +0200 Subject: [PATCH] Add full migration workflow to CCM with CSI driver This PR reconfigures cluster to run CCM deployment and disables cloud integration in KCM and Kubelet. It is currently achieved by overriding MCO and KCMO images with changes allowing to set correct flags. - Add MCO image override (changes from https://github.com/openshift/machine-config-operator/pull/2386) - Step waits for kubelet update on machines - Add KCMO image override to test KCM migration to out-of-tree CCM (revendor with changes from https://github.com/openshift/library-go/pull/895) - Make featureGate apply step more resilent to API server timeouts --- .../ccm-conf-apply-feature-gate-commands.sh | 161 +++++++++++++++--- .../ccm-conf-apply-feature-gate-ref.yaml | 5 +- .../ccm/openshift-e2e-aws-ccm-workflow.yaml | 17 +- 3 files changed, 157 insertions(+), 26 deletions(-) diff --git a/ci-operator/step-registry/ccm/conf/apply-feature-gate/ccm-conf-apply-feature-gate-commands.sh b/ci-operator/step-registry/ccm/conf/apply-feature-gate/ccm-conf-apply-feature-gate-commands.sh index 3c7b25c8b0d34..7ea8ba091df9a 100644 --- a/ci-operator/step-registry/ccm/conf/apply-feature-gate/ccm-conf-apply-feature-gate-commands.sh +++ b/ci-operator/step-registry/ccm/conf/apply-feature-gate/ccm-conf-apply-feature-gate-commands.sh @@ -1,15 +1,61 @@ #!/bin/bash -set -euo pipefail -export PATH=$PATH:/tmp/bin -mkdir /tmp/bin -curl https://mirror.openshift.com/pub/openshift-v4/clients/oc/latest/linux/oc.tar.gz | tar xvzf - -C /tmp/bin/ oc -chmod ug+x /tmp/bin/oc +set -o nounset +set -o pipefail +set -e + +export ARTIFACT_DIR=${ARTIFACT_DIR:-/tmp} export CCM_NAMESPACE="openshift-cloud-controller-manager" +export KCMO_NAMESPACE="openshift-kube-controller-manager-operator" +export MCO_NAMESPACE="openshift-machine-config-operator" + +function overrideCVO() { +cat <${ARTIFACT_DIR}/override.yaml +- op: add + path: /spec/overrides + value: + - kind: Deployment + group: apps/v1 + name: machine-config-controller + namespace: $MCO_NAMESPACE + unmanaged: true + - kind: Deployment + group: apps/v1 + name: machine-config-operator + namespace: $MCO_NAMESPACE + unmanaged: true + - kind: ConfigMap + group: v1 + name: machine-config-operator-images + namespace: $MCO_NAMESPACE + unmanaged: true + - kind: Deployment + group: apps/v1 + name: kube-controller-manager-operator + namespace: $KCMO_NAMESPACE + unmanaged: true +EOF + + echo "$(date -u --rfc-3339=seconds) - Unmanage MCO and KCMO in CVO" + oc patch clusterversion version --type json -p "$(cat ${ARTIFACT_DIR}/override.yaml)" +} + +function overrideMCOImage() { + echo "$(date -u --rfc-3339=seconds) - Override MCO image with $MCO_IMAGE_OVERRIDE" + oc patch -n "$MCO_NAMESPACE" deploy machine-config-controller --type=json -p '[{ "op": "replace", "path": "/spec/template/spec/containers/0/image", "value": "'$MCO_IMAGE_OVERRIDE'" }]' + oc patch -n "$MCO_NAMESPACE" deploy machine-config-operator --type=json -p '[{ "op": "replace", "path": "/spec/template/spec/containers/0/image", "value": "'$MCO_IMAGE_OVERRIDE'" }]' + oc get -n "$MCO_NAMESPACE" cm machine-config-operator-images -o yaml | sed -E "s|machineConfigOperator[^,]*|machineConfigOperator\": \"$MCO_IMAGE_OVERRIDE\"|g" | oc apply -f - +} -echo "$(date -u --rfc-3339=seconds) - Apply external cloud-controller-manager FeatureGate configuration" +function overrideKCMOImage() { + echo "$(date -u --rfc-3339=seconds) - Override KCMO image with $KCMO_IMAGE_OVERRIDE" + oc patch -n $KCMO_NAMESPACE deploy kube-controller-manager-operator -p '{"spec":{"template":{"spec":{"containers":[{"name":"kube-controller-manager-operator","image":"'$KCMO_IMAGE_OVERRIDE'","env":[{"name":"OPERATOR_IMAGE","value":"'$KCMO_IMAGE_OVERRIDE'"}]}]}}}}' +} -cat <- \[sig-arch\]\[Early\] Managed cluster should start all core operators \[Skipped:Disconnected\]\| \[sig-instrumentation\] Prometheus when installed on the cluster shouldn't report any alerts in firing state apart from Watchdog and AlertmanagerReceiversNotConfigured \[Early\] \[Skipped:Disconnected\]\| - Alerts shouldn't report any alerts in firing or pending state + Alerts shouldn't report any alerts in firing or pending state\| + Prometheus when installed on the cluster shouldn't report any alerts in firing state apart from Watchdog and AlertmanagerReceiversNotConfigured documentation: |- The Openshift E2E AWS workflow using CCM as a primary mean to initialize nodes and create external LoadBalancers. Executes the common end-to-end test suite on AWS to test updated cluster configuration.