具有集群角色的 Kubernetes 服务帐户
Kubernetes service account with cluster role
我已经创建了一个具有集群角色的服务帐户,是否可以通过 API 使用此服务帐户跨不同的命名空间部署pods?
下面是完成角色创建和绑定的模板:
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
Kubernetes 服务帐户不是命名空间对象,因此 "can i use service account between namespaces?" 的答案是肯定的。
对于第二部分:我不知道你用 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/
是的,您的服务帐户将能够在任何命名空间中创建和操作资源,因为您已经使用 ClusterRoleBinding
.
在集群范围内授予它这些权限
我已经创建了一个具有集群角色的服务帐户,是否可以通过 API 使用此服务帐户跨不同的命名空间部署pods?
下面是完成角色创建和绑定的模板:
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
Kubernetes 服务帐户不是命名空间对象,因此 "can i use service account between namespaces?" 的答案是肯定的。
对于第二部分:我不知道你用 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/
是的,您的服务帐户将能够在任何命名空间中创建和操作资源,因为您已经使用 ClusterRoleBinding
.