OpenShift Container Platform에 Quarkus 애플리케이션 배포
초록
1장. OpenShift에 Quarkus 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션 개발자는 단일 Maven 명령을 사용하여 Quarkus 애플리케이션을 OpenShift에 배포할 수 있습니다. 이 기능은 Docker 빌드 전략 및 S2I(Source-to-Image) 전략을 비롯한 여러 배포 옵션을 지원하는 quarkus-openshift 확장을 통해 제공됩니다.
Red Hat build of Quarkus 설명서에서는 권장되는 워크플로를 통해 Quarkus 애플리케이션을 프로덕션 환경에 배포할 수 있습니다. 대체 배포에 대한 자세한 내용은 Quarkus 커뮤니티 설명서 를 참조하십시오.
사전 요구 사항
-
OpenJDK(JDK) 11 또는 17이 설치되어 있고
JAVA_HOME환경 변수가 Java SDK의 위치를 지정하도록 설정되어 있는지 확인합니다. - Apache Maven 3.8.1 이상이 설치되어 있어야 합니다.
quarkus-openshift확장을 포함하는 Quarkus Maven 프로젝트를 준비합니다.- Quarkus OpenShift 확장을 추가하려면 Quarkus Openshift 확장 추가를 참조하십시오.
Red Hat OpenShift Container Platform 클러스터 및 최신 버전의 OpenShift CLI(oc)에 액세스할 수 있습니다.
- oc 설치에 대한 자세한 내용은 OpenShift Container Platform 클러스터 설치 및 구성 을 참조하십시오.
보다 포괄적 수용을 위한 오픈 소스 용어 교체 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
1.1. OpenShift 빌드 전략 및 Quarkus 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift Container Platform은 컨테이너화된 애플리케이션을 개발하고 실행하기 위한 Kubernetes 기반 플랫폼입니다. 보안 및 편의를 위해 OpenShift는 업스트림 Kubernetes 배포에서는 사용할 수 없는 다양한 빌드 전략을 지원합니다.
OpenShift 빌드 전략 개요
- Docker 빌드
- 이 전략은 로컬 또는 CI 환경에서 로컬 또는 CI 환경에서 OpenShift 클러스터 외부의 아티팩트(JAR 파일 또는 네이티브 실행 파일)를 빌드한 다음 Dockerfile과 함께 OpenShift 빌드 시스템에 제공합니다. 컨테이너는 OpenShift 클러스터 내에서 빌드되고 이미지 스트림으로 제공됩니다.
Red Hat build of Quarkus 2.2 이후 OpenShift Docker 빌드 전략은 JVM을 대상으로 하는 Quarkus 애플리케이션과 기본 실행 파일로 컴파일된 Quarkus 애플리케이션을 지원하는 기본 빌드 전략입니다. 그러나 S2I는 이전 버전과의 호환성을 위해 기본 배포 전략으로 유지됩니다. quarkus.openshift.build-strategy 속성을 사용하여 배포 전략을 구성할 수 있습니다.
- S2I(Source to Image)
- 빌드 프로세스는 OpenShift 클러스터 내에서 수행됩니다. S2I를 사용하여 Red Hat build of Quarkus를 JVM 애플리케이션으로 배포하는 것은 완전히 지원됩니다.
- 바이너리 S2I
- 이 전략에서는 JAR 파일을 S2I 빌드 프로세스에 대한 입력으로 사용하므로 애플리케이션의 빌드 프로세스 및 배포 속도가 빨라집니다.
| 빌드 전략 | Quarkus 툴링 지원 | JVM 지원 | Native 지원 | JVM Serverless 지원 | 네이티브 Serverless 지원 |
|---|---|---|---|---|---|
| Docker 빌드 | 제공됨 | 제공됨 | 제공됨 | 제공됨 | 제공됨 |
| S2I Binary | 제공됨 | 제공됨 | NO | NO | NO |
| 소스 S2I | NO | 제공됨 | NO | NO | NO |
1.2. Quarkus OpenShift 확장 추가 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 클러스터 내에서 사용할 애플리케이션을 빌드하고 배포할 수 있도록 quarkus-openshift 확장을 Quarkus 프로젝트에 종속성으로 추가해야 합니다.
OpenShift 확장에서는 이미지 스트림, 빌드 구성, 배포 구성, 서비스 정의 등과 같은 OpenShift 리소스도 생성합니다. Quarkus 애플리케이션에 quarkus-undercloudrye-health 확장이 포함된 경우 OpenShift가 상태 엔드포인트에 액세스하고 애플리케이션의 활성 상태 및 준비 상태를 확인할 수 있습니다.
사전 요구 사항
Quarkus Maven 프로젝트를 준비합니다.
- Maven으로 Quarkus 프로젝트를 생성하는 방법에 대한 자세한 내용은 Apache Maven을 사용하여 Quarkus 애플리케이션 개발 및 컴파일을 참조하십시오.
프로세스
oc를 사용하여 OpenShift에 로그인한 다음 Quarkus Maven 프로젝트가 포함된 디렉터리로 변경합니다.- 올바른 OpenShift 프로젝트 네임스페이스에서 작업 중인지 확인하려면 필요한 OpenShift 프로젝트로 전환을 참조하십시오.
다음 방법 중 하나를 사용하여
quarkus-openshift확장을 프로젝트에 추가합니다.pom.xml파일에quarkus-openshift확장자를 추가합니다.pom.xml
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-openshift</artifactId> </dependency><dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-openshift</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령줄을 사용하여
quarkus-openshift확장을 추가합니다../mvnw com.redhat.quarkus.platform:quarkus-maven-plugin:2.2.3.Final-redhat-00013:add-extension -Dextensions="io.quarkus:quarkus-openshift"
./mvnw com.redhat.quarkus.platform:quarkus-maven-plugin:2.2.3.Final-redhat-00013:add-extension -Dextensions="io.quarkus:quarkus-openshift"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. 필요한 OpenShift 프로젝트로 전환 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift Container Platform CLI(명령줄 인터페이스)를 사용하여 터미널에서 애플리케이션을 생성하고 OpenShift 프로젝트를 관리할 수 있습니다. 제공된 정보를 사용하여 새 OpenShift 프로젝트를 생성하거나 기존 프로젝트로 전환합니다.
사전 요구 사항
- Red Hat OpenShift Container Platform 클러스터에 액세스
- 설치된 OpenShift CLI(oc)의 최신 버전
프로세스
OpenShift CLI(oc)에 로그인합니다.
oc login
oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 현재 프로젝트 공간을 표시합니다.
oc project -q
oc project -qCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 단계 중 하나를 사용하여 필요한 OpenShift 프로젝트로 이동합니다.
프로젝트가 이미 존재하는 경우 프로젝트로 전환합니다.
oc project <project_name>
oc project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로젝트가 없는 경우 새 프로젝트를 생성합니다.
oc new-project <project_name>
oc new-project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. Docker의 Java 버전 설정 링크 복사링크가 클립보드에 복사되었습니다!
S2I Docker 빌드 전략 배포 옵션을 사용하여 Red Hat build of Quarkus 애플리케이션을 JVM 모드에서 OpenShift에 배포할 때 Maven 프로젝트의 Docker 빌드 구성 파일이 애플리케이션이 사용 중인 OpenJDK 버전을 가리키는지 확인합니다.
릴리스 2.2.5부터 Red Hat build of Quarkus는 JVM 모드에서 OpenJDK 버전 11 및 17을 지원합니다. 기본적으로 Quarkus의 Docker 빌드 구성에 지정된 OpenJDK 패키지는 버전 11에 대해 구성됩니다.
2.2.5, Java 17은 기본 모드에서 실행 파일을 빌드하는 데 지원되지 않습니다.
애플리케이션이 OpenJDK 17의 JVM 모드에서 실행 중인 경우 다음 절차를 사용하여 올바른 OpenJDK 패키지를 설정합니다. 애플리케이션이 OpenJDK 11에서 실행 중인 경우 이 단계를 건너뛸 수 있습니다.
프로세스
-
Maven 프로젝트의
src/main/docker하위 디렉터리로 이동하여Dockerfile.jvm을 엽니다. 다음 구성 추출에 설명된 대로 OpenJDK 17 패키지를 가리키도록
ARG JAVA_PACKAGE변수를 설정합니다.FROM registry.access.redhat.com/ubi8/ubi-minimal:8.5 ARG JAVA_PACKAGE=java-17-openjdk-headless ...
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.5 ARG JAVA_PACKAGE=java-17-openjdk-headless ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5. OpenShift에 Quarkus Java 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
Quarkus OpenShift 확장을 사용하면 Docker 빌드 전략을 사용하여 OpenShift에 애플리케이션을 배포할 수 있습니다. 컨테이너는 OpenShift 클러스터 내에서 빌드되고 이미지 스트림으로 제공됩니다.
Quarkus 프로젝트에는 지침이 포함된 사전 생성된 Dockerfile이 포함되어 있습니다. 사용자 지정 Dockerfile을 사용하려면 src/main/docker 디렉터리에 또는 모듈 내의 모든 위치에 파일을 추가해야 합니다. 또한 quarkus.openshift.jvm-dockerfile 속성을 사용하여 Dockerfile의 경로를 설정해야 합니다.
사전 요구 사항
-
quarkus-openshift확장을 포함하는 Quarkus Maven 프로젝트를 준비합니다.
프로세스
oc를 사용하여 OpenShift에 로그인한 다음 Quarkus Maven 프로젝트가 포함된 디렉터리로 변경합니다.- 올바른 OpenShift 프로젝트 네임스페이스에서 작업 중인지 확인하려면 필요한 OpenShift 프로젝트로 전환을 참조하십시오.
application.properties파일에서 다음 속성을 구성합니다.Docker 빌드 전략을 설정합니다.
quarkus.openshift.build-strategy=docker
quarkus.openshift.build-strategy=dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 신뢰할 수 없는 인증서를 사용하는 경우
KubernetesClient를 구성합니다.quarkus.kubernetes-client.trust-certs=true
quarkus.kubernetes-client.trust-certs=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 서비스를 노출하여 OpenShift 경로를 생성합니다.
quarkus.openshift.route.expose=true
quarkus.openshift.route.expose=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 사용자 지정 Dockerfile의 경로를 설정합니다.
quarkus.openshift.jvm-dockerfile=<path_to_your_dockerfile>
quarkus.openshift.jvm-dockerfile=<path_to_your_dockerfile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예제에서는
Dockerfile.custom-jvm의 경로를 보여줍니다.quarkus.openshift.jvm-dockerfile=src/main/resources/Dockerfile.custom-jvm
quarkus.openshift.jvm-dockerfile=src/main/resources/Dockerfile.custom-jvmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Quarkus 애플리케이션을 패키징하고 현재 OpenShift 프로젝트에 배포합니다.
./mvnw clean package -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
현재 OpenShift 프로젝트와 연결된 Pod 목록을 보려면 다음을 수행합니다.
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 Pod의 로그 출력을 검색하려면 다음 명령을 입력합니다. 여기서 <
pod_name>은 애플리케이션 이름이 접두사가 지정된 최신 Pod의 이름입니다.oc logs -f <pod_name>
oc logs -f <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6. 기본 실행 파일에 컴파일된 Quarkus 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
Docker 빌드 전략을 사용하여 네이티브 Quarkus 애플리케이션을 OpenShift에 배포할 수 있습니다. Linux X86_64 운영 체제를 대상으로 하는 애플리케이션에 대한 기본 실행 파일을 생성해야 합니다. 호스트 운영 체제가 이와 다른 경우 Docker 또는 Podman과 같은 컨테이너 런타임을 사용하여 기본 Linux 실행 파일을 생성해야 합니다.
Quarkus 프로젝트에는 지침이 포함된 사전 생성된 Dockerfile이 포함되어 있습니다. 사용자 지정 Dockerfile을 사용하려면 src/main/docker 디렉터리에 또는 모듈 내의 모든 위치에 파일을 추가해야 합니다. 또한 quarkus.openshift.native-dockerfile 속성을 사용하여 Dockerfile의 경로를 설정해야 합니다.
사전 요구 사항
- Linux X86_64 운영 체제 또는 Podman 또는 Docker와 같은 OCI(Open Container Initiative) 호환 컨테이너 런타임
-
quarkus-openshift확장을 포함하는 Quarkus Maven 프로젝트를 준비합니다.
프로세스
oc를 사용하여 OpenShift에 로그인한 다음 Quarkus Maven 프로젝트가 포함된 디렉터리로 변경합니다.- 올바른 OpenShift 프로젝트 네임스페이스에서 작업 중인지 확인하려면 필요한 OpenShift 프로젝트로 전환을 참조하십시오.
application.properties파일에서 다음 속성을 구성합니다.Docker 빌드 전략을 설정합니다.
quarkus.openshift.build-strategy=docker
quarkus.openshift.build-strategy=dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너 런타임을 설정합니다.
quarkus.native.container-build=true
quarkus.native.container-build=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 신뢰할 수 없는 인증서를 사용하는 경우
KubernetesClient를 구성합니다.quarkus.kubernetes-client.trust-certs=true
quarkus.kubernetes-client.trust-certs=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 서비스를 노출하여 OpenShift 경로를 생성합니다.
quarkus.openshift.route.expose=true
quarkus.openshift.route.expose=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 사용자 지정 Dockerfile의 경로를 설정합니다.
quarkus.openshift.native-dockerfile=<path_to_your_dockerfile>
quarkus.openshift.native-dockerfile=<path_to_your_dockerfile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예제에서는
Dockerfile.custom-native의 경로를 보여줍니다.quarkus.openshift.jvm-dockerfile=src/main/docker/Dockerfile.custom-native
quarkus.openshift.jvm-dockerfile=src/main/docker/Dockerfile.custom-nativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 컨테이너 엔진을 지정합니다.
Podman을 사용하여 기본 실행 파일을 빌드하려면 다음을 수행합니다.
quarkus.native.container-runtime=podman
quarkus.native.container-runtime=podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow Docker를 사용하여 기본 실행 파일을 빌드하려면 다음을 수행합니다.
quarkus.native.container-runtime=docker
quarkus.native.container-runtime=dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
네이티브 실행 파일을 빌드하고 OpenShift에 애플리케이션을 배포합니다.
./mvnw clean package -Pnative -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Pnative -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
현재 OpenShift 프로젝트와 연결된 Pod 목록을 보려면 다음을 수행합니다.
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 Pod의 로그 출력을 검색하려면 다음 명령을 입력합니다. 여기서 <
pod_name>은 애플리케이션 이름이 접두사가 지정된 최신 Pod의 이름입니다.oc logs -f <pod_name>
oc logs -f <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. Quarkus 애플리케이션을 OpenShift Serverless 서비스로 배포 링크 복사링크가 클립보드에 복사되었습니다!
Docker 빌드 전략을 사용하여 Quarkus 애플리케이션을 OpenShift Serverless에 배포할 수 있습니다. OpenShift Serverless Knative Serving을 사용하면 로드 크기에 따라 서비스를 확장 및 축소할 수 있습니다. 현재 요청되지 않은 서비스를 축소하면 메모리 기능이 향상됩니다.
Quarkus 프로젝트에는 지침이 포함된 사전 생성된 Dockerfile이 포함되어 있습니다. 사용자 지정 Dockerfile을 사용하려면 src/main/docker 디렉터리에 또는 모듈 내의 모든 위치에 파일을 추가해야 합니다. 또한 JVM 모드의 quarkus.openshift.jvm-dockerfile 속성과 네이티브 모드에 대해 quarkus.openshift.native-dockerfile 속성을 사용하여 Dockerfile의 경로를 설정해야 합니다.
다음 절차에서는 Quarkus OpenShift 확장을 사용하여 기본 실행 파일로 컴파일된 Serverless Quarkus Java 애플리케이션 또는 Serverless 애플리케이션을 배포하는 방법을 보여줍니다.
사전 요구 사항
-
quarkus-openshift확장을 포함하는 Quarkus Maven 프로젝트를 준비합니다. - OpenShift Serverless Operator가 설치되어 있습니다.
- OpenShift Knative Serving이 설치 및 검증되었습니다. Knative Serving 설치를 참조하십시오.
- 네이티브 컴파일의 경우 Podman 또는 Docker와 같은 Linux X86_64 운영 체제 또는 OCI(Open Container Initiative) 호환 컨테이너 런타임이 필요합니다.
프로세스
oc를 사용하여 OpenShift에 로그인한 다음 Quarkus Maven 프로젝트가 포함된 디렉터리로 변경합니다.- 올바른 OpenShift 프로젝트 네임스페이스에서 작업 중인지 확인하려면 필요한 OpenShift 프로젝트로 전환을 참조하십시오.
application.properties파일에서 다음 속성을 구성합니다.Knative를 배포 대상으로 설정합니다.
quarkus.kubernetes.deployment-target=knative
quarkus.kubernetes.deployment-target=knativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Docker 빌드 전략을 설정합니다.
quarkus.openshift.build-strategy=docker
quarkus.openshift.build-strategy=dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Serverless에 OpenShift 내부 레지스트리에서 컨테이너 이미지를 가져오도록 직접 수행합니다.
quarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000
quarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고OpenShift &
lt;project_name>이 호스트 시스템의사용자 이름과다른 경우 Quarkus에서 이미지 레지스트리에서 이미지를 가져올 수 없습니다.quarkus.container-image.group=<project_name>
quarkus.container-image.group=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 신뢰할 수 없는 인증서를 사용하는 경우
KubernetesClient를 구성합니다.quarkus.kubernetes-client.trust-certs=true
quarkus.kubernetes-client.trust-certs=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 서비스를 노출하여 OpenShift 경로를 생성합니다.
quarkus.openshift.route.expose=true
quarkus.openshift.route.expose=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow (선택 사항) 사용자 지정 Dockerfile의 경로를 설정합니다.
quarkus.openshift.jvm-dockerfile=<path_to_your_dockerfile>
quarkus.openshift.jvm-dockerfile=<path_to_your_dockerfile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예제에서는
Dockerfile.custom-jvm의 경로를 보여줍니다.quarkus.openshift.jvm-dockerfile=src/main/resources/Dockerfile.custom-jvm
quarkus.openshift.jvm-dockerfile=src/main/resources/Dockerfile.custom-jvmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
(선택 사항) 네이티브 실행 파일로 컴파일된 Serverless 애플리케이션을 배포하려면 다음 속성을 구성해야 합니다.
컨테이너 런타임을 설정합니다.
quarkus.native.container-build=true
quarkus.native.container-build=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너 엔진을 지정합니다.
Podman을 사용하여 기본 실행 파일을 빌드하려면 다음을 수행합니다.
quarkus.native.container-runtime=podman
quarkus.native.container-runtime=podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow Docker를 사용하여 기본 실행 파일을 빌드하려면 다음을 수행합니다.
quarkus.native.container-runtime=docker
quarkus.native.container-runtime=dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
(선택 사항) 사용자 지정 Dockerfile의 경로를 설정합니다.
quarkus.openshift.native-dockerfile=<path_to_your_dockerfile>
quarkus.openshift.native-dockerfile=<path_to_your_dockerfile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 옵션 중 하나를 사용하여 Serverless 애플리케이션을 OpenShift에 패키징하고 배포합니다.
Quarkus Java 애플리케이션을 배포합니다.
./mvnw clean package -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus 네이티브 애플리케이션을 배포합니다.
./mvnw clean package -Pnative -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Pnative -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
현재 OpenShift 프로젝트와 연결된 Pod 목록을 보려면 다음을 수행합니다.
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 Pod의 로그 출력을 검색하려면 다음 명령을 입력합니다. 여기서 <
pod_name>은 애플리케이션 이름이 접두사가 지정된 최신 Pod의 이름입니다.oc logs -f <pod_name>
oc logs -f <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8. S2I를 사용하여 Quarkus 애플리케이션을 OpenShift에 배포 링크 복사링크가 클립보드에 복사되었습니다!
S2I(Source-to-Image) 방법을 사용하여 Quarkus 애플리케이션을 OpenShift에 배포할 수 있습니다. S2I를 사용하면 Git 리포지토리를 통해 또는 빌드 시 소스를 업로드하여 빌드 컨테이너에 소스 코드를 제공해야 합니다.
네이티브 배포에는 S2I가 지원되지 않습니다. 기본 실행 파일에 컴파일된 Quarkus 애플리케이션을 배포하려면 Docker 빌드 전략을 사용합니다.
S2I를 사용하여 Quarkus 애플리케이션을 OpenShift에 배포하는 절차는 사용 중인 Java 버전에 따라 다릅니다.
1.8.1. S2I를 사용하여 Quarkus 애플리케이션을 OpenShift에 배포(Java 11) 링크 복사링크가 클립보드에 복사되었습니다!
다음 섹션에서는 S2I(Source-to-Image) 방법을 사용하여 Java 11에서 실행되는 Quarkus 애플리케이션을 OpenShift에 배포하는 데 도움이 됩니다. 프로세서 아키텍처에 관계없이 Quarkus는 배포에 ubi8/openjdk-11 이미지를 사용할 것을 권장합니다.
사전 요구 사항
- Quarkus 애플리케이션이 Java 11로 빌드되도록 합니다. Java 17 애플리케이션의 경우 S2I를 사용하여 Quarkus 애플리케이션을 OpenShift(Java 17)에 배포할 수 있습니다.
-
quarkus-openshift확장을 포함하는 Quarkus Maven 프로젝트를 준비합니다. - Git 리포지토리에 Quarkus Maven 프로젝트를 호스팅합니다.
프로세스
oc를 사용하여 OpenShift에 로그인한 다음 Quarkus Maven 프로젝트가 포함된 디렉터리로 변경합니다.- 올바른 OpenShift 프로젝트 네임스페이스에서 작업 중인지 확인하려면 필요한 OpenShift 프로젝트로 전환을 참조하십시오.
Java 11 애플리케이션을 패키징합니다.
./mvnw clean package
./mvnw clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
pom.xml파일과 동일한 수준에서.s2i라는 숨겨진 디렉토리를 만듭니다. .s2i디렉터리에environment라는 파일을 생성하고 다음 콘텐츠를 추가합니다.MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jar
MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 변경 사항을 커밋하고 원격 Git 리포지토리로 내보냅니다.
지원되는 OpenShift 이미지를 가져옵니다.
oc import-image --confirm ubi8/openjdk-11 --from=ubi8/openjdk-11
oc import-image --confirm ubi8/openjdk-11 --from=ubi8/openjdk-11Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로젝트를 빌드하려면 애플리케이션을 생성하고 OpenShift 서비스를 배포합니다.
oc new-app ubi8/openjdk-11 <git_path> --name=<project_name>
oc new-app ubi8/openjdk-11 <git_path> --name=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 업데이트된 버전의 프로젝트를 배포하려면 업데이트를 Git 리포지토리로 푸시하고 다음 명령을 입력합니다.
oc start-build <project_name>
oc start-build <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
현재 OpenShift 프로젝트와 연결된 Pod 목록을 보려면 다음을 수행합니다.
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 Pod의 로그 출력을 검색하려면 다음 명령을 입력합니다. 여기서 < pod_name >은 애플리케이션 이름이 접두사가 지정된 최신 Pod의 이름입니다.
oc logs -f <pod_name>
oc logs -f <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.2. S2I를 사용하여 Quarkus 애플리케이션을 OpenShift에 배포(Java 17) 링크 복사링크가 클립보드에 복사되었습니다!
S2I(Source-to-Image) 방법을 사용하여 Java 17에서 OpenShift에 실행되는 Quarkus 애플리케이션을 배포하는 데 도움이 되는 정보가 제공됩니다.
사전 요구 사항
- Java 17로 빌드된 Quarkus 애플리케이션을 준비합니다. Java 11 애플리케이션의 경우 S2I를 사용하여 Quarkus 애플리케이션을 OpenShift(Java 11)에 배포를 참조하십시오.
-
quarkus-openshift확장을 포함하는 Quarkus Maven 프로젝트를 준비합니다. - Git 리포지토리에 Quarkus Maven 프로젝트를 호스팅합니다.
프로세스
pom.xml파일을 열고 다음과 같이 Java 구성을 버전 17으로 변경합니다.<maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc를 사용하여 OpenShift에 로그인한 다음 Quarkus Maven 프로젝트가 포함된 디렉터리로 변경합니다.- 올바른 OpenShift 프로젝트 네임스페이스에서 작업 중인지 확인하려면 필요한 OpenShift 프로젝트로 전환을 참조하십시오.
Java 17 애플리케이션을 패키징합니다.
./mvnw clean package
./mvnw clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
pom.xml파일과 동일한 수준에서.s2i라는 숨겨진 디렉토리를 만듭니다. .s2i디렉터리에environment라는 파일을 생성하고 다음 콘텐츠를 추가합니다.MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jar
MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 변경 사항을 커밋하고 원격 Git 리포지토리로 내보냅니다.
지원되는 OpenShift 이미지를 가져오려면 다음 명령 중 하나를 입력합니다.
oc import-image --confirm ubi8/openjdk-17 --from=registry.access.redhat.com/ubi8/openjdk-17
oc import-image --confirm ubi8/openjdk-17 --from=registry.access.redhat.com/ubi8/openjdk-17Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift에서 프로젝트를 빌드하려면 다음 명령을 입력합니다.
oc new-app ubi8/openjdk-17 <git_path> --name=<project_name>
oc new-app ubi8/openjdk-17 <git_path> --name=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서: * {t> 는 Quarkus 프로젝트를 호스팅하는 Git 리포지토리의 경로입니다 * <project_name>은 사용자가 생성한 OpenShift 프로젝트입니다.
OpenShift에 배포를 시작하려면 다음 명령을 입력합니다.
oc start-build <project_name>
oc start-build <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
현재 OpenShift 프로젝트와 연결된 Pod 목록을 보려면 다음을 수행합니다.
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 Pod의 로그 출력을 검색하려면 다음 명령을 입력합니다. 여기서 <
pod_name>은 애플리케이션 이름이 접두사가 지정된 최신 Pod의 이름입니다.oc logs -f <pod_name>
oc logs -f <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9. OpenShift에서 배포를 사용자 정의하는 Quarkus 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
선택적 구성 속성을 정의하여 OpenShift에서 배포를 사용자 지정할 수 있습니다. applications.properties 파일에서 또는 명령줄을 통해 Quarkus 프로젝트를 구성할 수 있습니다.
| 속성 | 설명 | 기본 |
|---|---|---|
|
|
컨테이너 이미지 그룹입니다. OpenShift < |
|
|
| 사용할 컨테이너 레지스트리 | |
|
| Kubernetes 클라이언트 인증서 인증 | |
|
|
배포 대상 플랫폼. 예: | |
|
| 컨테이너 런타임을 사용하여 기본 Linux 실행 파일을 빌드합니다. Docker는 기본적으로 사용 |
|
|
| 이미지를 빌드하는 데 사용되는 컨테이너 런타임(예: Docker) | |
|
| 배포 전략 |
|
|
| Quarkus 애플리케이션의 경로 노출 |
|
|
|
디버그를 활성화하고 별도의 .debug 파일에서 디버그 기호를 생성합니다. |
|