kubernetes - Kubernetes 中的服务帐户和上下文有什么区别?
问题描述
两者之间的实际区别是什么?我什么时候应该选择一个而不是另一个?
例如,如果我想让我的项目中的开发人员访问仅查看 pod 的日志。似乎可以通过 RoleBinding 为服务帐户或上下文分配这些权限。
解决方案
什么是服务帐号?
来自文档
用户帐户适用于人类。服务帐户用于在 pod 中运行的进程。
用户帐户旨在是全局的...服务帐户是命名空间的。
语境
context
与kubeconfig
文件(~/.kube/config
)有关。如您所知kubeconfig
,文件是一个 yaml 文件,该部分context
包含您的user/token
和cluster
引用。context
当您有多个集群时非常有用,您可以在单个文件中定义所有cluster
s 和s ,然后您可以在上下文的帮助下在它们之间切换(示例:)user
kubeconfig
kubectl config --kubeconfig=config-demo use-context dev-frontend
来自文档
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
您可以在上面,有 3 个上下文,包含cluster
和的引用user
。
..如果我想让我的项目中的开发人员访问仅查看 pod 的日志。似乎可以通过 RoleBinding 为服务帐户或上下文分配这些权限。
没错,您需要创建service account
,Role
(或ClusterRole
),RoleBinding
(或ClusterRoleBinding
)并生成kubeconfig
包含服务帐户的文件token
并将其提供给您的开发人员。
我有一个脚本来生成kubconfig
文件,采用服务帐户名称参数。随时查看
更新:
如果您想创建Role
and RoleBinding
,这可能会有所帮助
推荐阅读
- javascript - Can't make the content of the timer update every second
- google-sheets - 根据与另一个单元格相邻的值格式化单元格
- c# - 使用 Windows 桌面扩展程序的 UWP 在提交到商店时在启动时崩溃
- r - 从文件名中提取日期并使其成为变量
- python - For循环没有按预期在python中更新我的列表
- javascript - 单击地图后如何使长纬度坐标可见并在下次单击之前可见?
- java - 为什么我不能在第一个条件中使用类型检查变量作为第二个条件中的类型转换变量?
- azure - 公开所有端口后无法 RDP 到 Azure VM - Windows Server 2019
- java - 五个数字中最大的一个
- c++ - 检查模板类中是否已存在元素