diff --git a/manifests/function/phase-helpers/kustomization.yaml b/manifests/function/phase-helpers/kustomization.yaml index 9adcb2e75..94fada475 100644 --- a/manifests/function/phase-helpers/kustomization.yaml +++ b/manifests/function/phase-helpers/kustomization.yaml @@ -2,3 +2,4 @@ resources: - wait_node - get_pods - wait_tigera +- wait_deploy diff --git a/manifests/function/phase-helpers/wait_deploy/kubectl_wait_deploy.sh b/manifests/function/phase-helpers/wait_deploy/kubectl_wait_deploy.sh new file mode 100644 index 000000000..6f34f37f4 --- /dev/null +++ b/manifests/function/phase-helpers/wait_deploy/kubectl_wait_deploy.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -xe + +kubectl --kubeconfig $KUBECONFIG --context $KCTL_CONTEXT wait --for=condition=available deploy --all --timeout=1000s -A 1>&2 diff --git a/manifests/function/phase-helpers/wait_deploy/kustomization.yaml b/manifests/function/phase-helpers/wait_deploy/kustomization.yaml new file mode 100644 index 000000000..ac4a1594a --- /dev/null +++ b/manifests/function/phase-helpers/wait_deploy/kustomization.yaml @@ -0,0 +1,6 @@ +configMapGenerator: +- name: kubectl-wait-deploy + options: + disableNameSuffixHash: true + files: + - script=kubectl_wait_deploy.sh diff --git a/manifests/phases/executors.yaml b/manifests/phases/executors.yaml index 0607d3968..ec0ada0b3 100644 --- a/manifests/phases/executors.yaml +++ b/manifests/phases/executors.yaml @@ -318,3 +318,18 @@ configRef: kind: ConfigMap name: kubectl-wait-tigera apiVersion: v1 +--- +apiVersion: airshipit.org/v1alpha1 +kind: GenericContainer +metadata: + name: kubectl-wait-deploy + labels: + airshipit.org/deploy-k8s: "false" +spec: + type: krm + image: quay.io/airshipit/toolbox:latest + hostNetwork: true +configRef: + kind: ConfigMap + name: kubectl-wait-deploy + apiVersion: v1 diff --git a/manifests/phases/phases.yaml b/manifests/phases/phases.yaml index 41c3d446a..afe7b50e6 100644 --- a/manifests/phases/phases.yaml +++ b/manifests/phases/phases.yaml @@ -311,3 +311,14 @@ config: apiVersion: airshipit.org/v1alpha1 kind: GenericContainer name: kubectl-wait-tigera +--- +apiVersion: airshipit.org/v1alpha1 +kind: Phase +metadata: + name: kubectl-wait-deploy-ephemeral + clusterName: ephemeral-cluster +config: + executorRef: + apiVersion: airshipit.org/v1alpha1 + kind: GenericContainer + name: kubectl-wait-deploy diff --git a/tools/deployment/26_deploy_capi_ephemeral_node.sh b/tools/deployment/26_deploy_capi_ephemeral_node.sh index 514d04ce6..5d25d4ac5 100755 --- a/tools/deployment/26_deploy_capi_ephemeral_node.sh +++ b/tools/deployment/26_deploy_capi_ephemeral_node.sh @@ -14,8 +14,6 @@ set -xe export PROVIDER=${PROVIDER:-"metal3"} -export KUBECONFIG=${KUBECONFIG:-"$HOME/.airship/kubeconfig"} -export KUBECONFIG_EPHEMERAL_CONTEXT=${KUBECONFIG_EPHEMERAL_CONTEXT:-"ephemeral-cluster"} if [ "$PROVIDER" = "metal3" ]; then @@ -32,17 +30,30 @@ if [ "$PROVIDER" = "metal3" ]; then echo "Deploy metal3.io components to ephemeral node" airshipctl phase run initinfra-ephemeral --debug - echo "Getting metal3 pods as debug information" - kubectl --kubeconfig $KUBECONFIG --context $KUBECONFIG_EPHEMERAL_CONTEXT --namespace ${PROVIDER} get pods + echo "Getting pods as debug information" + # Scripts for this phase placed in manifests/function/phase-helpers/get_pods/ + # To get ConfigMap for this phase, execute `airshipctl phase render --source config -k ConfigMap` + # and find ConfigMap with name kubectl-get-pods + airshipctl phase run kubectl-get-pods-ephemeral --debug echo "Deploy cluster-api components to ephemeral node" airshipctl phase run clusterctl-init-ephemeral --debug else echo "Deploy cluster-api components to ephemeral node" airshipctl phase run clusterctl-init-ephemeral --debug - kubectl --kubeconfig $KUBECONFIG --context $KUBECONFIG_EPHEMERAL_CONTEXT get pods -A + # Scripts for this phase placed in manifests/function/phase-helpers/get_pods/ + # To get ConfigMap for this phase, execute `airshipctl phase render --source config -k ConfigMap` + # and find ConfigMap with name kubectl-get-pods + airshipctl phase run kubectl-get-pods-ephemeral --debug fi echo "Waiting for clusterapi pods to come up" -kubectl --kubeconfig $KUBECONFIG --context $KUBECONFIG_EPHEMERAL_CONTEXT wait --for=condition=available deploy --all --timeout=1000s -A -kubectl --kubeconfig $KUBECONFIG --context $KUBECONFIG_EPHEMERAL_CONTEXT get pods --all-namespaces +# Scripts for this phase placed in manifests/function/phase-helpers/wait_deploy/ +# To get ConfigMap for this phase, execute `airshipctl phase render --source config -k ConfigMap` +# and find ConfigMap with name kubectl-wait-deploy +airshipctl phase run kubectl-wait-deploy-ephemeral --debug + +# Scripts for this phase placed in manifests/function/phase-helpers/get_pods/ +# To get ConfigMap for this phase, execute `airshipctl phase render --source config -k ConfigMap` +# and find ConfigMap with name kubectl-get-pods +airshipctl phase run kubectl-get-pods-ephemeral --debug