如需最新的稳定版本,请使用 Spring Cloud Kubernetes 3.2.1

Spring Cloud Kubernetes 配置服务器

Spring Cloud Kubernetes Config Server 基于 Spring Cloud Config Server,并为 Kubernetes Config MapsSecrets 添加了环境存储库

This is 组件是完全可选的。但是,它允许您继续利用配置 您可能已经存储在现有的环境存储库(Git、SVN、Vault 等)中,其中包含您在 Kubernetes 上运行的应用程序。

默认镜像位于 Docker Hub 上,这将允许您轻松地在 Kubernetes 上部署 Config Server,而无需构建 代码和图像。但是,如果您需要自定义配置服务器行为或更喜欢自己构建镜像,则可以轻松构建自己的镜像 图像,并使用它。

配置

启用 Kubernetes 环境存储库

要启用 Kubernetes 环境存储库,kubernetes配置文件必须包含在活动配置文件列表中。 您也可以激活其他配置文件以使用其他环境存储库实施。

配置 Map 和 Secret PropertySources

默认情况下,将仅获取 Config Map 数据。要同时启用 Secret,您需要将spring.cloud.kubernetes.secrets.enableApi=true. 您可以禁用 Config MapPropertySource通过设置spring.cloud.kubernetes.config.enableApi=false.

从其他命名空间获取 Config Map 和 Secret 数据

默认情况下,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您需要包含部署 Config Server 的命名空间,以便继续从该命名空间获取 Config Map 和 Secret 数据。

Kubernetes 访问控制

Kubernetes Config Server 使用 Kubernetes API 服务器来获取 Config Map 和 Secret 数据。为了让它做到这一点 它需要有能力getlist配置 Map 和 Secrets(取决于您启用/禁用的内容)。

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