4.3. 빌드 확장 및 프로젝트 Artifacts
OpenShift용 JBoss EAP는 다양한 아티팩트를 사용하여 OpenShift에서 데이터베이스 지원을 확장합니다. 이러한 아티팩트는 다양한 메커니즘을 통해 빌드된 이미지에 포함됩니다.
- S2I 프로세스 중에 이미지에 삽입되는 S2I 아티팩트 입니다.
- OpenShift Secret 메커니즘을 통해 제공되는 환경 파일의 런타임 아티팩트.

이제 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 아티팩트를 포함하는 몇 가지 옵션이 있습니다.
- 애플리케이션 소스 배포 디렉터리에 아티팩트를 포함합니다. 아티팩트는 빌드 중에 다운로드되어 이미지에 삽입됩니다. 이는 OpenShift용 JBoss EAP에 애플리케이션을 배포하는 것과 유사합니다.
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.envinstall.sh스크립트는 install-common.sh.install-common.sh에서 제공하는 API를 사용하여 기본 이미지를 사용자 지정하는 역할을 담당합니다. install-common.sh에는install.sh스크립트에서 모듈, 드라이버 및 일반 배포를 설치하고 구성하는 기능이 포함되어 있습니다.install-common.sh에 포함된 기능 :-
install_modules -
configure_drivers install_deploymentsmodule
모듈은 클래스 로드 및 종속성 관리에 사용되는 클래스의 논리적 그룹화입니다. 모듈은 애플리케이션 서버의
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함수는 각 JAR 파일을 module..sh의 install_modulesxml과 함께 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. 데이터 소스
데이터 소스에는 두 가지 유형이 있습니다.
- 내부 데이터 소스. 이러한 데이터 소스는 OpenShift에서 실행되지만 Red Hat Registry 또는 OpenShift 리포지토리에서 기본적으로 사용할 수 없습니다. 이러한 데이터 소스의 구성은 OpenShift 보안에 추가된 환경 파일에서 제공됩니다.
- 외부 데이터 소스. 이러한 데이터 소스는 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 |
|
| PREFIX_MODULE_ID | 개체 팩토리 Java 클래스를 로드할 수 있는 JBoss 모듈 ID입니다. |
| PREFIX_CONNECTION_CLASS | 관리되는 연결 팩토리 또는 admin 오브젝트의 정규화된 클래스 이름입니다. |
| PREFIX_CONNECTION_JNDI | 연결 팩토리의 JNDI 이름입니다. |
| PREFIX_PROPERTY_ParentDirectory | 데이터 파일이 저장되는 디렉터리입니다. |
| PREFIX_PROPERTY_AllowParentPaths |
|
| PREFIX_POOL_MAX_SIZE | 풀의 최대 연결 수입니다. 각 하위 풀에 더 이상 연결이 생성되지 않습니다. |
| PREFIX_POOL_MIN_SIZE | 풀에 대한 최소 연결 수입니다. |
| PREFIX_POOL_PREFILL | 풀을 미리 채워야 하는지를 지정합니다. 이 값을 변경하려면 서버를 다시 시작해야 합니다. |
| PREFIX_POOL_FLUSH_STRATEGY |
오류가 발생하는 경우 풀을 플러시하는 방법. 유효한 값은 다음과 같습니다. |
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"
}