命名空间

此项目中提供的大多数组件都需要知道命名空间。对于 Kubernetes (1.3+),命名空间作为服务帐户密钥的一部分提供给 pod,并由客户端自动检测。 对于早期版本,需要将其指定为 Pod 的环境变量。执行此操作的快速方法如下:Spring中文文档

      env:
      - name: "KUBERNETES_NAMESPACE"
        valueFrom:
          fieldRef:
            fieldPath: "metadata.namespace"

服务帐户

对于在集群中支持更细粒度的基于角色的访问的 Kubernetes 发行版,您需要确保运行的 Pod 可以访问 Kubernetes API。 对于分配给部署或容器的任何服务帐户,您需要确保它们具有正确的角色。spring-cloud-kubernetesSpring中文文档

根据要求,您需要对以下资源进行 和权限:getlistwatchSpring中文文档

表 1.Kubernetes 资源权限
屬地 资源

spring-cloud-starter-kubernetes-fabric8Spring中文文档

Pod、服务、端点Spring中文文档

spring-cloud-starter-kubernetes-fabric8-配置Spring中文文档

configmaps、密钥Spring中文文档

spring-cloud-starter-kubernetes-clientSpring中文文档

Pod、服务、端点Spring中文文档

spring-cloud-starter-kubernetes-client-configSpring中文文档

configmaps、密钥Spring中文文档

出于开发目的,您可以向服务帐户添加权限。在生产系统上,你可能希望提供更精细的权限。cluster-readerdefaultSpring中文文档

以下 Role 和 RoleBinding 是帐户命名空间权限的示例:defaultSpring中文文档

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: YOUR-NAME-SPACE
  name: namespace-reader
rules:
  - apiGroups: [""]
    resources: ["configmaps", "pods", "services", "endpoints", "secrets"]
    verbs: ["get", "list", "watch"]

---

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: namespace-reader-binding
  namespace: YOUR-NAME-SPACE
subjects:
- kind: ServiceAccount
  name: default
  apiGroup: ""
roleRef:
  kind: Role
  name: namespace-reader
  apiGroup: ""
表 1.Kubernetes 资源权限
屬地 资源

spring-cloud-starter-kubernetes-fabric8Spring中文文档

Pod、服务、端点Spring中文文档

spring-cloud-starter-kubernetes-fabric8-配置Spring中文文档

configmaps、密钥Spring中文文档

spring-cloud-starter-kubernetes-clientSpring中文文档

Pod、服务、端点Spring中文文档

spring-cloud-starter-kubernetes-client-configSpring中文文档

configmaps、密钥Spring中文文档