Kubernetes中的服务帐户和上下文有什么区别?
两者之间的实际区别是什么?什么时候我应该选择一个而不是另一个Kubernetes中的服务帐户和上下文有什么区别?,kubernetes,Kubernetes,两者之间的实际区别是什么?什么时候我应该选择一个而不是另一个 例如,如果我想让项目中的开发人员只查看pod的日志。似乎可以通过角色绑定为服务帐户或上下文分配这些权限。什么是服务帐户? 从 用户帐户是针对人类的。服务帐户用于流程, 它们在豆荚中运行 用户帐户应为全局…服务 帐户具有名称空间 上下文 context与kubeconfig文件(~/.kube/config)相关。正如您所知,kubeconfig文件是一个yaml文件,context部分保存您的user/token和cluster引用c
例如,如果我想让项目中的开发人员只查看pod的日志。似乎可以通过角色绑定为服务帐户或上下文分配这些权限。什么是服务帐户? 从 用户帐户是针对人类的。服务帐户用于流程, 它们在豆荚中运行 用户帐户应为全局…服务 帐户具有名称空间 上下文
context
与kubeconfig
文件(~/.kube/config
)相关。正如您所知,kubeconfig
文件是一个yaml文件,context
部分保存您的user/token
和cluster
引用<当您有多个集群时,code>context非常有用,您可以在单个kubeconfig
文件中定义所有cluster
s和user
s,然后您可以借助上下文在它们之间切换(例如:kubectl config--kubeconfig=config demo-use-context-dev-frontend
)
从
您可以在上面看到,有3个上下文,保存集群
和用户
的引用
…如果我想让我的项目中的开发人员只需查看
豆荚的原木。似乎服务帐户或上下文都可以
通过角色绑定分配这些权限
如果正确,您需要创建服务帐户
,角色
(或集群角色
),角色绑定
(或集群角色绑定
),并生成包含服务帐户令牌的kubeconfig
文件,并将其交给开发人员
我有一个takes服务帐户名参数。请随意退房
更新:
如果要创建
角色
和角色绑定
,服务帐户:服务帐户表示pod中运行的进程的标识。当进程通过服务帐户进行身份验证时,它可以联系API服务器并访问集群资源。如果pod没有分配的服务帐户,它将获得默认的服务帐户
创建pod时,如果未指定服务帐户,则会在同一命名空间中自动为其分配默认服务帐户,并且您可以使用自动装入的服务帐户凭据从pod内部访问API
上下文:上下文只是一组包含Kubernetes群集、用户和命名空间的访问参数
当前上下文是当前kubectl的默认集群,所有kubectl命令都针对该集群运行。它们是两个不同的概念。上下文很可能是指与
kubectl
配置相关的抽象,其中上下文可以与服务帐户相关联
出于某种原因,我假设
上下文
只是另一种身份验证方法。上下文用于将kubectl指向一个特定集群,因此从角度来看,它们有不同的作用域,我不确定我是否理解。服务帐户也绑定到单个集群?您能否给出一个您所指的“上下文”的示例?容器上可以有securityContext,但它们与RBAC没有直接关系。@c4f4t0r引用的另一个上下文是kubectl配置,它也没有太多关系。
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
- cluster:
insecure-skip-tls-verify: true
server: https://5.6.7.8
name: scratch
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
current-context: ""
kind: Config
preferences: {}
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
- name: experimenter
user:
password: some-password
username: exp