【问题标题】:How do I get the kubernetes Role or service account where the process is running [closed]如何获取运行进程的 kubernetes 角色或服务帐户 [关闭]
【发布时间】:2021-07-11 23:06:34
【问题描述】:

我正在使用 k8s go-client 做很多事情,但是应用程序的用户看到的错误似乎是由于他们的实例正在运行的服务帐户的错误配置引起的,例如尝试访问资源他们不允许,我想在启动应用程序时显示警告,或者至少能够访问绑定到运行代码的 pod 的服务帐户的角色的允许资源/组。有没有办法做到这一点?

【问题讨论】:

    标签: go kubernetes kubernetes-go-client


    【解决方案1】:

    您可以使用 InClusterConfig 通过其服务帐户访问 pod 可用的资源。请查看以下链接以了解如何使用它。

    How to use inclusterconfig of kubernetes in go

    【讨论】:

      【解决方案2】:

      应用程序的用户看到的错误似乎是由服务帐户的错误配置引起的

      听起来该服务的安装没有附带正确的 RBAC 清单。

      我想在启动应用程序时显示警告,或者至少能够访问绑定到 Pod 服务帐户的 Role 的允许资源/组

      解决这个问题的方法通常是仔细处理访问 Kubernetes API 服务时返回的错误,如果出现错误,还要打印错误。这些错误消息通常包含有关使用了什么 ServiceAccount缺少哪些权限的信息。有了这些信息,创建适当的 RBAC 清单应该不会太难。

      SelfSubjectAccessReview

      您也可以通过 API 端点 /apis/authorization.k8s.io/v1/selfsubjectaccessreviewsCheck API Access 获取特定 API

      另见Kubernetes doc: Authorization Overview

      【讨论】:

      • 是的,我知道来自 kubernetes api 的错误将包含所需的信息,但我希望能够获取有关当前角色的详细信息,例如它可以访问哪些资源以及哪些组
      • 您也可以使用 SelfSubjectAccessReview 来检查您是否可以访问特定的 API,我更新了我的答案。
      猜你喜欢
      • 2020-04-08
      • 2020-03-26
      • 2019-09-02
      • 2020-12-23
      • 2019-10-20
      • 2018-07-23
      • 2020-08-07
      • 2018-04-10
      • 1970-01-01
      相关资源
      最近更新 更多