Bài này mình sẽ note 1 số thứ kiên quan đến việc tạo kube configuration từ 1 service account đã tồn tại
bạn có thể lấy nó từ k8s hay argocd.
Create a kubectl config file for serviceaccount
Bạn có thể tham khảo link bên dưới:
https://stackoverflow.com/questions/47770676/how-to-create-a-kubectl-config-file-for-serviceaccount
# your server name goes here server=https://localhost:8443 # the name of the secret containing the service account token goes here name=default-token-sg96k ca=$(kubectl get secret/$name -o jsonpath='{.data.ca\.crt}') token=$(kubectl get secret/$name -o jsonpath='{.data.token}' | base64 --decode) namespace=$(kubectl get secret/$name -o jsonpath='{.data.namespace}' | base64 --decode) echo " apiVersion: v1 kind: Config clusters: - name: default-cluster cluster: certificate-authority-data: ${ca} server: ${server} contexts: - name: default-context context: cluster: default-cluster namespace: default user: default-user current-context: default-context users: - name: default-user user: token: ${token} " > sa.kubeconfig
Create a kubectl config file from the cluster secret of Argocd
Bạn cũng sẽ thấy là khi bạn add 1 k8s cluster trên argocd.
thì argocd sẽ create 1 secret.

Chúng ta sẽ để ý key “config” trong này có 2 thứ là bearerToken và caData là helpful
Mình tiến hành phân tích bearerToken bằng https://devtoys.app/

Bạn sẽ thấy là Token trên lưu dữ thông tin serviceacount của argocd ở phần payload.
You can imagine that when you add the K8S cluster into Argocd. It will create a service account that is assigned permission based on RBAC.
apiVersion: v1 clusters: - cluster: certificate-authority-data: "<config->caData>" server: <server-in-cluster-secret> name: k8s-cluster contexts: - context: cluster: k8s-cluster namespace: default user: admin name: k8s-cluster current-context: k8s-cluster kind: Config users: - name: admin user: token: "<bearerToken-of-argocd>"
Then you modify the content inside “.kube/config
” file and Run "kubectl get ns
“
Thanks again!