|
此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring Cloud Kubernetes 5.0.1! |
Spring Cloud Kubernetes Config Server
Spring Cloud Kubernetes 配置服务器基于 Spring Cloud Config Server,并为 Kubernetes 添加了一个 环境仓库,用于管理 Config Maps 和 Secrets。
此组件完全可选。然而,它允许您继续利用已存储在现有环境仓库(Git、SVN、Vault 等)中的配置,用于在 Kubernetes 上运行的应用程序。
您可以从 GitHub 上的源代码 构建 Docker 镜像,并使用该镜像部署到 Kubernetes。
配置
配置映射和密钥属性源
默认情况下,仅会获取配置映射(Config Map)数据。若要同时启用密钥(Secrets),您需要将 spring.cloud.kubernetes.secrets.enabled=true 设置为开启状态。您可以通过将 spring.cloud.kubernetes.config.enabled=false 设置为关闭来禁用配置映射 PropertySource。
从其他命名空间获取配置映射和密钥数据
默认情况下,Kubernetes 环境仓库仅会从其部署的命名空间中获取 Config Map 和 Secrets。如果希望包含其他命名空间中的数据,您可以将 spring.cloud.kubernetes.configserver.config-map-namespaces 和/或 spring.cloud.kubernetes.configserver.secrets-namespaces 设置为以逗号分隔的命名空间值列表。
如果您设置 spring.cloud.kubernetes.configserver.config-map-namespaces 和/或 spring.cloud.kubernetes.configserver.secrets-namespaces,则需要包含配置服务器部署的命名空间,以便继续从该命名空间中获取配置映射和密钥数据。 |
部署 YAML
下面是一些可用于将基本配置服务器部署到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