k8s|k8s(六)(配置管理与集群安全机制)


文章目录

  • 1. 配置管理
    • 1.1 Secret
      • 1.1.1 变量形式挂载到Pod
      • 1.1.2 数据卷形式挂载
    • 1.2 ConfigMap
      • 1.2.1 数据卷形式挂载到pod容器中
      • 1.2.1 变量形式挂载到Pod容器中
  • 2. 集群安全机制
    • 2.1 RBAC介绍

1. 配置管理 1.1 Secret Secret的主要作用就是加密数据,然后存在etcd里面,让Pod容器以变量或挂载Volume方式进行访问
场景:如用户名 和 密码进行加密,凭证
一般场景的是对某个字符串进行base64编码 进行加密
[root@iZ2zedqr9yeos47fg4uor5Z ~]# echo -n 'admin' | base64 YWRtaW4=

1.1.1 变量形式挂载到Pod
  1. 创建secret加密数据
创建secret加密数据的yaml文件 secret.yaml
k8s|k8s(六)(配置管理与集群安全机制)
文章图片

执行该yaml
kubectl create -f secret.yaml

用get命令查看
kubectl get secret

k8s|k8s(六)(配置管理与集群安全机制)
文章图片

  1. 以变量形式挂载到pod中
创建kind为pod的yaml文件secret-val.yaml
k8s|k8s(六)(配置管理与集群安全机制)
文章图片

运行创建上述yaml
kubectl apply -f secret-val.yaml

k8s|k8s(六)(配置管理与集群安全机制)
文章图片

进入mypod容器,即可获取到挂载的数据
kubectl exec -it mypod bash #进入容器echo $SECRET_USERNAME #获取挂载的变量

k8s|k8s(六)(配置管理与集群安全机制)
文章图片

1.1.2 数据卷形式挂载
  1. 创建secret-vol.yaml
    第一个红框为挂载目录
    第二个红框为前面创建的mysecret
    k8s|k8s(六)(配置管理与集群安全机制)
    文章图片
  2. 运行创建上述yaml
kubectl apply -f secret-vol.yaml

k8s|k8s(六)(配置管理与集群安全机制)
文章图片

  1. 进入pod并验证
kubectl exec -it mypod bash # 进入ls /etc/foot #进入容器后,执行该命令可以查看到挂载变量

k8s|k8s(六)(配置管理与集群安全机制)
文章图片

1.2 ConfigMap 存储不加密的数据到etcd中,让Pod以变量或数据卷挂载到容器中
场景:配置文件
1.2.1 数据卷形式挂载到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 cmkubectl describe cm redis-config

k8s|k8s(六)(配置管理与集群安全机制)
文章图片

3. Volume数据卷形式挂载
创建cm.yaml文件
k8s|k8s(六)(配置管理与集群安全机制)
文章图片

1.2.1 变量形式挂载到Pod容器中
  1. 首先我们有一个 myconfig.yaml文件,声明变量信息,然后以configmap创建
    k8s|k8s(六)(配置管理与集群安全机制)
    文章图片
  2. 然后我们就可以创建我们的配置文件
# 创建pod kubectl apply -f myconfig.yaml # 获取 kubectl get cm

k8s|k8s(六)(配置管理与集群安全机制)
文章图片

3. 然后我们创建完configmap后,我们就需要再创建一个 config-var.yaml 来使用我们的配置信息
k8s|k8s(六)(配置管理与集群安全机制)
文章图片

4.查看输出
kubectl logs mypod

k8s|k8s(六)(配置管理与集群安全机制)
文章图片

2. 集群安全机制 当我们访问K8S集群时,需要经过三个步骤完成具体操作
  1. 认证
  2. 鉴权【授权】
  3. 准入控制
进行访问的时候,都需要经过 apiserver, apiserver做统一协调
访问过程中,需要证书、token、或者用户名和密码
如果访问pod需要serviceAccount
(1)认证
对外不暴露8080端口,只能内部访问,对外使用的端口6443客户端身份认证常用方式: 1. https证书认证,基于ca证书 2. http token认证,通过token来识别用户 3. http基本认证,用户名 + 密码认证

(2)鉴权
基于RBAC进行鉴权操作基于角色访问控制

(3)准入控制
就是准入控制器的列表,如果列表有请求内容就通过,没有的话 就拒绝

2.1 RBAC介绍 基于角色的访问控制,为某个角色设置访问内容,然后用户分配该角色后,就拥有该角色的访问权限
【k8s|k8s(六)(配置管理与集群安全机制)】此部分可参考博客:https://blog.csdn.net/qq_38304320/article/details/121089389

    推荐阅读