@@ -36,29 +36,34 @@ waitandretry() {
3636 fi
3737}
3838
39- function setup_arch_and_os(){
39+ function setup_arch_and_os() {
4040 ARCH=$( uname -m)
4141 case $ARCH in
42- armv5* ) ARCH=" armv5" ;;
43- armv6* ) ARCH=" armv6" ;;
44- armv7* ) ARCH=" arm" ;;
45- aarch64) ARCH=" arm64" ;;
46- x86) ARCH=" 386" ;;
47- x86_64) ARCH=" amd64" ;;
48- i686) ARCH=" 386" ;;
49- i386) ARCH=" 386" ;;
50- * ) echo " Error architecture '${ARCH} ' unknown" ; exit 1 ;;
42+ armv5* ) ARCH=" armv5" ;;
43+ armv6* ) ARCH=" armv6" ;;
44+ armv7* ) ARCH=" arm" ;;
45+ aarch64) ARCH=" arm64" ;;
46+ x86) ARCH=" 386" ;;
47+ x86_64) ARCH=" amd64" ;;
48+ i686) ARCH=" 386" ;;
49+ i386) ARCH=" 386" ;;
50+ * )
51+ echo " Error architecture '${ARCH} ' unknown"
52+ exit 1
53+ ;;
5154 esac
5255
53- OS=$( uname | tr ' [:upper:]' ' [:lower:]' )
56+ OS=$( uname | tr ' [:upper:]' ' [:lower:]' )
5457 case " $OS " in
5558 # Minimalist GNU for Windows
56- " mingw" * ) OS=' windows' ; return ;;
59+ " mingw" * )
60+ OS=' windows'
61+ return
62+ ;;
5763 esac
5864}
5965
60-
61- function check_supported_arch_and_os(){
66+ function check_supported_arch_and_os() {
6267 local supported=$1
6368 local os=$2
6469 local arch=$3
@@ -89,8 +94,7 @@ function install_kubectl() {
8994 version=$( curl -L -s https://dl.k8s.io/release/stable.txt)
9095 fi
9196
92- if ! command -v " ${KUBECTL} " & > /dev/null
93- then
97+ if ! command -v " ${KUBECTL} " & > /dev/null; then
9498 echo " WARNING: kubectl could not be found. Downloading and installing it locally..."
9599 echo " Downloading https://dl.k8s.io/release/${version} /bin/${os} /${arch} /kubectl"
96100 if ! curl --fail -Lo " ${KUBECTL} " " https://dl.k8s.io/release/${version} /bin/${os} /${arch} /kubectl" ; then
@@ -114,8 +118,7 @@ function install_helm() {
114118
115119 HELM_VERSION=" v3.15.3"
116120
117- if ! command -v " ${HELM} " & > /dev/null
118- then
121+ if ! command -v " ${HELM} " & > /dev/null; then
119122 echo " WARNING: helm could not be found. Downloading and installing it locally..."
120123 if ! curl --fail -Lo " ./helm-${HELM_VERSION} -${os} -${arch} .tar.gz" " https://get.helm.sh/helm-${HELM_VERSION} -${os} -${arch} .tar.gz" ; then
121124 echo " Error: Unable to download helm for '${os} -${arch} '"
@@ -159,27 +162,24 @@ function install_gcloud() {
159162 cd -
160163
161164 # Login to gcloud
162- echo " ${GCLOUD_KEY} " | base64 -d > " ${BINDIR} /gke_key_file.json"
165+ echo " ${GCLOUD_KEY} " | base64 -d > " ${BINDIR} /gke_key_file.json"
163166 " ${GCLOUD} " auth activate-service-account --key-file=" ${BINDIR} /gke_key_file.json"
164167 " ${GCLOUD} " components install gke-gcloud-auth-plugin
165168}
166169
167170function install_az() {
168171 local os=$1
169172
170- if ! command -v az & > /dev/null
171- then
172- echo " Azure CLI could not be found. Downloading and installing..."
173- if [[ " ${os} " == " linux" ]]
174- then
175- curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
176- elif [[ " ${os} " == " darwin" ]]
177- then
178- brew update && brew install azure-cli
179- else
180- echo " Error: Azure CLI is not supported on ${os} "
181- exit 1
182- fi
173+ if ! command -v az & > /dev/null; then
174+ echo " Azure CLI could not be found. Downloading and installing..."
175+ if [[ " ${os} " == " linux" ]]; then
176+ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
177+ elif [[ " ${os} " == " darwin" ]]; then
178+ brew update && brew install azure-cli
179+ else
180+ echo " Error: Azure CLI is not supported on ${os} "
181+ exit 1
182+ fi
183183 fi
184184
185185 echo " Azure CLI version:"
@@ -206,8 +206,7 @@ function wait_kyverno() {
206206 local kubeconfig=$1
207207
208208 # Wait for the kyverno deployments to be ready
209- if ! waitandretry 5s 2 " ${KUBECTL} rollout status deployment -n kyverno --kubeconfig ${kubeconfig} "
210- then
209+ if ! waitandretry 5s 2 " ${KUBECTL} rollout status deployment -n kyverno --kubeconfig ${kubeconfig} " ; then
211210 echo " Failed to wait for kyverno deployments to be ready"
212211 exit 1
213212 fi
@@ -221,3 +220,41 @@ function install_clusterctl() {
221220 sudo install -o root -g root -m 0755 clusterctl /usr/local/bin/clusterctl
222221 clusterctl version
223222}
223+
224+ function generate_kubeconfig() {
225+ # Ensure .kube directory exists
226+ mkdir -p " ${HOME} /.kube"
227+
228+ # Get service account details
229+ SA_TOKEN=$( cat /var/run/secrets/kubernetes.io/serviceaccount/token)
230+ SA_CA_CERT=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
231+ NAMESPACE=$( cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
232+
233+ echo " SA_TOKEN: ${SA_TOKEN} "
234+ echo " SA_CA_CERT: ${SA_CA_CERT} "
235+ echo " NAMESPACE: ${NAMESPACE} "
236+
237+ # Get the Kubernetes API server address
238+ KUBERNETES_SERVICE_HOST=${KUBERNETES_SERVICE_HOST:- kubernetes.default.svc}
239+ KUBERNETES_SERVICE_PORT=${KUBERNETES_SERVICE_PORT:- 443}
240+
241+ # Create kubeconfig
242+ " ${KUBECTL} " config set-cluster default-cluster \
243+ --server=https://" ${KUBERNETES_SERVICE_HOST} " :" ${KUBERNETES_SERVICE_PORT} " \
244+ --certificate-authority=" ${SA_CA_CERT} " \
245+ --embed-certs=true \
246+ --kubeconfig=" ${HOME} /.kube/config"
247+
248+ " ${KUBECTL} " config set-credentials default-user \
249+ --token=" ${SA_TOKEN} " \
250+ --kubeconfig=" ${HOME} /.kube/config"
251+
252+ " ${KUBECTL} " config set-context default-context \
253+ --cluster=default-cluster \
254+ --user=default-user \
255+ --namespace=" ${NAMESPACE} " \
256+ --kubeconfig=" ${HOME} /.kube/config"
257+
258+ " ${KUBECTL} " config use-context default-context \
259+ --kubeconfig=" ${HOME} /.kube/config"
260+ }
0 commit comments