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

时间:2019-09-05 19:16:17

标签: kubernetes kubernetes-security

我正在尝试通过Traefik设置Docker注册表,并通过Service帐户持有者令牌进行身份验证。问题是默认服务令牌密钥的名称以一些随机字符结尾,这些字符不能传递给Ingress配置,或者可以吗?

无论如何,我想以某种可预见的方式迫使Kubernetes命名令牌。

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

kind: Secret
metadata:
  name: account-token
  annotations:
    kubernetes.io/service-account.name: account
type: kubernetes.io/service-account-token

很遗憾,原始的随机命名令牌仍在系统中,无法删除。

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

1 个答案:

答案 0 :(得分:0)

似乎creating additional API token是唯一的现有解决方案。您可以引用现有的服务帐户,并且控制器将使用新生成的令牌对其进行更新,如下所述:

  

要为服务帐户创建其他API令牌,请创建一个密码   类型的ServiceAccountToken带有引用服务的注释   帐户,控制器将使用生成的令牌对其进行更新。


  

很遗憾,原始的随机命名令牌仍在   系统,无法删除。

那么,当您尝试按照here所述的方式删除它或使它无效时,会发生什么?

  

它将立即重新创建。为了避免这种情况,首先必须   从serviceaccount.secrests列表中删除。但这并不复杂   通过yaml文件完成。还是有一些可以进行的api交易   在配置应用程序期间使用过?

编辑:

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

第一个是修补令牌:

kubectl patch secret default-token-jrc6q -p '{"data":{"token": "c29tZW90aGVyc2hpdAo="}}'

2nd正在对其进行编辑

kubectl edit secret default-token-jrc6q  # and change token to any value you want
相关问题