OpenShift에 OpenJDK 8 S2I(Source-to-Image) 사용
초록
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Red Hat 문서에 관한 피드백 제공
문서 개선을 위한 의견에 감사드립니다. 피드백을 제공하기 위해 문서의 텍스트를 강조 표시하고 주석을 추가할 수 있습니다.
이 섹션에서는 피드백을 제출하는 방법을 설명합니다.
사전 요구 사항
- Red Hat 고객 포털에 로그인되어 있습니다.
- Red Hat 고객 포털에서 다중 페이지 HTML 형식으로 문서를 봅니다.
절차
피드백을 제공하려면 다음 단계를 수행합니다.
문서의 오른쪽 상단에 있는 피드백 버튼을 클릭하여 기존 피드백을 확인합니다.
참고피드백 기능은 다중 페이지 HTML 형식에서만 활성화됩니다.
- 피드백을 제공하려는 문서의 섹션을 강조 표시합니다.
강조 표시된 텍스트 옆에 표시되는 피드백 추가 팝업을 클릭합니다.
페이지 오른쪽에 있는 피드백 섹션에 입력란이 표시됩니다.
텍스트 상자에 피드백을 입력하고 제출을 클릭합니다.
문서 문제가 생성됩니다.
- 문제를 보려면 피드백 보기에서 문제 추적 링크를 클릭합니다.
1장. OpenShift의 S2I(Source-to-Image) 소개
OpenShift Container Platform은 애플리케이션을 빌드하고 실행하는 S2I(Source-to-Image) 프로세스를 제공합니다. 빌더 이미지(JBoss EAP와 같은 기술 이미지) 상단에 애플리케이션의 소스 코드를 연결할 수 있습니다. S2I 프로세스는 애플리케이션을 빌드하고 빌더 이미지 위에 계층화하여 애플리케이션 이미지를 생성합니다. 애플리케이션 이미지가 빌드된 후 OpenShift 내부의 통합 레지스트리 또는 독립 실행형 레지스트리 로 내보낼 수 있습니다.
OpenShift용 S2I를 사용하면 OpenShift의 컨테이너화된 이미지 내에서 기본 Java 애플리케이션(예: fat-jar 또는 flat classpath )을 빌드하고 실행할 수 있습니다.
1.1. 이미지 스트림 정의
기본적으로 Red Hat OpenShift Container Platform에는 Red Hat OpenJDK 컨테이너 이미지가 포함된 이미지 스트림이 포함되어 있습니다.
이미지 스트림 정의를 새 네임스페이스로 가져오거나 다시 생성할 수 있습니다. openjdk GitHub 페이지에서 이러한 이미지 스트림 템플릿에 액세스할 수 있습니다.
Red Hat OpenShift Container Platform에는 최신 버전의 컨테이너 이미지를 따르는 이미지 스트림으로 java 가 포함되어 있습니다. 이 이미지 스트림에는 다음 태그가 포함되어 있습니다.
-
:latest: 지원되는 최신 OpenJDK 버전을 제공합니다. 태그는 이 이미지 스트림에 대한 업데이트를 추적합니다. -
:11최신 JDK 11 이미지를 제공합니다. -
:8최신 JDK 8 이미지를 제공합니다.
이전 이미지 스트림 및 해당 태그는 최신 버전의 RHEL UBI(Universal Base Image)를 기반으로 합니다.
특정 RHEL 또는 OpenJDK 버전을 선택하려면 openjdk-X-ubiY 형식의 태그를 선택합니다. 여기서 X 는 OpenJDK 버전을 참조하고 Y 는 RHEL 버전을 나타냅니다.
다음 예제에서는 이 형식을 따르는 태그를 보여줍니다.
-
openjdk-8-ubi8 -
openjdk-11-ubi8 -
openjdk-17-ubi8
최신 컨테이너 이미지 버전을 정확하게 추적하는 특정 이미지 스트림이 있습니다. 이러한 이미지 스트림은 ubiX-openjdk-Y 형식을 따릅니다. 여기서 X 는 RHEL UBI 버전을 지정하고 Y 는 OpenJDK 버전을 지정합니다. 다음 예제에서는 이 형식을 따르는 이미지 스트림을 보여줍니다.
-
ubi8-openjdk-8 -
ubi8-openjdk-11 -
ubi8-openjdk-17
이러한 이미지 스트림의 태그는 1.11,1.12 등과 같은 이미지 버전에 직접 매핑됩니다.
추가 리소스
- 이미지 스트림 관리 (OpenShift Container Platform)
- 템플릿 (GitHub)
2장. 사전 준비 사항
초기 설정
OpenShift 인스턴스를 생성합니다. OpenShift 인스턴스를 생성하는 방법에 대한 자세한 내용은 OpenShift 컨테이너 플랫폼 설치 개요 를 참조하십시오.
버전 호환성 및 지원
OpenShift Container Platform 버전 3.11, 4.7 및 4.7 이상에서는 OpenShift 이미지의 S2I를 지원합니다.
OpenShift Container Platform의 현재 지원 수준에 대한 자세한 내용은 Red Hat OpenShift Container Platform 라이프 사이클 정책 및 Red Hat OpenShift Container Platform 라이프 사이클 정책 (최신 버전 제외) 을 참조하십시오.
3장. OpenShift에 S2I(Source-to-Image) 사용
OpenShift 이미지에 S2I(Source-to-Image)를 사용하여 OpenShift에서 사용자 지정 Java 애플리케이션을 실행할 수 있습니다.
3.1. OpenShift용 S2I(Source-to-Image)를 사용하여 Java 애플리케이션 빌드 및 배포
OpenShift 이미지에 대해 S2I(Source-to-Image)를 사용하여 OpenShift에서 소스에서 Java 애플리케이션을 빌드하고 배포하려면 OpenShift S2I 프로세스를 사용합니다.
절차
다음 명령을 실행하고 자격 증명을 제공하여 OpenShift 인스턴스에 로그인합니다.
$ oc login
새 프로젝트를 생성합니다.
$ oc new-project <project-name>
OpenShift 이미지용 S2I를 사용하여 새 애플리케이션을 생성합니다.
& lt;source-location >은 GitHub 리포지토리의 URL 또는 로컬 폴더의 경로입니다.
$ oc new-app
<source-location>예를 들면 다음과 같습니다.
$ oc new-app --context-dir=getting-started --name=quarkus-quickstart \ 'registry.access.redhat.com/ubi8/openjdk-11~https://github.com/quarkusio/quarkus-quickstarts.git#2.12.1.Final'
서비스 이름을 가져옵니다.
$ oc get svc
브라우저에서 서버를 사용할 수 있도록 서비스를 경로로 노출합니다.
$ oc expose svc/ --port=8080
루트를 가져옵니다.
$ oc get route
-
URL을 사용하여 브라우저에서 애플리케이션에 액세스합니다. 이전 명령의 출력의
HOST/PORT필드 값을 사용합니다.
추가 리소스
- 자세한 내용은 OpenShift의 source-to-image에서 Running flat classpath JAR를 참조하십시오.
3.2. 바이너리 아티팩트를 사용하여 Java 애플리케이션 빌드 및 배포
바이너리 소스 기능을 사용하여 OpenShift에 기존 Java 애플리케이션을 배포할 수 있습니다.
이 절차에서는 undertow-servlet quickstart를 사용하여 로컬 머신에서 Java 애플리케이션을 빌드합니다. 빠른 시작은 S2I 바이너리 소스 기능을 사용하여 결과 바이너리 Artifacts를 OpenShift에 복사합니다.
사전 요구 사항
- 로컬 시스템에서 Red Hat JBoss Enterprise Maven 리포지토리를 활성화합니다.
JAR 애플리케이션 아카이브를 가져와서 로컬로 애플리케이션을 빌드합니다.
undertow-servlet 소스 코드를 복제합니다.
$ git clone https://github.com/jboss-openshift/openshift-quickstarts.git
애플리케이션을 빌드합니다.
$ cd openshift-quickstarts/undertow-servlet/
$ mvn clean package [INFO] Scanning for projects... ... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Undertow Servlet Example 1.0.0.Final [INFO] ------------------------------------------------------------------------ ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.986 s [INFO] Finished at: 2017-06-27T16:43:07+02:00 [INFO] Final Memory: 19M/281M [INFO] ------------------------------------------------------------------------
로컬 파일 시스템에서 디렉터리 구조를 준비합니다.
기본 바이너리 빌드 디렉터리(기본 바이너리 빌드 디렉터리)에 애플리케이션 아카이브를 OpenShift에서 빌드하는 표준 배포 폴더에 복사합니다. 배포할 애플리케이션의 웹 애플리케이션 데이터가 포함된 디렉터리 계층 구조를 구조화합니다.
바이너리 빌드의 기본 디렉터리를 로컬 파일 시스템 및 deployments/ 하위 디렉터리에 생성합니다. 빌드된 JAR 아카이브를 deployments/ 하위 디렉터리에 복사합니다.
undertow-servlet]$ ls dependency-reduced-pom.xml pom.xml README src target
$ mkdir -p ocp/deployments
$ cp target/undertow-servlet.jar ocp/deployments/
절차
다음 명령을 실행하고 자격 증명을 제공하여 OpenShift 인스턴스에 로그인합니다.
$ oc login
새 프로젝트를 생성합니다.
$ oc new-project jdk-bin-demo
새 바이너리 빌드를 생성하고 이미지 스트림과 애플리케이션 이름을 지정합니다.
$ oc new-build --binary=true \ --name=jdk-us-app \ --image-stream=java:11 --> Found image c1f5b31 (2 months old) in image stream "openshift/java:11" under tag "latest" for "java:11" Java Applications ----------------- Platform for building and running plain Java applications (fat-jar and flat classpath) --> Creating resources with label build=jdk-us-app ... imagestream "jdk-us-app" created buildconfig "jdk-us-app" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose svc/jdk-us-app'바이너리 빌드를 시작합니다.
이전 단계에서 생성한 바이너리 빌드의 기본 디렉터리를 OpenShift 빌드의 바이너리 입력이 포함된 디렉터리로 사용하도록
oc실행 파일에 지시합니다.$ oc start-build jdk-us-app --from-dir=./ocp --follow Uploading directory "ocp" as binary input for the build ... build "jdk-us-app-1" started Receiving source from STDIN as archive ... ================================================================== Starting S2I Java Build ..... S2I source build with plain binaries detected Copying binaries from /tmp/src/deployments to /deployments ... ... done Pushing image 172.30.197.203:5000/jdk-bin-demo/jdk-us-app:latest ... Pushed 0/6 layers, 2% complete Pushed 1/6 layers, 24% complete Pushed 2/6 layers, 36% complete Pushed 3/6 layers, 54% complete Pushed 4/6 layers, 71% complete Pushed 5/6 layers, 95% complete Pushed 6/6 layers, 100% complete Push successful
빌드를 기반으로 새 OpenShift 애플리케이션을 생성합니다.
$ oc new-app jdk-us-app --> Found image 66f4e0b (About a minute old) in image stream "jdk-bin-demo/jdk-us-app" under tag "latest" for "jdk-us-app" jdk-bin-demo/jdk-us-app-1:c1dbfb7a ---------------------------------- Platform for building and running plain Java applications (fat-jar and flat classpath) Tags: builder, java * This image will be deployed in deployment config "jdk-us-app" * Ports 8080/tcp, 8443/tcp, 8778/tcp will be load balanced by service "jdk-us-app" * Other containers can access this service through the hostname "jdk-us-app" --> Creating resources ... deploymentconfig "jdk-us-app" created service "jdk-us-app" created --> Success Run 'oc status' to view your app.서비스를 경로로 노출합니다.
$ oc expose svc/jdk-us-app route "jdk-us-app" exposed
루트를 가져옵니다.
$ oc get route
-
URL(이전 명령 출력의
HOST/PORT필드 값)을 사용하여 브라우저에서 애플리케이션에 액세스합니다.
추가 리소스
- 바이너리 소스 기능을 사용하여 OpenShift에 기존 Java 애플리케이션을 배포합니다.
- maven 리포지토리를 구성하는 방법에 대한 자세한 내용은 Maven 리포지토리 사용을 참조하십시오.
4장. OpenShift에서 S2I용 워크플로우 예
4.1. OpenShift 이미지에 대한 원격 디버깅 Java 애플리케이션
절차의 예제에서는 OpenShift 이미지용 S2I를 사용하여 OpenShift에 배포된 Java 애플리케이션의 원격 디버깅을 보여줍니다. 환경 변수 JAVA_DEBUG 의 값을 true 로 설정하고 JAVA_DEBUG_PORT 를 각각 9009 로 설정하여 기능을 활성화할 수 있습니다.
JAVA_DEBUG 변수가 true로 설정되어 JAVA_DEBUG_PORT 변수에 값이 제공되지 않으면 JAVA_DEBUG_PORT 가 기본적으로 5005 로 설정됩니다.
배포 준비
절차
다음 명령을 실행하고 인증 정보를 제공하여 OpenShift 인스턴스에 로그인합니다.
$ oc login
새 프로젝트를 생성합니다.
$ oc new-project js2i-remote-debug-demo
Deployment
신규 및 기존 애플리케이션에 대한 원격 디버깅을 활성화할 수 있습니다.
새 애플리케이션에 대한 원격 디버깅 활성화
절차
OpenShift 이미지용 S2I 및 예제 Java 소스 코드를 사용하여 새 애플리케이션을 생성합니다. 애플리케이션을 생성하기 전에
JAVA_DEBUG및JAVA_DEBUG_PORT환경 변수를 설정해야 합니다.$ oc new-app --context-dir=getting-started --name=quarkus-quickstart \ 'registry.access.redhat.com/ubi8/openjdk-11~https://github.com/quarkusio/quarkus-quickstarts.git#2.12.1.Final' -e JAVA_DEBUG=true \ -e JAVA_DEBUG_PORT=9009
Pod의 포트에 로컬 디버깅 포트 연결을 진행합니다.
기존 애플리케이션에 대한 원격 디버깅 활성화
절차
적절한 OpenShift 프로젝트로 전환합니다.
$ oc project js2i-remote-debug-demo
deploymentconfig 의 이름을 검색합니다.
$ oc get dc -o name deploymentconfig/openshift-quickstarts
-
deploymentconfig 를 편집하고
JAVA_DEBUG=true및JAVA_DEBUG_PORT=9009환경 변수를 추가합니다. 경로
.spec.template.spec.containers및 컨테이너 유형에서 편집할 오브젝트를 지정합니다.$ oc edit dc/openshift-quickstarts
참고편집기를 시작하여 터미널에서
oc edit명령을 실행합니다. 환경의EDITOR변수를 정의하여 시작된 편집기를 변경할 수 있습니다.
Pod의 포트에 로컬 디버깅 포트 연결을 진행합니다.
post-deployment
Pod의 포트에 로컬 디버깅 포트 연결
절차
애플리케이션을 실행하는 Pod의 이름을 가져옵니다(상태 실행 중).
Pod 이름으로
openshift-quickstarts-1-1uymm를 표시하는 예.$ oc get pods NAME READY STATUS RESTARTS AGE openshift-quickstarts-1-1uymm 1/1 Running 0 3m openshift-quickstarts-1-build 0/1 Completed 0 6m
OpenShift 또는 Kubernetes 포트 전달 기능을 사용하여 로컬 포트에서 수신 대기하고 OpenShift 포드의 포트로 전달합니다. <running-pod >는 이전 명령 출력에서 상태가 "running"인 Pod의 NAME 필드 값입니다.
$ oc port-forward <running-pod> 5005:9009 Forwarding from 127.0.0.1:5005 -> 9009 Forwarding from [::1]:5005 -> 9009
참고이전 예에서
5005는 로컬 시스템의 포트 번호입니다.9009는 OpenShift 이미지에 대해 S2I를 실행하는 OpenShift pod의 원격 포트 번호입니다. 따라서 로컬 포트5005에 대한 향후 디버깅 연결이 OpenShift pod의 포트9009로 전달되어 JVM(Java Virtual Machine)을 실행합니다.
명령을 사용하면 터미널에서 추가로 입력하지 못할 수 있습니다. 이 경우 다음 단계를 수행하기 위해 새 터미널을 시작합니다.
애플리케이션에 디버거 연결
절차
로컬 시스템의 디버거를 OpenShift 이미지의 S2I에서 실행되는 원격 JVM에 연결합니다.
$ jdb -attach 5005 Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable Initializing jdb ... > ...
참고원격 OpenShift pod 디버깅 연결에 대한 로컬 디버거가 시작되면
5005의 연결 처리와 유사한 항목이 이전 oc port-forward 명령이 발행된 콘솔에 표시됩니다.애플리케이션을 디버깅합니다.
$ jdb -attach 5005 Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable Initializing jdb ... > threads Group system: (java.lang.ref.Reference$ReferenceHandler)0x79e Reference Handler cond. waiting (java.lang.ref.Finalizer$FinalizerThread)0x79f Finalizer cond. waiting (java.lang.Thread)0x7a0 Signal Dispatcher running Group main: (java.util.TimerThread)0x7a2 server-timer cond. waiting (org.jolokia.jvmagent.CleanupThread)0x7a3 Jolokia Agent Cleanup Thread cond. waiting (org.xnio.nio.WorkerThread)0x7a4 XNIO-1 I/O-1 running (org.xnio.nio.WorkerThread)0x7a5 XNIO-1 I/O-2 running (org.xnio.nio.WorkerThread)0x7a6 XNIO-1 I/O-3 running (org.xnio.nio.WorkerThread)0x7a7 XNIO-1 Accept running (java.lang.Thread)0x7a8 DestroyJavaVM running Group jolokia: (java.lang.Thread)0x7aa Thread-3 running >
추가 리소스
- Openshift 공통 오브젝트 참조에 대한 자세한 내용은 OpenShift Common Object Reference, 섹션을 참조하십시오.
- OpenShift 이미지용 S2I를 실행하는 OpenShift Pod에 Red Hat JBoss Developer Studio의 IDE 디버거를 연결하는 방법에 대한 자세한 내용은 IDE 디버그 구성 및 연결을 참조하십시오.
4.2. OpenShift의 S2I(Source-to-Image)에서 플랫 클래스 경로 JAR 실행
절차의 예제에서는 OpenShift용 S2I에서 flat classpath java 애플리케이션을 실행하는 프로세스를 설명합니다.
배포 준비
절차
인증 정보를 제공하여 OpenShift 인스턴스에 로그인합니다.
$ oc login
새 프로젝트를 생성합니다.
$ oc new-project js2i-flatclasspath-demo
Deployment
절차
OpenShift 이미지 및 Java 소스 코드를 위해 S2I를 사용하여 새 애플리케이션을 생성합니다.
$ oc new-app --context-dir=getting-started --name=quarkus-quickstart \ 'registry.access.redhat.com/ubi8/openjdk-11~https://github.com/quarkusio/quarkus-quickstarts.git#2.12.1.Final'
post-deployment
절차
서비스 이름을 가져옵니다.
$ oc get svc
브라우저에서 서비스를 사용할 수 있는 경로로 서비스를 노출합니다.
$ oc expose svc/openshift-quickstarts --port=8080
루트를 가져옵니다.
$ oc get route
-
URL(이전 명령 출력의
HOST/PORT필드 값)을 사용하여 브라우저에서 애플리케이션에 액세스합니다.
5장. reference
5.1. 버전 세부 정보
다음 표에는 이 이미지에서 사용되는 기술 버전이 나열되어 있습니다.
표 5.1. 이 이미지에서 사용되는 기술 버전
| 기술 | 버전 |
|---|---|
| OpenJDK | 8 |
| Jolokia | 1.6.2 |
| Maven | 3.6 |
5.2. 정보 환경 변수
다음 정보 환경 변수는 이미지에 대한 정보를 전달하도록 설계되었습니다. 이러한 변수는 수정하지 마십시오.
표 5.2. 정보 환경 변수
| 변수 이름 | 현재의 |
|---|---|
| 홈 | /home/jboss |
| JAVA_HOME | /usr/lib/jvm/java-1.8.0 |
| JAVA_VENDOR | openjdk |
| JAVA_VERSION | 1.8.0 |
| JOLOKIA_VERSION | 1.6.2 |
| LD_PRELOAD | libnss_wrapper.so |
| MAVEN_VERSION | 3.6 |
| NSS_WRAPPER_GROUP | /etc/group |
| NSS_WRAPPER_PASSWD | /home/jboss/passwd |
5.3. 구성 환경 변수
구성 환경 변수는 다시 작성 없이도 이미지를 편리하게 조정하도록 설계되었으며 사용자가 원하는 대로 설정해야 합니다.
표 5.3. 구성 환경 변수
| 변수 이름 | 설명 | 기본값 | 예시 값 |
|---|---|---|---|
| AB_JOLOKIA_CONFIG |
설정된 경우 이 파일( path 포함)을 Jolokia JVM 에이전트 속성(Jolokia 참조 설명서에설명된 대로)으로 사용합니다. 설정되지 않은 경우 설명서에 정의된 설정을 사용하여 | - | /opt/jolokia/custom.properties |
| AB_JOLOKIA_DISCOVERY_ENABLED | Jolokia 발견을 활성화합니다. | false | true |
| AB_JOLOKIA_HOST | 바인딩할 호스트 주소입니다. | 0.0.0.0 | 127.0.0.1 |
| AB_JOLOKIA_ID | 사용할 에이전트 ID(컨테이너 ID)입니다. |
| openjdk-app-1-xqlsj |
| AB_JOLOKIA_OFF | 설정된 경우 Joloka 활성화를 비활성화합니다(즉, 빈 값을 에코). | Jolokia 사용 가능 | true |
| AB_JOLOKIA_OPTS |
에이전트 구성에 추가할 추가 옵션입니다. | - | backlog=20 |
| AB_JOLOKIA_PASSWORD | 기본 인증을 위한 암호입니다. 기본적으로 인증은 꺼집니다. | - | mypassword |
| AB_JOLOKIA_PORT | 수신 대기할 포트입니다. | 8778 | 5432 |
| AB_JOLOKIA_USER | 기본 인증을 위한 사용자입니다. | Jolokia | myusername |
| AB_PROMETHEUS_ENABLE | Prometheus 에이전트 사용을 활성화합니다. | - | True |
| AB_PROMETHEUS_JMX_EXPORTER_PORT | Prometheus Cryostat Exporter에 사용할 포트입니다. | - | 9799 |
| CONTAINER_CORE_LIMIT | CFS Bandwidth Control 에 설명된 대로 계산된 코어 제한입니다. | - | 2 |
| CONTAINER_MAX_MEMORY | 컨테이너에 할당된 메모리 제한입니다. | - | 1024 |
| GC_ADAPTIVE_SIZE_POLICY_WEIGHT | 현재 가비지 수집기 시간과 이전 가비지 수집기에 지정된 가중치입니다. | - | 90 |
| GC_CONTAINER_OPTIONS | 사용할 Java GC를 지정합니다. 이 변수의 값에는 기본값을 재정의하는 데 필요한 GC를 지정하는 데 필요한 JRE 명령줄 옵션이 포함되어야 합니다. | -XX:+UseParallelOldGC | -XX:+UseG1GC |
| GC_MAX_HEAP_FREE_RATIO | 축소를 방지하기 위해 GC 후에 사용 가능한 최대 힙 백분율입니다. | - | 40 |
| GC_MAX_METASPACE_SIZE | 최대 메타 공간 크기입니다. | - | 100 |
| GC_METASPACE_SIZE | 초기 메타 공간 크기입니다. | - | 20 |
| GC_MIN_HEAP_FREE_RATIO | 확장을 피하기 위해 GC 후 최소 힙의 최소 백분율이 없습니다. | - | 20 |
| GC_TIME_RATIO | 가비지 컬렉션 외부에서 보낸 시간(예: 애플리케이션 실행 시간)을 가비지 컬렉션에 보낸 시간으로 지정합니다. | - | 4 |
| HTTPS_PROXY | HTTPS 프록시의 위치입니다. http_proxy 및 HTTP_PROXY 보다 우선하며 Maven 빌드 및 Java 런타임 모두에 사용됩니다. | - | myuser@127.0.0.1:8080 |
| HTTP_PROXY | HTTP 프록시의 위치입니다. 이는 Maven 빌드 및 Java 런타임 모두에 사용됩니다. | - | 127.0.0.1:8080 |
| JAVA_APP_DIR | 애플리케이션이 있는 디렉터리입니다. 애플리케이션의 모든 경로는 이 디렉터리를 기준으로 합니다. | - | myapplication/ |
| JAVA_ARGS |
Java 애플리케이션에 전달된 | - | - |
| JAVA_CLASSPATH |
사용할 classpath입니다. 지정하지 않으면 시작 스크립트에서 | - | - |
| JAVA_DEBUG | 설정된 경우 원격 디버깅이 켜집니다. | false | true |
| JAVA_DEBUG_PORT | 원격 디버깅에 사용되는 포트입니다. | 5005 | 8787 |
| JAVA_DIAGNOSTICS | 명령을 실행하는 동안 일부 진단 정보를 표준 출력에 출력하도록 설정합니다. | false | true |
| JAVA_INITIAL_MEM_RATIO |
| 25 | 25 |
| JAVA_LIB_DIR |
Java Cryostat 파일과 classpath를 포함하는 선택적 | JAVA_APP_DIR | - |
| JAVA_MAIN_CLASS |
| - | com.example.MainClass |
| JAVA_MAX_INITIAL_MEM |
| 4096 | 4096 |
| JAVA_MAX_MEM_RATIO |
| 50 | - |
| JAVA_OPTS |
| - | -verbose:class |
| JAVA_OPTS_APPEND | JAVA_OPTS에서 생성된 옵션에 추가할 사용자 지정 Java 옵션. | - | -Dsome.property=foo |
| LOGGING_SCRIPT_DEBUG |
스크립트 디버깅을 활성화하려면 true로 설정합니다. | true | True |
| MAVEN_ARGS |
Maven을 호출할 때 사용할 인수, 기본 | package hawt-app:build -DskipTests -e | -e -Popenshift -DskipTests -Dcom.redhat.xpaas.repo.redhatga package |
| MAVEN_ARGS_APPEND | 추가 Maven 인수. | - | -X -am -pl |
| MAVEN_CLEAR_REPO |
설정하면 아티팩트가 빌드된 후 Maven 리포지토리가 제거됩니다. 이 기능은 생성된 애플리케이션 이미지의 크기를 작게 줄이는 데 유용하지만 증분 빌드를 방지하는 데 유용합니다. | false | - |
| MAVEN_LOCAL_REPO | 로컬 Maven 리포지토리로 사용할 디렉터리입니다. | - | /home/jboss/.m2/repository |
| MAVEN_MIRRORS |
설정된 경우 다중 미러 지원이 활성화되고 다른 | - | dev-one,qe-two |
| MAVEN_MIRROR_URL | 아티팩트를 검색하는 데 사용되는 미러의 기본 URL입니다. | - | |
| MAVEN_REPOS |
설정하면 다중 리포지터리 지원이 활성화되고 다른 | - | dev-one,qe-two |
| MAVEN_S2I_ARTIFACT_DIRS |
빌드 출력을 스캔할 소스 디렉터리의 상대 경로는 | 대상 | 대상 |
| MAVEN_S2I_GOALS |
Maven 빌드를 사용하여 실행할 목표를 공백으로 구분한 목록입니다. 예를 들어 | 패키지 | 패키지 설치 |
| MAVEN_SETTINGS_XML |
사용할 사용자 지정 Maven | - | /home/jboss/.m2/settings.xml |
| NO_PROXY | 직접 액세스할 수 있는 쉼표로 구분된 호스트, IP 주소 또는 도메인 목록입니다. 이는 Maven 빌드 및 Java 런타임 모두에 사용됩니다. | - | foo.example.com,bar.example.com |
| S2I_ARTIFACTS_DIR | 증분 빌드와 함께 사용되는 save-artifacts 스크립트로 유지되는 아티팩트의 위치 마운트. 이는 최종 사용자가 재정의해서는 안 됩니다. | - |
|
| S2I_DESTINATION_DIR |
| - |
|
| S2I_ENABLE_INCREMENTAL_BUILDS | 향후 빌드와 함께 사용할 수 있도록 소스 및 중간 빌드 파일을 제거하지 마십시오. | true | true |
| S2I_IMAGE_SOURCE_MOUNTS |
이미지에 포함되어야 하는 소스 디렉터리에 있는 콤마로 구분된 상대 경로 목록입니다. 목록에는 find를 사용하여 확장되는 와일드카드가 포함될 수 있습니다. 기본적으로 마운트된 디렉터리의 내용은 소스 폴더와 유사하게 처리됩니다. 여기서 | - |
|
| S2I_SOURCE_CONFIGURATION_DIR |
제품 구성 디렉터리에 복사할 애플리케이션 구성 파일이 포함된 디렉터리의 상대 경로 | 구성 | 구성 |
| S2I_SOURCE_DATA_DIR |
제품 데이터 디렉터리에 복사할 애플리케이션 데이터 파일을 포함하는 디렉터리의 상대 경로 | data | data |
| S2I_SOURCE_DEPLOYMENTS_DIR |
바이너리 파일을 제품 배포 디렉터리에 복사하는 디렉터리의 상대 경로는 | Deployments | Deployments |
| S2I_SOURCE_DIR | 소스 코드를 빌드할 마운트 위치입니다. 이는 최종 사용자가 재정의해서는 안 됩니다. | - | ${S2I_DESTINATION_DIR}/src} |
| S2I_TARGET_CONFIGURATION_DIR |
| - | /opt/eap/standalone/configuration |
| S2I_TARGET_DATA_DIR |
| - | /opt/eap/standalone/data |
| S2I_TARGET_DEPLOYMENTS_DIR |
| - | /deployments |
| http_proxy | HTTP 프록시의 위치입니다. 이는 HTTP_PROXY 보다 우선하며 Maven 빌드 및 Java 런타임 모두에 사용됩니다. | - | |
| https_proxy | HTTPS 프록시의 위치입니다. 이는 HTTPS_PROXY,http_proxy 및 HTTP_PROXY 보다 우선하며 Maven 빌드 및 Java 런타임 모두에 사용됩니다. | - | myuser:mypass@127.0.0.1:8080 |
| no_proxy | 직접 액세스할 수 있는 쉼표로 구분된 호스트, IP 주소 또는 도메인 목록입니다. 이는 NO_PROXY 보다 우선하며 Maven 빌드 및 Java 런타임 모두에 사용됩니다. | - | *.example.com |
| prefix_MAVEN_MIRROR_ID | 지정된 미러에 사용할 ID입니다. 생략하면 고유한 ID가 생성됩니다. | - | internal-mirror |
| prefix_MAVEN_MIRROR_OF | 이 항목에 의해 미러링된 저장소 ID입니다. | 외부:* | - |
| prefix_MAVEN_MIRROR_URL | 미러의 URL입니다. | - | |
| prefix_MAVEN_REPO_DIRECTORY_PERMISSIONS | Maven 리포지토리 디렉터리 권한. | - | 775 |
| prefix_MAVEN_REPO_FILE_PERMISSIONS | Maven 리포지토리 파일 권한. | - | 664 |
| prefix_MAVEN_REPO_HOST | Maven 리포지토리 호스트(완전 정의된 URL을 사용하지 않는 경우 서비스로 대체됨). | - | repo.example.com |
| prefix_MAVEN_REPO_ID | Maven 리포지토리 ID. | - | my-repo-id |
| prefix_MAVEN_REPO_LAYOUT | Maven 리포지토리 레이아웃. | - | default |
| prefix_MAVEN_REPO_NAME | Maven 리포지토리 이름입니다. | - | my-repo-name |
| prefix_MAVEN_REPO_PASSPHRASE | Maven 리포지토리 암호. | - | maven1! |
| prefix_MAVEN_REPO_PASSWORD | Maven 리포지토리 암호. | - | maven1! |
| prefix_MAVEN_REPO_PATH | Maven 리포지토리 경로(완전 정의된 URL을 사용하지 않는 경우 서비스로 대체됨). | - | /maven2/ |
| prefix_MAVEN_REPO_PORT | Maven 리포지토리 포트(완전 정의된 URL을 사용하지 않는 경우 서비스로 대체됨). | - | 8080 |
| prefix_MAVEN_REPO_PRIVATE_KEY | Maven 리포지토리 개인 키. | - | ${user.home}/.ssh/id_dsa |
| prefix_MAVEN_REPO_PROTOCOL | Maven 리포지토리 프로토콜(완전 정의된 URL을 사용하지 않는 경우 서비스로 대체됨). | - | http |
| prefix_MAVEN_REPO_RELEASES_CHECKSUM_POLICY | Maven 리포지토리는 체크섬 정책을 릴리스합니다. | - | warn |
| prefix_MAVEN_REPO_RELEASES_ENABLED | Maven 리포지토리 릴리스가 활성화되어 있습니다. | - | true |
| prefix_MAVEN_REPO_RELEASES_UPDATE_POLICY | Maven 리포지토리는 업데이트 정책을 릴리스합니다. | - | always |
| prefix_MAVEN_REPO_SERVICE | prefix_MAVEN_REPO_URL이 지정되지 않은 경우 조회하는 Maven 리포지토리 서비스입니다. | - | buscentr-myapp |
| prefix_MAVEN_REPO_SNAPSHOTS_CHECKSUM_POLICY | Maven 리포지토리 스냅샷 체크섬 정책. | - | warn |
| prefix_MAVEN_REPO_SNAPSHOTS_ENABLED | Maven 리포지토리 스냅샷이 활성화되었습니다. | - | true |
| prefix_MAVEN_REPO_SNAPSHOTS_UPDATE_POLICY | Maven 리포지토리 스냅샷 업데이트 정책. | - | always |
| prefix_MAVEN_REPO_URL | Maven 리포지토리 URL(완전 정의). | - | |
| prefix_MAVEN_REPO_USERNAME | Maven 리포지토리 사용자 이름입니다. | - | mavenUser |
5.3.1. 기본값이 있는 구성 환경 변수
다음 구성 환경 변수에는 재정의할 수 있는 기본값이 지정됩니다.
표 5.4. 기본값이 있는 구성 환경 변수
| 변수 이름 | 설명 | Defaul 값 |
|---|---|---|
| AB_JOLOKIA_AUTH_OPENSHIFT |
OpenShift TLS 통신을 위한 클라이언트 인증을 전환합니다. 이 매개변수의 값은 제공된 클라이언트 인증서에 포함되어야 하는 상대적 고유 이름일 수 있습니다. 이 매개변수를 활성화하면 Jolokia가 자동으로 HTTPS 통신 모드로 전환됩니다. 기본 CA 인증서는 | true |
| AB_JOLOKIA_HTTPS |
HTTPS를 사용하여 보안 통신을 전환합니다. 기본적으로 AB_JOLOKIA_OPTS 에는 | true |
| AB_JOLOKIA_PASSWORD_RANDOM |
임의의 | true |
| AB_PROMETHEUS_JMX_EXPORTER_CONFIG | Prometheus Cryostat 내보내기에 사용할 구성 경로입니다. | /opt/jboss/container/prometheus/etc/jmx-exporter-config.yaml |
| S2I_SOURCE_DEPLOYMENTS_FILTER | 배포를 복사할 때 적용할 공백으로 구분된 필터 목록입니다. 기본값은 * 입니다. | * |
5.4. 노출된 포트
다음 표에는 노출된 포트가 나열되어 있습니다.
| 포트 번호 | 설명 |
|---|---|
| 8080 | HTTP |
| 8443 | HTTPS |
| 8778 | Jolokia 모니터링 |
5.5. Maven 설정
Maven 인수가 포함된 기본 Maven 설정
MAVEN_ARGS 환경 변수의 기본값은 -Dcom.redhat.xpaas.repo.redhatga 속성을 포함합니다. 이 속성은 OpenShift 이미지의 S2I에 있는 기본 jboss-settings.xml 파일 내에서 https://maven.repository.redhat.com/ga/ 리포지토리가 있는 프로필을 활성화합니다.
MAVEN_ARGS 환경 변수에 대한 사용자 지정 값을 지정할 때 사용자 지정 source_dir/configuration/settings.xml 파일을 지정하지 않으면 이미지의 기본 jboss-settings.xml 이 사용됩니다.
기본 jboss-settings.xml 내에서 사용할 Maven 리포지토리를 지정하려면 다음 두 가지 속성이 있습니다.
-
https://maven.repository.redhat.com/ga/ 리포지토리를 사용할
-Dcom.redhat.xpaas.repo.redhatga속성입니다. -
https://repository.jboss.org/nexus/content/groups/public/ 리포지토리를 사용할
-Dcom.redhat.xpaas.repo.jbossorg속성입니다.
사용자 정의 Maven 설정 제공
Maven 인수와 함께 사용자 지정 settings.xml 파일을 지정하려면 source_dir/configuration 디렉터리 를 생성하고 설정'.xml' 파일을 내부에 배치합니다.
샘플 경로는 source_dir/configuration/settings.xml 과 유사해야 합니다.
2023-07-19에 최종 업데이트된 문서