From 883d56f9146cb5ce9e7bb902426af65d76b46cab Mon Sep 17 00:00:00 2001 From: Mads Hartmann Date: Wed, 5 Jan 2022 13:59:01 +0000 Subject: [PATCH] Add Harvester kubectl context to kubeconfig --- .gitpod.yml | 4 ++ ...download-and-merge-harvester-kubeconfig.sh | 41 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100755 dev/preview/download-and-merge-harvester-kubeconfig.sh diff --git a/.gitpod.yml b/.gitpod.yml index 00ddb7b5e20ad2..629260c286a66f 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -25,6 +25,10 @@ ports: # Dev Theia - port: 13444 tasks: + - name: Add Harvester kubeconfig + command: | + ./dev/preview/download-and-merge-harvester-kubeconfig.sh + exit 0 - name: Java init: | leeway exec --package components/supervisor-api/java:lib --package components/gitpod-protocol/java:lib -- ./gradlew build diff --git a/dev/preview/download-and-merge-harvester-kubeconfig.sh b/dev/preview/download-and-merge-harvester-kubeconfig.sh new file mode 100755 index 00000000000000..91c527712b96d6 --- /dev/null +++ b/dev/preview/download-and-merge-harvester-kubeconfig.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +set -euo pipefail + +function log { + echo "[$(date)] $*" +} + +function has-dev-access { + kubectl --context=dev auth can-i get secrets > /dev/null 2>&1 || false +} + +if ! has-dev-access; then + log "The workspace isn't configured to have core-dev access. Exiting." + exit 0 +fi + +KUBECONFIG_PATH="/home/gitpod/.kube/config" +HARVESTER_KUBECONFIG_PATH="$(mktemp)" +MERGED_KUBECONFIG_PATH="$(mktemp)" + +log "Downloading and preparing Harvester kubeconfig" +kubectl -n werft get secret harvester-kubeconfig -o jsonpath='{.data}' \ +| jq -r '.["harvester-kubeconfig.yml"]' \ +| base64 -d \ +| sed 's/default/harvester/g' \ +> "${HARVESTER_KUBECONFIG_PATH}" + +# Order of files is important, we have the original config first so we preserve +# the value of current-context +log "Merging kubeconfig files ${KUBECONFIG_PATH} ${HARVESTER_KUBECONFIG_PATH} into ${MERGED_KUBECONFIG_PATH}" +KUBECONFIG="${KUBECONFIG_PATH}:${HARVESTER_KUBECONFIG_PATH}" \ + kubectl config view --flatten --merge > "${MERGED_KUBECONFIG_PATH}" + +log "Overwriting ${KUBECONFIG_PATH}" +mv "${MERGED_KUBECONFIG_PATH}" "${KUBECONFIG_PATH}" + +log "Cleaning up temporay Harveter kubeconfig" +rm "${HARVESTER_KUBECONFIG_PATH}" + +log "Done"