在 kubectl 中使用 Service Account Token
在运行基于 Kubernetes 的 CI/CD 过程中,经常有需求在容器中对 Kubernetes 的资源进行操作,其中隐藏的安全问题,目前推荐的最佳实践也就是使用 Service Account 了。而调试账号能力的最好方法,必须是 kubectl 了。下面就讲讲 如何利用 kubectl 引用 Servie Account 凭据进行 Kubernetes 操作的方法。
这里用 default Service Account 为例
假设
目前已经能对目标集群进行操作,文中需要的权限主要就是读取命名空间中的 Secret 和 Service Account。
准备配置文件
新建一个 Yaml 文件,命名请随意,例如 kubectl.yaml。内容:
apiVersion: v1 kind: Config clusters: - cluster: certificate-authority-data: {ca data} server: https://{server} name: awesome-cluster users: - user: token: {token} name: account - context: cluster: awesome-cluster user: account name: sa current-context: sa
其中的 {ca data} 可以从现有连接凭据中获取。
{server}:服务器地址
{token}:将在后面设置
获取数据
首先查看 Service Account 的 Token 在哪里:
kubectl get serviceaccount default -o yaml
返回内容如下:
apiVersion: v1 kind: ServiceAccount metadata: creationTimestamp: 2017-05-07T10:41:50Z name: default namespace: default resourceVersion: "26" selfLink: /api/v1/namespaces/default/serviceaccounts/default uid: c715217d-3311-11e7-a4ae-42010a8c0095 secrets: - name: default-token-7h4bd
这里我们看到他包含了 secret: “default-token-7h4bd”,获取其中的内容:
kubectl get secret default-token-7h4bd -o yaml
apiVersion: v1 data: ca.crt: [ca data] namespace: ZGVmYXVsdA== token: [token data] kind: Secret metadata: annotations: kubernetes.io/service-account.name: default kubernetes.io/service-account.uid: c715217d-3311-11e7-a4ae-42010a8c0095 creationTimestamp: 2017-05-07T10:41:50Z name: default-token-7h4bd namespace: default resourceVersion: "24" selfLink: /api/v1/namespaces/default/secrets/default-token-7h4bd uid: c71cc72d-3311-11e7-a4ae-42010a8c0095 type: kubernetes.io/service-account-token
上面 Token Data 内容就是我们需要的认证 Token 了
export my_token="[tokendata]" kubectl --kubeconfig=kubectl.yaml \ config set-credentials account \ --token=`echo ${tokendata} | base64 -D`
这样就把 Service Account 的 Token 取出来,并保存在 kubectl.yaml 中。利用这一配置文件就可以凭 Service Account 的身份来执行 kubectl 指令了。
本文转自中文社区-在 kubectl 中使用 Service Account Token
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
基于 Kubernetes 的 Jenkins 构建集群实践
在大型团队的 CI 构建里具有丰富最佳实践的经验。今天我给大家分享的更多是聚焦在 Jenkins 本身,结合我在 Jenkins 实际使用过程中和整个 Jenkins Slave 管理演化的过程的案例,这样能给大家带来更好的借鉴和 参考体验。 下面是主要要分享的四大内容: Jenkins分布式构建架构 基于Lable的Slave集群管理 基于Docker插件的容器化实践 基于Kubernetes的容器化实践 一. Jenkins分布式构建架构 1.1 架构图 Jenkins 分布式架构一个 Master 和多个 Slave Node 分布式的架构。 在 Jenkins Master 上管理你的项目,可以把你的一些构建任务分担到不同的 Slave Node 上运行,Master 的性能就提高了。 如果单纯的使用 Master 去构建,除了要承担项目上的编译、测试等开销外,还会大大的影响 Jenkins 应用本身占用 memory 和 CPU 资源。 1.2 Jenkins Slave 连接方式 Jenkins Slave 连接方式常使用下面两种: 通过 SSH 启动 Slave 代理 在...
- 下一篇
用 Prometheus 来监控你的 Kubernetes 集群
本文是才云科技(CaiCloud)5月6日沙龙“Kubernetes Meetup 中国 2017”才云的 首席架构师唐鹏程的演讲实录。 大家下午好,我是才云科技的唐鹏程,今天演讲的题目是《Monitoring Kubernetes cluster with prometheus》,我知道在坐很多人已经在实际应用 Kubernetes 了,并且在各个业务部门的应用容器化之后,已经可以在 K8S 里面正常运行。在正常运行之后,公司内部就需要一些运维团队对整个系统的应用进行相关维护。一旦出现问题可以进行相应的操作,而这时候我们就需要一个监控系统。 我们来思考一下为什么需要这样一款监控系统,首先运维人员不可能一直盯着机器,你需要监控面板告诉你系统的运行状态,比如说我这个K8 集群里面每个节点 CPU 的利用率,或者我的应用上 API 调用的延迟是多少?这些都可以从监控图很轻松得到。 当机器或者应用出问题的时候,监控系统会为我们提供方向。比如我们突然从监控图上看到 Web 服务的 API 调用响应延迟变高了,又或者我们看到这个应用运行的这个节点 CPU 占用率很高,那就可以有一个大胆的猜测,是...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器