From 45336082e26a9320412cba5984045cc683726a7a Mon Sep 17 00:00:00 2001 From: Yosafat Marselino Date: Sun, 18 May 2025 06:20:07 -0400 Subject: [PATCH] add setup non-root kubeconfig --- curl_execute.yaml | 3 --- test-scripts/install_k8s.sh | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/curl_execute.yaml b/curl_execute.yaml index cd1b303..4a81341 100644 --- a/curl_execute.yaml +++ b/curl_execute.yaml @@ -51,9 +51,6 @@ msg: "{{ item.stdout_lines }}" loop: "{{ script_output.results }}" - - name: Add Kubeconfig to User - shell: "rm -rf /home/ubuntu/.kube/config && mkdir -p /home/ubuntu/.kube/ && cp /etc/kubernetes/adminf.conf /home/ubuntu/.kube/config" - - name: Clean up temporary directory file: path: /tmp/downloaded_scripts diff --git a/test-scripts/install_k8s.sh b/test-scripts/install_k8s.sh index b9af7da..57da97d 100644 --- a/test-scripts/install_k8s.sh +++ b/test-scripts/install_k8s.sh @@ -57,6 +57,40 @@ echo "Provision Kubernetes With IP $VM_IP" KUBEVERSION="1.32.3-1.1" HELMVERSION="3.14.2" +setup_kube_config() { + # Source admin.conf location + local admin_conf=${1:-"/etc/kubernetes/admin.conf"} + + # Check if admin.conf exists + if [ ! -f "$admin_conf" ]; then + echo "Error: Admin config file not found at $admin_conf" >&2 + return 1 + fi + + # Ensure running as root + if [ "$(id -u)" -ne 0 ]; then + echo "Error: This function must be run as root" >&2 + return 1 + fi + + # Process regular users (UID >= 1000) + while IFS=: read -r username _ uid _ _ home_dir _; do + if [ "$uid" -ge 1000 ] && [ -d "$home_dir" ] && [ "$home_dir" != "/nonexistent" ]; then + # Create .kube directory if needed + local kube_dir="$home_dir/.kube" + local kube_config="$kube_dir/config" + + echo "Setting up Kubernetes config for user: $username" + mkdir -p "$kube_dir" || true + cp -f "$admin_conf" "$kube_config" + chown -R "$username":"$username" "$kube_dir" + chmod 600 "$kube_config" + fi + done /dev/null 2>&1 } @@ -290,6 +324,7 @@ kubeadm init --apiserver-advertise-address=${VM_IP} --pod-network-cidr=10.244.0. mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config + export KUBECONFIG=/etc/kubernetes/admin.conf kubectl taint nodes --all node-role.kubernetes.io/control-plane- @@ -306,3 +341,6 @@ echo "************************************************************************** kubectl get pods -A echo "***************************************************************************************************************" + +# Distribute kubeconfig among non-root users +setup_kube_config