14. Spring Cloud Kubernetes 配置服务器
Spring Cloud Kubernetes Config Server 基于 Spring Cloud Config Server,并为 Kubernetes Config Maps 和 Secrets 添加了环境存储库。
This is 组件是完全可选的。但是,它允许您继续利用配置 您可能已经存储在现有的环境存储库(Git、SVN、Vault 等)中,其中包含您在 Kubernetes 上运行的应用程序。
默认镜像位于 Docker Hub 上,这将允许您轻松地在 Kubernetes 上部署 Config Server,而无需构建 代码和图像。但是,如果您需要自定义配置服务器行为或更喜欢自己构建镜像,则可以轻松构建自己的镜像 图像,并使用它。
14.1. 配置
14.1.1. 启用 Kubernetes 环境存储库
要启用 Kubernetes 环境存储库,配置文件必须包含在活动配置文件列表中。
您也可以激活其他配置文件以使用其他环境存储库实施。kubernetes
14.1.2. 配置 Map 和 secret PropertySources
默认情况下,将仅获取 Config Map 数据。要同时启用 Secrets,您需要设置 .
您可以通过设置 来禁用 Config Map。spring.cloud.kubernetes.secrets.enableApi=true
PropertySource
spring.cloud.kubernetes.config.enableApi=false
14.1.3. 从其他命名空间获取 config map 和 secret 数据
默认情况下,Kubernetes 环境存储库只会从部署它的命名空间中获取 Config Map 和 Secrets。
如果要包含来自其他命名空间的数据,可以将 and/or 设置为逗号分隔
命名空间值列表。spring.cloud.kubernetes.configserver.config-map-namespaces
spring.cloud.kubernetes.configserver.secrets-namespaces
如果您设置和/或需要包含部署 Config Server 的命名空间,以便继续从该命名空间获取 Config Map 和 Secret 数据。spring.cloud.kubernetes.configserver.config-map-namespaces spring.cloud.kubernetes.configserver.secrets-namespaces |
14.1.4. Kubernetes 访问控制
Kubernetes Config Server 使用 Kubernetes API 服务器来获取 Config Map 和 Secret 数据。为了让它做到这一点
它需要 Config Map 和 Secrets 的能力(取决于您启用/禁用的内容)。get
list
14.2. 部署 Yaml
以下是可用于将基本 Config Server 部署到 Kubernetes 的示例部署、服务和权限配置。
---
apiVersion: v1
kind: List
items:
- apiVersion: v1
kind: Service
metadata:
labels:
app: spring-cloud-kubernetes-configserver
name: spring-cloud-kubernetes-configserver
spec:
ports:
- name: http
port: 8888
targetPort: 8888
selector:
app: spring-cloud-kubernetes-configserver
type: ClusterIP
- apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: spring-cloud-kubernetes-configserver
name: spring-cloud-kubernetes-configserver
- apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app: spring-cloud-kubernetes-configserver
name: spring-cloud-kubernetes-configserver:view
roleRef:
kind: Role
apiGroup: rbac.authorization.k8s.io
name: namespace-reader
subjects:
- kind: ServiceAccount
name: spring-cloud-kubernetes-configserver
- apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: namespace-reader
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["configmaps", "secrets"]
verbs: ["get", "list"]
- apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-cloud-kubernetes-configserver-deployment
spec:
selector:
matchLabels:
app: spring-cloud-kubernetes-configserver
template:
metadata:
labels:
app: spring-cloud-kubernetes-configserver
spec:
serviceAccount: spring-cloud-kubernetes-configserver
containers:
- name: spring-cloud-kubernetes-configserver
image: springcloud/spring-cloud-kubernetes-configserver
imagePullPolicy: IfNotPresent
env:
- name: SPRING_PROFILES_INCLUDE
value: "kubernetes"
readinessProbe:
httpGet:
port: 8888
path: /actuator/health/readiness
livenessProbe:
httpGet:
port: 8888
path: /actuator/health/liveness
ports:
- containerPort: 8888