Kubernetes:Spring Cloud Data Flow Server 的服务帐户权限问题
Posted
技术标签:
【中文标题】Kubernetes:Spring Cloud Data Flow Server 的服务帐户权限问题【英文标题】:Kubernetes : Service Accounts Permissions issue with Spring Cloud Data Flow Server 【发布时间】:2018-10-04 17:54:54 【问题描述】:我一直在尝试使用 minikube 在本地为 Kubernetes 设置 Spring Cloud Dataflow Server。已按照此处链接中的安装说明进行操作:SCDF Installation Reference
SCDF 服务器出现以下错误:
11:32:52.095 [main] DEBUG io.fabric8.kubernetes.client.Config - Trying to configure client namespace from Kubernetes service account namespace path...
11:32:52.096 [main] DEBUG io.fabric8.kubernetes.client.Config - Found service account namespace at: [/var/run/secrets/kubernetes.io/serviceaccount/namespace].
2018-04-24 11:33:14.348 WARN 1 --- [ main] o.s.cloud.kubernetes.StandardPodUtils : Failed to get pod with name:[scdf-server-869d56967c-97lsd]. You should look into this if things aren't working as you expect. Are you missing serviceaccount permissions?
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://kubernetes.default.svc/api/v1/namespaces/default/pods/scdf-server-869d56967c-97lsd. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. pods "scdf-server-869d56967c-97lsd" is forbidden: User "system:serviceaccount:default:default" cannot get pods in the namespace "default".
以下是版本详情:
Spring Cloud 数据流服务器:1.4.0.RELEASE 使用 minikube 进行 Kubernetes 本地部署 Kubernetes 版本:1.10【问题讨论】:
【参考方案1】:最新版本的 minikube 默认启用 RBAC。
对于启用 RBAC 的集群,我们已在安装部分添加了有关此问题的说明。
“最新版本的 kubernetes 已在 api-server 上启用了 RBAC。如果您的目标平台启用了 RBAC,您必须在部署数据流服务器之前让集群管理员为您创建角色和角色绑定. 他们将数据流服务帐户与需要运行的角色相关联。”
但是,对于 minikube,您可以运行以下命令并重试安装。
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
或者,如果您使用的是 helm-chart,您可以禁用 RBAC 并在 minikube 上安装以下图表。
掌舵初始化
helm repo 添加孵化器https://kubernetes-charts-incubator.storage.googleapis.com
helm repo 更新
helm install --name my-release --set server.service.type=NodePort --set rbac.create=false incubator/spring-cloud-data-flow
【讨论】:
这个方法也试过了,和之前分享的完全一样的错误。 我刚刚在 minikubev0.26.1
上尝试了 RBAC 配置体验。我创建了cluster-admin
角色并使用了掌舵聊天(通过:helm install --name my-release --set server.service.type=NodePort incubator/spring-cloud-data-flow
)。一切都按预期进行。
我之前尝试过 helm 安装方式,但没有 cluster-admin 角色。就像你上面提到的那样,刚刚尝试了这些,它在本地和谷歌 Kubernetes 引擎上都有效。太感谢了。另外,想知道这是否应该成为 SCDF 参考文档的一部分。请提出建议。
是的,最好在文档中包含它。我添加了spring-cloud/spring-cloud-dataflow-server-kubernetes#282。【参考方案2】:
来自安装指南,第 7 步:https://docs.spring.io/spring-cloud-dataflow-server-kubernetes/docs/1.4.0.RELEASE/reference/htmlsingle/#_deploying_using_kubectl
最新版本的 kubernetes 已在 api-server 上启用了 RBAC。如果您的目标平台启用了 RBAC,您必须让集群管理员在部署数据流服务器之前为您创建角色和角色绑定。他们将数据流服务帐号与需要运行的角色相关联。
$ kubectl create -f src/kubernetes/server/server-roles.yaml
$ kubectl create -f src/kubernetes/server/server-rolebinding.yaml
您是否执行了这些步骤?
【讨论】:
是的,我也应用了这些。 看起来github.com/spring-cloud/spring-cloud-dataflow-server-kubernetes/… 将权限授予scdf-sa
服务帐户,而不是default
服务帐户。您是否从github.com/spring-cloud/spring-cloud-dataflow-server-kubernetes/…(包括serviceAccountName: scdf-sa
)创建了部署
我在 Sabby Anandans 回答后解决了这个问题。感谢您的帮助。以上是关于Kubernetes:Spring Cloud Data Flow Server 的服务帐户权限问题的主要内容,如果未能解决你的问题,请参考以下文章
正在使用 Kubernetes Spring Cloud 多个配置映射
spring-cloud-kubernetes官方demo运行实战
部署 spring-cloud-kubernetes kubernetes-hello-world-example 失败