8.2. JBoss EAP에서 사용자 개발 계층 프로비저닝
Red Hat에서 제공하는 프로비저닝 계층 외에도 개발하는 사용자 지정 계층을 프로비저닝할 수 있습니다.
프로세스
Galleon Maven 플러그인을 사용하여 사용자 지정 계층을 빌드합니다.
자세한 내용은 Maven 프로젝트 준비를 참조하십시오.
- 사용자 지정 계층을 액세스 가능한 Maven 리포지토리에 배포합니다.
사용자 정의 Galleon 기능 팩 환경 변수를 사용하여 S2I 이미지 빌드 프로세스 중에 Galleon 기능 팩 및 계층을 사용자 지정할 수 있습니다.
Galleon 기능 팩 및 계층을 사용자 지정하는 방법에 대한 자세한 내용은 S2I 빌드 중 사용자 지정 Galleon 기능 팩 사용 을 참조하십시오.
선택 사항: 사용자 정의 프로비저닝 파일을 생성하여 사용자 정의 계층을 참조하고 지원되는 JBoss EAP 계층을 생성하여 애플리케이션 디렉터리에 저장합니다.
사용자 지정 프로비저닝 파일을 만드는 방법에 대한 자세한 내용은 Galleon 프로비저닝 파일을 참조하십시오.
S2I 프로세스를 실행하여 OpenShift에서 JBoss EAP 서버를 프로비저닝합니다.
자세한 내용은 S2I 빌드 중 사용자 지정 Galleon 기능 팩 사용을 참조하십시오.
8.2.1. JBoss EAP용 사용자 지정 Galleon 계층 빌드 및 사용 링크 복사링크가 클립보드에 복사되었습니다!
사용자 지정 Galleon 계층은 JBoss EAP 8.0에서 실행되도록 설계된 Galleon 기능 팩 내에 패키지됩니다.
Openshift에서는 계층(예: JBoss EAP 8.0 서버의 MariaDB 드라이버 및 데이터 소스)이 포함된 Galleon 기능 팩을 빌드하고 사용할 수 있습니다. 계층에는 서버에 설치된 콘텐츠가 포함되어 있습니다. 계층은 서버 XML 구성 파일을 업데이트하고 서버 설치에 콘텐츠를 추가할 수 있습니다.
이 섹션에서는 OpenShift에서 JBoss EAP 8.0 서버의 MariaDB 드라이버 및 데이터 소스를 프로비저닝하기 위해 계층이 포함된 Galleon 기능 팩을 빌드하고 사용하는 방법을 설명합니다.
8.2.1.1. Maven 프로젝트 준비 링크 복사링크가 클립보드에 복사되었습니다!
Galleon 기능 패키지는 Maven을 사용하여 생성됩니다. 이 절차에서는 새 Maven 프로젝트를 생성하는 단계를 설명합니다.
프로세스
다음 명령을 실행하여 새 Maven 프로젝트를 생성합니다.
mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=pom-root -DgroupId=org.jboss.eap.demo -DartifactId=mariadb-galleon-pack -DinteractiveMode=falsemariadb-galleon-pack디렉터리로 이동하여pom.xml파일을 업데이트하여 Red Hat Maven 리포지토리를 포함합니다.<repositories> <repository> <id>redhat-ga</id> <name>Redhat GA</name> <url>https://maven.repository.redhat.com/ga/</url> </repository> </repositories>pom.xml파일을 업데이트하여 JBoss EAP Galleon 기능 팩 및 MariaDB 드라이버에 대한 종속성을 추가합니다.<dependencies> <dependency> <groupId>org.jboss.eap</groupId> <artifactId>wildfly-ee-galleon-pack</artifactId> <version>8.0.0.GA-redhat-00010</version> <type>zip</type> </dependency> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>2.7.2</version> </dependency> </dependencies>참고-
<
version>A.B.C-redhat-XXXXX</version> 여기서A.B.C는 릴리스 번호이고XXXXX는 JBoss EAP 인스턴스의 빌드 번호입니다. JBoss EAP 릴리스에 대한 자세한 내용은 Red Hat Maven 리포지토리를 참조하십시오. 모든 JBoss EAP 릴리스에서 릴리스 및 빌드 번호를 사용할 수 있습니다. https://maven.repository.redhat.com/earlyaccess/all/org/jboss/eap/wildfly-ee-galleon-pack/.
-
<
Galleon 기능 팩을 빌드하는 데 사용되는 Maven 플러그인을 포함하도록
pom.xml파일을 업데이트합니다.<build> <plugins> <plugin> <groupId>org.wildfly.galleon-plugins</groupId> <artifactId>wildfly-galleon-maven-plugin</artifactId> <version>6.4.8.Final-redhat-00001</version> <executions> <execution> <id>mariadb-galleon-pack-build</id> <goals> <goal>build-user-feature-pack</goal> </goals> <phase>compile</phase> </execution> </executions> </plugin> </plugins> </build>
8.2.1.2. feature-pack 콘텐츠 추가 링크 복사링크가 클립보드에 복사되었습니다!
이 절차에서는 사용자 지정 Galleon 기능 팩에 레이어를 추가하는 데 도움이 됩니다(예: MariaDB 드라이버 및 데이터 소스 계층을 포함한 기능 팩).
사전 요구 사항
- Maven 프로젝트를 생성했습니다. 자세한 내용은 Maven 프로젝트 준비를 참조하십시오.
프로세스
-
사용자 지정 feature-pack Maven 프로젝트 내에서
src/main/resources디렉터리를 생성합니다. 예를 들면 Maven 프로젝트 준비를 참조하십시오. 이 디렉터리는 feature-pack 콘텐츠를 포함하는 루트 디렉터리입니다. -
src/main/resources/modules/org/mariadb/jdbc/main디렉터리를 만듭니다. 기본디렉터리에서 다음 콘텐츠를 사용하여module.xml이라는 파일을 생성합니다.<?xml version="1.0" encoding="UTF-8"?> <module name="org.mariadb.jdbc" xmlns="urn:jboss:module:1.8"> <resources> <artifact name="${org.mariadb.jdbc:mariadb-java-client}"/>1 </resources> <dependencies>2 <module name="java.se"/> <module name="jakarta.transaction.api"/> <module name="jdk.net"/> </dependencies> </module>-
src/main/resources/layers/standalone/디렉터리를 생성합니다. 이는 Galleon 기능 팩이 정의하는 모든 계층의 루트 디렉터리입니다. -
src/main/resources/layers/standalone/mariadb-driver디렉터리를 생성합니다. mariadb-driver디렉터리에서 다음 콘텐츠를 사용하여layer-spec.xml파일을 생성합니다.<?xml version="1.0" ?> <layer-spec xmlns="urn:jboss:galleon:layer-spec:1.0" name="mariadb-driver"> <feature spec="subsystem.datasources">1 <feature spec="subsystem.datasources.jdbc-driver"> <param name="driver-name" value="mariadb"/> <param name="jdbc-driver" value="mariadb"/> <param name="driver-xa-datasource-class-name" value="org.mariadb.jdbc.MariaDbDataSource"/> <param name="driver-module-name" value="org.mariadb.jdbc"/> </feature> </feature> <packages>2 <package name="org.mariadb.jdbc"/> </packages> </layer-spec>mariadb-driver계층은JBoss Modules모듈에서 구현하는 JDBC 드라이버의 구성으로데이터소스 하위 시스템을 업데이트합니다.-
src/main/resources/layers/standalone/mariadb-datasource디렉터리를 생성합니다. mariadb-datasource디렉터리에서 다음 콘텐츠를 사용하여layer-spec.xml파일을 생성합니다.<?xml version="1.0" ?> <layer-spec xmlns="urn:jboss:galleon:layer-spec:1.0" name="mariadb-datasource"> <dependencies> <layer name="mariadb-driver"/>1 </dependencies> <feature spec="subsystem.datasources.data-source">2 <param name="data-source" value="MariaDBDS"/> <param name="jndi-name" value="java:jboss/datasources/${env.MARIADB_DATASOURCE:MariaDBDS}"/> <param name="connection-url" value="jdbc:mariadb://${env.MARIADB_HOST:localhost}:${env.MARIADB_PORT:3306}/${env.MARIADB_DATABASE}"/>3 <param name="driver-name" value="mariadb"/> <param name="user-name" value="${env.MARIADB_USER}"/>4 <param name="password" value="${env.MARIADB_PASSWORD}"/> </feature> </layer-spec>- 1
- 이 종속성은 데이터 소스가 프로비저닝될 때 MariaDB 드라이버의 프로비저닝을 적용합니다. 계층이 종속된 모든 계층은 해당 계층을 프로비저닝할 때 자동으로 프로비저닝됩니다.
- 2
- MariaDBDS 라는
데이터소스로 데이터 소스 하위 시스템 구성을 업데이트합니다. - 3
- 데이터 소스의 이름, 호스트, 포트 및 데이터베이스 값은 서버가 시작될 때 설정된
,MARIADB_HOSTMARIADB_PORT,MARIADB_DATABASE. 환경 변수에서 확인됩니다. - 4
- 사용자 이름 및 암호 값은 환경 변수
MARIADB_USER및MARIADB_PASSWORD에서 확인됩니다.
다음 명령을 실행하여 Galleon 기능 팩을 빌드합니다.
mvn clean installtarget/mariadb-galleon-pack-1.0-SNAPSHOT.zip파일이 생성됩니다.
8.2.1.3. S2I 빌드 중 사용자 정의 Galleon 기능 팩 사용 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift S2I 빌드 중에 발생하는 Maven 빌드에서 사용자 지정 기능 팩을 사용할 수 있어야 합니다. 일반적으로 사용자 지정 기능 팩을 아티팩트(예: org.jboss.eap.demo:mariadb-galleon-pack:1.0-SNAPSHOT )로 배포할 수 있습니다.
사용자 지정 Galleon 기능 팩 사용에 대한 JBoss EAP S2I 이미지 구성에 대한 자세한 내용은 고급 환경 변수를 사용하여 Galleon 구성 을 참조하십시오.
사전 요구 사항
-
oc명령줄이 설치되어 있어야 합니다. - OpenShift 클러스터에 로그인되어 있습니다.
-
Red Hat Container레지스트리에 대한 액세스 권한이 구성되어 있습니다. 자세한 내용은 Red Hat Container Registry 를 참조하십시오. - 사용자 정의 Galleon 기능 팩을 생성했습니다. 자세한 내용은 Maven 프로젝트 준비를 참조하십시오.
프로세스
다음 명령을 실행하여
MariaDB데이터베이스를 시작합니다. 이 예에서는MariaDB이미지 mariadb-105-rhel7을 사용합니다. 지원되는 최신 버전의MariaDB이미지를 사용해야 합니다.MariaDB 이미지에대한 자세한 내용은 Red Hat Ecosystem Catalog 에서 참조하십시오.oc new-app -e MYSQL_USER=admin -e MYSQL_PASSWORD=admin -e MYSQL_DATABASE=mariadb registry.redhat.io/rhscl/mariadb-105-rhel7OpenShift 서비스
mariadb-101-rhel7이 생성되고 시작됩니다.Maven 프로젝트 디렉터리
mariadb-galleon-pack:에서 다음 명령을 실행하여 사용자 지정 feature-pack Maven 빌드에서 생성된 feature-pack 아카이브에서 시크릿을 생성합니다.oc create secret generic mariadb-galleon-pack --from-file=target/mariadb-galleon-pack-1.0-SNAPSHOT.zip비밀
mariadb-galleon-pack이 생성됩니다. S2I 빌드를 시작할 때 이 시크릿은 Pod에 feature-pack .zip 파일을 마운트하여 서버 프로비저닝 단계에서 파일을 사용할 수 있도록 합니다.
8.2.1.4. JBoss EAP 8 이미지 스트림 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
아래 절차에 따라 JBoss EAP 8.0 이미지 스트림을 가져올 수 있습니다.
프로세스
JBoss EAP 8.0 이미지 스트림을 가져옵니다.
oc import-image jboss-eap-8/eap8-openjdk17-builder-openshift-rhel8:latest --from=registry.redhat.io/jboss-eap-8/eap8-openjdk17-builder-openshift-rhel8:latest --confirm
8.2.1.4.1. JBoss EAP maven 플러그인을 사용하여 S2I 빌드 생성 링크 복사링크가 클립보드에 복사되었습니다!
Cryostat -maven-plugin 은 JBoss EAP galleon 기능 팩, JBoss EAP 대한 참조로 구성되어 있습니다. 클라우드 galleon 기능 팩 과 mariadb galleon 기능 팩에pom.xml 의 추출물을 참조하십시오:
<feature-packs>
<feature-pack>
<location>org.jboss.eap:wildfly-ee-galleon-pack</location>
</feature-pack>
<feature-pack>
<location>org.jboss.eap.cloud:eap-cloud-galleon-pack</location>
</feature-pack>
<feature-pack>
<location>org.jboss.eap.demo:mariadb-galleon-pack:1.0-SNAPSHOT</location>
</feature-pack>
</feature-packs>
<layers>
<layer>jaxrs-server</layer>
<layer>mariadb-datasource</layer>
</layers>
프로세스
다음 명령을 실행하여 S2I 빌드를 생성합니다.
oc new-build eap8-openjdk17-builder-openshift-rhel8:latest~https://github.com/jboss-container-images/jboss-eap-8-openshift-image#EAP_8.0.0 \ --context-dir=examples/eap/custom-layers/application \ --build-secret=mariadb-galleon-pack:/tmp/demo-maven-repository/org/jboss/eap/demo/mariadb-galleon-pack/1.0-SNAPSHOT \1 --name=mariadb-app-build- 1
mariadb-galleon-pack시크릿은/tmp/demo-maven-repository/org/jboss/eap/demo/mariadb-galleon-pack/1.0-SNAPSHOT디렉터리에 마운트됩니다.
추가 리소스
자세한 내용은 JBoss EAP 8.0 데모 예제 를 참조하십시오.
8.2.1.4.2. 레거시 S2I 프로비저닝 기능을 사용하여 S2I 빌드 생성 링크 복사링크가 클립보드에 복사되었습니다!
서버를 프로비저닝할 수 있도록 openshift-legacy 프로필을 사용하여 S2I 빌드를 구성할 수 있습니다.
프로세스
다음 명령을 실행하여 새 OpenShift 빌드를 생성합니다.
oc new-build eap8-openjdk17-builder-openshift-rhel8:latest~https://github.com/jboss-container-images/jboss-eap-8-openshift-image#EAP_8.0.0 \ --context-dir=examples/eap/custom-layers/application \ --env=GALLEON_PROVISION_CHANNELS="org.jboss.eap.channels:eap-8.0" \1 --env=GALLEON_PROVISION_FEATURE_PACKS="org.jboss.eap:wildfly-ee-galleon-pack,org.jboss.eap.cloud:eap-cloud-galleon-pack,org.jboss.eap.demo:mariadb-galleon-pack:1.0-SNAPSHOT" \2 --env=GALLEON_PROVISION_LAYERS="jaxrs-server,mariadb-datasource" \3 --env=GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO="/tmp/demo-maven-repository" \4 --env=MAVEN_ARGS="-Popenshift-legacy" \5 --build-secret=mariadb-galleon-pack:/tmp/demo-maven-repository/org/jboss/eap/demo/mariadb-galleon-pack/1.0-SNAPSHOT \6 --name=mariadb-app-build- 1
- 이 환경 변수는 프로비저닝 중에 JBoss EAP 8.0 채널을 사용합니다.
- 2
- 이 환경 변수는 JBoss EAP 8.0
기능 팩,클라우드 기능 팩및mariadb 기능-팩을 참조합니다. - 3
- 이 환경 변수는 서버를 프로비저닝하는 데 사용할 Galleon 계층 세트를 참조합니다.
jaxrs-server는 기본 서버 계층이며mariadb-datasource는mariadb드라이버 및 새 데이터 소스를 서버 설치에 가져오는 사용자 지정 계층입니다. - 4
- 이는
mariadb 기능 팩이포함된 로컬 maven 리포지토리의 위치를 가리킵니다. - 5
- 이 환경 변수는
MAVEN_ARGS를 사용하여openshift-legacy프로필을 활성화합니다. - 6
mariadb-galleon-pack시크릿은/tmp/demo-maven-repository/org/jboss/eap/demo/mariadb-galleon-pack/1.0-SNAPSHOT디렉터리에 마운트됩니다.
이 디렉터리 경로는 Maven 리포지토리 아티팩트 좌표를 경로 매핑으로 준수합니다.
8.2.1.4.3. 빌드 시작 링크 복사링크가 클립보드에 복사되었습니다!
새 빌드를 생성하여 mariadb-app-build 이미지를 생성할 수 있습니다.
프로세스
이전에 생성한 동일한 OpenShift 빌드에서 새 빌드를 시작하고 다음 명령을 실행합니다.
oc start-build mariadb-app-build성공적으로 명령을 실행하면
mariadb-app-build이미지가 생성됩니다.
8.2.1.4.4. 새 배포 생성 링크 복사링크가 클립보드에 복사되었습니다!
실행 중인 MariaDB 데이터베이스에 데이터 소스를 바인딩하는 데 필요한 환경 변수를 제공하여 새 배포를 생성할 수 있습니다.
프로세스
다음 명령을 실행하여 새 배포를 생성합니다.
oc new-app --name=mariadb-app mariadb-app-build \ --env=MARIADB_PORT=3306 \ --env=MARIADB_USER=admin \ --env=MARIADB_PASSWORD=admin \ --env=MARIADB_HOST=mariadb-105-rhel7 \ --env=MARIADB_DATABASE=mariadb \ --env=MARIADB_DATASOURCE=Demo1 - 1
- 데모에서는 데이터 소스의 이름이
데모가 될 것으로 예상합니다.
참고사용자 지정 Galleon 기능 팩 환경 변수에 대한 자세한 내용은 사용자 정의 Galleon 기능 팩 환경 변수를 참조하십시오.
mariadb-app애플리케이션을 노출하고 다음 명령을 실행합니다.oc expose svc/mariadb-app새 작업을 생성하려면 다음 명령을 실행합니다.
curl -X POST http://$(oc get route mariadb-app --template='{{ .spec.host }}')/tasks/title/foo작업 목록에 액세스하려면 다음 명령을 실행합니다.
curl http://$(oc get route mariadb-app --template='{{ .spec.host }}')추가된 작업이 브라우저에 표시됩니다.
8.2.2. 고급 환경 변수를 사용하여 Galleon 구성 링크 복사링크가 클립보드에 복사되었습니다!
고급 사용자 지정 Galleon 기능 팩 환경 변수를 사용하여 S2I 이미지 빌드 프로세스 중에 사용자 지정 Galleon 기능 팩 및 계층을 저장하는 위치를 사용자 지정할 수 있습니다. 이러한 고급 사용자 지정 Galleon 기능 팩 환경 변수는 다음과 같습니다.
-
GALLEON_DIR=<path> 기본 <project_root_dir>/galleon디렉터리 경로를 <project_root_dir>/<GALLEON_DIR> 로 재정의합니다. -
GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO=<path> . . 에서는 <project root dir>/galleon/repository디렉터리 경로를 Maven 로컬 리포지토리 캐시 디렉터리에 대한 절대 경로로 재정의합니다. 이 리포지토리에는 사용자 지정 Galleon 기능 팩이 포함되어 있습니다.
Maven local-cache 파일 시스템 구성을 준수하는 하위 디렉터리 내에서 Galleon 기능 팩 아카이브 파일을 찾아야 합니다. 예를 들어 path-to-repository/org/examples/my-feature-pack/1.0.0.Final/my-feature-pack-1.0.0.Final.zip 경로 내에서 org.examples:my-feature-pack:1.0.0.Final 기능 팩:1.0.0.Final 기능 팩을 찾습니다.
<project _root>/<GALLEON_DIR> 디렉터리에 설정을 구성할 수 있습니다. settings.xml 파일을 생성하여 Maven 프로젝트GALLEON_DIR 의 기본값은 < project_root_dir>/galleon 입니다. Maven은 파일을 사용하여 애플리케이션의 사용자 지정 Galleon 기능 팩을 프로비저닝합니다. settings.xml 파일을 생성하지 않으면 Maven은 S2I 이미지에서 생성한 기본 settings.xml 파일을 사용합니다.
S2I 빌더 이미지가 로컬 Maven 리포지토리의 위치를 지정하므로 settings.xml 파일에 로컬 Maven 리포지토리 위치를 지정하지 마십시오. S2I 빌더 이미지는 S2I 빌드 프로세스 중에 이 위치를 사용합니다.
추가 리소스
8.2.3. 사용자 정의 Galleon 기능 팩 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
다음 사용자 지정 Galleon 기능 팩 환경 변수를 사용하여 JBoss EAP S2I 이미지 사용 방법을 사용자 지정할 수 있습니다.
| 환경 변수 | 설명 |
|---|---|
| GALLEON_DIR=<path> |
여기서 <path >는 애플리케이션 프로젝트의 루트 디렉터리를 기준으로 하는 디렉터리입니다. & lt;path > 디렉터리에는
디렉터리의 기본값은 |
| GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO=<path> |
<path >는 사용자 지정 기능 팩을 포함하는 Maven 로컬 리포지토리 디렉터리의 절대 경로입니다. 디렉터리의 기본값은 |
| GALLEON_PROVISION_FEATURE_PACKS=<list_of_galleon_feature_packs> | 여기서 < list_of_galleon_feature_packs >은 Maven 좌표로 식별되는 사용자 지정 Galleon 기능 팩의 쉼표로 구분된 목록입니다. 나열된 기능 팩은 빌더 이미지에 있는 JBoss EAP 8.0 서버 버전과 호환되어야 합니다.
|