Kubernetes v1.24 更新后,ServiceAccount 不再自动生成密钥令牌,因此需要解决相关问题

Kubernetes的变更内容

从Kubernetes v1.24版本开始,创建ServiceAccount时不再自动生成Secret Token。

公式:1.24.0 版本发布说明相应部分

事件

在ArgoWorkflow服务器上,使用在v1.24版本及以后创建的Token不存在的ServiceAccount绑定用户登录时,无法执行角色的功能,导致发生错误。(由于缺少Token,无法执行RBAC授权内容。)

错误内容 (huò wù

错误-1

{"code":7,"message":"not allowed"}: not allowed
image.png

错误2

Connection closed to api/v1/workflow-events/...
image.png

处理

通过明确创建ServiceAccount用的Secret资源,使Token被授予给了ServiceAccount。

    • Kubernetesドキュメント

 

    ArgoWorkflowドキュメント

服务账户 (已存在)

apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-service-account
  namespace: default
  annotations:
    workflows.argoproj.io/rbac-rule: "'<GROUP_OBJECT_ID>' in groups"
    workflows.argoproj.io/rbac-rule-precedence: "1"

秘密(新建)

apiVersion: v1
kind: Secret
metadata:
  name: my-service-account.service-account-token # name is discoverable. ref. https://argoproj.github.io/argo-workflows/manually-create-secrets/#option-1-discovery-by-name
  annotations:
    kubernetes.io/service-account.name: my-service-account
type: kubernetes.io/service-account-token

在应用上述更改后,新添加的秘钥会自动应用于ServiceAccount的Tokens,并且错误会被解决。

$ kubectl describe serviceaccount my-service-account
Name:                my-service-account
Namespace:           default
.
.
.
Mountable secrets:   <none>
Tokens:              my-service-account.service-account-token
Events:              <none>

请提供更多句子,以便我能够正确地引用。

    • Kubernetes 1.24.0 release notes

 

    • Kubernetes original issue

 

    https://argoproj.github.io/argo-workflows/manually-create-secrets/
广告
将在 10 秒后关闭
bannerAds