阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何创建一个用户、授权操作k8s集群的过程?

301次阅读
没有评论

共计 4538 个字符,预计需要花费 12 分钟才能阅读完成。

导读 本篇带给大家如何创建一个用户、授权操作 k8s 集群的过程。希望对你有所帮助!
背景

172.16.99.128 是的我 k8s 集群的 master 节点,此处是从这里获取集群的证书。

创建访问 architechure 命名空间的用户
1. 给用户 devops 创建一个私钥
openssl genrsa -out devops.key 2048
2. 使用我们刚刚创建的私钥创建一个证书签名请求文件:devops.csr,要注意需要确保在 -subj 参数中指定用户名和组 (CN 表示用户名,O 表示组)
openssl req -new -key devops.key -out devops.csr -subj "/CN=devops/O=architechure"
3. 然后找到我们的 Kubernetes 集群的 CA

我们使用的是 kubeadm 安装的集群,CA 相关证书位于 /etc/kubernetes/pki/ 目录下面,如果你是二进制方式搭建的,你应该在最开始搭建集群的时候就已经指定好了 CA 的目录,我们会利用该目录下面的 ca.crt 和 ca.key 两个文件来批准上面的证书请求, 生成最终的证书文件,我们这里设置证书的有效期为 500 天

scp root@172.16.99.128:/etc/kubernetes/pki/ca.crt .
scp root@172.16.99.128:/etc/kubernetes/pki/ca.key .
openssl x509 -req -in devops.csr -CA ./ca.crt -CAkey ./ca.key -CAcreateserial -out devops.crt -days 500
➜  ls -al
total 72
drwxr-xr-x  11 marion  staff   352 Dec 25 11:32 .
drwxr-xr-x  13 marion  staff   416 Dec 25 11:26 ..
-rw-r--r--   1 marion  staff    17 Dec 25 11:32 .srl
-rw-r--r--   1 marion  staff  1156 Dec 25 11:32 README.md
-rw-r--r--   1 marion  staff  1025 Dec 25 11:30 ca.crt
-rw-------   1 marion  staff  1675 Dec 25 11:30 ca.key
-rw-r--r--   1 marion  staff  1009 Dec 25 11:32 devops.crt
-rw-r--r--   1 marion  staff   924 Dec 25 11:30 devops.csr
-rw-r--r--   1 marion  staff  1679 Dec 25 11:27 devops.key
4. 现在我们可以使用刚刚创建的证书文件和私钥文件在集群中创建新的凭证:
kubectl config set-credentials devops --client-certificate=devops.crt  --client-key=devops.key
5. 通过刚才创建的用户凭证创建新的上下文 (Context)
kubectl config set-context devops-context --cluster=cluster-tf26gt9mmk --namespace=architechure --user=devops
6. 尝试通过该用户操作命令
➜  kubectl get pods --context=devops-context
Error from server (Forbidden): pods is forbidden: User "devops" cannot list resource "pods" in API group ""in the namespace"architechure" # 因为该 devops-context 还没有操作 API 的权限 
7. 给用户创建一个 role 的角色 devops.role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: devops-role
  namespace: architechure
rules:
- apiGroups: ["","extensions","apps"]
  resources: ["deployments", "replicasets", "pods"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # 也可以使用 ['*']

然后在集群中创建该角色

kubectl apply -f ./devops.role.yaml
8. 创建权限与角色之间的绑定关系 devops-rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: devops-rolebinding
  namespace: architechure
subjects:
- kind: User
  name: devops
  apiGroup: ""
roleRef:
  kind: Role
  name: devops-role # 上一步创建的 devops-role 实体
  apiGroup: ""

在集群中创建角色与用户之间的绑定关系

k apply -f ./devops-rolebinding.yaml
9. 此时我们可以通过 kubecm 切换到该角色上

如何创建一个用户、授权操作 k8s 集群的过程?

此时,从下图就可以查看到当前集群的有一个新的用户角色 devops,上面用到的 Kubecm 我们之前也分享过,如果需要可以点此跳转

如何创建一个用户、授权操作 k8s 集群的过程?

10. 权限验证
> kubectl get pods
No resources found in architechure namespace.
> kubectl get replicasets
No resources found in architechure namespace.
> kubectl get deploy
No resources found in architechure namespace.
> kubectl get svc
Error from server (Forbidden): services is forbidden: User "devops" cannot list resource "services" in API group ""in the namespace"architechure"

总结一下就是:

  • 根据集群的 CA 证书创建出来用户证书
  • 根据用户证书创建该用户在集群内的凭证和上下文内容
  • 要想用户能进行基本的操作,需要对用户针对 apiGroup 授权
为 devops 用户增加指定命名空间的权限
1. 我们先把当前上下文切换到之前有权限操作的 user-tf26gt9mmk 用户上
kubecm switch
# select dev

否则以下步骤会出错:

2. 首先需要创建针对指定命名空间的上下文
kubectl config set-context devops-context --cluster=cluster-tf26gt9mmk --namespace=default --user=devops

此时查询列举 default 空间下的 pods 是不行的,因为还没允许操作

kubectl get pods --context=devops-context
Error from server (Forbidden): pods is forbidden: User "devops" cannot list resource "pods" in API group ""in the namespace"default"
3. 创建 default 空间下的 role 与 rolebinding

devops-role-default.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: devops-role
  namespace: default
rules:
- apiGroups: ["","extensions","apps"]
  resources: ["deployments", "replicasets", "pods"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # 也可以使用 ['*']

devops-rolebinding-default.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: devops-rolebinding
  namespace: default
subjects:
- kind: User
  name: devops
  apiGroup: ""
roleRef:
  kind: Role
  name: devops-role
  apiGroup: ""

然后我们在集群中创建这两个对象

kubectl apply -f devops-role-default.yaml
kubectl apply -f devops-rolebinding-default.yaml
4. 查看 role 资源对象是否创建
kubectl get role -A |grep devops-role # 分别在 architechure 和 default 命名空间下
architechure                   devops-role                                      2021-05-17T07:57:27Z
default                        devops-role                                      2021-05-28T03:19:24Z
5. 切换当前上下文环境,验证是否可以操作资源
kubecm switch
# select devops-context
kubectl get pods -n default
kubectl get pods -n architechure

到这里就基本上说清楚如何创建一个用户、授权操作 k8s 集群的过程了。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计4538字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7804436
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...