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 后,即可用于登录。