我正在尝试使用正在使用kubernetes client library的C#辅助服务在AKS集群上执行一些操作。目前,我的服务正在集群中的单个Pod上运行。当我尝试执行CreateSecret
操作时,出现 403异常。
我尝试获取一个承载 token ,并用它来设置KubeConfig的AccessToken,但这也不起作用。
我想知道是否有一种方法可以从我的Pod中访问kubeconfig(我猜它只能在主节点上使用?),或者是否可以指向config的其他位置?
最佳答案
我建议使用服务帐户而不是kubeconfg
,因为您正在集群中以pod的形式运行应用程序。
var config = KubernetesClientConfiguration.InClusterConfig()
上面的代码将在Pod部署所在的 namespace 中使用default
服务帐户。您将收到Forbidden
错误,并解决您需要定义RBAC来向服务帐户提供授权的问题。假设您使用Role
命名空间部署Pod,以下是RoleBinding
和default
。apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: secret-creator
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["create"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: secret-creator
subjects:
- kind: ServiceAccount
name: default
namespace: default
关于c# - AKS集群Pod Kube配置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63489823/