Kubernetes 是否可以设置服务帐户令牌的确切名称?

Kubernetes 是否可以设置服务帐户令牌的确切名称?,kubernetes,kubernetes-security,Kubernetes,Kubernetes Security,我正在尝试通过Traefik设置docker注册表,通过服务帐户承载令牌进行身份验证。问题是默认服务令牌机密的名称以一些随机字符结尾,这些字符不能传递给入口配置,或者可以传递给入口配置 无论如何,我想以某种方式迫使库伯内特斯以一种可预测的方式命名令牌 当前的解决方案是手动创建API令牌 kind: Secret metadata: name: account-token annotations: kubernetes.io/service-account.name: accoun

我正在尝试通过Traefik设置docker注册表,通过服务帐户承载令牌进行身份验证。问题是默认服务令牌机密的名称以一些随机字符结尾,这些字符不能传递给入口配置,或者可以传递给入口配置

无论如何,我想以某种方式迫使库伯内特斯以一种可预测的方式命名令牌

当前的解决方案是手动创建API令牌

kind: Secret
metadata:
  name: account-token
  annotations:
    kubernetes.io/service-account.name: account
type: kubernetes.io/service-account-token
不幸的是,原始随机命名的令牌仍在系统中,无法删除

如果它是在服务帐户之前创建的,那么它将被删除,但在服务帐户之后,随机密钥将被删除。

它看起来是唯一存在的解决方案。您可以引用现有服务帐户,控制器将使用新生成的令牌更新该帐户,如下所述:

若要为服务帐户创建其他API令牌,请创建一个密钥 ServiceAccountToken类型,带有引用服务的批注 帐户,控制器将使用生成的令牌更新它


不幸的是,原始随机命名的令牌仍在 系统,并且无法删除

那么,当您尝试按所述方式删除/使其无效时会发生什么情况


它将立即重新创建。要避免这种情况,首先必须 已从serviceaccount.secrest列表中删除。但它不可能是复杂的 通过yaml文件完成。或者,是否存在可以执行的api事务 在配置应用程序期间使用

编辑:

您可以使用两种解决方案来实现目标。编辑默认ServiceAccount令牌时,它将不再有效,并且不会像删除它时那样自动重新创建:

第一个是修补令牌:

kubectl patch secret default-token-jrc6q -p '{"data":{"token": "c29tZW90aGVyc2hpdAo="}}'
第二个是编辑它:

kubectl edit secret default-token-jrc6q  # and change token to any value you want

您是指名为
default-token-r9dm9
的默认ServiceAccount令牌吗?为什么你要把它传给入口?@weibeld Bascially我试图强迫traefik用服务帐户授权入口。我目前正在尝试将身份验证转发到apiserver,但是获得500,并且没有关于错误的单个日志条目。它将立即重新创建。要避免这种情况,首先必须将其从serviceaccount.secrest列表中删除。但是它不能通过yaml文件复杂地完成。或者在配置应用程序中是否有可以使用的api事务?请查看我的答案的编辑。