4.3. 빌드 확장 및 프로젝트 Artifacts

OpenShift용 JBoss EAP는 다양한 아티팩트를 사용하여 OpenShift에서 데이터베이스 지원을 확장합니다. 이러한 아티팩트는 다양한 메커니즘을 통해 빌드된 이미지에 포함됩니다.

Build Extensions 프로세스
중요

이제 OpenShift용 JBoss EAP와 함께 Red Hat 제공 내부 데이터 소스 드라이버를 사용하는 지원이 더 이상 사용되지 않습니다. Red Hat은 데이터베이스 벤더에서 JBoss EAP 애플리케이션을 위해 얻은 JDBC 드라이버를 사용하는 것이 좋습니다.

다음 내부 데이터 소스는 더 이상 OpenShift용 JBoss EAP 이미지와 함께 제공되지 않습니다.

  • MySQL
  • PostgreSQL

드라이버 설치에 대한 자세한 내용은 모듈, 드라이버 및 일반 배포를 참조하십시오.

JBoss EAP를 사용하여 JDBC 드라이버 구성에 대한 자세한 내용은 JBoss EAP 구성 가이드의 JDBC 드라이버를 참조하십시오.

프로비저닝된 서버에 추가하려는 경우 이러한 드라이버 및 데이터 소스를 설치할 사용자 지정 계층도 만들 수 있습니다.

4.3.1. S2I Artifacts

S2I 아티팩트에는 배포에 필요한 필수 구성 인프라를 제공하는 모듈, 드라이버 및 추가 일반 배포가 포함됩니다. 이 구성은 S2I 프로세스 중에 이미지에 빌드되므로 데이터 소스 및 관련 리소스 어댑터만 런타임에 구성해야 합니다.

S2I 프로세스에 사용자 지정 Maven 아티팩트 저장소 미러를 사용하도록 지시하는 방법에 대한 추가 지침은 Artifact Repository Mirrors 를 참조하십시오.

4.3.1.1. 모듈, 드라이버 및 일반 배포

OpenShift 이미지의 JBoss EAP에 이러한 S2I 아티팩트를 포함하는 몇 가지 옵션이 있습니다.

  1. 애플리케이션 소스 배포 디렉터리에 아티팩트를 포함합니다. 아티팩트는 빌드 중에 다운로드되어 이미지에 삽입됩니다. 이는 OpenShift용 JBoss EAP에 애플리케이션을 배포하는 것과 유사합니다.
  2. S2I 프로세스 중에 이미지에 대한 아티팩트를 설치하고 구성하는 데 사용되는 쉼표로 구분된 디렉터리 목록인 CUSTOM_INSTALL_DIRECTORIES 환경 변수를 포함합니다. S2I에 이 정보를 포함하는 방법은 두 가지가 있습니다.

    • 지정된 설치 디렉터리에 있는 install.sh 스크립트. 설치 스크립트는 S2I 프로세스 중에 실행되며 불일치로 작동합니다.

      install.sh 스크립트 예

      #!/bin/bash
      
      injected_dir=$1
      source /usr/local/s2i/install-common.sh
      install_deployments ${injected_dir}/injected-deployments.war
      install_modules ${injected_dir}/modules
      configure_drivers ${injected_dir}/drivers.env

      install.sh 스크립트는 install-common.sh. install-common.sh 에서 제공하는 API를 사용하여 기본 이미지를 사용자 지정하는 역할을 담당합니다. install-common.sh 에는 install.sh 스크립트에서 모듈, 드라이버 및 일반 배포를 설치하고 구성하는 기능이 포함되어 있습니다.

      install-common.sh 에 포함된 기능 :

      • install_modules
      • configure_drivers
      • install_deployments

        module

        모듈은 클래스 로드 및 종속성 관리에 사용되는 클래스의 논리적 그룹화입니다. 모듈은 애플리케이션 서버의 EAP_HOME/modules/ 디렉터리에 정의됩니다. 각 모듈은 하위 디렉터리로 존재합니다(예: EAP_HOME/modules/org/apache/ ). 각 모듈 디렉터리에는 main을 기본값으로 하고 module.xml 구성 파일과 필요한 JAR 파일이 포함된 슬롯 하위 디렉터리가 포함됩니다.

        MySQL 및 PostgreSQL JDBC 드라이버의 module.xml 파일을 구성하는 방법에 대한 자세한 내용은 JBoss EAP 구성 가이드의 데이터 소스 구성 예제 를 참조하십시오.

        PostgreSQL 데이터 소스용 module.xml 파일 예

        <?xml version="1.0" encoding="UTF-8"?>
        <module xmlns="urn:jboss:module:1.0" name="org.postgresql">
        <resources>
        <resource-root path="postgresql-jdbc.jar"/>
        </resources>
        <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        </dependencies>
        </module>

        MySQL Connect/J 8 데이터 소스용 module.xml 파일 예

        <?xml version="1.0" encoding="UTF-8"?>
        <module xmlns="urn:jboss:module:1.0" name="com.mysql">
        <resources>
        <resource-root path="mysql-connector-java-8.0.Z.jar" />
        </resources>
        <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        </dependencies>
        </module>

        참고

        mysql-connector-java-8.0.Z.jar의 ".Z "는 다운로드한 JAR 파일의 버전을 나타냅니다. 파일의 이름을 변경할 수 있지만 이름은 module.xml 파일의 이름과 일치해야 합니다.

        install .sh의 install _modules 함수는 각 JAR 파일을 module. xml과 함께 JBoss EAP의 모듈 디렉터리에 복사합니다.

        드라이버

        드라이버는 모듈로 설치됩니다. 그런 다음 드라이버는 런타임 아티팩트 환경 파일에 정의된 구성 속성인 configure_drivers 함수에 의해 install.sh 에 구성됩니다.

        데이터 소스 드라이버 추가

        MySQL 및 PostgreSQL 데이터 소스는 더 이상 미리 구성된 내부 데이터 소스로 제공되지 않습니다. 이러한 드라이버를 모듈로 설치할 수 있습니다. 모듈, 드라이버 및 일반 배포에서 설명을 참조하십시오. JBoss EAP 애플리케이션의 데이터베이스 벤더에서 이러한 JDBC 드라이버를 가져올 수 있습니다.

        설치할 각 데이터 소스에 대한 driver .env 파일을 생성합니다.

        MySQL 데이터 소스의 driver.env 파일 예

        #DRIVER
        DRIVERS=MYSQL
        MYSQL_DRIVER_NAME=mysql
        MYSQL_DRIVER_MODULE=org.mysql
        MYSQL_DRIVER_CLASS=com.mysql.cj.jdbc.Driver
        MYSQL_XA_DATASOURCE_CLASS=com.mysql.cj.jdbc.MysqlXADataSource

        PostgreSQL 데이터 소스의 driver.env 파일 예

        #DRIVER
        DRIVERS=POSTGRES
        POSTGRES_DRIVER_NAME=postgresql
        POSTGRES_DRIVER_MODULE=org.postgresql
        POSTGRES_DRIVER_CLASS=org.postgresql.Driver
        POSTGRES_XA_DATASOURCE_CLASS=org.postgresql.xa.PGXADataSource

        MySQL 또는 PostgreSQL과 같은 다양한 드라이버의 다운로드 위치에 대한 자세한 내용은 구성 가이드에서 JDBC 드라이버 다운로드 위치를 참조하십시오.

일반 배포

JAR, WAR, RAR 또는 EAR와 같은 배치 가능한 아카이브 파일은 install -common.sh 의 API에서 제공하는 install_deployments 기능을 사용하여 삽입 이미지에서 배포할 수 있습니다.

  • CUSTOM_INSTALL_DIRECTORIES 환경 변수가 선언되었지만 사용자 지정 설치 디렉터리에는 install.sh 스크립트가 없는 경우 빌드된 이미지의 해당 대상에 다음 아티팩트 디렉터리가 복사됩니다.

    • 모듈/* $JBOSS_HOME/modules/에 복사
    • configuration/*$JBOSS_HOME/standalone/configuration에 복사
    • deployment/*$JBOSS_HOME/standalone/deployments에복사

    이 방법은 install.sh 대안과 비교하여 기본 구성 접근법이며 아티팩트를 적절하게 구조화해야 합니다.

4.3.2. 런타임 Artifacts

4.3.2.1. 데이터 소스

데이터 소스에는 두 가지 유형이 있습니다.

  1. 내부 데이터 소스. 이러한 데이터 소스는 OpenShift에서 실행되지만 Red Hat Registry 또는 OpenShift 리포지토리에서 기본적으로 사용할 수 없습니다. 이러한 데이터 소스의 구성은 OpenShift 보안에 추가된 환경 파일에서 제공됩니다.
  2. 외부 데이터 소스. 이러한 데이터 소스는 OpenShift에서 실행되지 않습니다. 외부 데이터 소스 구성은 OpenShift Secrets에 추가된 환경 파일에서 제공됩니다.
참고

OpenShift 시크릿 생성 및 구성에 대한 자세한 내용은 시크릿을 참조하십시오.

소스 프로젝트의 구성 디렉터리와 같은 데이터 소스 환경 파일을 디렉터리에 생성할 수 있습니다. 다음 예제에서는 샘플 데이터 소스 환경 파일의 내용을 보여줍니다.

예제: 데이터 소스 환경 파일

DB_SERVICE_PREFIX_MAPPING=PostgresXA-POSTGRES=DS1
DS1_JNDI=java:jboss/datasources/pgds
DS1_DRIVER=postgresql-42.2.5.jar
DS1_USERNAME=postgres
DS1_PASSWORD=postgres
DS1_MAX_POOL_SIZE=20
DS1_MIN_POOL_SIZE=20
DS1_CONNECTION_CHECKER=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
DS1_EXCEPTION_SORTER=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter

DB_SERVICE_PREFIX_MAPPING 속성은 쉼표로 구분된 데이터 소스 속성 접두사 목록입니다. 그런 다음 이러한 접두사가 해당 데이터 소스의 모든 속성에 추가됩니다. 그런 다음 여러 데이터 소스를 단일 환경 파일에 포함할 수 있습니다. 또는 각 데이터 소스를 별도의 환경 파일에 제공할 수 있습니다.

데이터 소스에는 연결 풀별 속성과 데이터베이스 드라이버별 속성의 두 가지 유형이 있습니다. 연결 풀별 속성은 데이터 소스에 대한 연결을 생성합니다. 데이터베이스 드라이버별 속성은 데이터 소스의 드라이버를 결정하고 드라이버 S2I 아티팩트로 구성됩니다.

위 예제에서 DS1 은 데이터 소스 접두사이고 CONNECTION_CHECKER 는 데이터베이스에 대한 연결 검사기 클래스를 지정하고, EXCEPTION_SORTER 는 치명적인 데이터베이스 연결 예외를 감지하는 데 사용되는 예외 분류기 클래스를 지정합니다.

데이터 소스 환경 파일은 프로젝트의 OpenShift Secret에 추가됩니다. 그런 다음 이러한 환경 파일은 ENV_FILES 환경 속성을 사용하여 템플릿 내에서 호출됩니다. 이 속성은 아래에 표시된 대로 정규화된 환경 파일의 쉼표로 구분된 목록입니다.

{
    “Name”: “ENV_FILES”,
    “Value”: “/etc/extensions/datasources1.env,/etc/extensions/datasources2.env”
}

4.3.2.2. 리소스 어댑터

리소스 어댑터 구성은 OpenShift Secrets에 추가된 환경 파일에서 제공됩니다.

표 4.2. 리소스 어댑터 속성

속성설명

PREFIX_ID

서버 구성 파일에 지정된 리소스 어댑터의 식별자입니다.

PREFIX_ARCHIVE

리소스 어댑터 아카이브.

PREFIX_MODULE_SLOT

module.xml 구성 파일과 필요한 JAR 파일이 포함된 슬롯 하위 디렉터리.

PREFIX_MODULE_ID

개체 팩토리 Java 클래스를 로드할 수 있는 JBoss 모듈 ID입니다.

PREFIX_CONNECTION_CLASS

관리되는 연결 팩토리 또는 admin 오브젝트의 정규화된 클래스 이름입니다.

PREFIX_CONNECTION_JNDI

연결 팩토리의 JNDI 이름입니다.

PREFIX_PROPERTY_ParentDirectory

데이터 파일이 저장되는 디렉터리입니다.

PREFIX_PROPERTY_AllowParentPaths

경로에서 AllowParitePathsfalse 로 설정하여 허용하지 못하도록 설정합니다. 이렇게 하면 상위 디렉터리에 포함되지 않은 파일을 요청할 수 없습니다.

PREFIX_POOL_MAX_SIZE

풀의 최대 연결 수입니다. 각 하위 풀에 더 이상 연결이 생성되지 않습니다.

PREFIX_POOL_MIN_SIZE

풀에 대한 최소 연결 수입니다.

PREFIX_POOL_PREFILL

풀을 미리 채워야 하는지를 지정합니다. 이 값을 변경하려면 서버를 다시 시작해야 합니다.

PREFIX_POOL_FLUSH_STRATEGY

오류가 발생하는 경우 풀을 플러시하는 방법. 유효한 값은 다음과 같습니다. FailingConnectionOnly (기본값), IdleConnectionsEntirePool.

RESOURCE_ADAPTERS 속성은 쉼표로 구분된 리소스 어댑터 속성 접두사 목록입니다. 그런 다음 이러한 접두사가 해당 리소스 어댑터의 모든 속성에 추가됩니다. 그런 다음 여러 리소스 어댑터를 단일 환경 파일에 포함할 수 있습니다. 아래 예제에서 MYRA 는 리소스 어댑터의 접두사로 사용됩니다. 또는 각 리소스 어댑터를 별도의 환경 파일에 제공할 수 있습니다.

예제: 리소스 어댑터 환경 파일

#RESOURCE_ADAPTER
RESOURCE_ADAPTERS=MYRA
MYRA_ID=myra
MYRA_ARCHIVE=myra.rar
MYRA_CONNECTION_CLASS=org.javaee7.jca.connector.simple.connector.outbound.MyManagedConnectionFactory
MYRA_CONNECTION_JNDI=java:/eis/MySimpleMFC

리소스 어댑터 환경 파일은 프로젝트 네임스페이스의 OpenShift Secret에 추가됩니다. 그런 다음 이러한 환경 파일은 ENV_FILES 환경 속성을 사용하여 템플릿 내에서 호출됩니다. 이 속성은 아래에 표시된 대로 정규화된 환경 파일의 쉼표로 구분된 목록입니다.

{
    "Name": "ENV_FILES",
    "Value": "/etc/extensions/resourceadapter1.env,/etc/extensions/resourceadapter2.env"
}