OpenShift에 Spring Boot 애플리케이션 배포

1. 개요

이 자습서에서는 Spring Boot 자습서를 사용하여 간단한 애플리케이션 부트 스트랩에서 Openshift로 애플리케이션을 배포하는 방법을 보여줍니다.

이것의 일부로 우리는 :

  • Openshift 개발 도구를 설치하고 구성합니다.
  • Openshift 프로젝트 및 MySQL 배포를 만듭니다.
  • Spring Cloud Kubernetes 용 애플리케이션을 구성하십시오.
  • Fabric8 Maven 플러그인을 사용하여 컨테이너에서 애플리케이션을 생성 및 배포하고 애플리케이션을 테스트하고 확장합니다.

2. Openshift 구성

먼저 Minishift, 로컬 단일 노드 Openshift 클러스터 및 Openshift 클라이언트를 설치해야합니다 .

Minishift를 사용하기 전에 개발자 사용자에 대한 권한을 구성해야합니다.

minishift addons install --defaults minishift addons enable admin-user minishift start oc adm policy --as system:admin add-cluster-role-to-user cluster-admin developer

이제 Openshift 콘솔을 사용하여 MySQL 서비스를 생성하려고합니다. 다음을 사용하여 브라우저 URL을 시작할 수 있습니다.

minishift console

자동으로 로그인되지 않으면 개발자 / 개발자 를 사용하십시오 .

baeldung-demo 라는 프로젝트를 만든 다음 카탈로그에서 MySQL 데이터베이스 서비스를 만듭니다. 제공 baeldung-DB를 데이터베이스 서비스에 대한 baeldung_db MySQL 데이터베이스 이름에 대한, 그리고 기본값에서 다른 값을 둡니다.

이제 데이터베이스에 액세스 할 수있는 서비스와 비밀이 있습니다. 데이터베이스 연결 URL을 기록해 둡니다 . mysql : // baeldung-db : 3306 / baeldung_db

또한 애플리케이션이 Kubernetes Secrets 및 ConfigMaps와 같은 구성을 읽을 수 있도록 허용해야합니다.

oc create rolebinding default-view --clusterrole=view \ --serviceaccount=baeldung-demo:default --namespace=baeldung-demo

3. Spring Cloud Kubernetes 종속성

Spring Cloud Kubernetes 프로젝트를 사용하여 Openshift를 지원하는 Kubernetes 용 클라우드 네이티브 API를 활성화합니다.

 openshift    org.springframework.cloud spring-cloud-kubernetes-dependencies 0.3.0.RELEASE pom import   org.springframework.cloud spring-cloud-dependencies Greenwich.RELEASE pom import      org.springframework.cloud spring-cloud-starter-kubernetes-config   org.springframework.boot spring-boot-starter-actuator   

또한 Fabric8 Maven 플러그인을 사용하여 컨테이너를 빌드하고 배포합니다.

 io.fabric8 fabric8-maven-plugin 3.5.37   fmp  resource build     

4. 애플리케이션 구성

이제 올바른 Spring 프로필과 Kubernetes Secret이 환경 변수로 주입되도록 구성을 제공해야합니다 .

Fabric8 Maven 플러그인이 배포 구성을 생성 할 때 사용할 수 있도록 src / main / fabric8 에 YAML 조각을 생성 해 보겠습니다 .

Fabric8의 기본값은 여전히 / actuator / health 대신 / health 에 액세스하려고 시도하기 때문에 Spring Boot 액추에이터에 대한 섹션도 추가해야합니다 .

spec: template: spec: containers: - env: - name: SPRING_PROFILES_ACTIVE value: mysql - name: SPRING_DATASOURCE_USER valueFrom: secretKeyRef: name: baeldung-db key: database-user - name: SPRING_DATASOURCE_PASSWORD valueFrom: secretKeyRef: name: baeldung-db key: database-password livenessProbe: httpGet: path: /actuator/health port: 8080 scheme: HTTP initialDelaySeconds: 180 readinessProbe: httpGet: path: /actuator/health port: 8080 scheme: HTTP initialDelaySeconds: 30

다음으로, 우리는 저장거야 ConfigMap 형openshift / configmap.yml , 이것이 대한 데이터가 들어 application.properties MySQL의 URL과를 :

apiVersion: v1 kind: ConfigMap metadata: name: spring-boot-bootstrap data: application.properties: |- spring.datasource.url=jdbc:mysql://baeldung-db:3306/baeldung_db

명령 줄 클라이언트를 사용하여 Openshift와 상호 작용하기 전에 로그인해야합니다 . 웹 콘솔의 오른쪽 상단에는 "로그인 명령 복사"라고 표시된 드롭 다운 메뉴를 선택할 수있는 사용자 아이콘이 있습니다. 그런 다음 쉘에서 사용하십시오.

oc login //192.168.42.122:8443 --token=

올바른 프로젝트를 사용하고 있는지 확인하십시오.

oc project baeldung-demo

그런 다음 ConfigMap 을 업로드합니다 .

oc create -f openshift/configmap.yml

5. 배포

배포 중에 Fabric8 Maven 플러그인은 구성된 포트를 확인하려고합니다. 샘플 애플리케이션 의 기존 application.properties 파일은 플러그인이 구문 분석 할 수없는 포트를 정의하는 표현식을 사용합니다. 따라서 다음 줄에 주석을 달아야합니다.

#server.port=${port:8080}

현재 application.properties에서 .

이제 배포 할 준비가되었습니다.

mvn clean fabric8:deploy -P openshift 

애플리케이션이 실행될 때까지 배포 진행 상황을 볼 수 있습니다.

oc get pods -w

목록을 제공해야합니다.

NAME READY STATUS RESTARTS AGE baeldung-db-1-9m2cr 1/1 Running 1 1h spring-boot-bootstrap-1-x6wj5 1/1 Running 0 46s 

응용 프로그램을 테스트하기 전에 경로를 결정해야합니다.

oc get routes

현재 프로젝트의 경로를 인쇄합니다.

NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD spring-boot-bootstrap spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io spring-boot-bootstrap 8080 None 

이제 책을 추가하여 애플리케이션이 작동하는지 확인하겠습니다.

http POST //spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io/api/books \ author="Iain M. Banks" 

다음 출력이 예상됩니다.

HTTP/1.1 201 { "author": "Iain M. Banks", "id": 1, "title": "The Player of Games" }

6. 응용 프로그램 확장

2 개의 인스턴스를 실행하도록 배포를 확장 해 보겠습니다.

oc scale --replicas=2 dc spring-boot-bootstrap

그리고 이전과 동일한 단계를 사용하여 배포를 관찰하고 경로를 가져오고 엔드 포인트를 테스트 할 수 있습니다.

Openshift는이 문서의 범위를 벗어나 성능 관리 및 확장을위한 다양한 옵션을 제공합니다.

7. 결론

이 튜토리얼에서 우리는 :

  • Openshift 개발 도구 및 로컬 환경 설치 및 구성
  • MySQL 서비스 배포
  • 데이터베이스 연결 속성을 제공하기 위해 ConfigMap 및 배포 구성을 만들었습니다.
  • 구성된 Spring Boot 애플리케이션 용 컨테이너를 빌드하고 배포했습니다.
  • 애플리케이션을 테스트하고 확장했습니다.

자세한 내용은 자세한 Openshift 문서를 확인하세요.

여기에있는 예제의 전체 소스 코드는 항상 GitHub에 있습니다.