0

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

无论如何,我想以某种方式强制 Kubernetes 以可预测的方式命名令牌。

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

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

不幸的是,原来随机命名的令牌仍在系统中,无法删除。

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

4

1 回答 1

1

看起来创建额外的 API 令牌是唯一现有的解决方案。您可以引用现有的服务帐户,控制器将使用新生成的令牌对其进行更新,如下所述:

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


不幸的是,原来随机命名的令牌仍在系统中,无法删除。

那么当您尝试按照此处描述的方式删除它/使其无效时会发生什么?

它将立即重新创建。为避免这种情况,首先必须将其从 serviceaccount.secrests 列表中删除。但它不能通过 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
于 2019-09-06T12:05:08.580 回答