KubePi 支持 Bearer Token、证书、kubeconfig 文件方式进行登录。以 Bearer Token 方式介绍如何登录。
前提条件
kube-apiserver 需要设置--enable-bootstrap-token-auth=true
启动 Bootstrap Token 身份认证,并且依赖 kube-controller-manager 设置--controllers=*,bootstrapsigner,tokencleaner
启动 TokenCleaner 和 BootstrapSigner。
获取 kube-apiserver 地址
首先获取 kube-apiserver 地址,用于在 kubepi 中设置 api server 地址:
cat ~/.kube/config | grep server: | awk '{print $2}'
注意: 如果 server IP 为 127.0.0.1,需要将 IP 替换为集群 master 节点 IP
创建 token
创建一个名为 kubepi-user 的用户,并创建 3 个资源:ServiceAccount、ClusterRoleBinding、Secret
cat <<EOF > kubepi-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubepi-user
namespace: kube-system
EOF
cat <<EOF > kubepi-clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubepi-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubepi-user
namespace: kube-system
EOF
cat <<EOF > kubepi-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: kubepi-user
namespace: kube-system
annotations:
kubernetes.io/service-account.name: "kubepi-user"
type: kubernetes.io/service-account-token
EOF
kubectl create -f ./kubepi-serviceaccount.yaml
kubectl create -f ./kubepi-clusterrolebinding.yaml
kubectl create -f ./kubepi-secret.yaml
获取 token
创建完成后获取 token:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubepi-user | awk '{print $1}') | grep token: | awk '{print $2}'
获取到 token 后,即可用于登录。