该版本仍在开发中,尚未被视为稳定。对于最新稳定版本,请使用Spring Cloud Kubernetes 5.0.0spring-doc.cadn.net.cn

Spring Cloud Kubernetes Config Server

Spring Cloud Kubernetes 配置服务器基于 Spring Cloud 配置服务器,增加了 Kubernetes 配置映射秘密环境仓库spring-doc.cadn.net.cn

这个部分完全是可选的。不过,它允许你继续利用配置 你可能已经在现有的环境仓库(Git、SVN、Vault 等)中存储了运行的 Kubernetes 应用。spring-doc.cadn.net.cn

你可以从GitHub上的源代码构建Docker镜像,然后用它部署到Kubernetes上。spring-doc.cadn.net.cn

配置

启用Kubernetes环境仓库

为了启用Kubernetes环境仓库Kubernetes档案必须包含在活跃档案列表中。 你也可以激活其他配置文件,以使用其他环境仓库的实现。spring-doc.cadn.net.cn

配置映射与秘密属性源

默认情况下,只会获取配置地图数据。要启用秘密,你需要设置spring.cloud.kubernetes.secrets.enabled=true. 你可以禁用配置映射地产来源按环境分类Spring.cloud.kubernetes.config.enabled=false.spring-doc.cadn.net.cn

从其他命名空间获取配置映射和秘密数据

默认情况下,Kubernetes 环境仓库只会从其部署的命名空间获取配置映射和密钥。 如果你想包含来自其他命名空间的数据,可以设置Spring.cloud.kubernetes.configserver.config-map-namespaces和/或Spring.cloud.kubernetes.configserver.secrets-namespaces被分隔的逗号 命名空间值列表。spring-doc.cadn.net.cn

如果你设置了Spring.cloud.kubernetes.configserver.config-map-namespaces和/或Spring.cloud.kubernetes.configserver.secrets-namespaces你需要包含配置服务器部署的命名空间,以便继续从该命名空间获取配置映射和秘密数据。

使用 Spring Vault 的高级功能

为了使用Spring Cloud配置服务器一些更高级的Spring Vault功能Spring-金库-核心一定是在阶级路径上。默认情况下,Spring Cloud Kubernetes 可以生成用于将配置服务器部署到 Kubernetes 的 Docker 镜像,但不包含Spring-金库-核心在班级路径上。如果你需要的话Spring-金库-核心为了在配置服务器中启用某些功能,你可以通过启用运行Maven构建时的Maven配置文件。spring-doc.cadn.net.cn

$ ../../mvnw clean install -Pvault

Kubernetes 访问控制

Kubernetes 配置服务器使用 Kubernetes API 服务器来获取配置映射和秘密数据。为了做到这一点 它需要能够获取列表配置映射和秘密(取决于你启用或禁用了什么)。spring-doc.cadn.net.cn

部署Yaml

以下是部署、服务和权限配置示例,用于将基础配置服务器部署到Kubernetes。spring-doc.cadn.net.cn

---
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