如何为“部署”资源创建kubernetes角色?

问题描述 投票:0回答:1

我正在尝试为我的 kubernetes 集群创建一个命名空间角色,这将允许我的应用程序使用 kubernetes sdk 能够通过其服务帐户检索部署。我正在尝试创建一个角色,该角色将提供对部署资源的访问权限,并创建一个角色绑定以将该角色应用到我的服务帐户。

我已经使用 localstack 手动完成此工作,只需运行此文件(kubectl apply -f myFile.yaml)来创建角色:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: test-deployment-pod-reader
rules:
  - apiGroups: [""]
    resources: ["pods", "deployments"]
    verbs: ["get", "watch", "list"]

这成功创建了角色,输出为:

Resources      Verbs
---------      -----
deployments    [get watch list]
pods           [get watch list]

但是,当我连接到我的 REAL 集群时,我们位于非默认命名空间,我们称其为命名空间

test
。由于我的限制(我猜?),我无法简单地应用这样的文件,但我知道我应该能够创建该角色,因为当我运行此命令时:

kubectl auth can-i get deployments -n test

它会响应

yes
。尝试使用此命令创建角色成功,但资源不正确(deployments.app 而不仅仅是部署,当我尝试使用 localstack/eks 以这种方式创建角色时,我确实看到了相同的行为):

kubectl create role my-role --verb=get --verb=list --verb=watch --resource=pods,deployments -n test # succeeds

kubectl describe role my-role -n test

Resources        Verbs
---------        -----
deployments.apps [get watch list]
pods             [get watch list]

显然,deployments.apps 没有足够的访问权限来让我的

api.listNamespacedDeployment
请求从我的应用程序成功。

有谁知道如何使用

deploy
命令以编程方式创建具有
kubectl create role
资源的角色?我不明白为什么它不断在
.apps
 的末尾添加 
deployments

kubernetes rbac k8s-rolebinding kubernetes-java-client
1个回答
0
投票

kubernetes cli 似乎确实试图通过添加Deployments.apps 来帮助我。正如一些评论提到的那样,部署类型确实属于应用程序的 apiGroup。我一定没有为正确的服务帐户提供角色,或者可能我位于错误的命名空间中。这似乎确实按预期工作

© www.soinside.com 2019 - 2024. All rights reserved.