|
对于最新稳定版本,请使用Spring Cloud Kubernetes 5.0.0! |
Spring Cloud Kubernetes Config Server
Spring Cloud Kubernetes 配置服务器基于 Spring Cloud 配置服务器,增加了 Kubernetes 配置映射和秘密的环境仓库。
该组件完全是可选的。但它允许你继续利用配置你可能已经在现有的环境仓库(Git、SVN、Vault等)中存储了运行的Kubernetes应用程序。
默认镜像位于 Docker Hub 上,这样你可以轻松地在 Kubernetes 上部署配置服务器,而无需自己构建代码和镜像。代码和镜像。不过,如果你需要自定义配置服务器的行为,或者更喜欢自己构建镜像,你可以轻松地从从 GitHub 上的源代码中构建镜像并使用它。
配置
配置映射与秘密属性源
默认情况下,只会获取配置地图数据。要启用秘密,你需要设置spring.cloud.kubernetes.secrets.enableApi=true. 你可以禁用配置映射地产来源按环境分类spring.cloud.kubernetes.config.enableApi=false.
从其他命名空间获取配置映射和秘密数据
默认情况下,Kubernetes 环境仓库只会从部署的命名空间获取配置映射和密钥。如果你想包含其他命名空间的数据,可以设置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你需要包含配置服务器部署的命名空间,以便继续从该命名空间获取配置映射和秘密数据。 |
使用 Spring Vault 的高级功能
为了使用Spring Cloud配置服务器中一些更高级的Spring Vault功能,Spring-金库-核心必须在类路径上。默认情况下,Spring Cloud Kubernetes 可以生成用于部署 Config Server 到 Kubernetes 的 Docker 映像,但不包含Spring-金库-核心在 classpath 里。如果你需要的话Spring-金库-核心为了在配置服务器中启用某些功能,你可以通过启用库运行Maven构建时的Maven配置文件。
例:
$ ../../mvnw clean install -Pvault
部署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