|
对于最新稳定版本,请使用Spring Cloud Kubernetes 5.0.0! |
Kubernetes 内部的安全配置
Namespace
本项目提供的大多数组件都需要知道命名空间。对于 Kubernetes(1.3+),命名空间作为服务账户秘密的一部分提供给 pod,客户端会自动检测。对于早期版本,需要将其指定为 pod 的环境变量。一个快速的方法如下:
env:
- name: "KUBERNETES_NAMESPACE"
valueFrom:
fieldRef:
fieldPath: "metadata.namespace"
服务账户
对于支持集群内更细粒度基于角色访问的Kubernetes发行版,你需要确保一个能够运行的Pod春云库伯内特斯能够访问Kubernetes API。对于你分配给部署或Pod的任何服务账户,你需要确保它们拥有正确的角色。
根据具体要求,你需要获取,列表和看请获得以下资源的许可:
| Dependency | 资源 |
|---|---|
Spring-cloud-starter-kubernetes-fabric8 |
Pods、服务、端点 |
Spring-cloud-starter-kubernetes-fabric8-config |
配置映射,秘密 |
Spring-cloud-starter-kubernetes-client |
Pods、服务、端点 |
Spring-cloud-starter-kubernetes-client-config |
配置映射,秘密 |
为了开发目的,你可以添加集群读取器授权给你的默认值服务账户。在生产系统中,你可能需要提供更细致的权限。
以下角色和角色绑定是命名空间权限的示例默认值帐户:
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: ""