前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日一个云原生小技巧 #66】ServiceAccount 技巧

【每日一个云原生小技巧 #66】ServiceAccount 技巧

作者头像
郭旭东
发布2024-01-19 18:17:26
1090
发布2024-01-19 18:17:26
举报
文章被收录于专栏:云原生工具箱云原生工具箱
Kubernetes 的 ServiceAccount(服务账户)是用于在 Kubernetes 环境中进行身份验证和授权的一种机制。它们主要用于为在 Kubernetes 中运行的 pod 提供身份标识,确保这些 pod 可以安全地访问 Kubernetes API 和其他资源。

什么是 ServiceAccount?

在 Kubernetes 中,ServiceAccount 提供了一种将 API 凭据(如密钥)自动挂载到 pod 中的方式。每个 ServiceAccount 都与一组凭证相关联,这些凭证被存储为 Kubernetes Secret 对象。当创建 pod 时,可以指定一个 ServiceAccount,Kubernetes 系统会自动将这些凭证挂载到 pod 中,使其能够安全地与 Kubernetes API 交互。

使用场景

  1. 自动化操作:自动化工具(如 CI/CD 管道)通常需要与 Kubernetes API 交互,ServiceAccount 可以为这些工具提供必要的访问权限。
  2. 多租户环境:在多租户 Kubernetes 环境中,ServiceAccount 可以帮助实现租户隔离,确保每个租户只能访问其自己的资源。
  3. 应用程序访问控制:对于需要与 Kubernetes 集群内其他服务或资源交互的应用程序,ServiceAccount 可以提供适当的权限。

使用技巧

  1. 最小权限原则:创建 ServiceAccount 时应遵循最小权限原则,只授予所需的最少权限。
  2. 避免默认 ServiceAccount:避免使用默认的 ServiceAccount,因为它可能具有比所需更宽松的权限。
  3. 定期轮换密钥:定期更换与 ServiceAccount 相关联的密钥,以提高安全性。

使用案例

假设我们有一个需要访问 Kubernetes API 读取 Pod 信息的应用程序。我们将创建一个 ServiceAccount,并给它适当的权限。

创建 ServiceAccount

代码语言:javascript
复制
apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-serviceaccount

创建角色和角色绑定

代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

---

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
subjects:
- kind: ServiceAccount
  name: my-serviceaccount
  namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

在 Pod 中使用 ServiceAccount

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  serviceAccountName: my-serviceaccount
  containers:
  - name: mycontainer
    image: myimage

在这个例子中,我们首先创建了一个 ServiceAccount my-serviceaccount,然后定义了一个 pod-reader 角色,该角色允许读取 Pod 信息,并通过 RoleBinding 将该角色绑定到我们的 ServiceAccount。最后,在创建 Pod 时,我们指定使用 my-serviceaccount,这样 Pod 就有了读取其他 Pod 信息的权限。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 ServiceAccount?
  • 使用场景
  • 使用技巧
  • 使用案例
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档