我是靠谱客的博主 优美荷花,这篇文章主要介绍在 kubectl 中使用 Service Account Token,现在分享给大家,希望可以做个参考。

在运行基于 Kubernetes 的 CI/CD 过程中,经常有需求在容器中对 Kubernetes 的资源进行操作,其中隐藏的安全问题,目前推荐的最佳实践也就是使用 Service Account 了。而调试账号能力的最好方法,必须是 kubectl 了。下面就讲讲如何利用 kubectl 引用 Servie Account 凭据进行 Kubernetes 操作的方法。

这里用 default Service Account 为例

假设

目前已经能对目标集群进行操作,文中需要的权限主要就是读取命名空间中的 Secret 和 Service Account。

准备配置文件

新建一个 Yaml 文件,命名请随意,例如 kubectl.yaml。内容:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

返回内容如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 了

复制代码
1
2
3
4
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

最后

以上就是优美荷花最近收集整理的关于在 kubectl 中使用 Service Account Token的全部内容,更多相关内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(93)

评论列表共有 0 条评论

立即
投稿
返回
顶部