【问题标题】:Granting events view permission in terraform在 terraform 中授予事件查看权限
【发布时间】:2020-12-07 07:27:04
【问题描述】:

我们有由 Rancher 管理的本地 Kubernetes 集群,我们使用 Terraform 在代码中进行配置。但是,我似乎无法授予我的群组devops 查看集群中事件的权限。

这些是角色和角色绑定:

resource "rancher2_role_template" "events-view" {
  name = "Cluster Events View"
  description = "Terraform role template to see cluster events"
  rules {
    api_groups     = ["*"]
    resources      = ["events"]
    verbs          = ["get", "watch"]
  }
}

resource "rancher2_cluster_role_template_binding" "events-view" {
  name = "events-view"
  cluster_id = rancher2_cluster.rancher_cluster.id
  role_template_id = rancher2_role_template.events-view.id
  group_principal_id = lookup(var.projects["devops"] , "ldap_cn")
  depends_on = [
    rancher2_role_template.events-view
  ]
}

这是devops 的定义:

projects = {
    devops = {
        ldap_cn = "activedirectory_group://CN=devops,OU=Distribution Groups,OU=My,DC=Company",
        name = "devops",
        # ...more attributes
    },
    # ...more projects
}

当我运行terraform apply 时,我看到创建了角色和角色绑定:

rancher2_role_template.events-view: Creating...
rancher2_role_template.events-view: Creation complete after 0s [id=rt-h7xt4]
rancher2_cluster_role_template_binding.events-view: Creating...
rancher2_cluster_role_template_binding.events-view: Creation complete after 2s [id=c-6bdtb:events-view]

kubectl 显示集群角色和角色绑定(显示默认命名空间,但在所有命名空间中也重复):

$ kubectl describe clusterrole rt-h7xt4
Name:         rt-h7xt4
Labels:       cattle.io/creator=norman
Annotations:  authz.cluster.cattle.io/clusterrole-owner: rt-h7xt4
PolicyRule:
  Resources  Non-Resource URLs  Resource Names  Verbs
  ---------  -----------------  --------------  -----
  events.*   []                 []              [get watch]

$ kubectl describe clusterrolebinding clusterrolebinding-hkc9b
Name:         clusterrolebinding-hkc9b
Labels:       authz.cluster.cattle.io/rtb-owner=6f990492-8f60-4950-bb8e-cfa4a9760c01
              cattle.io/creator=norman
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  rt-h7xt4
Subjects:
  Kind   Name                                                                                         Namespace
  ----   ----                                                                                         ---------
  Group  activedirectory_group://CN=devops,OU=Distribution Groups,OU=My,DC=Company

我的用户是devops AD 组的成员,在terraform apply 日志中我可以看到创建了角色和绑定模板,但是当我登录Rancher 并单击Launch kubectl 时我看不到任何命名空间的事件:

> kubectl get events 
Error from server (Forbidden): events is forbidden: User "u-w8rp43jtbn" cannot list resource "events" in API group "" in the namespace "default"
> kubectl get events -n devops
Error from server (Forbidden): events is forbidden: User "u-w8rp44jtbn" cannot list resource "events" in API group "" in the namespace "devops"

我尝试在 api_groups 以及 Kubernetes 和 Rancher API 组中放入空字符串,但似乎没有任何效果。

【问题讨论】:

  • 编辑问题以添加用户的相关角色和角色绑定
  • @ArghyaSadhu 我没有我的用户的角色 - 相关的角色和角色绑定是 devops 组的角色。我的意图是让 devops 组的每个成员继承该组的角色。
  • 好的..可以分享一下用户所属组的角色和角色绑定吗?
  • 我觉得我没听懂你的意思……我这里放的角色和角色绑定是devops的。我登录 Rancher 的用户是 devops 的成员 - 为什么 devops 的角色和角色绑定不相关?
  • 您的 terraform 正在创建 2 个资源,rancher2_role_templaterancher2_cluster_role_template_binding,请提供 clusterrole 的生成模板的输出。很难说什么只看到你的 terraform 配置而没有看到 clusterrole 是如何在 k8s 中创建的。

标签: kubernetes terraform rbac rancher


【解决方案1】:

问题是我制作了集群角色模板而不是项目角色模板。 在rancher2_role_template 资源中,我添加了context = "project" 并将rancher2_cluster_role_template_binding 更改为rancher2_project_role_template_binding

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-29
    • 2021-02-25
    • 2016-08-04
    • 2021-09-25
    • 2021-07-02
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多