OpenShift에 OpenJDK 8 S2I(Source-to-Image) 사용

OpenJDK 8

Red Hat Customer Content Services

초록

OpenJDK 8은 Red Hat Enterprise Linux 플랫폼에서 제공하는 Red Hat 제품입니다. OpenShift용 OpenJDK 8 S2I 사용 가이드에서는 OpenShift용 S2I에 대한 개요를 제공하고 OpenJDK 8에서 OpenShift에 S2I를 사용하는 방법을 설명합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견에 감사드립니다. 피드백을 제공하기 위해 문서의 텍스트를 강조 표시하고 주석을 추가할 수 있습니다.

이 섹션에서는 피드백을 제출하는 방법을 설명합니다.

사전 요구 사항

  • Red Hat 고객 포털에 로그인되어 있습니다.
  • Red Hat 고객 포털에서 다중 페이지 HTML 형식으로 문서를 봅니다.

절차

피드백을 제공하려면 다음 단계를 수행합니다.

  1. 문서의 오른쪽 상단에 있는 피드백 버튼을 클릭하여 기존 피드백을 확인합니다.

    참고

    피드백 기능은 다중 페이지 HTML 형식에서만 활성화됩니다.

  2. 피드백을 제공하려는 문서의 섹션을 강조 표시합니다.
  3. 강조 표시된 텍스트 옆에 표시되는 피드백 추가 팝업을 클릭합니다.

    페이지 오른쪽에 있는 피드백 섹션에 입력란이 표시됩니다.

  4. 텍스트 상자에 피드백을 입력하고 제출을 클릭합니다.

    문서 문제가 생성됩니다.

  5. 문제를 보려면 피드백 보기에서 문제 추적 링크를 클릭합니다.

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 등과 같은 이미지 버전에 직접 매핑됩니다.

추가 리소스

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 프로세스를 사용합니다.

절차

  1. 다음 명령을 실행하고 자격 증명을 제공하여 OpenShift 인스턴스에 로그인합니다.

    $ oc login
  2. 새 프로젝트를 생성합니다.

    $ oc new-project <project-name>
  3. 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'
  4. 서비스 이름을 가져옵니다.

    $ oc get svc
  5. 브라우저에서 서버를 사용할 수 있도록 서비스를 경로로 노출합니다.

    $ oc expose svc/ --port=8080
  6. 루트를 가져옵니다.

    $ oc get route
  7. URL을 사용하여 브라우저에서 애플리케이션에 액세스합니다. 이전 명령의 출력의 HOST/PORT 필드 값을 사용합니다.

추가 리소스

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/

절차

  1. 다음 명령을 실행하고 자격 증명을 제공하여 OpenShift 인스턴스에 로그인합니다.

    $ oc login
  2. 새 프로젝트를 생성합니다.

    $ oc new-project jdk-bin-demo
  3. 새 바이너리 빌드를 생성하고 이미지 스트림과 애플리케이션 이름을 지정합니다.

    $ 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'
  4. 바이너리 빌드를 시작합니다.

    이전 단계에서 생성한 바이너리 빌드의 기본 디렉터리를 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
  5. 빌드를 기반으로 새 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.
  6. 서비스를 경로로 노출합니다.

    $ oc expose svc/jdk-us-app
    route "jdk-us-app" exposed
  7. 루트를 가져옵니다.

    $ oc get route
  8. URL(이전 명령 출력의 HOST/PORT 필드 값)을 사용하여 브라우저에서 애플리케이션에 액세스합니다.

추가 리소스

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 로 설정됩니다.

배포 준비

절차

  1. 다음 명령을 실행하고 인증 정보를 제공하여 OpenShift 인스턴스에 로그인합니다.

    $ oc login
  2. 새 프로젝트를 생성합니다.

    $ oc new-project js2i-remote-debug-demo

Deployment

신규 및 기존 애플리케이션에 대한 원격 디버깅을 활성화할 수 있습니다.

새 애플리케이션에 대한 원격 디버깅 활성화

절차

  • OpenShift 이미지용 S2I 및 예제 Java 소스 코드를 사용하여 새 애플리케이션을 생성합니다. 애플리케이션을 생성하기 전에 JAVA_DEBUGJAVA_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의 포트에 로컬 디버깅 포트 연결을 진행합니다.

기존 애플리케이션에 대한 원격 디버깅 활성화

절차

  1. 적절한 OpenShift 프로젝트로 전환합니다.

     $ oc project js2i-remote-debug-demo
  2. deploymentconfig 의 이름을 검색합니다.

    $ oc get dc -o name
     deploymentconfig/openshift-quickstarts
  3. deploymentconfig 를 편집하고 JAVA_DEBUG=trueJAVA_DEBUG_PORT=9009 환경 변수를 추가합니다.
  4. 경로 .spec.template.spec.containers 및 컨테이너 유형에서 편집할 오브젝트를 지정합니다.

    $ oc edit dc/openshift-quickstarts
    참고

    편집기를 시작하여 터미널에서 oc edit 명령을 실행합니다. 환경의 EDITOR 변수를 정의하여 시작된 편집기를 변경할 수 있습니다.

Pod의 포트에 로컬 디버깅 포트 연결을 진행합니다.

post-deployment

Pod의 포트에 로컬 디버깅 포트 연결

절차

  1. 애플리케이션을 실행하는 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
  2. 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)을 실행합니다.

중요

명령을 사용하면 터미널에서 추가로 입력하지 못할 수 있습니다. 이 경우 다음 단계를 수행하기 위해 새 터미널을 시작합니다.

애플리케이션에 디버거 연결

절차

  1. 로컬 시스템의 디버거를 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 명령이 발행된 콘솔에 표시됩니다.

  2. 애플리케이션을 디버깅합니다.

    $ 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
    >

추가 리소스

4.2. OpenShift의 S2I(Source-to-Image)에서 플랫 클래스 경로 JAR 실행

절차의 예제에서는 OpenShift용 S2I에서 flat classpath java 애플리케이션을 실행하는 프로세스를 설명합니다.

배포 준비

절차

  1. 인증 정보를 제공하여 OpenShift 인스턴스에 로그인합니다.

    $ oc login
  2. 새 프로젝트를 생성합니다.

    $ oc new-project js2i-flatclasspath-demo

Deployment

절차

  1. 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

절차

  1. 서비스 이름을 가져옵니다.

    $ oc get svc
  2. 브라우저에서 서비스를 사용할 수 있는 경로로 서비스를 노출합니다.

    $ oc expose svc/openshift-quickstarts --port=8080
  3. 루트를 가져옵니다.

    $ oc get route
  4. 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/etc/jolokia.properties 가 생성됩니다. 그렇지 않으면 이 문서의 나머지 설정은 무시됩니다.

-

/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)입니다.

$HOSTNAME

openjdk-app-1-xqlsj

AB_JOLOKIA_OFF

설정된 경우 Joloka 활성화를 비활성화합니다(즉, 빈 값을 에코).

Jolokia 사용 가능

true

AB_JOLOKIA_OPTS

에이전트 구성에 추가할 추가 옵션입니다. key=value,key=value,…​ 형식으로 지정해야 합니다.

-

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_proxyHTTP_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_APP_DIR/classpath 파일을 확인하고 문자 그대로 classpath로 콘텐츠를 사용합니다. 이 파일이 없는 경우 app dir에 모든 labels가 추가됩니다(클래스:JAVA_APP_DIR/).

-

-

JAVA_DEBUG

설정된 경우 원격 디버깅이 켜집니다.

false

true

JAVA_DEBUG_PORT

원격 디버깅에 사용되는 포트입니다.

5005

8787

JAVA_DIAGNOSTICS

명령을 실행하는 동안 일부 진단 정보를 표준 출력에 출력하도록 설정합니다.

false

true

JAVA_INITIAL_MEM_RATIO

JAVA_OPTS 에서 -Xms 옵션이 제공되지 않을 때 사용됩니다. 이는 최대 힙 메모리를 기반으로 기본 초기 힙 메모리를 계산하는 데 사용됩니다. 컨테이너에 대한 메모리 제약 조건 없이 컨테이너에서 사용하는 경우 이 옵션은 적용되지 않습니다. 메모리 제약 조건이 있는 경우 -Xms 는 여기에 설정된 -Xmx 메모리의 비율로 설정됩니다. 기본값은 25 입니다. 즉, -Xmx 의 25%는 초기 힙 크기로 사용됩니다. 이 값을 0 으로 설정하여 이 메커니즘을 건너뛸 수 있습니다. 이 경우 -Xms 옵션이 추가되지 않습니다.

25

25

JAVA_LIB_DIR

Java Cryostat 파일과 classpath를 포함하는 선택적 classpath 파일을 보유하는 디렉터리입니다. 한 줄로 구분된 단일 줄 클래스 경로(컨설팅됨) 또는 행별 파일 나열을 사용합니다. JAVA_LIB_DIR 값을 설정하지 않으면 JAVA_APP_DIR.

JAVA_APP_DIR

-

JAVA_MAIN_CLASS

java 에 대한 인수로 사용할 기본 클래스입니다. 이 환경 변수가 지정되면 JAVA_APP_DIR 의 모든 files는 classpath 및 JAVA_LIB_DIR 에 추가됩니다.

-

com.example.MainClass

JAVA_MAX_INITIAL_MEM

JAVA_OPTS 에서 -Xms 옵션이 제공되지 않을 때 사용됩니다. 초기 힙 메모리의 최대 값을 계산하는 데 사용됩니다. 컨테이너에 대한 메모리 제약 조건 없이 컨테이너에서 사용하는 경우 이 옵션은 적용되지 않습니다. 메모리 제약 조건이 있는 경우 -Xms 는 여기에 설정된 값으로 제한됩니다. 기본값은 4096입니다. 즉, 계산된 -Xms 는 4096보다 크지 않습니다. 이 변수의 값은 MB로 표시됩니다.

4096

4096

JAVA_MAX_MEM_RATIO

JAVA_OPTS 에서 -Xmx 옵션이 제공되지 않을 때 사용됩니다. 이는 컨테이너 제한을 기반으로 기본 최대 힙 메모리를 계산하는 데 사용됩니다. 컨테이너에 대한 메모리 제약 조건 없이 컨테이너에서 사용하는 경우 이 옵션은 적용되지 않습니다. 메모리 제약 조건이 있는 경우 여기에 설정된 대로 -Xmx 가 컨테이너 사용 가능한 메모리의 비율로 설정됩니다. 기본값은 50 입니다. 즉, 사용 가능한 메모리의 50%가 상한값으로 사용됩니다. 이 값을 0 으로 설정하여 이 메커니즘을 건너뛸 수 있습니다. 이 경우 -Xmx 옵션이 추가되지 않습니다.

50

-

JAVA_OPTS

java 명령에 전달된 JVM 옵션입니다.

-

-verbose:class

JAVA_OPTS_APPEND

JAVA_OPTS에서 생성된 옵션에 추가할 사용자 지정 Java 옵션.

-

-Dsome.property=foo

LOGGING_SCRIPT_DEBUG

스크립트 디버깅을 활성화하려면 true로 설정합니다. SCRIPT_DEBUG 를 사용 중단 .

true

True

MAVEN_ARGS

Maven을 호출할 때 사용할 인수, 기본 패키지 hawt-app:build -DskipTests -e 를 대체합니다. hawt-app:build 목표( 패키지 실행 단계에 바인딩되지 않은 경우)를 실행해야 합니다. 그러지 않으면 시작 스크립트가 작동하지 않습니다.

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 리포지토리가 제거됩니다. 이 기능은 생성된 애플리케이션 이미지의 크기를 작게 줄이는 데 유용하지만 증분 빌드를 방지하는 데 유용합니다. S2I_ENABLE_INCREMENTAL_BUILDS.

false

-

MAVEN_LOCAL_REPO

로컬 Maven 리포지토리로 사용할 디렉터리입니다.

-

/home/jboss/.m2/repository

MAVEN_MIRRORS

설정된 경우 다중 미러 지원이 활성화되고 다른 MAVEN_MIRROR_* 변수가 접두사가 지정됩니다. 예를 들어 DEV_ONE_MAVEN_MIRROR_URLQE_TWO_MAVEN_MIRROR_URL.

-

dev-one,qe-two

MAVEN_MIRROR_URL

아티팩트를 검색하는 데 사용되는 미러의 기본 URL입니다.

-

http://10.0.0.1:8080/repository/internal/

MAVEN_REPOS

설정하면 다중 리포지터리 지원이 활성화되고 다른 MAVEN_REPO_* 변수가 접두사로 지정됩니다. 예를 들어 DEV_ONE_MAVEN_REPO_URLQE_TWO_MAVEN_REPO_URL.

-

dev-one,qe-two

MAVEN_S2I_ARTIFACT_DIRS

빌드 출력을 스캔할 소스 디렉터리의 상대 경로는 $DEPLOY_DIR 에 복사됩니다.

대상

대상

MAVEN_S2I_GOALS

Maven 빌드를 사용하여 실행할 목표를 공백으로 구분한 목록입니다. 예를 들어 mvn $MAVEN_S2I_GOALS.

패키지

패키지 설치

MAVEN_SETTINGS_XML

사용할 사용자 지정 Maven settings.xml 파일의 위치입니다.

-

/home/jboss/.m2/settings.xml

NO_PROXY

직접 액세스할 수 있는 쉼표로 구분된 호스트, IP 주소 또는 도메인 목록입니다. 이는 Maven 빌드 및 Java 런타임 모두에 사용됩니다.

-

foo.example.com,bar.example.com

S2I_ARTIFACTS_DIR

증분 빌드와 함께 사용되는 save-artifacts 스크립트로 유지되는 아티팩트의 위치 마운트. 이는 최종 사용자가 재정의해서는 안 됩니다.

-

${S2I_DESTINATION_DIR}/artifacts}

S2I_DESTINATION_DIR

io.openshift.s2i.destination 레이블에 지정된 대로 S2I 마운트의 루트 디렉터리입니다. 이는 최종 사용자가 재정의해서는 안 됩니다.

-

/tmp

S2I_ENABLE_INCREMENTAL_BUILDS

향후 빌드와 함께 사용할 수 있도록 소스 및 중간 빌드 파일을 제거하지 마십시오.

true

true

S2I_IMAGE_SOURCE_MOUNTS

이미지에 포함되어야 하는 소스 디렉터리에 있는 콤마로 구분된 상대 경로 목록입니다. 목록에는 find를 사용하여 확장되는 와일드카드가 포함될 수 있습니다. 기본적으로 마운트된 디렉터리의 내용은 소스 폴더와 유사하게 처리됩니다. 여기서 $S2I_SOURCE_CONFIGURATION_DIR,$S2I_SOURCE_DATA_DIR, $S2I_SOURCE_DEPLOYMENTS_DIR 은 해당 대상 디렉터리에 복사됩니다. 또는 install.sh 파일이 마운트 지점의 루트에 있는 경우 대신 실행됩니다. CUSTOM_INSTALL_DIRECTORIES 를 사용 중단 .

-

extras/*`

S2I_SOURCE_CONFIGURATION_DIR

제품 구성 디렉터리에 복사할 애플리케이션 구성 파일이 포함된 디렉터리의 상대 경로 S2I_TARGET_CONFIGURATION_DIR 을 참조하십시오.

구성

구성

S2I_SOURCE_DATA_DIR

제품 데이터 디렉터리에 복사할 애플리케이션 데이터 파일을 포함하는 디렉터리의 상대 경로 S2I_TARGET_DATA_DIR 을 참조하십시오.

data

data

S2I_SOURCE_DEPLOYMENTS_DIR

바이너리 파일을 제품 배포 디렉터리에 복사하는 디렉터리의 상대 경로는 S2I_TARGET_DEPLOYMENTS_DIR 을 참조하십시오.

Deployments

Deployments

S2I_SOURCE_DIR

소스 코드를 빌드할 마운트 위치입니다. 이는 최종 사용자가 재정의해서는 안 됩니다.

-

${S2I_DESTINATION_DIR}/src}

S2I_TARGET_CONFIGURATION_DIR

$S2I_SOURCE_DIR $S2I_SOURCE_CONFIGURATION_DIR 에 있는 파일의 절대 경로입니다.

-

/opt/eap/standalone/configuration

S2I_TARGET_DATA_DIR

$S2I_SOURCE_DIR/$S2I_SOURCE_DATA_DIR 에 있는 파일을 복사하는 절대 경로입니다.

-

/opt/eap/standalone/data

S2I_TARGET_DEPLOYMENTS_DIR

$S2I_SOURCE_DIR/$S2I_SOURCE_DEPLOYMENTS_DIR 에 있는 파일의 절대 경로입니다. 또한 이 디렉터리는 빌드 출력이 복사되는 디렉터리입니다.

-

/deployments

http_proxy

HTTP 프록시의 위치입니다. 이는 HTTP_PROXY 보다 우선하며 Maven 빌드 및 Java 런타임 모두에 사용됩니다.

-

http://127.0.0.1:8080

https_proxy

HTTPS 프록시의 위치입니다. 이는 HTTPS_PROXY,http_proxyHTTP_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입니다.

-

http://10.0.0.1:8080/repository/internal

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(완전 정의).

-

http://repo.example.com:8080/maven2/

prefix_MAVEN_REPO_USERNAME

Maven 리포지토리 사용자 이름입니다.

-

mavenUser

5.3.1. 기본값이 있는 구성 환경 변수

다음 구성 환경 변수에는 재정의할 수 있는 기본값이 지정됩니다.

표 5.4. 기본값이 있는 구성 환경 변수

변수 이름설명Defaul 값

AB_JOLOKIA_AUTH_OPENSHIFT

OpenShift TLS 통신을 위한 클라이언트 인증을 전환합니다. 이 매개변수의 값은 제공된 클라이언트 인증서에 포함되어야 하는 상대적 고유 이름일 수 있습니다. 이 매개변수를 활성화하면 Jolokia가 자동으로 HTTPS 통신 모드로 전환됩니다. 기본 CA 인증서는 /var/run/secrets/kubernetes.io/serviceaccount/ca.crt 로 설정됩니다.

true

AB_JOLOKIA_HTTPS

HTTPS를 사용하여 보안 통신을 전환합니다. 기본적으로 AB_JOLOKIA_OPTS 에는 serverCert 구성이 제공되지 않는 경우 자체 서명된 서버 인증서가 생성됩니다.

true

AB_JOLOKIA_PASSWORD_RANDOM

임의의 AB_JOLOKIA_PASSWORD 를 생성해야 하는지 여부를 결정합니다. 임의의 암호를 생성하려면 true 로 설정합니다. 생성된 값은 /opt/jolokia/etc/jolokia.pw 에 작성됩니다.

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 리포지토리를 지정하려면 다음 두 가지 속성이 있습니다.

사용자 정의 Maven 설정 제공

Maven 인수와 함께 사용자 지정 settings.xml 파일을 지정하려면 source_dir/configuration 디렉터리 를 생성하고 설정'.xml' 파일을 내부에 배치합니다.

샘플 경로는 source_dir/configuration/settings.xml 과 유사해야 합니다.

2023-07-19에 최종 업데이트된 문서

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.