【问题标题】:Failed to discover supported resources未能发现支持的资源
【发布时间】:2019-01-15 11:16:19
【问题描述】:

我正在尝试创建具有有限命名空间访问权限的用户。创建了名为 test 的命名空间,还创建了 Group:programmers, User:frontend。在http://docs.bitnami.com/kubernetes/how-to/configure-rbac-in-your-kubernetes-cluster/ 的帮助下为用户:前端生成凭据

我创建了一个角色。这是我的 role.yml

kind: Role
 apiVersion: rbac.authorization.k8s.io/v1beta1
 metadata:
    namespace: test
    name: frontend-developer
 rules:
 - apiGroups: ["","extensions","apps"]
   resources: ["deployments","replicasets","pods"]
   verbs: ["get","list","watch","create","patch"]`

我创建了角色绑定。这是role-binding.yml

kind: RoleBinding
 apiVersion: rbac.authorization.k8s.io/v1beta1
 metadata:
   name: frontend-deploy
   namespace: test
 subjects:
 - kind: User
   name: frontend
   namespace: test
 roleRef:
   kind: Role
   name: frontend-developer
   apiGroup: rbac.authorization.k8s.io 

我说的是我的部署文件

apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   name: nodefrontend
   namespace: test
 spec:
   replicas: 3
   template:
     metadata:
       labels:
         app: bookstore
     spec:
       containers:
       - name: nodeweb
         image: balipalligayathri/devops-develop
         ports:
         - name: http
           containerPort: 3000
           protocol: TCP 

我在创建角色和角色绑定时使用以下命令

$ kubectl create -f role.yml
$ kubectl create -f role-binding.yml 

创建了前端开发者角色和前端部署角色绑定。

我再次使用命令kubectl create -f node-deployment.yml 进行部署创建。部署已成功创建和删除。在这里,我在创建部署时没有提及任何用户。所以,我正在尝试使用以下命令与用户一起创建部署。

kubectl create -f node-deployment.yml --as=frontend --context=frontend-context

我正面临这样的错误

Error from server (Forbidden):

<html><head><meta http-equiv='refresh' content='1;url=/login?from=%2Fswagger-2.0.0.pb-v1%3Ftimeout%3D32s'/><script>window.location.replace('/login?from=%2Fswagger-2.0.0.pb-v1%3Ftimeout%3D32s');</script></head><body style='background-color:white; color:white;'>
    Authentication requiredhttps://stackoverflow.com/questions/48164369/kubernetes-   1-8-dashboard-configurations-fails-with-error-no-kind-role-is-regi
    You are authenticated as: anonymous
    Groups that you are in:
    Permission you need to have (but didn't): hudson.model.Hudson.Read
    which is implied by: hudson.security.Permission.GenericRead
    which is implied by: hudson.model.Hudson.Administer    </body></html>

我的疑问是:有必要在deployment.yml 文件中提及用户吗?

【问题讨论】:

  • 谁能告诉我如何使用服务帐户使用 RBAC?服务帐户应该有任何安全证书吗?

标签: authentication kubernetes rbac kubernetes-security


【解决方案1】:

你需要创建一个serviceAccount,看看这个sn-p:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: myAccount

将其绑定到您的角色:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: myBinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: frontend-developer
subjects:
- kind: ServiceAccount
  name: myAccount

并在您的部署中使用它:

apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   name: nodefrontend
   namespace: test
spec:
  template:
    metadata:
      labels:
        ...
    spec:
      serviceAccountName: myAccount

参考:

【讨论】:

  • 我没有在主题部分下的 rolebinding.yml 中提到服务帐户。在 deployment.yml 文件中添加服务帐户是否正确?服务帐户是否应该有任何安全认证?
  • kubernetes 的 RBAC 中的角色是否应该同时拥有用户和服务帐户?
  • 使用 serviceAccount 而不是用户。我更新了我的答案。
  • 在我的示例中,角色没有删除部署的权限。我该如何检查?
  • 添加了更多信息。
猜你喜欢
  • 1970-01-01
  • 2014-03-21
  • 2023-03-22
  • 2019-07-23
  • 1970-01-01
  • 2017-10-19
  • 2019-11-05
  • 1970-01-01
相关资源
最近更新 更多