gpt4 book ai didi

kubernetes - 具有服务帐户 token 的Kubernetes kubeconfig

转载 作者:行者123 更新时间:2023-12-02 12:04:39 29 4
gpt4 key购买 nike

我有一个脚本在集群外部调用kubectl -server $server --certificate-authority $ca --token $token get pod --all-namespaces,其中$token来自服务帐户my-sa(在 namespace my-ns中),在RBAC下具有适当的受限权限。

我现在想重构它,以便脚本改为调用kubectl --kubeconfig my-service.conf get pod --all-namespaces,即它应该引用kubeconfig文件而不是设置本地参数。这是遵循Kubernetes在/etc/kubernetes中围绕自己的kubeconfigs的约定。

我已经尝试了以下kubeconfig my-service.conf; <CA_DATA>/etc/kubernetes/pki/ca.crt的base64编码内容,<SERVER>$server相同,并且<TOKEN>$token相同:

apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: <CA_DATA>
server: <SERVER>
name: my-cluster
contexts:
- context:
name: default-context
context:
cluster: my-cluster
user: default-user
current-context: default-context
users:
- name: my-service
user:
token: <TOKEN>
kubectl --kubeconfig /dev/null --server $server --certificate-authority /etc/kubernetes/pki/ca.crt --token $token get pods --all-namespaces在命令行上有效,但是 kubectl --kubeconfig my-service.conf get pod --all-namespaces产生以下错误消息:

Error from server (Forbidden): pods is forbidden: User "system:anonymous" cannot list resource "pods" in API group "" at the cluster scope



因此 structure of my kubeconfig file仍然存在问题。为什么客户端不使用 authenticate as system:serviceaccount:my-ns:my-sa?有什么事吗

更新我想知道在群集外部使用服务帐户 token 是否不合适(Kubernetes自己的kubeconfig使用客户端证书代替)。但是,然后 documentation明确指出:“服务帐户承载 token 完全有效,可以在集群外部使用”。

最佳答案

您的上下文配置引用的凭证不存在...

您的凭据指定为- name: my-service,因此您的上下文应为:

- context:
name: default-context
context:
cluster: my-cluster
user: my-service # instead of default-user

关于kubernetes - 具有服务帐户 token 的Kubernetes kubeconfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55629894/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com