首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes角色管理与NGINX Ingress

Kubernetes角色管理与NGINX Ingress
EN

Stack Overflow用户
提问于 2020-03-20 17:57:36
回答 2查看 173关注 0票数 0

我有一个在Azure (AKS)上运行的Kubernetes集群,前面是NGINX in。

我有点搞不懂如何为多个用户分离对不同资源的访问。

用户应该在应用程序上工作。这就是为什么如果他们能够在豆荚中读取日志、描述和执行一些命令是很好的。但是他们不应该调整一些外来的资源。

微软提供了一个非常好的教程,如何在AKS:https://learn.microsoft.com/en-us/azure/aks/azure-ad-rbac上处理类似的情况。

有一个示例说明如何将权限添加到整个命名空间中的组。

我现在的问题是,如何将组的权限添加到命名空间中的特定重新源。

例如,我有以下资源:

代码语言:javascript
复制
ressource              type        namespace     

ingress-controller     pod         nginx-ingress
ingress-service        service     nginx-ingress
ingress-nginx          ingress     nginx-ingress
app1-service           service     nginx-ingress
app1                   pod         nginx-ingress
app2-service           service     nginx-ingress
app2                   pod         nginx-ingress

据我理解,我需要在同一个名称空间中部署所有这些请求,否则入口无法转发请求。但是,我如何为group1和app1 -服务授予读、写、执行权限,并将其读给其他人呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-20 18:22:57

可以使用resourceNames字段在RBAC角色中按名称指定特定资源。

创建一个允许完全访问app1app1-service的角色

代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: app1-admin
rules:
- apiGroups:
  - ""
  resourceNames:
  - app1
  - app1-service
  resources:
  - pods
  - pods/exec
  - service
  verbs:
  - get
  - list
  - watch
  - create

创建允许对所有其他Pods和服务进行读取访问的角色:

代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: read-all
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - service
  verbs:
  - get
  - list
  - watch

创建两个RoleBindings,将这两个角色绑定到group1组:

代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: app1-admin-group1
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: app1-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: group1
代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-all-group1
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: read-all
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: group1

现在,group1的成员应该可以完全访问Pod app1和服务app1-service,但只能读取对所有其他资源的访问。

票数 1
EN

Stack Overflow用户

发布于 2020-03-20 18:02:39

我认为这一点都不正确,您可以在不同的名称空间中拥有入口资源。此外,您还可以引用rbac中的资源名称。

https://kubernetes.io/docs/reference/access-authn-authz/rbac/#referring-to-resources

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60779307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档