第 11 章 将 Spring Boot 与 Kubernetes 集成

Spring Cloud Kubernetes 插件目前使您能够集成 Spring Boot 和 Kubernetes 的以下功能:

11.1. Spring Boot 外部化配置

在 Spring Boot 中,外部化 配置是可让您将来自外部源的配置值注入 Java 代码的机制。在 Java 代码中,注入通常由使用 @Value 注释(注入单个字段)或 @ConfigurationProperties 注释(注入 Java bean 类的多个属性)启用。

配置数据可能会来自各种不同的源(或 属性源)。特别是,配置属性通常在项目的 application.properties 文件中设置(如果愿意,则为 application.yaml 文件)。

11.1.1. Kubernetes ConfigMap

Kubernetes ConfigMap 是一种可为已部署的应用提供配置数据的机制。ConfigMap 对象通常在 YAML 文件中定义,然后上传到 Kubernetes 集群,使配置数据可供已部署的应用程序使用。

11.1.2. Kubernetes Secret

Kubernetes 机密 是一种向已部署的应用提供敏感数据(如密码、证书等)的机制。

11.1.3. Spring Cloud Kubernetes 插件

Spring Cloud Kubernetes 插件实现 Kubernetes 和 Spring Boot 之间的集成。在原则上,您可以使用 Kubernetes API 从 ConfigMap 访问配置数据。但是,直接将 Kubernetes ConfigMap 与 Spring Boot 外部化配置机制集成更加方便,因此 Kubernetes ConfigMap 的行为是 Spring Boot 配置的替代属性源。这基本上是 Spring Cloud Kubernetes 插件提供的。

11.1.4. 启用带有 Kubernetes 集成的 Spring Boot

您可以通过将作为 Maven 依赖项添加到 pom.xml 文件来启用 Kubernetes 集成。

流程

  1. 通过在 Spring Boot Maven 项目的 pom.xml 文件中添加以下 Maven 依赖项来启用 Kubernetes 集成。

    <project ...>
      ...
      <dependencies>
        ...
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-kubernetes-config</artifactId>
        </dependency>
        ...
      </dependencies>
      ...
    </project>
  2. 以完成集成,

    • 在您的 Java 源代码中添加一些注解
    • 创建 Kubernetes ConfigMap 对象
    • 修改 OpenShift 服务帐户权限,以允许应用程序读取 ConfigMap 对象。

其他资源