admin管理员组文章数量:1648552
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/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默认就使用了
本文标签: 十五ServiceAccountsa
版权声明:本文标题:十五、Serviceaccount(简称sa)认证 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729495425a1202850.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论