Secret的主要作用就是加密数据,然后存在etcd里面,让Pod容器以变量或挂载Volume方式进行访问
场景:如用户名 和 密码进行加密,凭证
一般场景的是对某个字符串进行base64编码 进行加密
[root@iZ2zedqr9yeos47fg4uor5Z ~]# echo -n 'admin' | base64
YWRtaW4=
创建secret加密数据的yaml文件 secret.yaml
执行该yaml
kubectl create -f secret.yaml
用get命令查看
kubectl get secret
创建kind为pod的yaml文件secret-val.yaml
运行创建上述yaml
kubectl apply -f secret-val.yaml
kubectl exec -it mypod bash #进入容器
echo $SECRET_USERNAME #获取挂载的变量
kubectl apply -f secret-vol.yaml
kubectl exec -it mypod bash # 进入
ls /etc/foot #进入容器后,执行该命令可以查看到挂载变量
存储不加密的数据到etcd中,让Pod以变量或数据卷挂载到容器中
场景:配置文件
1.首先我们需要创建一个配置文件 redis.properties
redis.port=127.0.0.1
redis.port=6379
redis.password=123456
2.创建ConfigMap
使用命令创建
kubectl create configmap redis-config --from-file=redis.properties
查看configmap信息
kubectl get cm
kubectl describe cm redis-config
# 创建pod
kubectl apply -f myconfig.yaml
# 获取
kubectl get cm
3. 然后我们创建完configmap后,我们就需要再创建一个 config-var.yaml 来使用我们的配置信息
4.查看输出
kubectl logs mypod
当我们访问K8S集群时,需要经过三个步骤完成具体操作
进行访问的时候,都需要经过 apiserver, apiserver做统一协调
访问过程中,需要证书、token、或者用户名和密码
如果访问pod需要serviceAccount
(1)认证
对外不暴露8080端口,只能内部访问,对外使用的端口6443
客户端身份认证常用方式:
1. https证书认证,基于ca证书
2. http token认证,通过token来识别用户
3. http基本认证,用户名 + 密码认证
(2)鉴权
基于RBAC进行鉴权操作
基于角色访问控制
(3)准入控制
就是准入控制器的列表,如果列表有请求内容就通过,没有的话 就拒绝
基于角色的访问控制,为某个角色设置访问内容,然后用户分配该角色后,就拥有该角色的访问权限
此部分可参考博客:https://blog.csdn.net/qq_38304320/article/details/121089389