kubernetes认证培训(kubelet认证)
kubernetes认证培训(kubelet认证),本文通过数据整理汇集了kubernetes认证培训(kubelet认证)相关信息,下面一起看看。
这是本系列的第三篇文章。前两篇文章分别介绍了Kubernetes的访问控制和身份认证。本文将带您通过实践来理解Kubernetes授权的概念。
在文章正式开始之前,我们先来快速回顾一下我们实践中的环境和场景。我们在生产环境中处理集群,其中每个部分都与一个名称空间相关联。现在,小组里多了一个叫鲍勃的新同事。在上一个教程中,我们帮助Bob作为工程名称空间的管理员加入集群。并且他已经获得了访问集群的私钥和签名证书。
如果您没有完成以上操作,请查看上一篇教程并运行命令来完成环境设置并为Bob配置证书。
好了,我们正式开始这个教程。
现在我们将授权Bob控制属于工程名称空间的资源。
首先,我们需要为kubectl创建一个上下文,这样它就可以在不同的环境之间切换。
Kuctl配置集-context eng-context -cluster=minikube -namespace=engineering -user=Bob context ' eng-context '已创建。上面的命令使用mini Kube集群中Bob的凭证来创建一个指向工程名称空间的新上下文。这将导致一个新的部分被添加到/。kube/配置文件。
现在,我们在工程命名空间中创建一个简单的pod:
API version:v1 kind:pod metadata:name:myapp命名空间:工程标签:app:myapp spec:containers:-name:myapp image:busybox命令:['/bin/sh ','-ec ',' while:做回声。';睡眠5;done ']kube CTL create-f myapp.yamlpod/myapp createdkube CTL get pods-n=工程名称就绪状态重启年龄myapp1/1运行0 89s虽然您可以以集群管理员的身份在工程命名空间中创建和操作pod,但是Bob甚至不能在同一个命名空间中列出pod。
kuctl get pods-namespace engineering-as bob来自服务器的错误(禁止):pods被禁止:用户“Bob”不能在API组中列出资源“pods”为了使Bob能够访问工程命名空间中的资源,我们需要授权他。这可以通过创建一个具有适当权限的角色,然后将其绑定到用户Bob来实现。本质上,我们使用基于角色的访问控制(RBAC)来允许Bob对工程名称空间中的一些Kubernetes资源执行某些操作。
创建一个名为eng-reader的Kubernetes角色,并允许它在工程名称空间中列出pod。
kind:RoleapiVersion:rbac.authorization.k8s.io/v1metadata:命名空间:工程名称:eng-reader rules:-API groups:[' ']# ' '表示核心API组资源:['pods ',' services ',' nodes']动词:['get ',' watch ',List ']ku bectl created-f role.yamlrole.rbac.authorization.k8s.io/eng-reader createdkubectl get roles-namespace=工程名称age eng-reader 58s注意,此角色目前与Bob无关。我们需要通过角色绑定将角色中指定的权限应用到Bob。
kind:rolebindingpiversion:rbac.authorization.k8s.io/v1metadata:名称:eng-read-access命名空间:engineeringsubjects:- kind:用户名:bob #名称区分大小写apiGroup:RBAC . authorization . k8s . ioroleref:kind:Role #这必须是角色或群集角色名称:eng-reader #这必须与您要绑定到API group的角色或群集角色的名称相匹配:RBAC . authorization . k8s . iokubectl create-f Role-binding . yamlrolebind Ing.rbac.authorization.k8s.io/eng-read-access createdkubectl get Role bindings-namespace=engineering Name
kuctl Get pods-Namespace Engineering-作为Bob Name Ready Status Restaurants Age MyApp 1/1 Running 0 11m现在他已经与eng-reader的角色相关联,他已经获得了Pod List的许可。
此时鲍勃在集群中的访问权限依旧十分有限。他所能做的只是在工程命名空间中列出豆荚.这对上下移动帮助不大。他想要检查集群中的节点数量,但是令他失望的是,他遇到了禁止的错误.
库贝特尔从服务器获取节点-作为鲍勃(人名)错误(禁止):节点被禁止:用户“鲍勃”无法列出应用程序界面组中的资源"节点"在库伯内特斯中角色和角色绑定既可以应用在命名空间层面也可以应用在集群层面。我们现在创建一个集群角色以及一个与上下移动关联的角色绑定,以使他能够列出节点。
kind:ClusterRoleapiVersion:RBAC . authorization . k8s . io/v1 metadata:# '命名空间'由于集群角色不是命名空间名称:群集节点读取器规则:-API组:[' ']资源:['节点']动词:['get ',' watch ',' list ']ku bectl create-f cluster-role。yamlclusterrole。RBAC。授权。k8s。io/cluster-node-reader已创建ku bectl get cluster roles cluster-node-reader Name age cluster-node-reader 49 skid:clusterrolebindingversion:RBAC . authorization . k8s . io/v1 metadata:名称:读取-群集现在鲍勃已经设置为可以在集群中列出节点。
kubectl获取节点——作为bobNAME状态角色年龄版本minikube Ready master 52m v1.15.2本篇教程的目的是为了帮助你理解角色以及角色绑定如何在库伯内特斯中工作的。在本系列下一篇文章中,我们将来看看服务帐户,保持关注哟~
更多kubernetes认证培训(kubelet认证)相关信息请关注本站,本文仅仅做为展示!