对于最新稳定版本,请使用Spring Cloud Kubernetes 5.0.0spring-doc.cadn.net.cn

Kubernetes 内部的安全配置

Namespace

本项目提供的大多数组件都需要知道命名空间。对于 Kubernetes(1.3+),命名空间作为服务账户秘密的一部分提供给 pod,客户端会自动检测。对于早期版本,需要将其指定为 pod 的环境变量。一个快速的方法如下:spring-doc.cadn.net.cn

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

服务账户

对于支持集群内更细粒度基于角色访问的Kubernetes发行版,你需要确保一个能够运行的Pod春云库伯内特斯能够访问Kubernetes API。对于你分配给部署或Pod的任何服务账户,你需要确保它们拥有正确的角色。spring-doc.cadn.net.cn

根据具体要求,你需要获取,列表请获得以下资源的许可:spring-doc.cadn.net.cn

表1。Kubernetes 资源权限
Dependency 资源

Spring-cloud-starter-kubernetes-fabric8spring-doc.cadn.net.cn

Pods、服务、端点spring-doc.cadn.net.cn

Spring-cloud-starter-kubernetes-fabric8-configspring-doc.cadn.net.cn

配置映射,秘密spring-doc.cadn.net.cn

Spring-cloud-starter-kubernetes-clientspring-doc.cadn.net.cn

Pods、服务、端点spring-doc.cadn.net.cn

Spring-cloud-starter-kubernetes-client-configspring-doc.cadn.net.cn

配置映射,秘密spring-doc.cadn.net.cn

为了开发目的,你可以添加集群读取器授权给你的默认值服务账户。在生产系统中,你可能需要提供更细致的权限。spring-doc.cadn.net.cn

以下角色和角色绑定是命名空间权限的示例默认值帐户:spring-doc.cadn.net.cn

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: ""