此版本仍在开发中,尚未被视为稳定版本。如需最新的稳定版本,请使用 Spring Cloud Kubernetes 3.1.4! |
Kubernetes 内部的安全配置
Namespace
此项目中提供的大多数组件都需要知道命名空间。对于 Kubernetes (1.3+),命名空间作为服务帐户密钥的一部分可供 Pod 使用,并由客户端自动检测。 对于早期版本,需要将其指定为 Pod 的环境变量。执行此操作的快速方法如下:
env:
- name: "KUBERNETES_NAMESPACE"
valueFrom:
fieldRef:
fieldPath: "metadata.namespace"
服务帐户
对于支持集群内更精细的基于角色的访问的 Kubernetes 发行版,您需要确保运行的 Pod 有权访问 Kubernetes API。
对于分配给部署或 Pod 的任何服务账户,您需要确保它们具有正确的角色。spring-cloud-kubernetes
根据要求,您将需要 和对以下资源的权限:get
list
watch
Dependency | 资源 |
---|---|
spring-cloud-starter-kubernetes-fabric8 |
容器 (Pod)、服务、端点 |
spring-cloud-starter-kubernetes-fabric8-配置 |
ConfigMap, 秘密 |
spring-cloud-starter-kubernetes-客户端 |
容器 (Pod)、服务、端点 |
spring-cloud-starter-kubernetes-client-配置 |
ConfigMap, 秘密 |
出于开发目的,您可以向服务账户添加权限。在生产系统上,您可能希望提供更精细的权限。cluster-reader
default
以下 Role 和 RoleBinding 是帐户的命名空间权限的示例:default
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: ""