Kubernetes—Serviceaccount

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文件)
客户端配置文件
Kubernetes—Serviceaccount_第1张图片

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)以文本输出证书内容
Kubernetes—Serviceaccount_第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默认就使用了

你可能感兴趣的:(kubernetes,Serviceaccount,sa)