@@ -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,34 @@ 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+ # Get service account details
226+ SA_TOKEN=$( cat /var/run/secrets/kubernetes.io/serviceaccount/token)
227+ SA_CA_CERT=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
228+ NAMESPACE=$( cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
229+
230+ # Get the Kubernetes API server address
231+ KUBERNETES_SERVICE_HOST=${KUBERNETES_SERVICE_HOST:- kubernetes.default.svc}
232+ KUBERNETES_SERVICE_PORT=${KUBERNETES_SERVICE_PORT:- 443}
233+
234+ # Create kubeconfig
235+ kubectl config set-cluster default-cluster \
236+ --server=https://${KUBERNETES_SERVICE_HOST} :${KUBERNETES_SERVICE_PORT} \
237+ --certificate-authority=${SA_CA_CERT} \
238+ --embed-certs=true \
239+ --kubeconfig=~ /.kube/config
240+
241+ kubectl config set-credentials default-user \
242+ --token=${SA_TOKEN} \
243+ --kubeconfig=~ /.kube/config
244+
245+ kubectl config set-context default-context \
246+ --cluster=default-cluster \
247+ --user=default-user \
248+ --namespace=${NAMESPACE} \
249+ --kubeconfig=~ /.kube/config
250+
251+ kubectl config use-context default-context \
252+ --kubeconfig=~ /.kube/config
253+ }
0 commit comments