作者:好开心6327 | 来源:互联网 | 2023-09-12 23:00
kubernetes认证
我们知道任何应用的控制都需要通过一定的认证之后,我们才可以获取到应用的控制权。而此处,我们来了解k8s的认证授权是怎么做。
像一般应用,都是提供一个登陆界面,然后我们输入账号密码,登陆后,系统根据用户所有的权限,让我们进行有限的操作。
但像这种应用,没有登陆界面,我们是怎么来实现。
首先,我们来了解k8s客户端是怎么通过认证来获取k8s集群的控制。
k8s客户端需要通过3关来获取。
认证–>授权–>准入控制
认证(怎么好像跟用户没关系,用户信息是怎么传到主服务器上):
what: 证明自己是合法账户
why:
how:
1.令牌认证(http header带上token,跟我们平时开发使用的方式一样)
2.ssl认证,需要双向证书认证
??难道用户的信息会在证书里
3.账号密码
授权:
what:
why:
how:
1.rbac
准入控制:
客户端(人)—>api server 需要包含的信息
用户信息 (应该附带在header或者其他地方)
认证信息 (https)
请求资源(以url的形式)
api的restful设计:
集群级别:
/apis/apps/v1/…/…
名称空间级别:
/apis/apps/v1/namespaces/default/deployment/myapp-deploy/
使用curl访问api server的流程(避免访问认证):
1.开启代理
kubectl proxy --port=8080
2.访问本地端口
kubeconfig保存了认证和用户信息
查看 kubectl config view
自定义账号
账号名就是subject里的CN
新建私钥
(umask 077;openssl genrsa -out magedu.key 2048)
新建csr
(openssl req -new -key magedu.key -out magedu.csr -subj “/CN=magedu”)
新建证书
openssl x509 -req -in magedu.csr -CA ca.crt -CAkey ca.key
-CAcreateserial -out magedu.crt -days 365
新建账号
kubectl config set-credentials --client-certificate=./magedu.crt --client-key=./magedu.key
设置上下文
切换上下文
新建连接集群
pod–>api server的认证
API server 对应到集群pod内的地址是
每个pod都含有一个认证信息
给pod自定一个serviceAccount
1.创建一个sa
kubectl create serviceaccount mysa,会自动生成授权信息
2.指定pod使用sa
serviceAccountName:pod连接apiserver时使用的账号