美文网首页
kubernetes资源对象之service account

kubernetes资源对象之service account

作者: 一舍 | 来源:发表于2020-04-01 09:26 被阅读0次

Service account 是为了方便 Pod 里面的进程调用 Kubernetes API 或其他外部服务而设计的。

Service account 有它自己的 namespace,每个 namespace 都会自动创建一个 default service account。

Token controller会检测 service account 的创建,并为它们创建kubernetes.io/service-account-token secret。

Service Account 创建

自动创建 service account

  • 每个 Pod 在创建时都会自动设置 spec.serviceAccountName 为 default
  • 判断 Pod 引用的 service account 是否已经存在,如不存在,拒绝创建该pod
  • 如果 Pod 没有指定 ImagePullSecrets,则把 service account 的 ImagePullSecrets 加到 Pod 中
  • 每个 container 启动后都会挂载该 service account 的 tokenca.crtnamespace,到目录 /var/run/secrets/kubernetes.io/serviceaccount/

手动创建 service account

创建service account

kubectl create serviceaccount jenkins

自动创建与该service account对应的secret

kubectl get secret jenkins-token-l9v7v -o yaml

向该service account 添加imagePullSecret

kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "myregistrykey"}]}'

Service Account 授权

Service Account 为服务提供了一种方便的认证机制,但它不关心授权的问题,但可以配合RBAC来对 Service Account 进行授权。

kind: Role
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  namespace: default
  name: pod-reader
rules:
  - apiGroups: [""] 
    resources: ["pods"]
    verbs: ["get", "watch", "list"]
    nonResourceURLs: []
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: read-pods
  namespace: default
subjects:
  - kind: ServiceAccount 
    name: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

相关文章

网友评论

      本文标题:kubernetes资源对象之service account

      本文链接:https://www.haomeiwen.com/subject/zfcouhtx.html