我具有以下pod定义,(请注意明确设置的服务帐户和秘密):
apiVersion: v1
kind: Pod
metadata:
name: pod-service-account-example
labels:
name: pod-service-account-example
spec:
serviceAccountName: example-sa
containers:
- name: busybox
image: busybox:latest
command: ["sleep", "10000000"]
env:
- name: SECRET_KEY
valueFrom:
secretKeyRef:
name: example-secret
key: secret-key-123
它成功运行。但是,如果我使用相同的服务帐户example-sa
,并尝试检索example-secret
,它将失败:
kubectl get secret example-secret
Error from server (Forbidden): secrets "example-secret" is forbidden: User "system:serviceaccount:default:example-sa" cannot get resource "secrets" in API group "" in the namespace "default"
RBAC是否不申请豆荚?为何连吊舱都无法检索秘密?
RBAC适用于服务帐户,组,用户而不是Pod。当您在Pod的环境中引用机密时,不会使用服务帐户来获取机密。Kubelet正在使用其自己的kubernetes客户端来获取机密。凭据。由于kubelet使用自己的凭据来获取机密,因此服务帐户是否具有RBAC来获取机密无关紧要,因为它未被使用。
当您要使用kubernetes标准客户端库或Kubectl从pod调用Kubernetes API时,将使用服务帐户。>>