Kubernetes 変更点
Kubernetes v1.24からServiceAccountを作成しても自動でSecret Tokenは生成されなくなった。
事象
ArgoWorkflowサーバにて、v1.24以降に作成したTokenが存在しないServiceAccount紐づけユーザーでログインするとRoleの機能を実施することができずエラーになった。(Tokenが無いためRBAC認可の内容を実施できない状態であった。)
エラー内容
エラ-1
{"code":7,"message":"not allowed"}: not allowed
エラー2
Connection closed to api/v1/workflow-events/...
対応
ServiceAccount用のSecretリソースを明示的に作成するようにすることでTokenがServiceAccountに付与されるようになった。
ServiceAccount (既存で存在している)
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"
Secrets(新規作成)
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
上記Apply後、以下のようにServiceAccountのTokens
に新規追加したSecretが自動で適用され、エラーが解消された。
$ kubectl describe serviceaccount my-service-account
Name: my-service-account
Namespace: default
.
.
.
Mountable secrets: <none>
Tokens: my-service-account.service-account-token
Events: <none>