【发布时间】:2020-07-30 17:07:21
【问题描述】:
当我执行kubectl get secret my-sa-token-lr928 -o yaml 时,data.token 有一个 base64 字符串(JWT A)值。还有其他字段,例如此返回的秘密中的data.ca.crt。
当我use projected volume with source serviceAccountToken 并读取文件时,还有另一个非base64 字符串(JWT B)。
cat /var/run/secrets/some.directory/serviceaccount/token
为什么 JWT A 和 JWT B 字符串不同?最显着的区别在于 JWT B iss 即我的颁发者 URL (--service-account-issuer) 和 JWT A iss i.e my issuer url iskubernetes/serviceaccount`。
它们不是 JWT 服务帐户令牌吗?如果不是,那么它们实际代表的是什么 Kubernetes API 对象?
以下是我的 Kubernetes Pod 规范(为简洁而编辑)
apiVersion: v1
kind: Pod
metadata:
annotations:
labels:
app: sample-app
name: sample-pod-gwrcf
spec:
containers:
image: someImage
name: sample-app-container
resources: {}
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: my-sa-token-lr928
readOnly: true
- mountPath: /var/run/secrets/some.directory/serviceaccount
name: good-token
readOnly: true
serviceAccount: my-sa
serviceAccountName: my-sa
terminationGracePeriodSeconds: 30
volumes:
- name: good-token
projected:
defaultMode: 420
sources:
- serviceAccountToken:
audience: my.audience.com
expirationSeconds: 86400
path: token
- name: my-sa-token-lr928
secret:
defaultMode: 420
secretName: my-sa-token-lr928
【问题讨论】:
标签: docker kubernetes oauth-2.0 jwt kubernetes-secrets