Skip to content

Set namespace to default for kubectl apply commands in ClusterLoader2 run-e2e.sh #3101

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 27 additions & 15 deletions clusterloader2/run-e2e.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,17 @@ export AZUREDISK_CSI_DRIVER_VERSION="${AZUREDISK_CSI_DRIVER_VERSION:-master}"
export AZUREDISK_CSI_DRIVER_INSTALL_URL="${AZUREDISK_CSI_DRIVER_INSTALL_URL:-https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/${AZUREDISK_CSI_DRIVER_VERSION}/deploy/install-driver.sh}"
export WINDOWS_USE_HOST_PROCESS_CONTAINERS=true


kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" config set-context --current --namespace="default"

echo "CSI driver kubeconfig context is"
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" config get-contexts

# Deploy the GCE PD CSI Driver if required
if [[ "${DEPLOY_GCI_DRIVER:-false}" == "true" ]]; then
if [[ -n "${E2E_GOOGLE_APPLICATION_CREDENTIALS:-}" ]]; then
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" apply -f "${CLUSTERLOADER_ROOT}"/drivers/gcp-csi-driver-stable.yaml
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" create secret generic cloud-sa --from-file=cloud-sa.json="${E2E_GOOGLE_APPLICATION_CREDENTIALS:-}" -n gce-pd-csi-driver
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" apply -n default -f "${CLUSTERLOADER_ROOT}"/drivers/gcp-csi-driver-stable.yaml
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" create secret generic -n default cloud-sa --from-file=cloud-sa.json="${E2E_GOOGLE_APPLICATION_CREDENTIALS:-}" -n gce-pd-csi-driver
else
echo "Env var E2E_GOOGLE_APPLICATION_CREDENTIALS is unset."
echo "Falling back to using Application Default Credentials for GCE PD CSI driver deployment."
Expand All @@ -56,41 +62,47 @@ if [[ "${DEPLOY_GCI_DRIVER:-false}" == "true" ]]; then
del(.volumeMounts[] | select(.name == "cloud-sa-volume"))
)
)' "${CLUSTERLOADER_ROOT}"/drivers/gcp-csi-driver-stable.yaml > "${tmpfile}"
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" apply -f "${tmpfile}"
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" apply -n default -f "${tmpfile}"
rm "${tmpfile}"
fi
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" wait -n gce-pd-csi-driver deployment csi-gce-pd-controller --for condition=available --timeout=300s

# make sure there's a default storage class
names=( $(kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" get sc -o name) )
names=( $(kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" get -n default sc -o name) )
i=0
for name in "${names[@]}"
do
if [[ $(kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" get $name -o jsonpath='{.metadata.annotations.storageclass\.kubernetes\.io/is-default-class}') = true ]]; then
if [[ $(kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" get -n default $name -o jsonpath='{.metadata.annotations.storageclass\.kubernetes\.io/is-default-class}') = true ]]; then
((i+=1))
fi
done
if [[ $i < 1 ]]; then
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" patch storageclass csi-gce-pd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
kubectl --kubeconfig "${CSI_DRIVER_KUBECONFIG}" patch storageclass -n default csi-gce-pd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
fi
fi

if [[ "${DEPLOY_AZURE_CSI_DRIVER:-false}" == "true" ]]; then
curl -skSL ${AZUREDISK_CSI_DRIVER_INSTALL_URL} | bash -s ${AZUREDISK_CSI_DRIVER_VERSION} snapshot --
fi

echo "Normal kubeconfig context is"
kubectl --kubeconfig "${KUBECONFIG}" config get-contexts

kubectl --kubeconfig "${KUBECONFIG}" config set-context --current --namespace="default"


# Create a dedicated service account for cluster-loader.
cluster_loader_sa_exists=$(kubectl --kubeconfig "${KUBECONFIG}" get serviceaccount cluster-loader --ignore-not-found | wc -l)
cluster_loader_sa_exists=$(kubectl --kubeconfig "${KUBECONFIG}" get serviceaccount -n default cluster-loader --ignore-not-found | wc -l)
if [[ "$cluster_loader_sa_exists" -eq 0 ]]; then
kubectl --kubeconfig "${KUBECONFIG}" create serviceaccount cluster-loader
kubectl --kubeconfig "${KUBECONFIG}" create serviceaccount -n default cluster-loader
fi
cluster_loader_crb_exists=$(kubectl --kubeconfig "${KUBECONFIG}" get clusterrolebinding cluster-loader --ignore-not-found | wc -l)
cluster_loader_crb_exists=$(kubectl --kubeconfig "${KUBECONFIG}" get clusterrolebinding -n default cluster-loader --ignore-not-found | wc -l)
if [[ "$cluster_loader_crb_exists" -eq 0 ]]; then
kubectl --kubeconfig "${KUBECONFIG}" create clusterrolebinding cluster-loader --clusterrole=cluster-admin --serviceaccount=default:cluster-loader
kubectl --kubeconfig "${KUBECONFIG}" create clusterrolebinding -n default cluster-loader --clusterrole=cluster-admin --serviceaccount=default:cluster-loader
fi
cluster_loader_secret_exists=$(kubectl --kubeconfig "${KUBECONFIG}" get secret cluster-loader --ignore-not-found | wc -l)
cluster_loader_secret_exists=$(kubectl --kubeconfig "${KUBECONFIG}" get secret -n default cluster-loader --ignore-not-found | wc -l)
if [[ "$cluster_loader_secret_exists" -eq 0 ]]; then
cat << EOF | kubectl --kubeconfig "${KUBECONFIG}" create -f -
cat << EOF | kubectl --kubeconfig "${KUBECONFIG}" create -n default -f -
apiVersion: v1
kind: Secret
metadata:
Expand All @@ -105,9 +117,9 @@ fi

# Create a kubeconfig to use the above service account.
kubeconfig=$(mktemp)
server=$(kubectl --kubeconfig "${KUBECONFIG}" config view -o jsonpath='{.clusters[0].cluster.server}')
ca=$(kubectl --kubeconfig "${KUBECONFIG}" get secret cluster-loader -o jsonpath='{.data.ca\.crt}')
token=$(kubectl --kubeconfig "${KUBECONFIG}" get secret cluster-loader -o jsonpath='{.data.token}' | base64 --decode)
server=$(kubectl --kubeconfig "${KUBECONFIG}" config -n default view -o jsonpath='{.clusters[0].cluster.server}')
ca=$(kubectl --kubeconfig "${KUBECONFIG}" get secret -n default cluster-loader -o jsonpath='{.data.ca\.crt}')
token=$(kubectl --kubeconfig "${KUBECONFIG}" get secret -n default cluster-loader -o jsonpath='{.data.token}' | base64 --decode)
echo "
apiVersion: v1
kind: Config
Expand Down