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



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

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

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

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

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

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

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

若要为服务帐户创建额外的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

相关内容

  • 没有找到相关文章

最新更新