9장. Spring Boot와 Kubernetes 통합

Spring Cloud Kubernetes 플러그인을 사용하면 현재 Spring Boot 및 Kubernetes의 다음 기능을 통합할 수 있습니다.

9.1. Spring 부팅 외부 구성

Spring Boot에서 외부화된 구성은 외부 소스의 구성 값을 Java 코드에 삽입할 수 있는 메커니즘입니다. Java 코드에서는 일반적으로 @Value 주석(단일 필드에 삽입) 또는 @ConfigurationProperties 주석(Java Cryostat 클래스의 여러 속성에 삽입)에 주석을 달아 삽입할 수 있습니다.

구성 데이터는 다양한 소스(또는 속성소스)에서 가져올 수 있습니다. 특히 구성 속성은 프로젝트의 application.properties 파일(또는 원하는 경우 application.yaml 파일)에 설정되는 경우가 많습니다.

9.1.1. Kubernetes ConfigMap

Kubernetes ConfigMap 은 배포된 애플리케이션에 구성 데이터를 제공할 수 있는 메커니즘입니다. ConfigMap 오브젝트는 일반적으로 YAML 파일에 정의되어 있으며, 그런 다음 Kubernetes 클러스터에 업로드되어 배포된 애플리케이션에서 구성 데이터를 사용할 수 있습니다.

9.1.2. Kubernetes 시크릿

Kubernetes 시크릿 은 배포된 애플리케이션에 중요한 데이터(암호, 인증서 등)를 제공하는 메커니즘입니다.

9.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 플러그인이 제공하는 것입니다.

9.1.4. Kubernetes 통합을 사용하여 Spring Boot 활성화

pom.xml 파일에 Maven 종속성으로 추가하여 Kubernetes 통합을 활성화할 수 있습니다.

절차

  1. Spring Boot Maven 프로젝트의 pom.xml 파일에 다음 Maven 종속성을 추가하여 Kubernetes 통합을 활성화합니다.

    <project ...>
      ...
      <dependencies>
        ...
        <dependency>
          <groupId>io.fabric8</groupId>
          <artifactId>spring-cloud-kubernetes-core</artifactId>
        </dependency>
        ...
      </dependencies>
      ...
    </project>
  2. 통합을 완료하려면,

    • Java 소스 코드에 몇 가지 주석을 추가합니다.
    • Kubernetes ConfigMap 오브젝트 생성
    • 애플리케이션이 ConfigMap 오브젝트를 읽을 수 있도록 OpenShift 서비스 계정 권한을 수정합니다.