侧边栏壁纸
  • 累计撰写 59 篇文章
  • 累计创建 52 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

k8s 1.26版本创建serviceaccount不会自动创建secret

木东
2024-04-15 / 0 评论 / 0 点赞 / 48 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

背景

最近上线一个新的业务系统,要求使用单独的k8s集群。原先一直使用k8s 1.22版本,官方已经不再维护,正好这次新的k8s集群就使用1.26版本。

问题描述

prometheus监控在另一个k8s集群内,对新建集群配置自动发现,使用kubernetes_sd_configs方式,发现在新集群创建serviceaccount之后不会自动常见并绑定secret token。

老规矩,先网上搜一下,找到这篇:https://www.soulchild.cn/post/2945,摘抄记录如下:

k8s官方 1.24 chanagelog.

阿里云 ack k8s 1.26 changelog

在Kubernetes 1.24版本后,基于安全方面的考虑(特性门控LegacyServiceAccountTokenNoAutoGeneration默认启用),Secret API将不会为ServiceAccount自动创建Secret对象存放Token信息,需要使用TokenRequest API来获取ServiceAccount的Token,该Token具备过期时间,更加安全。如果一定需要创建一个永不过期的Token,请参见service-account-token-secrets

可以使用 TokenRequest API 获取服务帐户令牌,或者如果需要未过期的令牌,请按照本指南为令牌控制器创建一个 Secret API 对象以填充服务帐户令牌。

pr: https://github.com/kubernetes/kubernetes/pull/108309

方式 1

使用 TokenRequest API 来生成 token,获取方式:

  • 使用 client-go 或者其他 api 调用工具来获取某个 serviceaccount 的 token
  • 创建 yaml,使用 kubectl apply -f
  • 使用 kubectl create token -n xxx <serviceaccount-name> 来获取一个临时的 token, 默认 1 小时

方式 2

创建 secret token,创建后从 secret 的 token 字段拿就可以了

apiVersion: v1
kind: Secret
metadata:
  name: secret-sa-sample
  annotations:
    kubernetes.io/service-account.name: "sa-name"   # 这里填写serviceAccountName
type: kubernetes.io/service-account-token
0

评论区