IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Kubernetes中的用户权限管理 -> 正文阅读

[系统运维]Kubernetes中的用户权限管理

生成用户的key

一般来说,用户的key是用户的保密信息,不应该由集群管理员提供,而是用户向集群管理员提供csr文件,不过有时为了方便也由集群管理员统一生成并发放。

linmao@debian-1:/etc/kubernetes/pki$ sudo openssl genrsa -out linmao.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
.....+++++
..........+++++
e is 65537 (0x010001)

生成Csr(证书签署请求)

sudo openssl req -new -key linmao.key -out linmao.csr -subj "/O=linmao_corp/CN=linmao"

签署证书

linmao@debian-1:/etc/kubernetes/pki$ sudo openssl  x509 -req -in linmao.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out linmao.crt -days 365
Signature ok
subject=O = linmao_corp, CN = linmao
Getting CA Private Key

复制证书

证书到这一步就已经完成了。现在由集群管理员把证书发放给用户。证书包括:ca.crt,用户名.crt,用户名.key。前边说了,这个用户名.key本来是应该由用户自己生成,然后再把用这个key生成的csr文件给集群管理员进行签署,不过这里假设管理员为了方便,直接帮用户生成了这个key。但这并不是最佳实践。

现在我们通过把证书复制到客户端的电脑来模拟证书发放的过程。

PS C:\Users\marlin\.kube> scp debian1:/etc/kubernetes/pki/ca.crt .
ca.crt                                                                                100% 1099    95.3KB/s   00:00
PS C:\Users\marlin\.kube> scp debian1:/etc/kubernetes/pki/linmao.crt .
linmao.crt                                                                            100% 1017   248.0KB/s   00:00
PS C:\Users\marlin\.kube> scp debian1:/etc/kubernetes/pki/linmao.key .
linmao.key                                                                            100% 1679   819.8KB/s   00:00

创建Role/ClusterRole和RoleBinding/ClusterRoleBinding

Role 和 ClusterRole的区别在于,Role需要指定namespace,也就是说,role是与namespace绑定的。而clusterRole则是集群级别的权限,不受namespace限制。我们这里给出ClusterRule和ClusterRoleBinding的例子:

cluster-role.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-operator
rules:
- apiGroups:
  - ""
  - "batch"
  - "apps"
  resources:
  - pods
  - nodes
  - services
  - cronjobs
  - jobs
  - endpoints
  - deployments
  - namespaces
  - pods/log
  - persistentvolumes
  - configmaps
  - secrets
  verbs:
  - get
  - list
  - watch
  - delete
  - create

cluster-role-binding.yaml: 把上边创建的role绑定到用户linmao身上。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: read-all-pods
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-operator
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: linmao

上边两个文件通过sudo kubectl apply -f 文件名 提交到集群中。

配置客户端

到这里,服务端的配置就全部完成了。现在开始配置客户端。还记得刚才从服务端复制出来的三个文件(ca.crt, linmao.crt, linmao.key)吗?这里需要用到他们了。可以先把这几个文件放在HOME目录下的.kube目录下。

1、创建cluster

C:\Users\marlin>kubectl config set-cluster test-cluster --server=https://192.168.1.195:6443 --certificate-authority=C:\Users\marlin\.kube\ca.crt
Cluster "test-cluster" set.

2、创建user

C:\Users\marlin>kubectl config set-credentials linmao --client-certificate=C:\Users\marlin\.kube\linmao.crt --client-key=C:\Users\marlin\.kube\linmao.key
User "linmao" set.

3、创建context,就是把刚才创建的cluster和user关联起来

C:\Users\marlin>kubectl config set-context linmao@test-cluster --cluster=test-cluster --user=linmao
Context "linmao@test-cluster" created.

4、检查刚才创建的内容

CURRENT   NAME                                                                         CLUSTER                                                                      AUTHINFO                                                                     NAMESPACE

          linmao@test-cluster                                                          test-cluster                                                                 linmao  

5、测试一下

C:\Users\marlin>kubectl config use-context linmao@test-cluster
Switched to context "linmao@test-cluster".
C:\Users\marlin>kubectl get pods -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
common        data-service-589c97fc76-98k5g      1/1     Running   0          133m
default       vscode-884887b4d-wfgsv             1/1     Running   0          11h
kube-system   coredns-6d8c4cb4d-2vp27            1/1     Running   0          11h
kube-system   coredns-6d8c4cb4d-jp5w2            1/1     Running   0          11h
kube-system   etcd-debian-1                      1/1     Running   11         11h
kube-system   kube-apiserver-debian-1            1/1     Running   11         11h
kube-system   kube-controller-manager-debian-1   1/1     Running   7          11h
kube-system   kube-flannel-ds-57bzc              1/1     Running   0          11h
kube-system   kube-flannel-ds-w2f56              1/1     Running   0          11h
kube-system   kube-flannel-ds-xxkr7              1/1     Running   0          11h
kube-system   kube-proxy-b4dnv                   1/1     Running   0          11h
kube-system   kube-proxy-rjlwx                   1/1     Running   0          11h
kube-system   kube-proxy-tl2f4                   1/1     Running   0          11h
kube-system   kube-scheduler-debian-1            1/1     Running   11         11h

成功!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:55:01  更:2021-12-24 18:56:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:42:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码