Secret的主要作用就是加密数据,然后存在etcd里面,让Pod容器以挂载Volume方式进行访问
场景:如用户名 和 密码进行加密,凭证
一般场景的是对某个字符串进行base64编码 进行加密
echo -n 'admin' | base64
创建secret加密数据的yaml文件 secret.yaml
然后使用下面命令创建一个pod
kubectl create -f secret.yaml
通过get命令查看
kubectl get pods
然后我们通过下面的命令,进入到我们的容器内部
kubectl exec -it mypod bash
然后我们就可以输出我们的值,这就是以变量的形式挂载到我们的容器中
输出用户
echo $SECRET_USERNAME
输出密码
echo $SECRET_PASSWORD
最后如果我们要删除这个Pod,就可以使用这个命令
kubectl delete -f secret-val.yaml
kubectl delete secret -all
删除所有pod
kubectl delete Pod -all
首先我们创建一个 secret-val.yaml 文件
然后创建我们的 Pod
# 根据配置创建容器
kubectl apply -f secret-val.yaml
# 进入容器
kubectl exec -it mypod bash
# 查看
ls /etc/foo
ConfigMap作用是存储不加密的数据到etcd中,让Pod以变量或数据卷Volume挂载到容器中
应用场景:配置文件
首先我们需要创建一个配置文件 redis.properties
redis.port=127.0.0.1
redis.port=6379
redis.password=123456
我们使用命令创建configmap
kubectl create configmap redis-config --from-file=redis.properties
查看ConfigMap信息
kubectl get cm
然后查看详细信息
kubectl describe cm redis-config
首先我们需要创建一个 cm.yaml
然后使用该yaml创建我们的pod
# 创建
kubectl apply -f cm.yaml
# 查看
kubectl get pods
最后我们通过命令就可以查看结果输出了
kubectl logs mypod
首先我们也有一个 myconfig.yaml文件,声明变量信息,然后以configmap创建
然后我们就可以创建我们的配置文件
# 创建pod
kubectl apply -f myconfig.yaml
# 获取
kubectl get cm
然后我们创建完该pod后,我们就需要在创建一个 config-var.yaml 来使用我们的配置信息
最后我们查看输出
kubectl logs mypod
当我们访问K8S集群时,需要经过三个步骤完成具体操作
进行访问的时候,都需要经过 apiserver, apiserver做统一协调,比如门卫
认证
对外不暴露8080端口,只能内部访问,对外使用的端口6443
客户端身份认证常用方式
鉴权
准入控制
就是准入控制器的列表,如果列表有请求内容就通过,没有的话 就拒绝
基于角色的访问控制,为某个角色设置访问内容,然后用户分配该角色后,就拥有该角色的访问权限
k8s中有默认的几个角色
角色绑定
主体
创建命名空间
我们可以首先查看已经存在的命名空间
kubectl get namespace
然后我们创建一个自己的命名空间 roledemo
kubectl create ns roledemo
命名空间创建Pod
为什么要创建命名空间?因为如果不创建命名空间的话,默认是在default下
kubectl run nginx --image=nginx -n roledemo
创建角色
我们通过 rbac-role.yaml进行创建
tip:这个角色只对pod 有 get、list权限
然后通过 yaml创建我们的role
# 创建
kubectl apply -f rbac-role.yaml
# 查看
kubectl get role -n roledemo
创建角色绑定
我们还是通过 role-rolebinding.yaml 的方式,来创建我们的角色绑定
然后创建我们的角色绑定
# 创建角色绑定
kubectl apply -f rbac-rolebinding.yaml
# 查看角色绑定
kubectl get role, rolebinding -n roledemo
使用证书识别身份
我们首先得有一个 rbac-user.sh 证书脚本
这里包含了很多证书文件,在TSL目录下,需要复制过来
通过下面命令执行我们的脚本
./rbac-user.sh
最后我们进行测试
# 用get命令查看 pod 【有权限】
kubectl get pods -n roledemo
# 用get命令查看svc 【没权限】
kubectl get svc -n roledmeo
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_38304320/article/details/121089389
内容来源于网络,如有侵权,请联系作者删除!