首页 > 其他分享 >k8s开通只读权限 kubeconfig

k8s开通只读权限 kubeconfig

时间:2024-12-30 23:40:40浏览次数:1  
标签:exec -- 只读 kubeconfig read readuser k8s config

  • 创建证书文件并配置
#创建对应目录
mkdir /data/devops/kube-read -p
cd /data/devops/kube-read
cp /etc/kubernetes/ssl/ca* .

#创建证书文件
root@172-16-160-221:/data/devops/kube-read# cat ca-config.json 
{
    "signing": {
        "default": {
        "expiry": "4320h"
      },
        "profiles": {
            "kubernetes": {
                "usages": [
                "signing",
                "key encipherment",
                    "server auth",
                    "client auth"
                      ],
                "expiry": "4320h"
          }
      }
  }
}

#创建证书签名请求文件
root@172-16-160-221:/data/devops/kube-read# cat read-csr.json
{
    "CN": "readuser",
    "hosts": [],
    "key": {
        "algo": "rsa",
        "size": 2048
  },
    "names": [
      {
        "C": "CN",
        "ST": "QingDao",
        "L": "QingDao",
        "O": "k8s",
        "OU": "System"
      }
  ]
}

# 执行签发证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes read-csr.json | cfssljson -bare readuser

# 会生成以下文件
readuser.csr # 签名请求
readuser-key.pem  # 私钥
readuser.pem #证书

# 校验证书
cfssl-certinfo -cert readuser.pem


  • 生成kubeconfig文件
# 172.16.7.132:6443 改成对应的公网apiserver 地址,但是要做ip 限制
kubectl config set-cluster kubernetes \--certificate-authority=ca.pem \--embed-certs=true \--server=https://172.16.7.132:6443 \--kubeconfig=readuser.config

# 设置客户端认证参数
kubectl config set-credentials readuser \--client-certificate=readuser.pem \--client-key=readuser-key.pem \--embed-certs=true \--kubeconfig=readuser.config

# 设置上下文参数
kubectl config set-context kubernetes \--cluster=kubernetes \--user=readuser \--kubeconfig=readuser.config

# 设置默认上下文
kubectl config use-context kubernetes --kubeconfig=readuser.config

# read-crb.yaml
root@172-16-160-221:/data/devops/kube-read# cat read-crb.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: readuser
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: view
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: readuser
  
  # 验证
  kubectl get pods --kubeconfig=readuser.config -n kube-system
  
  • 增加 exec pod 权限
# 创建一个附加的 ClusterRole
root@172-16-160-221:/data/devops/kube-read# cat pod-exec-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pod-exec
rules:
- apiGroups: [""]  # 核心 API 组
  resources: ["pods/exec"]  # 子资源 exec
  verbs: ["create"]         # exec 操作需要 create 权限
  
  
  # 将权限绑定到用户
  # kubectl apply -f pod-exec-role.yaml
  root@172-16-160-221:/data/devops/kube-read# cat pod-exec-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: pod-exec-binding
subjects:
- kind: User
  name: readuser  # kubeconfig 中的用户名称
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: pod-exec
  apiGroup: rbac.authorization.k8s.io
  
  # kubectl apply -f pod-exec-binding.yaml
  
  #验证权限
  root@172-16-160-221:/data/devops/kube-read# kubectl  --kubeconfig=readuser.config  exec -it -n single-doc key-opinion-llm-data-56f55d8ff6-twqln  bash  
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@key-opinion-llm-data-56f55d8ff6-twqln:/app/lingo-engine# 

标签:exec,--,只读,kubeconfig,read,readuser,k8s,config
From: https://www.cnblogs.com/lixinliang/p/18642767

相关文章

  • Docker与K8S的区别
    目录 1定义角度2虚拟化角度虚拟化技术的发展过程VirtualMachinesVS.Docker3部署角度4其他角度4.1系统角度4.2功能角度4.3各自优势X参考文献回到顶部(BacktoTop)1定义角度Docker是一种开放源码的应用容器引擎,允许开发人员将其应用和依赖......
  • Kubeadm快速部署k8s集群2
    8、新增一个node节点按照上面的方式全新安装,在加入集群过程稍有不同。[root@k8smaster~]#kubeadmtokencreate--print-join-command  #因为token过期时间是24h,所以需要重新生成W122809:54:57.7837346538configset.go:202]WARNING:kubeadmcannotvalidatecomponent......
  • 【K8s】专题十五(6):Kubernetes 网络之 Pod 网络调试
    本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口| 精选文章 | Kubernetes |Docker|Linux |羊毛资源 | 工具推荐 |往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决......
  • 一文看懂K8s和Docker的区别与联系
    本文旨在探讨Kubernetes(K8s)和Docker之间的区别与联系。Docker是一个开源的容器化平台,允许开发者打包应用及其依赖项到一个可移植的容器中。而Kubernetes是一个容器编排工具,旨在自动化容器的部署、扩展和管理。理解这两者的关系对于现代应用开发和运维至关重要。Docker简介Do......
  • 循规蹈矩--从零开始建设k8s监控(一)
    前言监控k8s集群,目前主流就是使用prometheus以及其周围的生态,本文开始介绍怎么一步步完成k8s监控的建设环境准备组件版本操作系统Ubuntu22.04.4LTSminikubev1.30.1docker24.0.7prometheusv2.54.1kube-state-metricsv2.13.0node-exporterv1.8.2......
  • k8s 1.23 安装kubesphere 3.4
     参考: https://blog.csdn.net/weixin_43810267/article/details/133347736 1、下载kubesphere的yamlwgethttps://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yamlwgethttps://github.com/kubesphere/ks-installer/releases/d......
  • k8s安装网络插件weave
    参考部署:https://blog.csdn.net/shuaihj/article/details/122963090下载镜像1:https://newreleases.io/project/github/weaveworks/weave/release/v2.8.1下载镜像2:https://loongson-cloud-community.github.io/Loongson-Cloud-Community/%E7%A7%BB%E6%A4%8D%E6%89%8B%E5%86%8C/weav......
  • Docker-compose和k8s有什么区别
    docker-compose.yml和Kubernets(K8S)是两种不同的工具和技术,用于容器编排和管理,但他们有着显著的区别。以下是两者之间的主要区别:1.简单性vs复杂性DockerCompose:设计用于简化开发环境的设置,它允许用户通过一个YAML文件定义多个Docker容器的应用服务,并使用单一命令启动或停止这......
  • 【QTTabBar】批量去除当前文件夹的所有文件只读属性
     使用方法参考:https://www.cnblogs.com/issacnew/p/18392262 //作者:博客园-issacnew//网站:https://www.cnblogs.com/issacnew/p/18392262//作用:qttabbar去除当前文件夹下的所有文件只读属性,使得所有文件可读varqs=newActiveXObject("QTTabBarLib.Scripting");v......
  • 安装K8s集群
    原文链接:https://blog.liuzijian.com/post/9aa6d426-a01c-05b0-6f7a-5da4343f0f9e.html因阿里云加速服务调整,镜像加速服务自2024年7月起不再支持,拉取镜像,下载网络插件等操作,需要科学上网访问DockerHub。安装全过程均使用ROOT权限。1.安装前准备工作这里采用3台CentO......