Kubeconfig基本结构并管理多集群
文章目录
前提通过rbac授权role或者clusterrole,再进行如下配置。
通过Kubectl设置kubeconfig
ca证书获取方式,下面用到的是base64解密之后的:
kubectl get secret <secretname> -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
token获取方式(需要base64解密):
kubectl get secret <secretname> -o jsonpath='{.data.token}' | base64 --decode > token
- 设置cluster
kubectl config set-cluster cluster_name \
--embed-certs=true \
--server=https://ip:6443 \
--certificate-authority=./ca.crt
这里的ca.crt是base64解密之后的,形如
-----BEGIN CERTIFICATE-----
…
-----END CERTIFICATE-----
- 设置token认证
kubectl config set-credentials lab2-user --token=<token>
- 设置上下文
kubectl config set-context lab2 --cluster=lab2 --user=lab2-user
验证:
修改kubeconfig的NAME 、CLUSTER、AUTHIINFO
修改kubectl时候注意三大位置,clusters,contexts,users,对应位置的名称对应。
通过ServiceAccount的token,创建kubeconfig文件
关于sa的一些知识,请在文档内搜索rbac。
apiVersion: v1
kind: Config
clusters:
- name: ${cluster_name}
cluster:
certificate-authority-data: ${ca}
server: ${server}
contexts:
- name: ${context_name}
context:
cluster: ${cluster_name}
namespace: default
user: ${sa_name}
current-context: ${context_name}
users:
- name: ${sa_name}
user:
token: ${token}
- ca证书获取方式(这里需要的是base64加密之后的):
ca=$(kubectl get secret <secretname> -o jsonpath='{.data.ca\.crt}')
- token获取方式(需要base64解密):
token=$(kubectl get secret <secretname> -o jsonpath='{.data.token}' | base64 --decode)
- Server: 需要是https://ip:6443,一般是6443
- sa_name: 并不一定是Servicename,只要与users.name对应即可。
- cluster_name 和 context_name可以自己指定,也可以修改,会稍微麻烦,建议一次性修改准确,因为这个和控制多集群又关系。
需要的这几个值设置好之后就可以进行下一步:
echo "
apiVersion: v1
kind: Config
clusters:
- name: ${cluster_name}
cluster:
certificate-authority-data: ${ca}
server: ${server}
contexts:
- name: ${context_name}
context:
cluster: ${cluster_name}
namespace: default
user: ${sa_name}
current-context: ${context_name}
users:
- name: ${sa_name}
user:
token: ${token}
" > sa-kubeconfig
验证: