具体按照这篇文章配置 https://zhuanlan.zhihu.com/p/43237959 ,本文用于记录命令
minikube的证书在/var/lib/minikube/certs 目录下,或者/var/lib/localkube/certs,可以通过查询进程kube-controller-manager,查看它的参数cluster-signing-cert-file是什么。
在.minikube目录里面的ca.crt和ca.key也是一样的。
mkdir /var/lib/minikube/certs/tmp/
cd /var/lib/minikube/certs/tmp/
# 首先需要为此用户创建一个私钥
openssl genrsa -out knative.key 2048
# 接着用此私钥创建一个csr(证书签名请求)文件,其中我们需要在subject里带上用户信息(CN为用户名,O为用户组)
openssl req -new -key knative.key -out knative.csr -subj "/CN=knative/O=MGM"
# 通过集群的CA证书和之前创建的csr文件,来为用户颁发证书
openssl x509 -req -in knative.csr -CA ../ca.crt -CAkey ../ca.key -CAcreateserial -out knative.crt -days 365
生成kubeconfig,具体见 jimmysong 的文章。
# KUBE_APISERVER 可以进一个容器里面看环境变量
# 如果是用虚拟机启动,执行minikube ip 拿到minikube的ip,加上端口8443。'https://192.168.39.23:8443',这个地址也可以从.kube/config里的server配置得到
# 设置集群参数
export KUBE_APISERVER="https://10.96.0.1:443"
kubectl config set-cluster kubernetes \
--certificate-authority=../ca.crt \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=knative.kubeconfig
# 设置客户端认证参数
kubectl config set-credentials knative \
--client-certificate=./knative.crt \
--client-key=./knative.key \
--embed-certs=true \
--kubeconfig=knative.kubeconfig
# 设置上下文参数
kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=knative \
--namespace=default \
--kubeconfig=knative.kubeconfig
# 设置默认上下文
kubectl config use-context kubernetes --kubeconfig=knative.kubeconfig
绑定namespace管理员权限
kubectl create rolebinding knative-admin-binding --clusterrole=admin --user=knative --namespace=knative-serving
使用账号访问
kubectl --kubeconfig=knative.kubeconfig -n knative-serving get po
参考
https://jimmysong.io/kubernetes-handbook/guide/kubectl-user-authentication-authorization.html