我正在尝试通过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
很遗憾,原始的随机命名令牌仍在系统中,无法删除。
如果它是在服务帐户之前创建的,则将其删除,但是在此之后,则是随机密钥。
答案 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