5.2. OpenShift에서 Fuse에서 애플리케이션 생성 및 배포
OpenShift에서 Fuse를 사용하여 애플리케이션을 생성하고 다음 OpenShift S2I(Source-to-Image) 애플리케이션 개발 워크플로우 중 하나를 사용하여 OpenShift에 배포할 수 있습니다.
- S2I 바이너리 워크플로
- 바이너리 소스 의 빌드 입력이 있는 S2I입니다. 이 워크플로는 빌드가 개발자의 자체 시스템에서 부분적으로 실행된다는 사실이 특징입니다. 바이너리 패키지를 로컬로 빌드한 후 이 워크플로는 바이너리 패키지를 OpenShift로 전달합니다. 자세한 내용은 OpenShift Container Platform 빌드 가이드의 바이너리 소스 를 참조하십시오.
- S2I 소스 워크플로우
- Git 소스 의 빌드 입력이 있는 S2I . 이 워크플로는 빌드가 전적으로 OpenShift 서버에서 실행된다는 사실이 특징입니다. 자세한 내용은 OpenShift Container Platform 빌드 가이드의 Git 소스 를 참조하십시오.
5.2.1. S2I 바이너리 워크플로를 사용하여 애플리케이션 생성 및 배포
이 섹션에서는 OpenShift S2I 바이너리 워크플로우를 사용하여 OpenShift 프로젝트에서 Fuse를 생성, 빌드 및 배포합니다.
- JDK11로 빠른 시작 실행
- 런타임 시 JDK11 기반 이미지를 사용하려면 컴파일 시간 동안 올바른 JDK11 프로필을 사용하십시오. JDK11을 사용하여 퀵스타트를 빌드하고 배포할 때 빌드 머신에 JDK11을 설치한 다음 올바른 JDK11 프로필을 사용하여 빠른 시작을 빌드해야 합니다.
절차
Maven archetype을 사용하여 OpenShift 프로젝트에서 새 Fuse를 생성합니다. 이 예제에서는 샘플 Spring Boot Camel 프로젝트를 생성하는 archetype을 사용합니다. 새 쉘 프롬프트를 열고 다음 Maven 명령 중 하나를 입력합니다.
모든 S2I 빠른 시작에 액세스하려면 다음을 수행합니다.
mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \ -DarchetypeCatalog=https://maven.repository.redhat.com/ga/io/fabric8/archetypes/archetypes-catalog/2.2.0.fuse-sb2-7_11_1-00018-redhat-00002/archetypes-catalog-2.2.0.fuse-sb2-7_11_1-00018-redhat-00002-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeVersion=2.2.0.fuse-sb2-7_11_1-00018-redhat-00002
Spring
-boot-2-camel-xmlquickstart에 액세스하려면 다음을 수행합니다.mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \ -DarchetypeCatalog=https://maven.repository.redhat.com/ga/io/fabric8/archetypes/archetypes-catalog/2.2.0.fuse-sb2-7_11_1-00018-redhat-00002/archetypes-catalog-2.2.0.fuse-sb2-7_11_1-00018-redhat-00002-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeArtifactId=spring-boot-camel-xml-archetype \ -DarchetypeVersion=2.2.0.fuse-sb2-7_11_1-00018-redhat-00002
archetype 플러그인은 대화형 모드로 전환되어 나머지 필드를 입력하라는 메시지를 표시합니다.
Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse711-spring-boot Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': org.example.fis: : Confirm properties configuration: groupId: org.example.fis artifactId: fuse711-spring-boot version: 1.0-SNAPSHOT package: org.example.fis Y: : Y
메시지가 표시되면
groupId값으로org.example.fis를 입력하고artifactId값으로fuse711-spring-boot를 입력합니다. 나머지 필드의 기본값을 수락합니다.
-
이전 명령이
BUILD SUCCESS상태로 종료되면 이제fuse711-spring-boot하위 디렉터리에 OpenShift 프로젝트에서 새 Fuse가 있어야 합니다.fuse711-spring-boot/src/main/resources/spring/camel-context.xml파일에서 XML DSL 코드를 검사할 수 있습니다. 데모 코드는 임의의 숫자가 포함된 메시지를 로그에 지속적으로 전송하는 간단한 Camel 경로를 정의합니다. OpenShift 프로젝트에서 Fuse를 빌드하고 배포할 수 있도록 다음과 같이 OpenShift Server에 로그인합니다.
oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443
여기서
OPENSHIFT_IP_ADDR은 이 IP 주소가 항상 동일하지 않기 때문에 OpenShift 서버의 IP 주소 자리 표시자입니다.참고사용자(개발 암호 포함)는 CDK를 통해 가상 OpenShift Server에서 자동으로 생성되는 표준 계정입니다. 원격 서버에 액세스하는 경우 OpenShift 관리자가 제공한 URL 및 인증 정보를 사용합니다.developer다음과 같이
openshift프로젝트에 아직 없는 경우openshift프로젝트로 전환합니다.oc project openshift
다음 명령을 실행하여 OpenShift 이미지 및 템플릿의 Fuse가 이미 설치되어 있고 액세스할 수 있는지 확인합니다.
oc get template -n openshift
이미지 및 템플릿이 사전 설치되지 않았거나 제공된 버전이 최신 버전이 아닌 경우 Fuse를 OpenShift 이미지 및 템플릿에 수동으로 설치(또는 업데이트)합니다. OpenShift 이미지에 Fuse를 설치하는 방법에 대한 자세한 내용은 2장. 관리자 시작하기 을 참조하십시오.
이제
fuse711-spring-boot프로젝트를 빌드하고 배포할 준비가 되었습니다. OpenShift에 로그인되어 있다고 가정하면fuse711-spring-boot프로젝트의 디렉터리로 변경한 다음 다음과 같이 프로젝트를 빌드하고 배포합니다.cd fuse711-spring-boot mvn oc:deploy -Popenshift
빌드가 성공적으로 완료되면 다음과 같은 일부 출력이 표시됩니다.
... [INFO] OpenShift platform detected [INFO] Using project: openshift [INFO] Creating a Service from openshift.yml namespace openshift name fuse711-spring-boot [INFO] Created Service: target/jkube/applyJson/openshift/service-fuse711-spring-boot.json [INFO] Using project: openshift [INFO] Creating a DeploymentConfig from openshift.yml namespace openshift name fuse711-spring-boot [INFO] Created DeploymentConfig: target/jkube/applyJson/openshift/deploymentconfig-fuse711-spring-boot.json [INFO] Creating Route openshift:fuse711-spring-boot host: null [INFO] F8: HINT: Use the command `oc get pods -w` to watch your pods start up [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 05:38 min [INFO] Finished at: 2020-12-04T12:15:06+05:30 [INFO] Final Memory: 63M/688M [INFO] ------------------------------------------------------------------------
참고이 명령을 처음 실행하는 경우 Maven은 많은 종속 항목을 다운로드해야 하며 몇 분 정도 걸립니다. 후속 빌드가 더 빨라집니다.
-
브라우저에서 OpenShift 콘솔로 이동하여 인증 정보를 사용하여 콘솔에 로그인합니다(예: 사용자 이름
developer및 암호developer). -
왼쪽 패널에서 홈을 확장한 다음 상태를 클릭하여
openshift프로젝트의 Project Status 페이지를 확인합니다. fuse711-spring-boot 를 클릭하여 fuse711-spring-boot 애플리케이션의 개요 정보 페이지를 확인합니다.
- 왼쪽 패널에서 워크로드를 확장합니다.
- 포드 를 클릭합니다. openshift 프로젝트에서 실행 중인 모든 Pod가 표시됩니다.
Pod 이름 (이 예에서
fuse711-spring-boot-xxxxx)을 클릭하여 실행 중인 Pod의 세부 정보를 확인합니다.
로그 탭을 클릭하여 애플리케이션 로그를 보고 로그를 아래로 스크롤하여 Camel 애플리케이션에서 생성한 임의의 수 로그 메시지를 찾습니다.
... 06:45:54.311 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 130 06:45:56.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 898 06:45:58.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 414 06:46:00.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 486 06:46:02.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 093 06:46:04.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 080
실행 중인 Pod를 종료하려면 다음을 수행합니다.
-
openshift프로젝트의 프로젝트 상태 페이지에서 fuse711-spring-boot 애플리케이션을 클릭합니다. - 개요 탭을 클릭하여 애플리케이션의 개요 정보 페이지를 확인합니다.
-
Desired Count 옆에 있는
아이콘을 클릭합니다. 개수 편집 창이 표시됩니다.
- 아래쪽 화살표를 사용하여 Pod를 중지하려면 0으로 축소합니다.
-
5.2.2. 프로젝트 배포 취소 및 재배포
다음과 같이 프로젝트 배포를 취소하거나 재배포할 수 있습니다.
절차
프로젝트 배포를 취소하려면 다음 명령을 입력합니다.
mvn oc:undeploy
프로젝트를 재배포하려면 명령을 입력합니다.
mvn oc:undeploy mvn oc:deploy -Popenshift
5.2.3. S2I 소스 워크플로우를 사용하여 애플리케이션 생성 및 배포
이 섹션에서는 OpenShift S2I 소스 워크플로를 사용하여 템플릿을 기반으로 OpenShift 애플리케이션에 Fuse를 빌드하고 배포합니다. 이 데모의 시작점은 원격 Git 리포지토리에 저장된 빠른 시작 프로젝트입니다. OpenShift 콘솔을 사용하면 OpenShift 서버에서 이 빠른 시작 프로젝트를 다운로드, 빌드 및 배포합니다.
절차
다음과 같이 OpenShift 서버에 로그인합니다.
oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443
여기서
OPENSHIFT_IP_ADDR은 이 IP 주소가 항상 동일하지 않기 때문에 OpenShift 서버의 IP 주소 자리 표시자입니다.참고사용자(개발 암호 포함)는 CDK를 통해 가상 OpenShift Server에서 자동으로 생성되는 표준 계정입니다. 원격 서버에 액세스하는 경우 OpenShift 관리자가 제공한 URL 및 인증 정보를 사용합니다.developer다음과 같이
openshift프로젝트에 아직 없는 경우openshift프로젝트로 전환합니다.oc project openshift
다음 명령을 실행하여 OpenShift 템플릿의 Fuse가 이미 설치되어 있고 액세스할 수 있는지 확인합니다.
oc get template -n openshift
이미지 및 템플릿이 사전 설치되지 않았거나 제공된 버전이 최신 버전이 아닌 경우 Fuse를 OpenShift 이미지 및 템플릿에 수동으로 설치(또는 업데이트)합니다. OpenShift 이미지에 Fuse를 설치하는 방법에 대한 자세한 내용은 2장. 관리자 시작하기 을 참조하십시오.
다음 명령을 입력하여 Spring Boot 빠른 시작 템플릿을 사용하여 Red Hat Fuse 7.12 Camel XML DSL 을 실행하는 데 필요한 리소스를 생성합니다. 그러면 빠른 시작에 대한 배포 구성 및 빌드 구성이 생성됩니다. 퀵 스타트의 기본 매개변수 및 생성된 리소스에 대한 정보가 터미널에 표시됩니다.
oc new-app s2i-fuse7-spring-boot-camel-xml --> Deploying template "openshift/s2i-fuse7-spring-boot-camel-xml" to project openshift ... --> Creating resources ... imagestream.image.openshift.io "s2i-fuse7-spring-boot-camel-xml" created buildconfig.build.openshift.io "s2i-fuse7-spring-boot-camel-xml" created deploymentconfig.apps.openshift.io "s2i-fuse7-spring-boot-camel-xml" created --> Success Build scheduled, use 'oc logs -f bc/s2i-fuse7-spring-boot-camel-xml' to track its progress. Run 'oc status' to view your app.- 브라우저에서 OpenShift 웹 콘솔로 이동하고(https://OPENSHIFT_IP_ADDR, OPENSHIFT_IP_ADDR 을 클러스터의 IP 주소로 교체) 인증 정보로 로그인합니다(예: 사용자 이름 developer 및 암호, 개발자).
- 왼쪽 패널에서 홈을 확장합니다. Status (상태)를 클릭하여 프로젝트 상태 페이지를 확인합니다. 선택한 네임스페이스(예: openshift)의 기존 애플리케이션이 모두 표시됩니다.
s2i-fuse7-spring-boot-camel-xml을 클릭하여 퀵 스타트에 대한 개요 정보 페이지를 확인합니다.
리소스 탭을 클릭한 다음 로그 보기를 클릭하여 애플리케이션의 빌드 로그를 확인합니다.
- 왼쪽 패널에서 워크로드를 확장합니다.
포드 를 클릭한 다음
s2i-fuse7-spring-boot-camel-xml-xxxx를 클릭합니다. 애플리케이션의 Pod 세부 정보가 표시됩니다.
실행 중인 Pod를 종료하려면 다음을 수행합니다.
-
openshift프로젝트의 프로젝트 상태 페이지에서 s2i-fuse7-spring-boot-camel-xml-xxxx 애플리케이션을 클릭합니다. - 개요 탭을 클릭하여 애플리케이션의 개요 정보 페이지를 확인합니다.
-
Desired Count 옆에 있는
아이콘을 클릭합니다. 개수 편집 창이 표시됩니다.
- 아래쪽 화살표를 사용하여 Pod를 중지하려면 0으로 축소합니다.
-