具有集群角色的Kubernetes服务帐户

时间:2019-08-12 11:41:29

标签: kubernetes kubectl minikube

我已经创建了一个具有群集角色的服务帐户,是否可以通过API使用该服务帐户在不同的命名空间中部署Pod?

下面是完成角色创建和绑定的模板:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: api-access
rules:
  -
    apiGroups:
      - ""
      - apps
      - autoscaling
      - batch
      - extensions
      - policy
      - rbac.authorization.k8s.io
    resources:
      - componentstatuses
      - configmaps
      - daemonsets
      - deployments
      - events
      - endpoints
      - horizontalpodautoscalers
      - ingress
      - jobs
      - limitranges
      - namespaces
      - nodes
      - pods
      - persistentvolumes
      - persistentvolumeclaims
      - resourcequotas
      - replicasets
      - replicationcontrollers
      - serviceaccounts
      - services
    verbs: ["*"]
  - nonResourceURLs: ["*"]
    verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: api-access
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: api-access
subjects:
- kind: ServiceAccount
  name: api-service-account
  namespace: default

2 个答案:

答案 0 :(得分:2)

Kubernetes服务帐户不是名称空间对象,因此回答“我可以在名称空间之间使用服务帐户吗?”是的。

第二部分:我不知道您对API的含义,但是如果它是kubernetes-apiserver,那么可以,您可以将服务帐户与kubectl一起使用,以确保您作为服务帐户执行。您可以为此模拟用户并参考:https://kubernetes.io/docs/reference/access-authn-authz/authentication/#user-impersonation

如果您是说要构建新的API进行部署或使用外部部署程序,则应使用此服务帐户进行部署,如下所述:https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

答案 1 :(得分:0)

是的,您的服务帐户将能够在任何命名空间中创建资源并对其执行操作,因为您已经使用ClusterRoleBinding在群集范围内为它授予了这些权限。