十五、Serviceaccount(简称sa)认证

1.创建serviceaccount

K8s集群账号分为用户账号useraccount和Serviceaccount(是指pod想访问api-server要用到的用户账号密码等)
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: default

2.自定义pod连接api的认证用户

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      serviceAccountName: admin    #使用自己创建的serviceAccount(sa)
      containers:
      - image: nginx
        name: nginx

3.认证信息保存的配置文件(kubeconfig)

连入api-server时认证的配置文件,kubectl也是等等,
kubectl config view  (打印kubectl的kubeconfig文件)
客户端配置文件
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED  #认证到集群,认证方式检验,私密数据
    server: https://192.168.74.230:6443              #访问集群api-server的路径
  name: kubernetes                               #集群名字(多个集群不可以同名)
contexts:
- context:
    cluster: kubernetes                    #集群
    user: kubernetes-admin              #对应用户
  name: kubernetes-admin@kubernetes    #给context取名
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin                   #用户名
  user:
    client-certificate-data: REDACTED       #客户端证书
    client-key-data: REDACTED            #客户端私钥

在这里插入图片描述

clusters:         #集群列表:当前主机作为客户端,可以连接的k8s集群,控制多个集群
contexts:        #上下文列表:这个是用来指定用那个用户访问那个集群,把用户跟集群关联
current-context:  #当前上下文:当前使用那个账号访问那个集群
users:           #用户列表:多个用户

Ca认证的证书可以用/etc/kubernetes/pki路径下的ca.crt和ca.key来签署自己的证书然后创建config去认证

4 创建useraccount以及访问api-server(tls)

注意:证书持有者就是用户账号名
[root@k8s-master ~]# cd /etc/kubernetes/pki/

(1)制作私钥

[root@k8s-master pki]# (umask 077; openssl genrsa -out qushuaibo.key 2048)
生成证书,让ca.crt来签署
[root@k8s-master pki]# openssl  req -new -key qushuaibo.key  -out qushuaibo.csr -subj "/CN=qushuaibo"
[root@k8s-master pki]# openssl  x509 -req -in qushuaibo.csr  -CA ./ca.crt  -CAkey ./ca.key  -CAcreateserial -out qushuaibo.crt -days 365 

(2)以文本输出证书内容

[root@k8s-master pki]# openssl  x509 -in qushuaibo.crt  -text -noout

在这里插入图片描述

(3)将用户信息添加至kubeconfig

[root@k8s-master pki]# kubectl config  set-credentials  qushuaibo --client-certificate=./qushuaibo.crt  --client-key=./qushuaibo.key   --embed-certs=true
qushauibo  用户标识符
--client-certificate=./qushuaibo.crt  证书
 --client-key=./qushuaibo.key   私钥
 --embed-certs=true       隐藏证书信息  flast或者true 默认是flast  布尔值

(4)添加认证信息用那个用户认证那个k8s集群

[root@k8s-master pki]# kubectl config  set-context  qushuaibo@kubernetes --cluster=kubernetes --user=qushuaibo

(5)切换用户

[root@k8s-master pki]# kubectl config  use-context  qushuaibo@kubernetes

(6)删除用户

[root@k8s-master pki]# kubectl config  unset  users.qushauibo
具体操作请看网址(内有详细介绍):https://www.jianshu.com/p/e2a7aaa1731a

(7)定义个新的集群

[root@k8s-master ~]# kubectl config set-cluster  mycluster --kubeconfig=/root/test.conf --embed-certs=true --certificate-authority=/etc/kubernetes/pki/ca.crt   --server="https://192.168.74.230:6443"
 mycluster                                     定义的集群名称
--kubeconfig=/root/test.conf                     kubeconfig配置文件保存的地方
--embed-certs=true                             隐藏证书路径等信息
--certificate-authority=/etc/kubernetes/pki/ca.crt    需要连接的集群的ca证书
--server="https://192.168.74.230:6443"             需要连接的集群的api-server路径
查看
[root@k8s-master ~]# kubectl config  view --kubeconfig=test.conf 
也可以写脚本给某个新来的用户做用证书放至用户家目录下的.kube/config默认就使用了

猜你喜欢

转载自blog.csdn.net/qq_26489043/article/details/112463302
sa