OpenShift Container Platform에서 JBoss EAP 사용
OpenShift용 Red Hat JBoss Enterprise Application Platform 개발 가이드
초록
JBoss EAP 문서에 대한 피드백 제공 링크 복사링크가 클립보드에 복사되었습니다!
오류를 보고하거나 문서를 개선하기 위해 Red Hat Jira 계정에 로그인하여 문제를 제출하십시오. Red Hat Jira 계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.
프로세스
- 티켓을 생성하려면 다음 링크를 클릭하십시오.
- 요약 에 문제에 대한 간략한 설명을 입력합니다.
- 설명에서 문제 또는 개선 사항에 대한 자세한 설명을 제공합니다. 문서에서 문제가 발생한 위치에 URL을 포함합니다.
- Submit 을 클릭하고 문제를 적절한 문서 팀으로 라우팅합니다.
보다 포괄적 수용을 위한 오픈 소스 용어 교체 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
1장. Red Hat JBoss Enterprise Application Platform 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat JBoss EAP(JBoss Enterprise Application Platform 8.0)는 오픈 표준을 기반으로 구축된 미들웨어 플랫폼으로, Jakarta EE 10 사양을 준수합니다. 고가용성 클러스터링, 메시징 및 분산 캐싱과 같은 기능에 대해 사전 구성된 옵션을 제공합니다. 여기에는 필요한 경우에만 서비스를 활성화할 수 있는 모듈식 구조가 포함되어 시작 속도가 향상됩니다.
웹 기반 관리 콘솔 및 관리 CLI(명령줄 인터페이스)를 사용하면 작업을 스크립팅 및 자동화하고 XML 구성 파일을 편집하지 않아도 됩니다. 또한 JBoss EAP에는 안전하고 확장 가능한 Jakarta EE 애플리케이션을 개발, 배포 및 실행하는 데 사용할 수 있는 API 및 개발 프레임워크가 포함되어 있습니다. JBoss EAP 8.0은 Web Profile, Core Profile 및 Full Platform 사양에 대해 Jakarta EE 10 호환 구현입니다.
1.1. JBoss EAP는 OpenShift에서 어떻게 작동합니까? 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat은 OpenShift에서 JBoss EAP로 애플리케이션 이미지를 빌드하고 실행하는 컨테이너 이미지를 제공합니다.
Red Hat은 더 이상 JBoss EAP가 포함된 이미지를 제공하지 않습니다.
1.2. 비교: OpenShift용 JBoss EAP 및 JBoss EAP 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 제품을 OpenShift용 JBoss EAP 이미지와 비교할 때 몇 가지 중요한 차이점이 있습니다. 다음 표에서는 OpenShift용 JBoss EAP의 현재 버전에서 포함되거나 지원되는 기능을 설명합니다.
| JBoss EAP 기능 | OpenShift용 JBoss EAP의 상태 | 설명 |
|---|---|---|
| JBoss EAP 관리 콘솔 | 포함되지 않음 | JBoss EAP 관리 콘솔은 OpenShift용 JBoss EAP 릴리스에 포함되어 있지 않습니다. |
| JBoss EAP 관리 CLI | 권장되지 않음 | JBoss EAP 관리 CLI는 컨테이너화된 환경에서 실행되는 JBoss EAP와 함께 사용하지 않는 것이 좋습니다. 컨테이너를 다시 시작하면 실행 중인 컨테이너에서 관리 CLI를 사용하여 변경한 구성은 손실됩니다. 관리 CLI는 문제 해결을 위해 Pod 내에서 액세스할 수 있습니다. |
| 관리형 도메인 | 지원되지 않음 | JBoss EAP 관리형 도메인은 지원되지 않지만 애플리케이션의 생성 및 배포는 OpenShift의 컨테이너에서 관리됩니다. |
| 기본 루트 페이지 | 비활성화됨 |
기본 루트 페이지는 비활성화되어 있지만 자체 애플리케이션을 |
| 원격 메시징 | 지원됨 | Pod 간 및 원격 메시징을 위한 Red Hat AMQ가 지원됩니다. ActiveMQ Artemis는 JBoss EAP 인스턴스가 있는 단일 Pod 내에서의 메시징에만 지원되며 Red Hat AMQ가 없는 경우에만 활성화됩니다. |
| 트랜잭션 복구 | 지원됨 | EAP Operator는 OpenShift 4에서 테스트 및 지원되는 유일한 트랜잭션 복구 옵션입니다. EAP Operator를 사용하여 트랜잭션 복구에 대한 자세한 내용은 안전하지 않은 트랜잭션 복구를 위한 EAP Operator를 참조하십시오. |
1.3. 버전 호환성 및 지원 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift용 JBoss EAP는 OpenJDK 17 및 OpenJDK 21용 이미지를 제공합니다.
S2I 빌더 이미지와 런타임 이미지 두 가지 변형을 사용할 수 있습니다. S2I 빌더 이미지에는 S2I 빌드 중에 전체 JBoss EAP 서버를 프로비저닝할 수 있는 모든 필수 툴이 포함되어 있습니다. 런타임 이미지에는 JBoss EAP를 실행하는 데 필요한 종속성이 포함되어 있지만 서버는 포함되어 있지 않습니다. 이 서버는 체인된 빌드 중에 런타임 이미지에 설치됩니다.
OpenShift용 JBoss EAP 8.0의 이미지에 다음 수정 사항이 적용되었습니다.
- S2I 빌더 이미지에는 설치된 JBoss EAP 서버가 포함되어 있지 않으며 S2I 빌드 중에 JBoss EAP 8.0 서버를 설치합니다.
-
S2I 빌드 중 애플리케이션
pom파일에서 Cryostat-maven-plugin을 구성합니다. -
S2I 빌드 중에
GALLEON_PROVISION_FEATURE_PACKS,GALLEON_PROVISION_LAYERS, GALLEON_PROVISION_CHANNION_CHANNELS환경 변수를 설정하여 기존 JBoss EAP 7.4 애플리케이션을 사용하십시오. S2I 빌드 중에 JBoss EAP 프로비저닝 서버에는 OpenShift용으로 사용자 지정된
standalone.xml서버 구성 파일이 포함되어 있습니다.중요sever에는 JBoss EAP 7.4와 함께 사용된
standalone-openshift.xml구성 파일이 아닌standalone.xml구성 파일이 포함되어 있습니다.-
이미지 내에서
JBOSS_HOME값은/opt/server입니다.JBOSS_HOME의 값은 JBoss EAP 7.4의/opt/eap입니다. -
Jolokia 에이전트는 더 이상 이미지에 존재하지 않습니다. -
Prometheus 에이전트가 설치되지 않았습니다. -
Python 프로브가 더 이상 존재하지 않습니다. -
SSO어댑터는 더 이상 이미지에 존재하지 않습니다. -
ActiveMQ.rar는 더 이상 존재하지 않습니다.
다음 검색 메커니즘 프로토콜은 더 이상 사용되지 않으며 다른 프로토콜로 교체됩니다.
-
openshift.DNS_PING프로토콜은 더 이상 사용되지 않으며dns.DNS_PING프로토콜로 교체됩니다.사용자 지정 standalone.xml파일에서openshift.DNS_PING프로토콜을 참조하는 경우 이 프로토콜을dns.DNS_PING프로토콜로 교체합니다. -
openshift.KUBE_PING검색 메커니즘 프로토콜은 더 이상 사용되지 않으며kubernetes.KUBE_PING프로토콜로 교체됩니다.
1.3.1. OpenShift 4.x 지원 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 4.1의 변경 사항은 Jolokia에 대한 액세스에 영향을 미치며 OpenShift 4.x 웹 콘솔에서는 Open Java 콘솔을 더 이상 사용할 수 없습니다.
이전 OpenShift 릴리스에서 특정 kube-apiserver 프록시 요청이 인증되어 클러스터로 전달되었습니다. 이 동작은 이제 안전하지 않은 것으로 간주되므로 이러한 방식으로 Jolokia에 액세스하는 것은 더 이상 지원되지 않습니다.
OpenShift 콘솔의 코드베이스가 변경되었기 때문에 Open Java Console에 대한 링크를 더 이상 사용할 수 없습니다.
1.3.2. IBM Z 지원 링크 복사링크가 클립보드에 복사되었습니다!
libartemis-native 의 s390x 변형은 이미지에 포함되어 있지 않습니다. 따라서 AIO와 관련된 모든 설정은 고려하지 않습니다.
-
journal-type:journal-type을ASYNCIO로 설정해도 적용되지 않습니다. 이 속성의 기본값은 런타임 시NIO입니다. -
journal-max-io: 이 속성은 적용되지 않습니다. -
journal-store-enable-async-io: 이 속성은 적용되지 않습니다.
1.3.2.1. OpenShift의 JBoss EAP 7.4에서 JBoss EAP 8.0으로 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift에서 JBoss EAP 7.4와 함께 설치된 standalone.xml 파일은 JBoss EAP 8.0 이상과 호환되지 않습니다. JBoss EAP 8.0 이상 OpenShift 컨테이너를 시작하기 전에 파일을 수정하고 standalone.xml 로 이름을 변경해야합니다.
1.3.3. 배포 옵션 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 사용자를 대신하여 복잡한 상태 저장 애플리케이션의 인스턴스를 생성, 구성 및 관리하기 위해 OpenShift API를 확장하는 JBoss EAP별 컨트롤러인 EAP Operator를 사용하여 OpenShift에 JBoss EAP Java 애플리케이션을 배포할 수 있습니다.
2장. JBoss EAP 8.0의 패키지 네임스페이스 변경 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 JBoss EAP 8.0의 패키지 네임스페이스 변경 사항에 대한 추가 정보를 제공합니다. JBoss EAP 8.0은 자카르타 EE 10 및 자카르타 EE 10 API의 기타 여러 구현을 완벽하게 지원합니다. Jakarta EE 10 for JBoss EAP 8.0에서 지원하는 중요한 변경 사항은 패키지 네임스페이스 변경입니다.
2.1. javax에서 jakarta 네임스페이스로 변경 링크 복사링크가 클립보드에 복사되었습니다!
자카르타 EE 8과 EE 10의 주요 차이점은 EE API Java 패키지 이름을 javax.* 에서 jakarta *로 바꾸는 것입니다. 이는 Java EE가 Eclipse Foundation으로 이동하고 자카르타 EE 설정을 따릅니다.
이 네임스페이스 변경에 맞게 애플리케이션을 JBoss EAP 7에서 JBoss EAP 8로 마이그레이션하는 가장 큰 작업입니다. 애플리케이션을 자카르타 EE 10으로 마이그레이션하려면 다음 단계를 완료해야 합니다.
-
import 구문 또는 기타 소스 코드에서
javax패키지에서jakarta패키지로 EE API 클래스를 사용하는 것을 업데이트합니다. -
jakarta로 시작하도록 EE 지정 시스템 속성 또는javax로 시작하는 기타 구성 속성의 이름을 업데이트합니다. -
EE 인터페이스의 애플리케이션 제공 구현 또는
java.util.ServiceLoader메커니즘을 사용하여 부트스트랩된 추상 클래스의 경우 구현 클래스를 META-INF/services/javax에서 META-INF/services/jakarta로 식별하는 리소스의 이름을 변경합니다.[rest_of_name]은META-INF/services/jakarta.[rest_of_name]로 변경합니다.
Red Hat Migration Toolkit은 애플리케이션 소스 코드에서 네임스페이스를 업데이트하는 데 도움이 될 수 있습니다. 자세한 내용은 How to use Red Hat Migration Toolkit for Auto-Migration of an Application to the Jakarta EE 10 Namespace. 소스 코드 마이그레이션이 옵션이 아닌 경우 Open Source Eclipse Transformer 프로젝트는 기존 Java 아카이브를 javax 네임스페이스에서 jakarta 네임스페이스로 변환하는 바이트 코드 변환 도구를 제공합니다.
이 변경 사항은 Java SE의 일부인 javax 패키지에는 영향을 미치지 않습니다.
3장. OpenShift Container Platform에서 JBoss EAP 애플리케이션 빌드 및 실행 링크 복사링크가 클립보드에 복사되었습니다!
S2I(Source-to-Image) 프로세스를 따라 JBoss EAP for OpenShift 이미지에서 Java 애플리케이션을 빌드하고 실행할 수 있습니다.
3.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift 인스턴스가 설치되어 작동 중입니다.
3.2. OpenShift에서 애플리케이션 배포를 위한 준비 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 애플리케이션 개발자는 OpenShift에 애플리케이션을 배포할 수 있습니다. 다음 예에서, Kit sink quickstart는 Jakarta Server Cryostat, Jakarta Contexts and dependency Cryostat, Jakarta Enterprise Cryostats, Jakarta Persistence 및 Jakarta Cryostat를 사용하는 Jakarta EE 웹 지원 데이터베이스 애플리케이션을 보여줍니다. 자세한 내용은 JBoss EAP 8.0 Kitsink quickstart를 참조하십시오. 아래 절차에 따라 애플리케이션을 배포합니다.
프로세스
-
oc login명령을 사용하여 OpenShift 인스턴스에 로그인합니다. OpenShift에서 프로젝트를 생성합니다.
다음 명령을 사용하여 프로젝트를 생성합니다. 프로젝트를 사용하면 다른 그룹과 별도로 콘텐츠를 구성하고 관리할 수 있습니다.
oc new-project <project_name>
$ oc new-project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어 Kit
sink quickstart의 경우 다음 명령을 사용하여 Cryostat-demo라는 프로젝트를 생성합니다.oc new-project eap-demo
$ oc new-project eap-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 키 저장소와 시크릿을 생성합니다.
참고OpenShift 프로젝트에서 HTTPS 사용 기능을 사용하는 경우 키 저장소와 시크릿을 생성해야 합니다.
Java
keytool명령을 사용하여 키 저장소를 생성합니다.주의다음 명령은 자체 서명된 인증서를 생성하지만 프로덕션 환경의 경우 SSL 암호화 연결(HTTPS)에 대해 확인된 CA(인증 기관)에서 고유한 SSL 인증서를 사용합니다.
keytool -genkey -keyalg RSA -alias <alias_name> -keystore <keystore_filename.jks> -validity 360 -keysize 2048
$ keytool -genkey -keyalg RSA -alias <alias_name> -keystore <keystore_filename.jks> -validity 360 -keysize 2048Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어, Kit
sink빠른 시작의 경우 다음 명령을 사용하여 키 저장소를 생성합니다.keytool -genkey -keyalg RSA -alias eapdemo-selfsigned -keystore keystore.jks -validity 360 -keysize 2048
$ keytool -genkey -keyalg RSA -alias eapdemo-selfsigned -keystore keystore.jks -validity 360 -keysize 2048Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 새 키 저장소에서 보안을 생성합니다.
oc create secret generic <secret_name> --from-file=<keystore_filename.jks>
$ oc create secret generic <secret_name> --from-file=<keystore_filename.jks>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어 Kit
sink 빠른시작의 경우 다음 명령을 사용하여 시크릿을 생성합니다.oc create secret generic eap-app-secret --from-file=keystore.jks
$ oc create secret generic eap-app-secret --from-file=keystore.jksCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. OpenShift에서 S2I(Source-to-Image)를 사용하여 애플리케이션 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
S2I(Source-to-Image) 워크플로우에 따라 JBoss EAP 애플리케이션에 대한 재현 가능한 컨테이너 이미지를 빌드합니다. 생성된 컨테이너 이미지에는 애플리케이션 배포 및 즉시 실행 가능한 JBoss EAP 서버가 포함됩니다.
S2I 워크플로는 Git 리포지토리에서 소스 코드를 가져와 사용하려는 언어 및 프레임워크를 기반으로 하는 컨테이너에 삽입합니다. S2I 워크플로가 완료되면 src 코드가 컴파일되고 애플리케이션이 패키지화되고 JBoss EAP 서버에 배포됩니다.
자세한 내용은 JBoss EAP S2I에 대한 레거시 서버 프로비저닝 을 참조하십시오.
JBoss EAP에서는 자카르타 EE 10을 사용하여 애플리케이션을 개발하는 경우에만 S2I 이미지를 사용할 수 있습니다.
사전 요구 사항
- 유효한 Red Hat 고객 계정이 있습니다.
- 레지스트리 서비스 계정이 있어야 합니다. Red Hat 고객 포털의 지침에 따라 레지스트리 서비스 계정을 사용하여 인증 토큰을 생성합니다.
- Red Hat Ecosystem Catalog에서 이미지를 가져오는 데 사용할 수 있는 OpenShift 시크릿 YAML 파일을 다운로드했습니다. 자세한 내용은 OpenShift 시크릿 을 참조하십시오.
-
oc login명령을 사용하여 OpenShift에 로그인했습니다. - Helm이 설치되어 있어야 합니다. 자세한 내용은 Helm 설치를 참조하십시오.
관리 CLI에 이 명령을 입력하여 JBoss EAP Helm 차트 리포지토리를 설치했습니다.
helm repo add jboss-eap https://jbossas.github.io/eap-charts/
$ helm repo add jboss-eap https://jbossas.github.io/eap-charts/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
프로세스
다음 YAML 콘텐츠를 사용하여
helm.yaml이라는 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 OpenShift에 JBoss EAP 애플리케이션을 배포합니다.
helm install helloworld -f helm.yaml jboss-eap/eap8
$ helm install helloworld -f helm.yaml jboss-eap/eap8Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
curl을 사용하여 애플리케이션에 액세스합니다.curl https://$(oc get route helloworld --template='{{ .spec.host }}')/HelloWorld$ curl https://$(oc get route helloworld --template='{{ .spec.host }}')/HelloWorldCopy to Clipboard Copied! Toggle word wrap Toggle overflow Hello World!출력이 표시됩니다. 애플리케이션이 배포되었는지 확인합니다.
3.4. OpenShift에 타사 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
컴파일된 WAR 파일 또는 EAR 아카이브를 사용하여 OpenShift 배포를 위한 애플리케이션 이미지를 생성할 수 있습니다. Dockerfile을 사용하여 운영 체제, Java 및 JBoss EAP 구성 요소가 포함된 업데이트되고 포괄적인 런타임 스택과 함께 JBoss EAP 서버에 이러한 아카이브를 배포합니다.
Red Hat은 사전 구축된 JBoss EAP 서버 이미지를 제공하지 않습니다.
3.4.1. 기본 구성을 사용하여 JBoss EAP 서버 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
빌더 이미지를 사용하여 OpenShift에 기본 구성으로 JBoss EAP 서버를 설치하고 구성할 수 있습니다. 원활한 배포를 위해 절차를 수행하여 서버를 프로비저닝하고 애플리케이션 파일을 전송하고 필요한 사용자 지정을 수행합니다.
사전 요구 사항
지원되는 Red Hat JBoss Enterprise Application Platform 컨테이너 이미지에 액세스할 수 있습니다. 예를 들면 다음과 같습니다.
-
registry.redhat.io/jboss-eap-8/eap8-openjdk17-builder-openshift-rhel8 -
registry.redhat.io/jboss-eap-8/eap8-openjdk17-runtime-openshift-rhel8
-
- podman이 시스템에 설치되어 있어야 합니다. 지원되는 RHEL에서 사용 가능한 최신 podman 버전을 사용합니다. 자세한 내용은 Red Hat JBoss Enterprise Application Platform 8.0 지원 구성을 참조하십시오.
프로세스
제공된 대로 다음 Dockerfile 콘텐츠를 복사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 이미지 내에서 JBoss EAP Maven 플러그인에서 사용하는
MAVEN_MIRROR_URL환경 변수를 지정할 수 있습니다. 자세한 내용은 Artifact 저장소 미러를 참조하십시오. - 2
- 마이너 릴리스에 대해 이 Dockerfile을 업데이트할 필요가 없습니다. 특정 버전을 사용하려면
GALLEON_PROVISION_CHANNELS환경 변수에 JBoss EAP 버전을 지정합니다. 자세한 내용은 환경 변수를 참조하십시오. - 3
- 컨테이너에 WAR 파일을 포함하도록 복사한 Dockerfile을 수정합니다. 예를 들면 다음과 같습니다.
COPY --chown=jboss:root <my-app.war> $JBOSS_HOME/standalone/deployments
COPY --chown=jboss:root <my-app.war> $JBOSS_HOME/standalone/deploymentsCopy to Clipboard Copied! Toggle word wrap Toggle overflow <myapp.war>를 이미지에 추가하려는 웹 아카이브 경로로 바꿉니다.
podman을 사용하여 애플리케이션 이미지를 빌드합니다.
podman build -t my-app .
$ podman build -t my-app .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령이 실행되면
my-app컨테이너 이미지를 OpenShift에 배포할 수 있습니다.다음 옵션 중 하나에 컨테이너 이미지를 업로드합니다.
- OpenShift에서 액세스할 수 있는 내부 레지스트리입니다.
- 빌드된 시스템에서 이미지를 직접 푸시하여 OpenShift 레지스트리입니다. 자세한 내용은 컨테이너 이미지를 Cryostat 4의 이미지 레지스트리로 내보내는 방법을 참조하십시오.
- 레지스트리에서 이미지를 배포할 때 Helm 차트, Operator 또는 Deployment와 같은 배포 전략을 사용합니다. 선호하는 방법을 선택하고 요구 사항에 따라 전체 이미지 URL 또는 ImageStream을 사용합니다. 자세한 내용은 OpenShift에서 JBoss EAP 애플리케이션을 빌드 및 배포하기 위해 Helm 차트 사용을 참조하십시오.
3.5. OpenID Connect를 사용하여 OpenShift에서 JBoss EAP 애플리케이션 보안 링크 복사링크가 클립보드에 복사되었습니다!
외부 OpenID 공급자를 사용하여 인증을 위임하려면 JBoss EAP 기본 OpenID Connect(OIDC) 클라이언트를 사용합니다. OIDC는 JBoss EAP와 같은 클라이언트가 OpenID 공급자가 수행한 인증을 기반으로 사용자 ID를 확인할 수 있는 ID 계층입니다.
elytron-oidc-client 하위 시스템 및 elytron-oidc-client Galleon 계층은 JBoss EAP에서 기본 OIDC 클라이언트를 제공하여 OpenID 공급자와 연결합니다. JBoss EAP는 OpenID 공급자 구성에 따라 애플리케이션의 가상 보안 도메인을 자동으로 생성합니다.
elytron-oidc-client 하위 시스템을 다음과 같은 세 가지 방법으로 구성할 수 있습니다.
-
배포에
oidc.json추가 -
CLI 스크립트를 실행하여
elytron-oidc-client하위 시스템을 구성합니다. -
OpenShift에서 JBoss EAP 서버 시작 시
elytron-oidc-client하위 시스템을 구성하는 환경 변수를 정의합니다.
다음 절차에서는 OIDC로 애플리케이션을 보호하기 위해 환경 변수를 사용하여 elytron-oidc-client 하위 시스템을 구성하는 방법을 설명합니다.
3.5.1. JBoss EAP의 OpenID Connect 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenID 공급자를 사용하여 애플리케이션을 보호하면 보안 도메인 리소스를 로컬로 구성할 필요가 없습니다. elytron-oidc-client 하위 시스템은 JBoss EAP에서 기본 OpenID Connect(OIDC) 클라이언트를 제공하여 OpenID 공급자와 연결합니다. JBoss EAP는 OpenID 공급자 구성에 따라 애플리케이션의 가상 보안 도메인을 자동으로 생성합니다.
Red Hat build of Keycloak과 함께 OIDC 클라이언트를 사용합니다. JSON 웹 토큰(JWT)인 액세스 토큰을 사용하도록 구성할 수 있고 RS256, RS384, ES256, ES384 또는 ES512 서명 알고리즘을 사용하도록 구성할 수 있는 경우 다른 OpenID 공급자를 사용할 수 있습니다.
OIDC 사용을 활성화하려면 elytron-oidc-client 하위 시스템 또는 애플리케이션 자체를 구성할 수 있습니다. JBoss EAP는 다음과 같이 OIDC 인증을 활성화합니다.
-
애플리케이션을 JBoss EAP에 배포할 때
elytron-oidc-client하위 시스템은 배포를 검사하여 OIDC 인증 메커니즘이 필요한지 감지합니다. -
하위 시스템에서
elytron-oidc-client하위 시스템 또는 애플리케이션 배포 설명자 중 하나에서 배포에 대한 OIDC 구성을 감지하면 JBoss EAP는 애플리케이션에 대한 OIDC 인증 메커니즘을 활성화합니다. -
하위 시스템이 두 위치에서 OIDC 구성을 감지하면
elytron-oidc-client하위 시스템secure-deployment속성의 구성이 애플리케이션 배포 설명자의 구성보다 우선합니다.
3.5.2. OpenID Connect로 보안된 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
웹 애플리케이션을 생성하려면 필수 종속성 및 디렉터리 구조가 포함된 Maven 프로젝트를 생성합니다. 로그인한 사용자의 주체 및 특성에서 얻은 사용자 이름을 반환하는 서블릿이 포함된 웹 애플리케이션을 생성합니다. 로그인한 사용자가 없는 경우 서블릿은 "NO AUTHENTICATED USER" 텍스트를 반환합니다.
사전 요구 사항
- Maven이 설치되어 있어야 합니다. 자세한 내용은 Apache Maven 다운로드를 참조하십시오.
프로세스
mvn명령을 사용하여 Maven 프로젝트를 설정합니다. 명령은 프로젝트에 대한 디렉터리 구조와pom.xml구성 파일을 생성합니다.구문
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 루트 디렉터리로 이동합니다.
구문
cd <name-of-your-application>
$ cd <name-of-your-application>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
cd simple-webapp-example
$ cd simple-webapp-exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된
pom.xml파일의 내용을 다음 텍스트로 바꿉니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고-
<
version.eap.plugin>1.0.0.Final-redhat-00014</version.eap.plugin>은 JBoss EAP Maven 플러그인의 예제 버전입니다. JBoss EAP Maven 플러그인 릴리스에 대한 자세한 내용은 Red Hat Maven 리포지토리를 참조하십시오. https://maven.repository.redhat.com/earlyaccess/all/org/jboss/eap/plugins/eap-maven-plugin/.
-
<
Java 파일을 저장할 디렉터리를 만듭니다.
구문
mkdir -p src/main/java/<path_based_on_artifactID>
$ mkdir -p src/main/java/<path_based_on_artifactID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
mkdir -p src/main/java/com/example/app
$ mkdir -p src/main/java/com/example/appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새 디렉터리로 이동합니다.
구문
cd src/main/java/<path_based_on_artifactID>
$ cd src/main/java/<path_based_on_artifactID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
cd src/main/java/com/example/app
$ cd src/main/java/com/example/appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 콘텐츠를 사용하여
SecuredServlet.java파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 리소스를 보호하도록 애플리케이션의
web.xml을 구성합니다.예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서는
사용자가역할이 있는 사용자만 애플리케이션에 액세스할 수 있습니다.
3.5.3. OpenShift에 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 애플리케이션 개발자는 OpenID Connect 하위 시스템을 사용하는 OpenShift에 애플리케이션을 배포하고 Red Hat build of Keycloak 서버와 통합할 수 있습니다. 아래 절차에 따라 애플리케이션을 배포합니다.
사전 요구 사항
다음 구성을 사용하여 OpenShift에서 Red Hat build of Keycloak 서버를 구성했습니다. 자세한 내용은 Red Hat build of Keycloak Operator 를 참조하십시오.
- Cryostat라는 영역을 생성합니다.
- demo 라는 사용자를 만듭니다.
- demo 라는 사용자의 암호를 설정합니다. 임시 를 OFF 로 전환하고 암호 설정을 클릭합니다. 확인 프롬프트에서 암호 설정을 클릭합니다.
- Users 라는 역할을 생성합니다.
- 사용자 demo 에 사용자 역할을 할당합니다.
- 클라이언트 역할 필드에서 JBoss EAP에 대해 구성한 realm-management 를 선택합니다.
- create-client 역할을 클라이언트 realm-management 에 할당합니다.
프로세스
- 애플리케이션 코드를 Git 리포지토리에 배포합니다.
OIDC 구성이 포함된 보안을 생성합니다.
다음 콘텐츠를 사용하여
oidc-secret.yaml이라는 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 보안을 생성합니다.
oc apply -f oidc-secret.yaml
$ oc apply -f oidc-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 콘텐츠를 사용하여
helm.yaml이라는 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow JBoss EAP Helm 차트를 사용하여 예제 애플리케이션을 배포합니다.
helm install eap-oidc-test-app -f helm.yaml jboss-eap/eap8
$ helm install eap-oidc-test-app -f helm.yaml jboss-eap/eap8Copy to Clipboard Copied! Toggle word wrap Toggle overflow oidc-secret.yaml파일에 환경 변수를 추가하여 OIDC 공급자 URL 및 애플리케이션 호스트 이름을 구성합니다.yaml stringData: ... OIDC_HOSTNAME_HTTPS: <host of the application> OIDC_PROVIDER_URL: https://<host of the SSO provider>/realms/JBossEAP
yaml stringData: ... OIDC_HOSTNAME_HTTPS: <host of the application> OIDC_PROVIDER_URL: https://<host of the SSO provider>/realms/JBossEAPCopy to Clipboard Copied! Toggle word wrap Toggle overflow OIDC_HOSTNAME_HTTPS의 값은 다음 출력에 해당합니다.echo $(oc get route eap-oidc-test-app --template='{{ .spec.host }}')echo $(oc get route eap-oidc-test-app --template='{{ .spec.host }}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow OIDC_PROVIDER_URL값은 다음 출력에 해당합니다.echo https://$(oc get route sso --template='{{ .spec.host }}')/realms/JBossEAPecho https://$(oc get route sso --template='{{ .spec.host }}')/realms/JBossEAPCopy to Clipboard Copied! Toggle word wrap Toggle overflow OIDC_HOSTNAME_HTTP(S)가 설정되지 않은 경우 경로 검색 시도가 수행됩니다. 경로 검색을 활성화하려면 OpenShift 사용자가경로리소스를 나열할 수 있어야 합니다. 예를 들어routeview역할을 생성하고view사용자와 연결하려면 다음oc명령을 사용합니다.oc create role <role-name> --verb=list --resource=route oc adm policy add-role-to-user <role-name> <user-name> --role-namespace=<your namespace>
$ oc create role <role-name> --verb=list --resource=route $ oc adm policy add-role-to-user <role-name> <user-name> --role-namespace=<your namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
oc apply -f oidc-secret.yaml을 사용하여 시크릿을 업데이트합니다. 애플리케이션을 다시 배포하여 OpenShift에서 새 환경 변수를 사용하는지 확인합니다.
oc rollout restart deploy eap-oidc-test-app
$ oc rollout restart deploy eap-oidc-test-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
브라우저에서
https://<eap-oidc-test-app route>/ 로이동합니다.Red Hat build of Keycloak 로그인 페이지로 리디렉션됩니다.
- 보안 서블릿에 액세스합니다.
다음 인증 정보로 로그인합니다.
username: demo password: demo
username: demo password: demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 보안 주체 ID가 포함된 페이지가 나타납니다.
3.5.4. 환경 변수 기반 구성 링크 복사링크가 클립보드에 복사되었습니다!
이러한 환경 변수를 사용하여 OpenShift 이미지에서 JBoss EAP OIDC 지원을 구성합니다.
| 환경 변수 | 레거시 SSO 환경 변수 | 설명 | 필수 항목 | 기본값 |
|---|---|---|---|---|
| OIDC_PROVIDER_NAME |
없음. |
OIDC_PROVIDER_NAME 변수를 사용할 때 | 제공됨 | |
| OIDC_PROVIDER_URL |
| 공급자의 URL입니다. | 제공됨 | |
| OIDC_USER_NAME | SSO_USERNAME | 동적 클라이언트 등록에는 토큰을 받으려면 사용자 이름이 필요합니다. | 제공됨 | |
| OIDC_USER_PASSWORD | SSO_PASSWORD | 동적 클라이언트 등록에는 토큰을 받으려면 사용자 암호가 필요합니다. | 제공됨 | |
| OIDC_SECURE_DEPLOYMENT_SECRET | SSO_SECRET | secure-deployment 하위 시스템과 인증 서버 클라이언트 모두 알려져 있습니다. | 없음 | |
| OIDC_SECURE_DEPLOYMENT_PRINCIPAL_ATTRIBUTE | SSO_PRINCIPAL_ATTRIBUTE | 보안 주체 이름 값을 구성합니다. | 없음 |
일반적인 값: preferred_username. |
| OIDC_SECURE_DEPLOYMENT_ENABLE_CORS | SSO_ENABLE_CORS | Single Sign-On 애플리케이션에 대해 CORS를 활성화합니다. | 없음 |
기본값은 |
| OIDC_SECURE_DEPLOYMENT_BEARER_ONLY | SSO_BEARER_ONLY | 전달자 토큰만 허용하고 로깅을 지원하지 않는 배포입니다. | 없음 |
기본값은 |
| OIDC_PROVIDER_SSL_REQUIRED | NONE | 기본값은 private 및 local 주소와 같은 external이지만 https는 지원하지 않습니다. | 없음 | 외부 |
| OIDC_PROVIDER_TRUSTSTORE | SSO_TRUSTSTORE |
realm | 없음 | |
| OIDC_PROVIDER_TRUSTSTORE_DIR | SSO_TRUSTSTORE_DIR |
영역 | 없음 | |
| OIDC_PROVIDER_TRUSTSTORE_PASSWORD | SSO_TRUSTSTORE_PASSWORD |
realm | 없음 | |
| OIDC_PROVIDER_TRUSTSTORE_CERTIFICATE_ALIAS | SSO_TRUSTSTORE_CERTIFICATE_ALIAS |
realm | 없음 | |
| OIDC_DISABLE_SSL_CERTIFICATE_VALIDATION | SSO_DISABLE_SSL_CERTIFICATE_VALIDATION | 클라이언트를 등록하기 위해 인증 서버와 상호 작용할 때 인증서 검증을 비활성화합니다. | 없음 | |
| OIDC_HOSTNAME_HTTP | HOSTNAME_HTTP | 비보안 경로에 사용되는 호스트 이름입니다. | 없음 | 경로가 검색됩니다. |
| OIDC_HOSTNAME_HTTPS | HOSTNAME_HTTPS | 보안 경로에 사용되는 호스트 이름입니다. | 없음 | 보안 경로가 검색됩니다. |
| NONE | SSO_PUBLIC_KEY | Single Sign-On 영역의 공개 키입니다. 이 옵션은 사용되지 않으며 공개 키는 OIDC 하위 시스템에서 자동으로 검색됩니다. | 없음 | 설정되어 있으면 이 옵션이 무시되고 있다는 경고가 표시됩니다. |
3.6. SAML을 사용하여 애플리케이션 보안 링크 복사링크가 클립보드에 복사되었습니다!
SAML(Security Assertion Markup Language)은 두 당사자 간에 인증 및 권한 부여 정보를 교환할 수 있는 데이터 형식 및 프로토콜 역할을 합니다. 이러한 두 당사자는 일반적으로 ID 공급자와 서비스 공급자가 포함됩니다. 이 정보는 어설션이 포함된 SAML 토큰의 형태를 취합니다. ID 공급자는 이러한 SAML 토큰을 주체에 발행하여 이러한 주체가 서비스 공급자로 인증할 수 있도록 합니다. 주체는 SAML v2에서 브라우저 기반 Single Sign-On을 활성화하는 여러 서비스 공급자와 SAML 토큰을 재사용할 수 있습니다.
Keycloak SAML 어댑터 기능 팩에서 제공하는 Galleon 계층을 사용하여 웹 애플리케이션을 보호할 수 있습니다.
Keycloak SAML 어댑터 기능 팩에 대한 자세한 내용은 SAML을 사용하여 애플리케이션 보안을 위한 Keycloak SAML 어댑터 기능 팩을 참조하십시오.
3.6.1. SAML을 사용하여 애플리케이션 보안을 위한 Keycloak SAML 어댑터 기능 팩 링크 복사링크가 클립보드에 복사되었습니다!
Keycloak SAML 어댑터 Galleon 팩은 keycloak-saml 계층을 포함하는 Galleon 기능 팩입니다. 기능 팩에 keycloak-saml 계층을 사용하여 JBoss EAP에 필요한 모듈 및 구성을 설치합니다. SAML을 사용할 때 Red Hat build of Keycloak을 SSO(Single Sign-On) ID 공급자로 사용하려면 이러한 모듈과 구성이 필요합니다. S2I(Source-to-Image)에 keycloak-saml SAML 어댑터 Galleon 계층을 사용하는 경우 Keycloak의 Red Hat 빌드와 같은 IDP(Identity Service Provider)로 자동 등록할 수 있는 SAML 클라이언트 기능을 선택적으로 사용할 수 있습니다.
3.6.2. OpenShift의 SAML 공급자로 Red Hat build of Keycloak 구성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat build of Keycloak은 SSO(Single Sign-On)로 웹 애플리케이션을 보호하기 위한 ID 및 액세스 관리 공급자입니다. OAuth 2.0 및 SAML에 대한 확장인 OpenID Connect를 지원합니다.
다음 절차에서는 SAML을 사용하여 애플리케이션을 보호하는 데 필요한 필수 단계를 간략하게 설명합니다. 자세한 내용은 Red Hat build of Keycloak 문서를 참조하십시오.
사전 요구 사항
- Red Hat build of Keycloak에 대한 관리자 액세스 권한이 있습니다.
- Red Hat build of Keycloak이 실행 중입니다. 자세한 내용은 Red Hat build of Keycloak Operator 를 참조하십시오.
-
oclogin 명령을 사용하여 OpenShift에 로그인했습니다.
프로세스
- Single Sign-On 영역, 사용자 및 역할을 생성합니다.
Java
keytool명령을 사용하여 키 및 인증서를 생성합니다.keytool -genkeypair -alias saml-app -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -storepass password -dname "CN=saml-basic-auth,OU=EAP SAML Client,O=Red Hat EAP QE,L=MB,S=Milan,C=IT" -ext ku:c=dig,keyEncipherment -validity 365
keytool -genkeypair -alias saml-app -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -storepass password -dname "CN=saml-basic-auth,OU=EAP SAML Client,O=Red Hat EAP QE,L=MB,S=Milan,C=IT" -ext ku:c=dig,keyEncipherment -validity 365Copy to Clipboard Copied! Toggle word wrap Toggle overflow 키 저장소를 JKS(Java KeyStore) 형식으로 가져옵니다.
keytool -importkeystore -deststorepass password -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass password
keytool -importkeystore -deststorepass password -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift에서 키 저장소에 대한 시크릿을 생성합니다.
oc create secret generic saml-app-secret --from-file=keystore.jks=./keystore.jks --type=opaque
$ oc create secret generic saml-app-secret --from-file=keystore.jks=./keystore.jks --type=opaqueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
이러한 단계는 자동 SAML 클라이언트 등록 기능을 사용하는 경우에만 필요합니다. JBoss EAP에서 새 SAML 클라이언트를 client-admin 사용자로 Red Hat 빌드에 등록할 때 JBoss EAP는 새 SAML 클라이언트의 인증서를 Red Hat build of Keycloak 클라이언트 구성에 저장해야 합니다. 이를 통해 JBoss EAP는 Red Hat build of Keycloak에 공개 인증서를 저장하는 동안 개인 키를 유지할 수 있으며, 이를 통해 Red Hat build of Keycloak과의 통신에 대해 인증된 클라이언트를 설정할 수 있습니다.
3.6.3. SAML으로 보안된 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
SAML(Security Assertion Markup Language)을 사용하여 웹 애플리케이션 보안을 강화할 수 있습니다. SAML은 효과적인 사용자 인증 및 권한 부여 기능을 제공하며 SSO(Single Sign-On) 기능과 함께 웹 애플리케이션 강화를 위한 신뢰할 수 있는 선택이 가능합니다.
사전 요구 사항
- Maven이 설치되어 있어야 합니다. 자세한 내용은 Apache Maven 다운로드를 참조하십시오.
프로세스
mvn명령을 사용하여 Maven 프로젝트를 설정합니다. 이 명령은 프로젝트에 대한 디렉터리 구조와pom.xml구성 파일을 둘 다 생성합니다.구문
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 루트 디렉터리로 이동합니다.
구문
cd <name-of-your-application>
$ cd <name-of-your-application>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
cd simple-webapp-example
$ cd simple-webapp-exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된
pom.xml파일의 내용을 다음 텍스트로 바꿉니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고-
<
version.eap.plugin>1.0.0.Final-redhat-00014</version.eap.plugin>은 JBoss EAP Maven 플러그인의 예제 버전입니다. JBoss EAP Maven 플러그인 릴리스에 대한 자세한 내용은 Red Hat Maven 리포지토리를 참조하십시오. https://maven.repository.redhat.com/earlyaccess/all/org/jboss/eap/plugins/eap-maven-plugin/.
-
<
Java 파일을 저장할 디렉터리를 만듭니다.
구문
mkdir -p src/main/java/<path_based_on_artifactID>
$ mkdir -p src/main/java/<path_based_on_artifactID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
mkdir -p src/main/java/com/example/app
$ mkdir -p src/main/java/com/example/appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새 디렉터리로 이동합니다.
구문
cd src/main/java/<path_based_on_artifactID>
$ cd src/main/java/<path_based_on_artifactID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
cd src/main/java/com/example/app
$ cd src/main/java/com/example/appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 설정이 포함된
SecuredServlet.java파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow web.xml파일의 디렉터리 구조를 생성합니다.mkdir -p src/main/webapp/WEB-INF cd src/main/webapp/WEB-INF
mkdir -p src/main/webapp/WEB-INF cd src/main/webapp/WEB-INFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 리소스를 보호하도록 애플리케이션의
web.xml파일을 구성합니다.예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서는
사용자역할이 있는 사용자만 애플리케이션에 액세스할 수 있습니다.
검증
애플리케이션을 생성한 후 원격 Git 리포지토리에 커밋합니다.
-
https://github.com/your-username/simple-webapp-example과 같은 Git 리포지토리를 생성합니다. 원격 리포지토리 및 Git에 대한 자세한 내용은 Git 시작하기 - 원격 리포지토리 정보를 참조하십시오. 애플리케이션의 루트 폴더에서 다음 Git 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이러한 단계는 애플리케이션을 원격 리포지토리에 커밋하여 온라인으로 액세스할 수 있도록 합니다.
3.6.4. OpenShift에서 SAML 보안 애플리케이션 빌드 및 배포 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 및 SSO(Single Sign-On) Galleon 계층을 사용하여 OpenShift에서 SAML으로 보안된 애플리케이션을 빌드하고 배포할 수 있습니다.
사전 요구 사항
- Helm이 설치되어 있어야 합니다. 자세한 내용은 Helm 설치를 참조하십시오.
- SAML 애플리케이션 프로젝트를 생성하고 Git 리포지토리에서 액세스할 수 있도록 했습니다.
관리 CLI에 이 명령을 입력하여 JBoss EAP Helm 차트 리포지토리를 설치했습니다.
helm repo add jboss-eap https://jbossas.github.io/eap-charts/
$ helm repo add jboss-eap https://jbossas.github.io/eap-charts/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
프로세스
- 애플리케이션 코드를 Git 리포지토리에 배포합니다.
필요한 환경 변수가 포함된 OpenShift 시크릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
제공된 YAML 콘텐츠를
saml-secret.yaml과 같은 파일에 저장합니다. 다음 명령을 사용하여 저장된 YAML 파일을 적용합니다.
oc apply -f saml-secret.yaml
oc apply -f saml-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 설정이 포함된
helm.yaml파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고http://www.redhat.com과 같은 HTTP 형식으로 웹 주소를 지정합니다. maven 미러를 사용하는 경우 다음과 같이 웹 주소를 지정합니다.build: uri: [WEB ADDRESS TO YOUR GIT REPOSITORY] env: - name: "MAVEN_MIRROR_URL" value: "http://..."build: uri: [WEB ADDRESS TO YOUR GIT REPOSITORY] env: - name: "MAVEN_MIRROR_URL" value: "http://..."Copy to Clipboard Copied! Toggle word wrap Toggle overflow JBoss EAP Helm 차트를 사용하여 예제 애플리케이션을 배포합니다.
helm install saml-app -f helm.yaml jboss-eap/eap8
$ helm install saml-app -f helm.yaml jboss-eap/eap8Copy to Clipboard Copied! Toggle word wrap Toggle overflow saml-secret.yaml파일에 환경 변수를 추가하여 Keycloak 서버 URL 및 애플리케이션 경로를 구성합니다.stringData: ... HOSTNAME_HTTPS: <saml-app application route> SSO_URL: https://<host of the Keycloak server>
stringData: ... HOSTNAME_HTTPS: <saml-app application route> SSO_URL: https://<host of the Keycloak server>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;saml-app 애플리케이션 route> 및 <host of the Keycloak server>를 적절한 값으로 바꿉니다.HOSTNAME_HTTPS의 값은 다음 출력에 해당합니다.echo $(oc get route saml-app --template='{{ .spec.host }}')echo $(oc get route saml-app --template='{{ .spec.host }}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSO_URL의 값은 다음 출력에 해당합니다.echo https://$(oc get route sso --template='{{ .spec.host }}')echo https://$(oc get route sso --template='{{ .spec.host }}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 명령을 사용할 수 없는 경우
oc get routes를 사용하여 사용 가능한 경로를 나열하고 Keycloak 인스턴스의 Red Hat 빌드 경로를 선택합니다.-
oc apply -f saml-secret.yaml을 사용하여 시크릿을 업데이트합니다.
검증
애플리케이션을 다시 배포하여 OpenShift에서 새 환경 변수를 사용하는지 확인합니다.
oc rollout restart deploy saml-app
$ oc rollout restart deploy saml-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 브라우저에서 애플리케이션 URL로 이동합니다. 예를 들어
https://<saml-app route>/simple-webapp-example.Keycloak 로그인 페이지의 Red Hat 빌드로 리디렉션됩니다.
웹 주소를 가져오려면 다음 명령을 사용하여 보안 서블릿에 액세스합니다.
echo https://$(oc get route saml-app --template='{{ .spec.host }}')/simple-webapp-example/securedecho https://$(oc get route saml-app --template='{{ .spec.host }}')/simple-webapp-example/securedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 인증 정보로 로그인합니다.
username: demo password: demo
username: demo password: demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 보안 주체 ID가 포함된 페이지가 표시됩니다.
이제 SAML을 사용하여 애플리케이션이 보호됩니다.
3.6.5. SSO 영역, 사용자 및 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat build of Keycloak 환경에서 SSO(Single Sign-On) 영역을 구성하고, 사용자 역할을 정의하고, 액세스 제어를 관리할 수 있습니다. 이러한 작업을 통해 보안을 강화하고 사용자 액세스 관리를 단순화하여 인증 환경을 간소화할 수 있습니다. 이는 SSO 설정을 최적화하고 사용자 인증 프로세스를 개선하는 데 중요합니다.
사전 요구 사항
- Red Hat build of Keycloak에 대한 관리자 액세스 권한이 있습니다.
- Red Hat build of Keycloak이 실행 중입니다.
프로세스
-
URL을 사용하여 Keycloak 관리 콘솔의 Red Hat 빌드에 로그인합니다.
https://<SSO route>/. Red Hat build of Keycloak에 영역을 만듭니다(예:
saml-basic-auth). 나중에 이 영역을 사용하여 필요한 사용자, 역할 및 클라이언트를 생성할 수 있습니다.자세한 내용은 영역 생성을 참조하십시오.
saml-basic-auth영역에 역할을 생성합니다. 예를 들어사용자.자세한 내용은 영역 역할 생성을 참조하십시오.
사용자를 생성합니다. 예를 들면
데모입니다.자세한 내용은 사용자 생성 을 참조하십시오.
사용자의 암호를 만듭니다. 예를 들면
데모입니다.암호가 임시가 아닌지 확인합니다. 자세한 내용은 사용자의 암호 설정을 참조하십시오.
로그인 액세스를 위해
사용자역할을데모사용자에게 할당합니다.자세한 내용은 역할 매핑 할당을 참조하십시오.
사용자를 생성합니다. 예를 들어
client-admin은 다음과 같습니다.JBoss EAP 서버가 시작될 때 Keycloak 서버에서 SAML 클라이언트를 생성하려면 추가 권한이 필요한
client-admin사용자를 사용할 수 있습니다. 자세한 내용은 사용자 생성 을 참조하십시오.사용자의 암호를 만듭니다. 예를 들어
client-admin은 다음과 같습니다.암호가 임시가 아닌지 확인합니다. 자세한 내용은 사용자의 암호 설정을 참조하십시오.
-
클라이언트 역할드롭다운 목록에서realm-management를 선택합니다. create-client,manage-clients,manage-realm역할을client-admin사용자에게 할당합니다.자세한 내용은 역할 매핑 할당을 참조하십시오.
3.6.6. SAML 하위 시스템 구성을 위한 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
다음 변수를 이해하고 사용하여 환경 내에서 Keycloak 서버 통합을 최적화할 수 있습니다. 이렇게 하면 애플리케이션에 대한 원활하고 안전한 Keycloak 설정을 수행할 수 있습니다.
| 환경 변수 | 설명 | 필수 항목 |
|---|---|---|
|
| 배포 이름에서 파생된 클라이언트 이름에 접두사로 사용됩니다. | 선택 사항 |
|
|
HTTP OpenShift 경로에 대한 사용자 정의 | 선택 사항 |
|
|
HTTPS OpenShift 경로에 대한 사용자 정의 | 선택 사항 |
|
|
Keycloak 서버 인증서의 검증을 활성화하거나 비활성화하려면 | 선택 사항 |
|
|
Keycloak 영역과 상호 작용하고 클라이언트를 생성하고 등록할 수 있는 권한이 있는 사용자의 암호입니다. 예를 들어 | True |
|
|
애플리케이션 클라이언트를 연결하는 SSO 영역입니다. 예를 들면 | 선택 사항 |
|
|
SAML 클라이언트 키 저장소의 개인 키 및 인증서의 별칭입니다. 예를 들면 | True |
|
|
키 저장소 파일의 이름입니다. 예를 들어 | True |
|
|
클라이언트 키 저장소가 포함된 디렉터리입니다. 예를 들면 | True |
|
|
키 저장소 암호입니다. 예: | True |
|
|
로그 아웃 페이지. 예를 들면 | True |
|
|
서명의 유효성을 검사하려면 | 선택 사항 |
|
|
undertow 및 Cryostat 하위 시스템을 보호하는 데 사용되는 보안 도메인의 이름입니다. | 선택 사항 |
|
| 서버 인증서가 포함된 truststore 파일 이름입니다. | 선택 사항 |
|
| 신뢰 저장소 내의 인증서 별칭입니다. | 선택 사항 |
|
| truststore가 포함된 디렉터리입니다. | 선택 사항 |
|
|
truststore 및 인증서의 암호입니다. 예를 들면 | 선택 사항 |
|
|
SSO 서버의 URL입니다. 예를 들어 < | True |
|
|
Keycloak 영역과 상호 작용하고 클라이언트를 생성하고 등록할 수 있는 권한이 있는 사용자의 사용자 이름입니다. 예를 들어 | True |
3.6.7. JBoss EAP 서버의 경로 검색 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 서버의 경로 검색 기능을 사용하여 서버의 성능을 최적화하고 지정된 네임스페이스에서 경로 구성을 간소화할 수 있습니다. 이 기능은 특히 HOSTNAME_HTTPS 변수가 지정되지 않은 경우 보다 원활한 운영 환경을 제공하기 위해 서버 효율성을 개선하는 데 중요합니다.
HOSTNAME_HTTPS 변수가 설정되지 않은 경우 JBoss EAP 서버는 경로 검색을 자동으로 시도합니다. 경로 검색을 활성화하려면 필요한 권한을 생성해야 합니다.
oc create role routeview --verb=list --resource=route -n YOUR_NAME_SPACE oc policy add-role-to-user routeview system:serviceaccount:YOUR_NAME_SPACE:default --role-namespace=YOUR_NAME_SPACE -n YOUR_NAME_SPACE
oc create role routeview --verb=list --resource=route -n YOUR_NAME_SPACE
oc policy add-role-to-user routeview system:serviceaccount:YOUR_NAME_SPACE:default --role-namespace=YOUR_NAME_SPACE -n YOUR_NAME_SPACE
4장. Helm 차트를 사용하여 OpenShift에 JBoss EAP 애플리케이션을 빌드 및 배포 링크 복사링크가 클립보드에 복사되었습니다!
Helm은 OpenShift에서 JBoss EAP 애플리케이션을 빌드, 배포 및 유지 관리할 수 있는 오픈 소스 패키지 관리자입니다. JBoss EAP 8.0에서 Helm 차트는 OpenShift 템플릿을 대체합니다.
4.1. Helm 차트 사용 사례 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 8.0과 함께 Helm 차트를 사용하여 다음을 수행할 수 있습니다.
- OpenShift S2I(Source-to-Image)를 사용하여 Git 리포지토리에서 호스팅되는 Maven 프로젝트에서 애플리케이션을 빌드합니다.
- OpenShift 클러스터(TLS 구성, 공용 경로)를 사용하여 OpenShift에 애플리케이션 이미지를 배포하여 애플리케이션을 노출합니다.
- Helm 차트로 애플리케이션 이미지를 빌드하고 JBoss EAP Operator를 사용하여 이미지를 배포합니다.
- 다른 방법을 사용하여 JBoss EAP의 애플리케이션 이미지를 빌드하고 Helm 차트를 사용하여 애플리케이션 이미지를 배포합니다.
4.2. OpenShift에서 JBoss EAP에 대한 Helm 차트 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션의 특정 설정이 포함된 YAML 파일을 수정하여 JBoss EAP 애플리케이션의 Helm 차트를 사용자 지정할 수 있습니다.
YAML 파일에는 다음 두 가지 주요 섹션이 있습니다.
-
빌드구성입니다. -
배포구성입니다.
YAML 보기를 통해 구성을 선택하면 OpenShift Development Console에서 직접 값 파일 파일을 편집하여 업데이트된 구성으로 Helm 릴리스를 업그레이드할 수 있습니다.
4.3. S2I를 사용하여 JBoss EAP 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션 pom.xml 에서 Cryostat-maven-plugin 을 사용하여 JBoss EAP 서버를 프로비저닝합니다.
build.s2i.featurePacks,build.s2i.galleonLayers 및 build.s2i.channels 필드가 더 이상 사용되지 않습니다.
4.4. Helm 차트를 사용하여 JBoss EAP 애플리케이션 빌드 및 배포 링크 복사링크가 클립보드에 복사되었습니다!
빌드 및 배포 값을 구성하여 Helms 차트를 사용하여 JBoss EAP 애플리케이션을 빌드 할 수 있습니다. 빌드 구성에서 애플리케이션 코드를 호스팅하는 Git 리포지토리에 URL을 제공해야 합니다. 출력은 빌드된 애플리케이션 이미지가 포함된 ImageStreamTag 리소스입니다.
애플리케이션을 배포하려면 빌드된 애플리케이션 이미지가 포함된 ImageStreamTag 리소스를 제공해야 합니다. 출력은 OpenShift 내부 및 외부에서 애플리케이션에 액세스하는 데 사용할 수 있는 배포된 애플리케이션 및 기타 관련 리소스입니다.
사전 요구 사항
- OpenShift 개발 콘솔에 로그인했습니다.
- Git 리포지토리에서 호스팅되는 JBoss EAP 애플리케이션이 있습니다.
- 애플리케이션은 Maven 프로젝트입니다.
-
org.jboss.eap.plugins:eap-maven-plugin을 사용하여 JBoss EAP 8.0 서버를 프로비저닝하도록 애플리케이션을 구성했습니다.
프로세스
소스 리포지토리에서 애플리케이션 이미지를 빌드합니다.
build: uri: <git repository URL of your application>
build: uri: <git repository URL of your application>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항:
빌드섹션에 보안을 입력합니다.build: sourceSecret: <name of secret login to your Git repository>
build: sourceSecret: <name of secret login to your Git repository>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
- 애플리케이션이 성공적으로 배포된 경우 OpenShift 개발 콘솔의 Helm 릴리스 옆에 배포된 배지가 표시되어야 합니다.
4.5. OpenShift 개발 콘솔을 사용하여 애플리케이션 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Development Console에서 빌드 섹션을 구성하여 Helm 차트를 사용하여 JBoss EAP 애플리케이션 이미지를 빌드 할 수 있습니다.
다른 메커니즘에 의해 애플리케이션 이미지를 빌드한 경우 build.enabled 필드를 false 로 설정하여 Helm 차트의 빌드 부분을 건너뛸 수 있습니다.
Git 리포지토리를 참조하는 Git URL을 사용하여 build.url 필드를 지정해야 합니다.
4.6. 애플리케이션 이미지 배포 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 개발 콘솔에서 배포 설정을 구성하여 Helm 차트를 사용하여 JBoss EAP 애플리케이션을 배포할 수 있습니다.
다른 메커니즘을 사용하여 애플리케이션 이미지를 빌드한 경우 build.deploy 필드를 false 로 설정하여 Helm 차트의 배포 구성을 건너뛸 수 있습니다.
4.6.1. Helm 차트의 영구 데이터 스토리지를 위한 OpenShift 볼륨 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 볼륨을 사용하면 컨테이너가 클라우드 스토리지, NFS(네트워크 파일 시스템) 또는 호스트 시스템을 비롯한 다양한 소스의 데이터를 저장하고 공유할 수 있습니다. OpenShift 패키지 관리자인 Helm 차트를 사용하여 일관되고 재현 가능한 방식으로 애플리케이션을 배포할 수 있습니다. Helm 차트에 볼륨 마운트를 추가하면 애플리케이션이 배포 간에 데이터를 유지할 수 있습니다.
4.6.2. Helm 차트를 사용하여 볼륨 마운트 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 JBoss EAP 8.0에서 Helm 차트를 사용하여 시크릿 을 볼륨으로 마운트하는 방법을 설명합니다. 또한 이를 사용하여 ConfigMap 을 마운트할 수도 있습니다. 이 작업을 통해 애플리케이션은 데이터에 안전하게 액세스하고 사용할 수 있으므로 무단 액세스 또는 변조로부터 보호할 수 있습니다.
예를 들어 보안 을 볼륨으로 마운트하면 시크릿에 저장한 민감한 데이터는 보안이 마운트된 배포를 실행하는 POD에 파일로 표시됩니다.
사전 요구 사항
-
시크릿을 생성했습니다. 예를 들어keystore.jks와 같은 파일을 참조하는 Cryostat-app-secret이라는 시크릿을 생성했습니다. -
컨테이너의 파일 시스템에서 시크릿을 마운트할 위치를 확인했습니다. 예를 들어
/etc/jgroups-encrypt-secre-secret-volume디렉터리는keystore.jks와 같은 시크릿 파일이 마운트된 위치입니다.
프로세스
deploy.volumes필드에 볼륨을 지정하고 사용할 시크릿을 구성합니다.볼륨이름과시크릿의secretName을 제공해야 합니다.volumes: - name: eap-jgroups-keystore-volume secret: secretName: eap-app-secretvolumes: - name: eap-jgroups-keystore-volume secret: secretName: eap-app-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 배포 구성에서
deploy.volumeMounts를 사용하여 파일 시스템에 볼륨을 마운트합니다.volumeMounts: - name: eap-jgroups-keystore-volume mountPath: /etc/jgroups-encrypt-secret-volume readOnly: truevolumeMounts: - name: eap-jgroups-keystore-volume mountPath: /etc/jgroups-encrypt-secret-volume readOnly: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod가 시작되면 컨테이너는 /etc/jgroups-encrypt-secret-volume/ 파일을 마운트합니다.
keystore.jks 위치에 keystore.jks
5장. 환경 변수 및 모델 표현식 확인 링크 복사링크가 클립보드에 복사되었습니다!
5.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 운영 체제에서 환경 변수를 구성하는 방법에 대한 몇 가지 기본 지식이 있습니다.
OpenShift Container Platform에서 환경 변수를 구성하려면 다음 사전 요구 사항을 충족해야 합니다.
- 이미 OpenShift를 설치하고 OpenShift CLI("oc")를 설정했습니다. oc에 대한 자세한 내용은 OpenShift CLI 시작하기를 참조하십시오.
- Helm 차트를 사용하여 OpenShift에 애플리케이션을 배포했습니다. Helm 차트에 대한 자세한 내용은 JBoss EAP의 Helm 차트를 참조하십시오.
5.2. 관리 모델 표현식을 해결하기 위한 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
관리 모델 표현식을 해결하고 OpenShift Container Platform에서 JBoss EAP 8.0 서버를 시작하려면 관리 CLI(명령줄 인터페이스)에 환경 변수를 추가하거나 Java 시스템 속성을 설정할 수 있습니다. 둘 다 사용하는 경우 JBoss EAP는 환경 변수가 아닌 Java 시스템 속성을 관찰하고 사용하여 관리 모델 표현식을 확인합니다.
시스템 속성 환경 변수 매핑
이 관리 표현식 ${my.example-expr} 이 있다고 가정합니다. JBoss EAP 서버가 문제를 해결하려고 하면 my.example-expr 라는 시스템 속성을 확인합니다.
- 서버가 이 속성을 찾으면 해당 값을 사용하여 표현식을 확인합니다.
- 이 속성을 찾을 수 없으면 서버가 계속 검색합니다.
다음으로 서버가 시스템 속성 my.example-expr 를 찾을 수 없다고 가정하면 my.example-expr 가 모든 대문자로 자동 변경되고 영숫자가 아닌 모든 문자(_): MY_EXAMPLE_EXPR. 그런 다음 JBoss EAP는 해당 이름의 환경 변수를 확인합니다.
- 서버가 이 변수를 발견하면 해당 값을 사용하여 표현식을 확인합니다.
- 이 변수를 찾을 수 없으면 서버가 계속 검색합니다.
원래 표현식이 접두사 env. 로 시작하는 경우 JBoss EAP는 접두사를 제거하여 환경 변수를 확인한 다음 환경 변수 이름만 찾습니다. 예를 들어 env.example 표현식의 경우 JBoss EAP는 예제 환경 변수를 찾습니다.
이러한 검사 중 어느 것도 원래 표현식을 확인하기 위해 속성 또는 변수를 찾지 못하면 JBoss EAP는 표현식에 기본값이 있는지 여부를 찾습니다. 이 경우 이 기본값은 표현식을 확인합니다. 그렇지 않은 경우 JBoss EAP에서 표현식을 확인할 수 없습니다.
두 개의 서버 예
한 서버에서 JBoss EAP는 이 관리 리소스를 정의한다고 가정합니다. < socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}" > . 구성 파일을 편집하는 대신 다른 포트 오프셋으로 두 번째 서버를 실행하려면 다음 중 하나를 수행합니다.
-
두 번째 서버에서 .
/standalone.sh -DJava 시스템 속성을 설정합니다.jboss.socket.binding.port-offset=100 의 값을 확인하도록 jboss.socket.binding.port-offset -
두 번째 서버의 값을 확인하도록 JBOSS_SOCKET_PORT_OFFSET 환경 변수를 설정합니다.
.JBOSS_SOCKET_BINDING_PORT_OFFSET=100 ./standalone.sh
5.3. OpenShift Container Platform에서 환경 변수 구성 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 8.0을 사용하면 관리 모델 표현식을 해결하기 위해 환경 변수를 구성할 수 있습니다. 환경 변수를 사용하여 OpenShift에서 실행 중인 JBoss EAP 서버의 구성을 조정할 수도 있습니다.
Pod 템플릿을 사용하는 리소스에 환경 변수 및 옵션을 설정합니다.
oc set env <object-selection> KEY_1=VAL_1 ... KEY_N=VAL_N [<set-env-options>] [<common-options>]
$ oc set env <object-selection> KEY_1=VAL_1 ... KEY_N=VAL_N [<set-env-options>] [<common-options>]
| 옵션 | 설명 |
|---|---|
|
| 환경 변수에 지정된 키-값 쌍을 설정합니다. |
|
| 기존 환경 변수 업데이트를 확인합니다. |
Pod 템플릿을 사용하는 Kubernetes 워크로드 리소스는 다음과 같습니다.
-
Deployment -
ReplicaSet -
StatefulSet -
DaemonSet -
작업 -
CronJob
환경 변수를 구성한 후 JBoss EAP 관리 콘솔은 관련 포드에 대한 세부 정보에 해당 변수를 표시해야 합니다.
5.4. 환경 변수를 사용하여 관리 속성 덮어쓰기 링크 복사링크가 클립보드에 복사되었습니다!
Java 시스템 속성 또는 환경 변수를 사용하여 표현식에 정의된 관리 특성을 확인할 수 있지만 표현식을 사용하지 않는 경우에도 다른 속성을 수정할 수도 있습니다.
JBoss EAP 서버 구성을 서버 환경에 보다 쉽게 조정하려면 환경 변수를 사용하여 구성 파일을 편집하지 않고도 관리 속성의 값을 재정의할 수 있습니다. JBoss EAP 버전 8.0부터 사용할 수 있는 이 기능은 다음과 같은 이유로 유용합니다.
- JBoss EAP는 가장 일반적인 관리 특성에 대해서만 표현식을 제공합니다. 이제 정의된 표현식이 없는 속성 값을 변경할 수 있습니다.
- 일부 관리 속성은 JBoss EAP 서버를 미리 알 수 없는 데이터베이스 또는 구성에 저장할 수 없는 값(예: 데이터베이스 자격 증명)과 같은 다른 서비스와 연결합니다. 환경 변수를 사용하면 JBoss EAP 서버가 실행되는 동안 이러한 속성의 구성을 지연할 수 있습니다.
이 기능은 JBoss EAP 버전 8.0 OpenShift 런타임 이미지부터 기본적으로 활성화됩니다. 다른 플랫폼에서 활성화하려면 WILDFLY_OVERRIDING_ENV_VARS 환경 변수를 임의의 값으로 설정해야 합니다(예: WILDFLY_OVERRIDING_ENV_VARS=1 ).
유형이 LIST,OBJECT 또는 PROPERTY 인 관리 속성을 재정의할 수 없습니다.
사전 요구 사항
- 이제 재정의할 관리 속성이 정의되어 있어야 합니다.
프로세스
환경 변수로 관리 특성을 재정의하려면 다음 단계를 완료합니다.
-
변경할 리소스 및 속성의 경로를 식별합니다. 예를 들어
/subsystem=undertow/server=default-server/http-listener=default에 대해proxy-address-forwarding속성의 값을true로 설정합니다. 다음과 같이 리소스 주소와 관리 특성을 매핑하여 이 속성을 재정의하는 환경 변수의 이름을 생성합니다.
-
리소스 주소에서 첫 번째 슬래시(
)를/subsystem=undertow/server=default-server/http-listener=default하위 시스템=undertow/server=default-server/http-listener=default로 제거합니다. -
두 개의 밑줄(__)과 속성 이름을 추가합니다(예:
subsystem=undertow/server=default-listener=default__proxy-address-forwarding). -
영숫자가 아닌 모든 문자를 밑줄(_)로 바꾸고
SUBSYSTEM_UNDERTOW_SERVER_DEFAULT_SERVER_HTTP_LISTENER_DEFAULT__PROXY_ADDRESS_FORWARDING의 전체 코드 행을 삽입합니다.
-
리소스 주소에서 첫 번째 슬래시(
-
환경 값
SUBSYSTEM_UNDERTOW_SERVER_SERVER_HTTP_LISTENER_DEFAULT__PROXY_ADDRESS_FORWARDING=true를 설정합니다.
이러한 값은 실제 구성 값으로 교체해야 하는 예입니다.
6장. Maven 플러그인을 사용하여 JBoss EAP 서버 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP Maven 플러그인을 사용하면 필요한 기능을 서버에 제공하는 Galleon 계층만 포함하여 요구 사항에 따라 서버를 구성할 수 있습니다.
6.1. JBoss EAP Maven 플러그인 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP Maven 플러그인은 Galleon 트리밍 기능을 사용하여 서버의 크기와 메모리 공간을 줄입니다. JBoss EAP Maven 플러그인은 JBoss EAP CLI 스크립트 파일의 실행을 지원하여 서버 구성을 사용자 지정할 수 있습니다. CLI 스크립트에는 서버 구성을 위한 CLI 명령 목록이 포함되어 있습니다.
Index of /ga/org/jboss/eap/plugins/eap-maven-plugin 에서 사용할 수 있는 Maven 리포지토리에서 최신 Maven 플러그인 버전을 검색할 수 있습니다. Maven 프로젝트에서 pom.xml 파일에는 JBoss EAP Maven 플러그인의 구성이 포함되어 있습니다.
JBoss EAP Maven 플러그인은 서버를 프로비저닝하고 WAR와 같은 패키지 애플리케이션을 Maven 실행 중에 프로비저닝된 서버에 배포합니다. 애플리케이션이 배포되는 프로비저닝된 서버는 대상/서버 디렉터리에 있습니다. JBoss EAP Maven 플러그인에서는 다음과 같은 기능도 제공합니다.
대상/서버의 서버는 지원되지 않으며 디버깅 또는 개발 목적으로만 사용할 수 있습니다.
-
org.jboss.eap:wildfly-ee-galleon-pack및org.jboss.eap.cloud:eap-cloud-galleon-pack기능 팩과 일부 계층을 사용하여 서버 구성 파일을 사용자 정의할 수 있습니다. - CLI 스크립트 명령을 서버에 적용합니다.
-
키 저장소파일과 같은 서버 설치에 추가 파일을 추가할 수 있습니다.
6.2. Maven을 사용하여 자카르타 EE 10 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
액세스할 때 "Hello World!"를 출력하는 애플리케이션을 생성합니다.
사전 요구 사항
- JDK 21을 설치했습니다.
- Maven 3.6 이상을 설치했습니다. 자세한 내용은 Apache Maven 다운로드를 참조하십시오.
프로세스
Maven 프로젝트를 설정합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서 GROUP_ID 는 프로젝트의
groupId이고 ARTIFACT_ID 는 프로젝트의artifactId입니다.jboss-eap-eeBOM에서 Jakarta EE 아티팩트의 버전을 자동으로 관리하도록 Maven을 구성하려면pom.xml파일의 <dependencyManagement> 섹션에 BOM을 추가합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고-
<
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/bom/jboss-eap-ee/.
-
<
다음 예와 같이 BOM에서 관리하는 서블릿 API 아티팩트를 프로젝트
pom.xml파일의 <dependencies> 섹션에 추가합니다.<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> </dependency><dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 내용으로 Java 파일
TestServlet.java를 만들고 파일을APPLICATION_ROOT/src/main/java/com/example/simple/디렉터리에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이제 이 애플리케이션을 JBoss EAP에 배포하거나 이 애플리케이션을 업데이트하여 Maven 플러그인을 사용하여 사용자 지정 프로비저닝된 JBoss EAP 서버에 배포할 수 있습니다.
6.3. Maven 플러그인을 사용하여 JBoss EAP 서버 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션의 pom.xml 을 업데이트하여 Maven 플러그인과 함께 패키지하고 사용자 지정 프로비저닝된 JBoss EAP 서버에 배포합니다. 그런 다음 OpenShift의 사용자 지정 프로비저닝 JBoss EAP 서버에서 실행되는 애플리케이션을 배포할 수 있습니다.
사전 요구 사항
- JBoss EAP Maven 플러그인 및 JBoss EAP Maven 아티팩트가 로컬 또는 원격 Maven 리포지토리에서 액세스할 수 있는지 확인합니다.
- JDK 21을 설치했습니다.
Maven이 설치되어 있어야 합니다. 자세한 내용은 Apache Maven 다운로드를 참조하십시오.
참고JDK 17 및 Maven 3.8.5 또는 이전 Maven 버전을 사용하는 경우 최신 Maven WAR 플러그인을 사용합니다.
- Jakarta EE 10 애플리케이션을 위한 Maven 프로젝트를 생성했습니다. 자세한 내용은 Maven을 사용하여 자카르타 EE 10 애플리케이션 생성을 참조하십시오.
프로세스
pom.xml파일에 다음 콘텐츠를 추가하여 원격 리포지토리에서 JBoss EAP BOM 및 JBoss EAP Maven 플러그인을 검색하도록 Maven을 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow pom.xml파일의 <build> 요소에 다음 내용을 추가합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<version>1.0.0.Final-redhat-00014</version>은 JBoss EAP Maven 플러그인의 예제 버전입니다. JBoss EAP Maven 플러그인 릴리스에 대한 자세한 내용은 Red Hat Maven 리포지토리를 참조하십시오. https://maven.repository.redhat.com/earlyaccess/all/org/jboss/eap/plugins/eap-maven-plugin/.- 2
- 이는 JBoss EAP 서버 아티팩트가 정의된 JBoss EAP 8.0 채널을 지정합니다.
- 3
- JBoss EAP 채널에서 이 기능 팩의 버전을 검색할 수 있습니다. Galleon
기능 팩에는 트리밍 JBoss EAP서버 프로비저닝을 위한 클라우드서버와 같은 Galleon 계층이 포함되어 있습니다. - 4
- 이 기능 팩은 클라우드의 서버 Galleon 계층을 조정합니다. 이 기능 팩을 사용하여 OpenShift용 애플리케이션을 빌드해야 합니다.
- 5
- 이 Galleon 계층은 클라우드에서 JBoss EAP 애플리케이션을 실행할 때 필요한 기능을 서버에 프로비저닝합니다.
- 6
- 이 구성 옵션을 사용하면 HTTP 루트 컨텍스트에 배포를 등록할 수 있습니다.
- 7
- 이 플러그인 목표를 사용하면 서버를 프로비저닝하고, 애플리케이션을 배포하며, 사용자 지정 구성된 CLI 스크립트를 적용하고, 사용자 지정 콘텐츠를 서버 설치에 복사할 수 있습니다.
애플리케이션을 패키징합니다.
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 디렉터리
target/server에는 디버깅 또는 개발 목적에 사용할 준비가 된 서버 및 애플리케이션이 포함되어 있습니다. JBoss EAP S2I 빌드 컨텍스트에서 JBoss EAP maven-plugin에서 프로비저닝한 서버는/opt/server위치의 JBoss EAP 이미지에 설치됩니다. 자세한 내용은 OpenShift에서 S2I(Source-to-Image)를 사용하여 애플리케이션 이미지 빌드 를 참조하십시오.
디버깅이 활성화된 (-X 옵션)와 함께 mvn package 명령을 사용하는 경우 -Dorg.slf4j.simpleLogger.log.com.networknt.schema=off 를 포함하여 스키마 검증 중에 과도한 디버그 로깅을 방지합니다.
검증
-
프로비저닝된 하위 시스템 및 애플리케이션 배포가 포함된 생성된 서버 구성 파일
target/server/standalone/configuration/standalone.xml을 확인할 수 있습니다.
배포가 포함된 JBoss EAP 서버가 프로비저닝되었습니다.
6.4. Galleon 프로비저닝 파일 링크 복사링크가 클립보드에 복사되었습니다!
프로비저닝 파일은 galleon 하위 디렉터리에 저장할 수 있는 이름이 provisioning.xml 인 XML 파일입니다. 이를 사용하는 것은 JBoss EAP Maven 플러그인에서 기능 팩 및 계층을 구성하는 대안입니다. provisioning.xml 파일을 구성하여 프로비저닝 프로세스를 미세 조정할 수 있습니다.
다음 코드는 cloud-server 계층을 기반으로 JBoss EAP 서버를 프로비저닝하는 데 사용할 수 있는 프로비저닝 파일 콘텐츠를 보여줍니다.
JBoss EAP 기능 팩에는 버전이 없으며 Maven 플러그인의 구성된 채널에서 버전이 검색됩니다.
- 1
- 이 요소는 JBoss EAP 채널에서 검색된 JBoss EAP 기능 팩을 프로비저닝하도록 프로비저닝 프로세스에 지시합니다.
- 2
- 이 요소는 기본 구성을 제외하도록 프로비저닝 프로세스에 지시합니다. JBoss EAP 서버 설치에서
standalone.xml및standalone-ha.xml과 같은 기본 구성을 검색할 수 있습니다. JBoss EAP Maven 플러그인에서 JBoss EAP 서버를 프로비저닝하는 경우 구성된 Galleon 사용자를 기반으로 단일 서버 구성을 생성합니다. 옵션을false로 설정하면 추가 서버 구성이 생성되지 않습니다.inherit=true설정은default-configs및패키지둘 다에서 지원되지 않습니다. - 3
- 이 요소는 기본 패키지를 제외하도록 프로비저닝 프로세스에 지시합니다.
- 4
- 이 요소는 JBoss EAP 클라우드 기능 팩을 프로비저닝하도록 프로비저닝 프로세스에 지시합니다. 하위 요소는 프로세스에서 기본 구성 및 기본 패키지를 제외하도록 지시합니다.
- 5
- 이 요소는 사용자 정의 독립 실행형 구성을 생성하도록 프로비저닝 프로세스에 지시합니다. 이 구성에는 JBoss EAP 기능 팩에 정의된
클라우드 서버기본 계층과 JBoss EAP 클라우드 기능 팩에 의해 OpenShift에 맞게 조정된 클라우드 서버 기본 계층이 포함됩니다. - 6
- 이 요소는 JBoss EAP 모듈 프로비저닝을 최적화하도록 프로비저닝 프로세스에 지시합니다.
6.5. Maven 플러그인 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
다음 구성 매개변수 목록을 설정하여 Cryostat -maven-plugin Maven 플러그인 을 구성할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 채널 | list | 채널 YAML 파일 참조 목록입니다. 채널 파일에는 JBoss EAP 서버 아티팩트의 버전이 포함되어 있습니다. 채널 YAML 파일을 식별하는 방법은 다음 두 가지가 있습니다.
|
|
| list |
제외할 Galleon 계층 목록입니다. |
|
| list | 콘텐츠가 프로비저닝된 서버에 복사되는 디렉터리 목록입니다. 디렉터리의 절대 경로 또는 상대 경로를 사용할 수 있습니다. 상대 경로는 프로젝트 기본 디렉터리를 기준으로 해야 합니다. |
|
| list |
계층과 결합할 수 있는 설치 기능 팩 구성 목록입니다. |
|
| 문자열 |
배포할 애플리케이션의 파일 이름입니다. 기본값은 |
|
| map |
서버를 프로비저닝할 때 특정 Galleon 옵션을 설정할 수 있습니다. 동일한 Maven 세션에서 다수의 서버를 빌드하는 경우 <galleon-options> <jboss-fork-embedded>true</jboss-fork-embedded> </galleon-options>
|
|
| list |
프로비저닝할 Galleon 계층 목록입니다. |
|
| 문자열 |
계층에서 생성된 구성 파일의 이름입니다. 기본값은 |
|
| boolean |
프로비저닝이 끝날 때 프로비저닝 시간을 기록할지 여부를 지정합니다. 기본값은 |
|
| 문자열 | 배포에 사용되는 이름입니다. |
|
| boolean |
플러그인이 아티팩트를 확인할 때 오프라인 모드를 사용할지 여부를 지정합니다. 오프라인 모드에서 플러그인은 아티팩트 확인을 위해 로컬 Maven 리포지토리를 사용합니다. 기본값은 |
|
| boolean |
|
|
| list | 실행할 CLI 스크립트 및 명령 목록입니다. 스크립트 파일이 절대적이지 않은 경우 프로젝트 기본 디렉터리를 기준으로 해야 합니다. 다음과 같은 방법으로 CLI 실행을 구성합니다. |
|
| 문자열 |
서버를 프로비저닝할 디렉터리의 경로입니다. 이는 절대 경로이거나 |
|
| 파일 |
사용할 |
|
| boolean |
프로비저닝 상태를 |
|
| 문자열 |
배포의 runtime-name입니다. 기본값은 배포 파일 이름(예: |
|
| 문자열 |
배포 중에 사용할 서버 구성의 이름입니다. |
|
| boolean |
목표를 건너뛰려면 |
|
| 문자열 |
생성된 CLI 프로세스에 대해
|
6.6. JBoss EAP 8.0에서 Cryo stat-datasources-galleon-pack 에 대한 지원을 활성화하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
Cryo stat-data-sources-galleon-pack Galleon 기능 팩을 사용하면 데이터베이스에 연결할 수 있는 JBoss EAP 8.0 서버를 프로비저닝할 수 있습니다.
일부 데이터베이스는 지원되지 않습니다.
또한 이 기능 팩은 JBoss EAP 8.0 Galleon 기능 팩과 함께 프로비저닝할 수 있는 다양한 데이터베이스에 대한 JDBC 드라이버 및 데이터 소스를 제공합니다. 이 기능 팩에 정의된 Galleon 계층은 데코레이터 계층입니다. 즉, JBoss EAP 기본 계층 외에도 프로비저닝해야 합니다.
datasources-web-server 기본 계층은 기능 팩이 정의된 Galleon 계층을 프로비저닝할 때 사용할 최소 기본 계층입니다.
6.7. 지원되는 드라이버 및 데이터 소스 링크 복사링크가 클립보드에 복사되었습니다!
Galleon 기능 팩이 지원하는 각 데이터베이스에 대해 서로에 따라 빌드되는 Galleon 계층을 제공합니다.
-
postgresql-driver -
postgresql-datasource -
mssqlserver-datasource -
mssqlserver-driver -
oracle-datasource -
oracle-driver
| 레이어 | 설명 |
|---|---|
|
| 이렇게 하면 드라이버의 JBoss EAP 모듈이 설치되고 서버 구성의 데이터 소스 하위 시스템에 드라이버 리소스를 추가합니다. |
|
|
이는 데이터 소스를 추가하기 위해 |
기능 팩에 특정 드라이버 버전이 포함되어 있지 않습니다. 서버를 프로비저닝하기 전에 드라이버 버전을 지정해야 합니다.
예제
POSTGRESQL_DRIVER_VERSION="42.2.19"- 드라이버별 환경 변수는 특정 드라이버 설명서 내에 정의됩니다.
6.8. JBoss EAP Maven 플러그인을 사용하여 JDBC 드라이버 및 데이터 소스와 함께 서버 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
Galleon 기능 팩을 사용하여 OpenShift에서 JBoss EAP 서버를 프로비저닝할 수 있습니다.
이 절차에서는 JBoss EAP 8.0용 OpenShift에서 JBoss EAP 서버를 프로비저닝하는 방법만 보여줍니다.
사전 요구 사항
- 이미 OpenShift를 설치하고 OpenShift CLI("oc")를 설정했습니다. 자세한 내용은 OpenShift CLI 시작하기를 참조하십시오.
- JBoss EAP maven 플러그인 사용 방법에 대한 기본 지식이 있습니다. 자세한 내용은 JBoss EAP Maven 플러그인을 참조하십시오.
프로세스
데이터 소스 기능 팩의 Maven 좌표(GroupId 및 artifactId)를 JBoss EAP maven 플러그인 구성에 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7장. JBoss EAP 서버 및 애플리케이션 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 이미지용 JBoss EAP는 Java 애플리케이션과의 기본 사용을 위해 사전 구성되어 있습니다. 그러나 이미지 내부에 JBoss EAP 인스턴스를 구성할 수 있습니다. 권장되는 방법은 OpenShift S2I 프로세스를 사용하고 Helm 차트에서 환경 변수를 설정하여 JVM을 조정하는 것입니다.
컨테이너를 다시 시작하거나 종료할 때 실행 중인 컨테이너에 대한 구성 변경 사항이 손실됩니다.
여기에는 기존 JBoss EAP 설치에 포함된 스크립트를 사용하여 수행된 구성 변경(예: add-user.sh 또는 관리 CLI)이 포함됩니다.
OpenShift S2I 프로세스를 환경 변수와 함께 사용하여 OpenShift EAP 내부의 JBoss EAP 인스턴스 구성을 변경하는 것이 좋습니다.
7.1. JVM 기본 메모리 설정 링크 복사링크가 클립보드에 복사되었습니다!
다음 환경 변수를 사용하여 자동으로 계산된 JVM 설정을 수정할 수 있습니다. 이러한 변수는 유효한 컨테이너 메모리 제한을 정의할 때 기본 메모리 크기가 자동으로 계산될 때만 사용됩니다.
| 환경 변수 | 설명 |
|---|---|
|
|
이 환경 변수는 더 이상 사용되지 않습니다. JVM 인수 참고
자동 계산을 비활성화하려면 |
|
|
|
|
|
JVM에 추가 옵션을 제공하는 환경 변수(예: 참고
|
|
|
이 환경 변수는 더 이상 사용되지 않습니다. |
7.2. JVM 가비지 컬렉션 설정 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift의 EAP 이미지에는 가비지 컬렉션 및 가비지 컬렉션 로깅 모두에 대한 설정이 포함되어 있습니다.
가비지 컬렉션 설정
-XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+ExitOnOutOfMemoryError
가비지 컬렉션 로깅 설정
-Xlog:gc*:file=/opt/server/standalone/log/gc.log:time,uptimemillis:filecount=5,filesize=3M
7.3. JVM 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
이러한 환경 변수를 사용하여 OpenShift 이미지의 EAP에서 JVM을 구성합니다.
| 변수 이름 | 예제 | 기본값 | JVM 설정 | 설명 |
|---|---|---|---|---|
| JAVA_OPTS | -verbose:class | 기본값이 없음 | multiple |
|
| JAVA_OPTS_APPEND | -Dsome.property=value | 기본값이 없음 | multiple |
|
| JAVA_MAX_MEM_RATIO | 50 | 80 | -Xmx |
|
| JAVA_INITIAL_MEM_RATIO | 25 | -Xms | -Xms |
|
| JAVA_MAX_INITIAL_MEM | 4096 | 4096 | -Xms |
|
| JAVA_DIAGNOSTICS | true | false(비활성화됨) |
|
이벤트가 발생할 때 표준 출력에 진단 정보를 포함하려면 이 변수의 값을 |
| DEBUG | true | false | -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n | 원격 디버깅을 활성화합니다. |
| DEBUG_PORT | 8787 | 8787 | -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n | 디버깅에 사용되는 포트를 지정합니다. |
| GC_MIN_HEAP_FREE_RATIO | 20 | 10 | -XX:MinHeapFreeRatio | 확장을 방지하기 위해 가비지 컬렉션 후 사용 가능한 최소 힙 백분율입니다. |
| GC_MAX_HEAP_FREE_RATIO | 40 | 20 | -XX:MaxHeapFreeRatio | 축소를 방지하기 위해 가비지 컬렉션 후 사용 가능한 최대 힙 백분율입니다. |
| GC_TIME_RATIO | 4 | 4 | -XX:GCTimeRatio | 가비지 컬렉션 외부에서 보낸 시간(예: 애플리케이션 실행 시 소요된 시간)을 가비지 수집에 소비한 시간으로 지정합니다. |
| GC_ADAPTIVE_SIZE_POLICY_WEIGHT | 90 | 90 | -XX:AdaptiveSizePolicyWeight | 현재 가비지 컬렉션 시간과 이전 가비지 컬렉션 시간에 지정된 가중치입니다. |
| GC_METASPACE_SIZE | 20 | 96 | -XX:MetaspaceSize | 초기 메타 공간 크기입니다. |
| GC_MAX_METASPACE_SIZE | 100 | 기본값이 없음 | -XX:MaxMetaspaceSize | 최대 메타 공간 크기입니다. |
| GC_CONTAINER_OPTIONS | -XX:+UserG1GC | -XX:-UseParallelGC | -XX:-UseParallelGC | 사용할 Java 가비지 컬렉션을 지정합니다. 변수 값은 JRE(Java Runtime Environment) 명령줄 옵션을 사용하여 지정됩니다. 지정된 JRE 명령이 기본값을 덮어씁니다. |
다음 환경 변수는 더 이상 사용되지 않습니다.
-
JAVA_OPTIONS:JAVA_OPTS를 사용합니다. -
INITIAL_HEAP_PERCENT:JAVA_INITIAL_MEM_RATIO를 사용합니다. -
CONTAINER_HEAP_PERCENT:JAVA_MAX_MEM_RATIO를 사용합니다.
7.4. 기본 데이터 소스 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 8.0에서는 데이터 소스 ExampleDS 를 사용할 수 없습니다.
일부 빠른 시작에는 이 데이터 소스가 필요합니다.
-
cmt -
스레드 실행
고객이 개발한 애플리케이션에는 ExampleDS 데이터 소스도 필요할 수 있습니다.
기본 데이터 소스가 필요한 경우 JBoss EAP 서버를 프로비저닝할 때 이를 포함하도록 ENABLE_GENERATE_DEFAULT_DATASOURCE 환경 변수를 사용합니다.
ENABLE_GENERATE_DEFAULT_DATASOURCE=true
ENABLE_GENERATE_DEFAULT_DATASOURCE=true
이 환경 변수는 cloud-default-config galleon 계층을 사용하는 경우에만 작동합니다.
8장. OpenShift용 JBoss EAP의 기능 트리밍 링크 복사링크가 클립보드에 복사되었습니다!
서버를 트리밍하면 프로비저닝된 서버의 보안 노출을 줄이거나 메모리 풋프린트를 줄여 마이크로 서비스 컨테이너에 더 적합할 수 있습니다.
JBoss EAP가 포함된 이미지를 빌드할 때 이미지에 포함할 JBoss EAP 기능 및 하위 시스템을 제어할 수 있습니다. S2I(Source-to-Image) 빌드 프로세스 중에 새 애플리케이션을 생성할 때 JBoss EAP Maven 플러그인을 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 Maven 플러그인을 사용하여 JBoss EAP 서버 프로비저닝을 참조하십시오.
S2I 빌드 프로세스 중에 JBoss EAP Maven 플러그인 대신 다음 환경 변수를 사용할 수 있습니다.
- GALLEON_PROVISION_FEATURE_PACKS
- GALLEON_PROVISION_LAYERS
- GALLEON_PROVISION_CHANNELS
8.1. 사용 가능한 JBoss EAP 계층 링크 복사링크가 클립보드에 복사되었습니다!
기본 계층 및 데코레이터 계층을 사용하여 OpenShift 또는 부팅 가능한 JAR의 JBoss EAP 서버에 대한 프로비저닝을 사용자 지정할 수 있습니다.
기본 계층은 핵심 기능 및 데코레이터 계층을 제공하여 추가 기능을 통해 기본 계층을 향상시킵니다.
데코레이터 계층을 사용하여 OpenShift용 JBoss EAP에서 S2I 이미지를 빌드하거나 부팅 가능한 JAR을 빌드할 수 있습니다. 계층이 S2I 이미지를 지원하지 않는 경우 계층 설명에 참고가 포함됩니다.
나열된 계층만 지원됩니다. 여기에 나열되지 않은 계층은 지원되지 않습니다.
다음 Jakarta EE 사양은 프로비저닝 계층에서 지원되지 않습니다.
- Jakarta ServerProgresss 2.3
- Jakarta Enterprise Cryostats 3.2
- Jakarta XML Web Services 2.3
8.1.1. 기본 계층 링크 복사링크가 클립보드에 복사되었습니다!
각 기본 계층에는 일반적인 서버 사용자 사례에 대한 핵심 기능이 포함되어 있습니다.
datasources-web-server
이 계층에는 서블릿 컨테이너와 데이터 소스를 구성하는 기능이 포함됩니다.
다음은 데이터 소스-web-server 에 기본적으로 포함된 JBoss EAP 하위 시스템입니다.
-
core-management -
데이터 소스 -
deployment-scanner -
ee -
elytron -
io -
jca -
jmx -
logging -
이름 지정 -
request-controller -
security-manager -
트랜잭션 -
Cryostat
다음 Jakarta EE 사양이 이 계층에서 지원됩니다.
- Jakarta JSON Processing 1.1
- Jakarta JSON Binding 1.0
- Jakarta Servlet 4.0
- Jakarta Expression Language 3.0
- Jakarta 서버 페이지 2.3
- Jakarta 표준 태그 라이브러리 1.2
- Jakarta Concurrency 1.1
- Jakarta Annotations 1.3
- Jakarta XML Binding 2.3
- 기타 언어 1.0에 대한 Jakarta 디버깅 지원
- Jakarta 트랜잭션 1.3
- Jakarta Connectors 1.7
jaxrs-server
이 계층은 다음 JBoss EAP 하위 시스템을 사용하여 datasources-web-server 계층을 향상시킵니다.
-
jaxrs -
weld -
jpa
이 계층은 또한 로컬 캐싱이 있는 Infinispan 기반 두 번째 수준 엔터티를 컨테이너에 추가합니다.
다음 Jakarta EE 사양은 데이터 소스-web-server 계층에서 지원되는 것 외에도 이 계층에서 지원됩니다.
- 자카르타 컨텍스트 및 종속성 2.0
- Jakarta Cryostat Validation 2.0
- Jakarta Interceptors 1.2
- Jakarta RESTful Web Services 2.1
- Jakarta Persistence 2.2
cloud-server
이 계층은 다음 JBoss EAP 하위 시스템을 사용하여 jaxrs-server 계층을 향상시킵니다.
-
resource-adapters -
messaging-activemq(원격 브로커 메시징, 임베디드 메시징이 아님)
이 계층은 또한 jaxrs-server 계층에 다음과 같은 관찰 기능도 추가합니다.
- 기본 상태
- 기본 지표
다음 Jakarta EE 사양은 jaxrs-server 계층에서 지원되는 것 외에도 이 계층에서 지원됩니다.
- Jakarta Security 1.0
cloud-default-config
이 계층은 standalone-ha.xml 을 기반으로 서버 구성으로 서버를 프로비저닝하고 하위 시스템 구성 messaging-activemq 를 포함합니다. 반대로 modcluster 및 core-management 하위 시스템 구성은 포함되지 않습니다. 이는 클라우드에서 사용하도록 구성되어 있습니다. 또한 모든 JBoss EAP 서버 JBoss 모듈이 설치됩니다.
ee-core-profile-server
ee-core-profile-server 계층은 Jakarta EE 10 Core Profile을 사용하여 서버를 프로비저닝합니다. Core Profile은 핵심 JBoss EAP 서버 기능과 자카르타 EE API를 모두 제공하는 사용자에게 경량화된 소규모 프로필을 제공합니다. ee-core-profile-server 계층은 클라우드 네이티브 애플리케이션 및 마이크로 서비스와 같은 소규모 런타임에 가장 적합합니다.
8.1.2. 데코레이터 계층 링크 복사링크가 클립보드에 복사되었습니다!
데코레이터 계층은 단독으로 사용되지 않습니다. 추가 기능을 제공하기 위해 기본 계층으로 하나 이상의 데코레이터 계층을 구성할 수 있습니다.
관찰 기능
이 데코레이터 계층은 프로비저닝된 서버에 다음과 같은 관찰 기능을 추가합니다.
- 기본 상태
- 기본 지표
이 계층은 cloud-server 계층에 빌드됩니다. 이 계층을 cloud-server 계층에 추가할 필요가 없습니다.
web-clustering
이 계층은 프로비저닝된 서버에 내장된 Infinispan 기반 웹 세션 클러스터링을 추가합니다.
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=false
mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=pom-root -DgroupId=org.jboss.eap.demo -DartifactId=mariadb-galleon-pack -DinteractiveMode=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow mariadb-galleon-pack디렉터리로 이동하여pom.xml파일을 업데이트하여 Red Hat Maven 리포지토리를 포함합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow pom.xml파일을 업데이트하여 JBoss EAP Galleon 기능 팩 및 MariaDB 드라이버에 대한 종속성을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고-
<
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파일을 업데이트합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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이라는 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
src/main/resources/layers/standalone/디렉터리를 생성합니다. 이는 Galleon 기능 팩이 정의하는 모든 계층의 루트 디렉터리입니다. -
src/main/resources/layers/standalone/mariadb-driver디렉터리를 생성합니다. mariadb-driver디렉터리에서 다음 콘텐츠를 사용하여layer-spec.xml파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow mariadb-driver계층은JBoss Modules모듈에서 구현하는 JDBC 드라이버의 구성으로데이터소스 하위 시스템을 업데이트합니다.-
src/main/resources/layers/standalone/mariadb-datasource디렉터리를 생성합니다. mariadb-datasource디렉터리에서 다음 콘텐츠를 사용하여layer-spec.xml파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 이 종속성은 데이터 소스가 프로비저닝될 때 MariaDB 드라이버의 프로비저닝을 적용합니다. 계층이 종속된 모든 계층은 해당 계층을 프로비저닝할 때 자동으로 프로비저닝됩니다.
- 2
- MariaDBDS 라는
데이터소스로 데이터 소스 하위 시스템 구성을 업데이트합니다. - 3
- 데이터 소스의 이름, 호스트, 포트 및 데이터베이스 값은 서버가 시작될 때 설정된
,MARIADB_HOSTMARIADB_PORT,MARIADB_DATABASE. 환경 변수에서 확인됩니다. - 4
- 사용자 이름 및 암호 값은 환경 변수
MARIADB_USER및MARIADB_PASSWORD에서 확인됩니다.
다음 명령을 실행하여 Galleon 기능 팩을 빌드합니다.
mvn clean install
mvn clean installCopy to Clipboard Copied! Toggle word wrap Toggle overflow target/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-rhel7
oc new-app -e MYSQL_USER=admin -e MYSQL_PASSWORD=admin -e MYSQL_DATABASE=mariadb registry.redhat.io/rhscl/mariadb-105-rhel7Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift 서비스
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
oc create secret generic mariadb-galleon-pack --from-file=target/mariadb-galleon-pack-1.0-SNAPSHOT.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 비밀
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
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 --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2.1.4.1. JBoss EAP maven 플러그인을 사용하여 S2I 빌드 생성 링크 복사링크가 클립보드에 복사되었습니다!
Cryostat -maven-plugin 은 JBoss EAP galleon 기능 팩, JBoss EAP 대한 참조로 구성되어 있습니다. 클라우드 galleon 기능 팩 과 mariadb galleon 기능 팩에pom.xml 의 추출물을 참조하십시오:
프로세스
다음 명령을 실행하여 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 \ --name=mariadb-app-build
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-buildCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 빌드를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
oc start-build mariadb-app-buildCopy to Clipboard Copied! Toggle word wrap Toggle overflow 성공적으로 명령을 실행하면
mariadb-app-build이미지가 생성됩니다.
8.2.1.4.4. 새 배포 생성 링크 복사링크가 클립보드에 복사되었습니다!
실행 중인 MariaDB 데이터베이스에 데이터 소스를 바인딩하는 데 필요한 환경 변수를 제공하여 새 배포를 생성할 수 있습니다.
프로세스
다음 명령을 실행하여 새 배포를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 데모에서는 데이터 소스의 이름이
데모가 될 것으로 예상합니다.
참고사용자 지정 Galleon 기능 팩 환경 변수에 대한 자세한 내용은 사용자 정의 Galleon 기능 팩 환경 변수를 참조하십시오.
mariadb-app애플리케이션을 노출하고 다음 명령을 실행합니다.oc expose svc/mariadb-app
oc expose svc/mariadb-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새 작업을 생성하려면 다음 명령을 실행합니다.
curl -X POST http://$(oc get route mariadb-app --template='{{ .spec.host }}')/tasks/title/foocurl -X POST http://$(oc get route mariadb-app --template='{{ .spec.host }}')/tasks/title/fooCopy to Clipboard Copied! Toggle word wrap Toggle overflow 작업 목록에 액세스하려면 다음 명령을 실행합니다.
curl http://$(oc get route mariadb-app --template='{{ .spec.host }}')curl http://$(oc get route mariadb-app --template='{{ .spec.host }}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 추가된 작업이 브라우저에 표시됩니다.
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 서버 버전과 호환되어야 합니다.
|
9장. OpenShift Container Platform에 Jboss EAP 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
9.1. OpenShift에서 애플리케이션 배포를 자동화하는 JBoss EAP operator 링크 복사링크가 클립보드에 복사되었습니다!
EAP Operator는 OpenShift API를 확장하는 JBoss EAP별 컨트롤러입니다. EAP Operator를 사용하여 복잡한 상태 저장 애플리케이션의 인스턴스를 생성, 구성, 관리 및 원활하게 업그레이드할 수 있습니다.
EAP 운영자는 클러스터에서 여러 JBoss EAP Java 애플리케이션 인스턴스를 관리합니다. 또한 복제본을 축소하고 종료를 위해 Pod를 정리하기 전에 모든 트랜잭션이 완료되었는지 확인하여 애플리케이션 클러스터에서 안전한 트랜잭션 복구를 보장합니다. EAP Operator는 Jakarta Enterprise Cryostat 원격 및 트랜잭션 복구 처리를 적절하게 처리하기 위해 StatefulSet 을 사용합니다. StatefulSet 은 Pod를 다시 시작한 후에도 영구 스토리지 및 네트워크 호스트 이름 안정성을 보장합니다.
OpenShift 클러스터 관리자가 Operator를 검색, 설치 및 업그레이드하는 데 사용할 수 있는 OperatorHub를 사용하여 EAP Operator를 설치해야 합니다.
OpenShift Container Platform 4에서는 OLM(Operator Lifecycle Manager)을 사용하여 모든 Operator 및 여러 클러스터에서 실행되는 관련 서비스의 라이프사이클을 설치, 업데이트 및 관리할 수 있습니다.
OLM은 OpenShift Container Platform 4에서 기본적으로 실행됩니다. 클러스터 관리자는 클러스터에서 실행되는 operator에 대한 액세스 권한을 설치, 업그레이드 및 부여할 수 있습니다. OpenShift Container Platform 웹 콘솔은 클러스터 관리자가 Operator를 설치할 수 있는 관리 화면을 제공하고, 특정 프로젝트에 클러스터에 사용 가능한 Operator 카탈로그를 사용할 수 있는 액세스 권한을 부여합니다.
Operator 및 OLM에 대한 자세한 내용은 OpenShift 설명서 를 참조하십시오.
9.1.1. 웹 콘솔을 사용하여 EAP Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 클러스터 관리자는 OpenShift Container Platform 웹 콘솔을 사용하여 Red Hat OperatorHub에서 EAP Operator를 설치할 수 있습니다. 그런 다음 EAP Operator를 하나 이상의 네임 스페이스에 가입하여 클러스터의 개발자가 사용할 수 있도록 할 수 있습니다.
웹 콘솔을 사용하여 EAP Operator를 설치하기 전에 알아야 할 몇 가지 사항은 다음과 같습니다.
- 설치 모드: 클러스터의 모든 네임스페이스(기본값) 를 선택하여 Operator를 모든 네임스페이스에 설치하거나 사용 가능한 경우 개별 네임스페이스를 선택하여 선택한 네임스페이스에만 Operator를 설치합니다.
- 업데이트 채널: EAP Operator를 여러 채널을 통해 사용할 수 있는 경우 구독할 채널을 선택할 수 있습니다. 예를 들어, stable 채널에서 배치하려면 (사용 가능한 경우) 목록에서 해당 채널을 선택합니다.
- 승인 전략: 자동 또는 수동 업데이트를 선택할 수 있습니다. EAP Operator에 대해 자동 업데이트를 선택하는 경우 새 버전의 Operator를 사용할 수 있는 경우 OLM(Operator Lifecycle Manager)은 실행 중인 EAP Operator 인스턴스를 자동으로 업그레이드합니다. 수동 업데이트를 선택하면 최신 버전의 Operator가 사용 가능할 때 OLM에서 업데이트 요청을 생성합니다. 그런 다음 Operator가 새 버전으로 업데이트되도록 업데이트 요청을 수동으로 승인해야 합니다.
다음 절차는 OpenShift Container Platform 웹 콘솔의 수정 사항에 따라 변경될 수 있습니다. 가장 정확한 최신 절차는 최신 버전의 OpenShift Container Platform 가이드의 Operator 작업 섹션에서 웹 콘솔을 사용하여 OperatorHub에서 설치 섹션을 참조하십시오.
사전 요구 사항
-
cluster-admin권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
프로세스
- OpenShift Container Platform 웹 콘솔에서 Operator→ OperatorHub 로 이동합니다.
-
아래로 스크롤하거나 키워드로 필터링 상자에
EAP를 입력하여 EAP Operator를 찾습니다. - JBoss EAP Operator를 선택하고 설치를 클릭합니다.
Create Operator Subscription 페이지에서 다음을 수행합니다.
다음 명령 중 하나를 선택합니다.
-
클러스터의 모든 네임스페이스(기본값) 는 기본
openshift-operators네임스페이스에 Operator를 설치하여 클러스터의 모든 네임스페이스를 감시하고 사용할 수 있게 합니다. 이 옵션을 항상 사용할 수있는 것은 아닙니다. - 클러스터의 특정 네임스페이스 는 선택한 특정 단일 네임스페이스에 Operator를 설치합니다. Operator는 이 단일 네임스페이스에서만 사용할 수 있습니다.
-
클러스터의 모든 네임스페이스(기본값) 는 기본
- Update Channel을 선택합니다.
- 앞에서 설명한 대로 자동 또는 수동 승인 전략을 선택합니다.
서브스크립션을 클릭하여 이 OpenShift Container Platform 클러스터에서 선택한 네임스페이스에서 EAP Operator를 사용할 수 있도록 합니다.
- 수동 승인 전략을 선택한 경우 설치 계획을 검토하고 승인할 때까지 서브스크립션의 업그레이드 상태가 Upgrading 으로 유지됩니다. 설치 계획 페이지에서 설치 계획을 승인한 후 서브스크립션 업그레이드 상태가 Up to date 로 이동합니다.
- 자동 승인 전략을 선택한 경우 업그레이드 상태가 개입 없이 최신 상태로 이동합니다.
서브스크립션의 업그레이드 상태가 최신 버전이면 Operator → 설치된 Operator를 선택하여 CSV(EAP ClusterServiceVersion)가 표시되고 해당 상태가 관련 네임스페이스에 InstallSucceeded 로 변경되었는지 확인합니다.
참고All namespaces… 설치 모드의 경우
openshift-operators네임스페이스에 표시되는 상태가 InstallSucceeded 입니다. 다른 네임스페이스에서 상태가 Copied 입니다. . . Status 필드가 InstallSucceeded 로 변경되지 않는 경우 문제를 보고하는 워크로드 → Pod 페이지에서openshift-operators프로젝트(또는 특정 네임스페이스… 설치 모드가 선택된 경우 기타 관련 네임스페이스)의 모든 Pod 의 로그를 확인합니다.
9.1.2. CLI를 사용하여 EAP Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 클러스터 관리자는 OpenShift Container Platform CLI를 사용하여 Red Hat OperatorHub에서 EAP Operator를 설치할 수 있습니다. 그런 다음 EAP Operator를 하나 이상의 네임 스페이스에 가입하여 클러스터의 개발자가 사용할 수 있도록 할 수 있습니다.
CLI를 사용하여 OperatorHub에서 EAP Operator를 설치할 때 oc 명령을 사용하여 Subscription 오브젝트를 생성합니다.
사전 요구 사항
-
cluster-admin권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. -
로컬 시스템에
oc툴을 설치했습니다.
프로세스
OperatorHub에서 클러스터에서 사용할 수 있는 Operator 목록을 확인합니다.
oc get packagemanifests -n openshift-marketplace | grep eap NAME CATALOG AGE ... eap Red Hat Operators 43d ...
$ oc get packagemanifests -n openshift-marketplace | grep eap NAME CATALOG AGE ... eap Red Hat Operators 43d ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서브스크립션오브젝트 YAML 파일(예: Cryostat-operator-sub.yaml)을 생성하여 네임스페이스를 EAP Operator에 서브스크립션합니다. 다음은Subscription오브젝트 YAML 파일의 예입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 채널 및 승인 전략에 대한 자세한 내용은 이 절차의 웹 콘솔 버전을 참조하십시오.
YAML 파일에서
Subscription오브젝트를 생성합니다.oc apply -f eap-operator-sub.yaml oc get csv -n openshift-operators NAME DISPLAY VERSION REPLACES PHASE eap-operator.v1.0.0 JBoss EAP 1.0.0 Succeeded
$ oc apply -f eap-operator-sub.yaml $ oc get csv -n openshift-operators NAME DISPLAY VERSION REPLACES PHASE eap-operator.v1.0.0 JBoss EAP 1.0.0 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow EAP Operator가 성공적으로 설치되었습니다. 이 시점에서 OLM은 EAP Operator를 알고 있습니다. Operator의 ClusterServiceVersion (CSV)이 대상 네임스페이스에 표시되고 EAP Operator에서 제공하는 API를 생성할 수 있습니다.
9.1.3. EAP Operator를 사용하여 OpenShift에 Java 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
EAP Operator는 OpenShift에서 Java 애플리케이션 배포를 자동화하는 데 도움이 됩니다. EAP Operator API에 대한 자세한 내용은 EAP Operator: API 정보를 참조하십시오.
사전 요구 사항
- EAP Operator를 설치했습니다. EAP Operator 설치에 대한 자세한 내용은 웹 콘솔을 사용하여 EAP Operator 설치 및 CLI를 사용하여 EAP Operator 설치를 참조하십시오.
- JBoss EAP for OpenShift S2I(Source-to-Image) 빌드 이미지를 사용하여 사용자 애플리케이션의 Docker 이미지를 빌드했습니다.
-
애플리케이션의 CRD(CustomResourceDefinition) 파일이 이를 참조하는 경우
Secret오브젝트를 생성했습니다. 새Secret오브젝트 생성에 대한 자세한 내용은 보안 생성을 참조하십시오. -
애플리케이션의 CRD 파일이 이를 참조하는 경우
ConfigMap을 생성했습니다. ConfigMap 생성에 대한 자세한 내용은ConfigMap생성을 참조하십시오. -
이렇게 하려면
standalone.xml파일에서ConfigMap을 생성했습니다. standalone.xml 파일에서ConfigMap을 생성하는 방법에 대한 자세한 내용은standalone.xml파일에서 ConfigMap 생성을 참조하십시오.
ConfigMap 에서 standalone.xml 파일을 제공하는 것은 JBoss EAP 8.0에서 지원되지 않습니다.
프로세스
- 웹 브라우저를 열고 OperatorHub에 로그인합니다.
- Java 애플리케이션에 사용할 프로젝트 또는 네임스페이스를 선택합니다.
- Installed Operator 로 이동하여 JBoss EAP operator 를 선택합니다.
- 개요 탭에서 인스턴스 생성 링크를 클릭합니다.
애플리케이션 이미지 세부 정보를 지정합니다.
애플리케이션 이미지는 Java 애플리케이션이 포함된 Docker 이미지를 지정합니다. 이미지는 JBoss EAP for OpenShift S2I(Source-to-Image) 빌드 이미지를 사용하여 빌드해야 합니다.
applicationImage필드가 imagestreamtag에 해당하는 경우 이미지에 대한 모든 변경으로 애플리케이션의 자동 업그레이드가 트리거됩니다.다음 참조 중 하나로 OpenShift 애플리케이션 이미지에 대한 JBoss EAP를 제공할 수 있습니다.
- 이미지 이름: mycomp/myapp
- 태그: mycomp/myapp:1.0
- A digest: mycomp/myapp:@sha256:0af38bc38be93116b6a1d86a9c78bd14cd527121970899d719baf78e5dc7bfd2
- imagestreamtag: my-app:latest
애플리케이션 크기를 지정합니다. 예를 들면 다음과 같습니다.
spec: replicas:2
spec: replicas:2Copy to Clipboard Copied! Toggle word wrap Toggle overflow env 사양을 사용하여 애플리케이션 환경을 구성합니다. 환경 변수는 POSTGRESQL_SERVICE_HOST 또는 POSTGRESQL_USER와 같은Secret오브젝트에서 직접 가져올 수 있습니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 배포와 관련된 다음 선택적 구성을 완료합니다.
- 서버 데이터 디렉터리에 대한 스토리지 요구 사항을 지정합니다. 자세한 내용은 애플리케이션용 영구 스토리지 구성을 참조하십시오.
WildFlyServerSpec에서 생성한시크릿이름을 지정하여 애플리케이션을 실행하는 Pod의 볼륨으로 마운트합니다. 예를 들면 다음과 같습니다.spec: secrets: - my-secretspec: secrets: - my-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow Secret은/etc/secrets/<secret name>에 마운트되며 각 키/값은 파일로 저장됩니다. 파일 이름은 키이고 콘텐츠는 값입니다.시크릿은 Pod 내부에 볼륨으로 마운트됩니다. 다음 예제에서는 키 값을 찾는 데 사용할 수 있는 명령을 보여줍니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고Secret오브젝트를 수정하면 프로젝트 불일치가 발생할 수 있습니다. 기존Secret오브젝트를 수정하는 대신 Red Hat은 이전 오브젝트와 동일한 콘텐츠를 사용하여 새 오브젝트를 생성하는 것이 좋습니다. 그런 다음 필요에 따라 콘텐츠를 업데이트하고 operator CR(사용자 정의 리소스)의 참조를 old에서 new로 변경할 수 있습니다. 이는 새 CR 업데이트로 간주되며 Pod가 다시 로드됩니다.WildFlyServerSpec에서 생성한ConfigMap의 이름을 지정하여 애플리케이션을 실행하는 Pod의 볼륨으로 마운트합니다. 예를 들면 다음과 같습니다.spec: configMaps: - my-config
spec: configMaps: - my-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap은/etc/configmaps/<configmap name>에 마운트되며 각 키/값은 파일로 저장됩니다. 파일 이름은 키이고 콘텐츠는 값입니다.ConfigMap은 Pod 내부에 볼륨으로 마운트됩니다. 키 값을 찾으려면 다음을 수행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고ConfigMap을 수정하면 프로젝트 불일치가 발생할 수 있습니다. 기존ConfigMap을 수정하는 대신 Red Hat은 이전ConfigMap과 동일한 콘텐츠를 사용하여 새 ConfigMap을 생성하는 것이 좋습니다. 그런 다음 필요에 따라 콘텐츠를 업데이트하고 operator CR(사용자 정의 리소스)의 참조를 old에서 new로 변경할 수 있습니다. 이는 새 CR 업데이트로 간주되며 Pod가 다시 로드됩니다.고유한 독립 실행형
ConfigMap을 사용하도록 선택하는 경우ConfigMap의 이름과standalone.xml파일의 키를 제공합니다.standaloneConfigMap: name: clusterbench-config-map key: standalone.xmlstandaloneConfigMap: name: clusterbench-config-map key: standalone.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고JBoss EAP 8.0에서는
standalone.xml파일에서ConfigMap을 생성할 수 없습니다.OpenShift에서 기본 HTTP 경로 생성을 비활성화하려면
disableHTTPRoute를true로 설정합니다.spec: disableHTTPRoute: true
spec: disableHTTPRoute: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.3.1. 시크릿 생성 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션의 CRD(CustomResourceDefinition) 파일이 Secret 을 참조하는 경우 EAP Operator를 사용하여 OpenShift에 애플리케이션을 배포하기 전에 Secret 을 생성해야 합니다.
프로세스
-
시크릿을 생성하려면 다음을 수행합니다.
oc create secret generic my-secret --from-literal=my-key=devuser --from-literal=my-password='my-very-secure-pasword'
$ oc create secret generic my-secret --from-literal=my-key=devuser --from-literal=my-password='my-very-secure-pasword'
9.1.3.2. configMap 생성 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션의 CRD(CustomResourceDefinition) 파일이 spec.ConfigMaps 필드의 ConfigMap을 참조하는 경우 EAP Operator를 사용하여 OpenShift에 애플리케이션을 배포하기 전에 ConfigMap을 생성해야 합니다.
프로세스
- configmap을 생성하려면 다음을 수행합니다.
oc create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2 configmap/my-config created
$ oc create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2
configmap/my-config created
9.1.3.3. standalone.xml File에서 configMap 생성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift S2I(Source-to-Image)용 JBoss EAP에서 제공하는 애플리케이션 이미지에서 사용하지 않고 고유한 JBoss EAP 독립 실행형 구성을 생성할 수 있습니다. standalone.xml 파일은 Operator가 액세스할 수 있는 ConfigMap 에 배치해야 합니다.
ConfigMap 에서 standalone.xml 파일을 제공하는 것은 JBoss EAP 8.0에서 지원되지 않습니다.
프로세스
-
standalone.xml파일에서ConfigMap을 생성하려면 다음을 수행합니다.
oc create configmap clusterbench-config-map --from-file examples/clustering/config/standalone.xml configmap/clusterbench-config-map created
$ oc create configmap clusterbench-config-map --from-file examples/clustering/config/standalone.xml
configmap/clusterbench-config-map created
9.1.3.4. 애플리케이션의 영구 스토리지 구성 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션에 Pod를 다시 시작할 때마다 유지해야 하는 트랜잭션 또는 메시징 로그와 같은 일부 데이터에 대한 영구 스토리지가 필요한 경우 스토리지 사양을 구성합니다. 스토리지 사양이 비어 있으면 애플리케이션의 각 Pod에서 EmptyDir 볼륨이 사용됩니다. 그러나 해당 Pod가 중지된 후에는 이 볼륨이 유지되지 않습니다.
프로세스
JBoss EAP 독립 실행형 데이터 디렉터리를 저장하기 위한 리소스 요구 사항을 구성하려면
volumeClaimTemplate을 지정합니다. 템플릿의 이름은 JBoss EAP의 이름에서 파생됩니다. 해당 볼륨은ReadWriteOnce액세스 모드로 마운트됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 스토리지 요구 사항을 충족하는 영구 볼륨은
/eap/standalone/data디렉터리에 마운트됩니다.
9.1.4. EAP Operator를 사용하여 애플리케이션 메트릭 보기 링크 복사링크가 클립보드에 복사되었습니다!
EAP Operator를 사용하여 OpenShift에 배포된 애플리케이션의 지표를 볼 수 있습니다.
클러스터 관리자가 프로젝트에서 지표 모니터링을 활성화하면 EAP Operator가 OpenShift 콘솔에 지표를 자동으로 표시합니다.
사전 요구 사항
- 클러스터 관리자가 프로젝트에 대한 모니터링을 활성화했습니다. 자세한 내용은 사용자 정의 프로젝트에 대한 모니터링 활성화를 참조하십시오.
프로세스
- OpenShift Container Platform 웹 콘솔에서 모니터링→ 메트릭 으로 이동합니다.
- 메트릭 화면에서 텍스트 상자에 애플리케이션 이름을 입력하여 애플리케이션을 선택합니다. 애플리케이션의 메트릭이 화면에 표시됩니다.
9.1.5. 웹 콘솔을 사용하여 EAP Operator 설치 제거 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에서 EAP Operator를 삭제하거나 제거할 수 있습니다. 서브스크립션을 삭제하여 서브스크립션된 네임스페이스에서 제거할 수 있습니다. EAP Operator의 CSV(ClusterServiceVersion) 및 배포를 제거할 수도 있습니다.
데이터 일관성과 안전성을 보장하기 위해 EAP Operator를 제거하기 전에 클러스터의 Pod 수를 0으로 축소합니다.
웹 콘솔을 사용하여 EAP Operator를 설치 제거할 수 있습니다.
전체 wildflyserver 정의(oc delete wildflyserver <deployment_name>)를 삭제하기로 결정한 경우, 완료되지 않은 트랜잭션과 관계없이 Pod가 시작되지 않고 Pod가 종료됩니다. 이 작업을 수행하는 완료되지 않은 작업에서는 나중에 시작하는 데이터 변경 사항이 차단될 수 있습니다. 이 wildflyserver 를 사용한 트랜잭션 엔터프라이즈 빈 원격 호출과 관련된 다른 JBoss EAP 인스턴스에 대한 데이터 변경도 차단될 수 있습니다.
프로세스
- Operator→ 설치된 Operator 페이지에서 JBoss EAP 를 선택합니다.
- Operator 상세 정보 페이지 오른쪽에 있는 작업 드롭다운 메뉴에서 Operator 제거를 선택합니다.
- Operator 서브스크립션 제거 창에서 프롬프트가 표시되면 설치와 관련된 모든 구성 요소를 제거하려는 경우 선택적으로 선택한 네임스페이스 Operator 완전히 제거 확인란을 선택합니다. 이렇게 하면 CSV가 제거되어 Operator와 연결된 Pod, 배포, CRD(사용자 정의 리소스 정의) 및 CR(사용자 정의 리소스)이 제거됩니다.
- 제거를 클릭합니다. EAP Operator는 실행을 중지하고 더 이상 업데이트를 수신하지 않습니다.
9.1.6. CLI를 사용하여 JBoss EAP Operator 설치 제거 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에서 EAP Operator를 삭제하거나 설치 제거할 수 있습니다. 서브스크립션을 삭제하여 서브스크립션된 네임스페이스에서 제거할 수 있습니다. EAP Operator의 CSV(ClusterServiceVersion) 및 배포를 제거할 수도 있습니다.
데이터 일관성과 안전성을 보장하기 위해 EAP Operator를 제거하기 전에 클러스터의 Pod 수를 0으로 축소합니다.
명령줄을 사용하여 EAP Operator를 설치 제거할 수 있습니다.
명령줄을 사용하는 경우 대상 네임스페이스에서 서브스크립션 및 CSV를 삭제하여 Operator를 제거합니다.
전체 wildflyserver 정의(oc delete wildflyserver <deployment_name>)를 삭제하기로 결정한 경우, 완료되지 않은 트랜잭션과 관계없이 Pod가 시작되지 않고 Pod가 종료됩니다. 이 작업을 수행하는 완료되지 않은 작업에서는 나중에 시작하는 데이터 변경 사항이 차단될 수 있습니다. 이 wildflyserver 를 사용한 트랜잭션 엔터프라이즈 빈 원격 호출과 관련된 다른 JBoss EAP 인스턴스에 대한 데이터 변경도 차단될 수 있습니다.
프로세스
currentCSV필드에서 EAP Operator 서브스크립션의 현재 버전을 확인합니다.oc get subscription eap-operator -n openshift-operators -o yaml | grep currentCSV currentCSV: eap-operator.v1.0.0
$ oc get subscription eap-operator -n openshift-operators -o yaml | grep currentCSV currentCSV: eap-operator.v1.0.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow EAP Operator의 서브스크립션을 삭제합니다.
oc delete subscription eap-operator -n openshift-operators subscription.operators.coreos.com "eap-operator" deleted
$ oc delete subscription eap-operator -n openshift-operators subscription.operators.coreos.com "eap-operator" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 단계의
currentCSV값을 사용하여 대상 네임스페이스에서 EAP Operator의 CSV를 삭제합니다.oc delete clusterserviceversion eap-operator.v1.0.0 -n openshift-operators clusterserviceversion.operators.coreos.com "eap-operator.v1.0.0" deleted
$ oc delete clusterserviceversion eap-operator.v1.0.0 -n openshift-operators clusterserviceversion.operators.coreos.com "eap-operator.v1.0.0" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.7. 안전한 트랜잭션 복구를 위한 JBoss EAP operator 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP Operator는 애플리케이션 클러스터를 종료하기 전에 데이터 일관성을 보장합니다. 이를 위해 Operator는 복제본을 축소하고 종료를 위해 Pod를 정리 로 표시하기 전에 모든 트랜잭션이 완료되었는지 확인합니다.
즉, 데이터 불일치 없이 배포를 안전하게 제거하려면 먼저 Pod 수를 0으로 축소한 다음 모든 Pod가 종료될 때까지 기다린 다음 wildflyserver 인스턴스만 삭제해야 합니다.
전체 wildflyserver 정의(oc delete wildflyserver <deployment_name>)를 삭제하기로 결정한 경우, 완료되지 않은 트랜잭션과 관계없이 Pod가 시작되지 않고 Pod가 종료됩니다. 이 작업을 수행하는 완료되지 않은 작업에서는 나중에 시작하는 데이터 변경 사항이 차단될 수 있습니다. 이 wildflyserver 를 사용한 트랜잭션 엔터프라이즈 빈 원격 호출과 관련된 다른 JBoss EAP 인스턴스에 대한 데이터 변경도 차단될 수 있습니다.
스케일다운 프로세스가 Pod 상태(oc get pod <pod_name>)가 여전히 Running 으로 표시됩니다. Pod는 이를 대상으로 하는 원격 엔터프라이즈 빈 호출을 포함하여 완료되지 않은 모든 트랜잭션을 완료해야 합니다.
스케일 다운 프로세스의 상태를 모니터링하려면 wildflyserver 인스턴스의 상태를 관찰합니다. 자세한 내용은 스케일다운 프로세스 모니터링을 참조하십시오. 스케일 다운 중 Pod 상태에 대한 자세한 내용은 스케일 다운 중 Pod 상태를 참조하십시오.
9.1.7.1. 안정적인 네트워크 호스트 이름을 위한 상태 저장 세트 링크 복사링크가 클립보드에 복사되었습니다!
wildflyserver를 관리하는 EAP Operator는 JBoss EAP 포드를 관리하는 기본 오브젝트로 StatefulSet 을 생성합니다.
StatefulSet 은 상태 저장 애플리케이션을 관리하는 워크로드 API 오브젝트입니다. Pod 세트 배포 및 스케일링을 관리하고 이러한 Pod의 순서 및 고유성을 보장합니다.
StatefulSet 을 사용하면 클러스터의 Pod의 이름이 사전 정의된 순서로 지정됩니다. 또한 Pod 종료가 동일한 순서를 따릅니다. 예를 들어, pod-1은 추론적인 결과가 있는 트랜잭션을 가지고 있으므로 SCALING_DOWN_RECOVERY_DIRTY 의 상태에 있습니다. pod-0이 SCALING_DOWN_CLEAN 상태인 경우에도 pod-1 전에는 종료되지 않습니다. pod-1이 정리 되고 종료될 때까지 pod-0은 SCALING_DOWN_CLEAN 상태로 유지됩니다. 그러나 pod-0이 SCALING_DOWN_CLEAN 상태에 있더라도 새 요청이 수신되지 않으며 거의 유휴 상태입니다.
StatefulSet 의 복제본 크기를 줄이거나 Pod 자체를 삭제하는 것은 효과가 없으며 이러한 변경 사항이 취소됩니다.
9.1.7.2. 스케일 다운 프로세스 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
스케일 다운 프로세스의 상태를 모니터링하려면 wildflyserver 인스턴스의 상태를 관찰해야 합니다. 스케일 다운 중 다양한 Pod 상태에 대한 자세한 내용은 스케일 다운 중 Pod 상태를 참조하십시오.
프로세스
축소 프로세스의 상태를 확인하려면 다음을 수행합니다.
oc describe wildflyserver <name>
oc describe wildflyserver <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - WildFlyServer.Status.Scalingdown Pod 및 WildFlyServer.Status.Replicas 필드에는 활성 및 비활성 Pod의 전체 상태가 표시됩니다.
- Scalingdown Pods 필드에는 모든 완료되지 않은 트랜잭션이 완료될 때 종료될 Pod 수가 표시됩니다.
- WildFlyServer.Status.Replicas 필드에는 실행 중인 현재 Pod 수가 표시됩니다.
- WildFlyServer.Spec.Replicas 필드에는 ACTIVE 상태의 Pod 수가 표시됩니다.
- 축소할 Pod가 없는 경우 WildFlyServer.Status.Replicas 및 WildFlyServer.Spec.Replicas 필드의 Pod 수가 동일합니다.
9.1.7.2.1. 스케일 다운 중 Pod 상태 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에서는 확장 중에 다양한 Pod 상태를 설명합니다.
| Pod 상태 | 설명 |
|---|---|
| 활성 상태 | Pod는 활성 상태이며 요청을 처리합니다. |
| SCALING_DOWN_RECOVERY_INVESTIGATION | Pod를 축소하려고 합니다. 스케일 다운 프로세스는 JBoss EAP의 트랜잭션 상태에 대해 조사 중입니다. |
| SCALING_DOWN_RECOVERY_DIRTY | JBoss EAP에는 일부 불완전한 트랜잭션이 포함되어 있습니다. Pod를 정리할 때까지 종료할 수 없습니다. 트랜잭션 복구 프로세스는 JBoss EAP에서 주기적으로 실행되며 트랜잭션이 완료될 때까지 대기합니다. |
| SCALING_DOWN_CLEAN |
Pod는 트랜잭션 축소 처리로 처리되며 클러스터에서 제거되도록 |
9.1.7.3. 논리적인 결과를 사용하여 트랜잭션 중 축소 링크 복사링크가 클립보드에 복사되었습니다!
트랜잭션 결과를 알 수 없는 경우 자동 트랜잭션 복구를 수행할 수 없습니다. 그런 다음 수동으로 트랜잭션을 복구해야합니다.
사전 요구 사항
-
Pod의 상태는
SCALING_DOWN_RECOVERY_DIRTY에 있습니다.
프로세스
- CLI를 사용하여 JBoss EAP 인스턴스에 액세스합니다.
- 트랜잭션 오브젝트 저장소의 모든 추론 트랜잭션 레코드를 해결합니다. 자세한 내용은 JBoss EAP의 트랜잭션 관리에서 Recovering Heuristic Outcomes 를 참조하십시오.
Enterprise Cryostat 클라이언트 복구 폴더에서 모든 레코드를 제거합니다.
Pod enterprise Cryostat 클라이언트 복구 디렉터리에서 모든 파일을 제거합니다.
$JBOSS_HOME/standalone/data/ejb-xa-recovery oc exec <podname> rm -rf $JBOSS_HOME/standalone/data/ejb-xa-recovery
$JBOSS_HOME/standalone/data/ejb-xa-recovery oc exec <podname> rm -rf $JBOSS_HOME/standalone/data/ejb-xa-recoveryCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Pod 상태가
SCALING_DOWN_CLEAN으로 변경되고 Pod가 종료됩니다.
9.1.7.4. 트랜잭션 로그에 JDBC 스토리지를 사용하도록 트랜잭션 하위 시스템 구성 링크 복사링크가 클립보드에 복사되었습니다!
시스템이 트랜잭션 로그 를 저장할 파일 시스템을 제공하지 않는 경우 JBoss EAP S2I 이미지를 사용하여 JDBC 개체 저장소를 구성합니다.
JBoss EAP가 부팅 가능한 JAR로 배포되면 S2I 환경 변수를 사용할 수 없습니다. 이 경우 Galleon 계층을 생성하거나 CLI 스크립트를 구성하여 필요한 구성을 변경해야 합니다.
JDBC 오브젝트 저장소는 TX_DATABASE_PREFIX_MAPPING 환경 변수를 사용하여 설정할 수 있습니다. 이 변수는 DB_SERVICE_PREFIX_MAPPING 과 동일한 구조를 갖습니다.
사전 요구 사항
- 환경 변수 값을 기반으로 데이터 소스를 생성했습니다.
-
데이터베이스와 JDBC 개체 저장소를 통해 통신하는
트랜잭션 관리자간에 일관된 데이터 읽기 및 쓰기 권한이 있어야 합니다. 자세한 내용은 JDBC 데이터 소스 구성을참조하십시오.
프로세스
S2I 환경 변수를 통해 JDBC 오브젝트 저장소를 설정하고 구성합니다.
예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
standalone.xml 구성 파일
oc rsh <podname> cat /opt/server/standalone/을 모두 확인할 수 있습니다.standalone.xml을 확인하여 데이터 소스 구성 및 트랜잭션 하위 시스템 구성예상 출력:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.7.5. 스케일 다운 중 트랜잭션 복구 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 애플리케이션 서버에서 트랜잭션을 사용하여 애플리케이션을 배포할 때 클러스터 확장 중에 어떤 일이 발생하는지 이해하는 것이 중요합니다. 활성 JBoss EAP 복제본의 수를 줄이면 완료(또는 역설적)해야 하는 거래(또는 heuristic) 트랜잭션 수를 줄일 수 있습니다. 이 상황은 성공적으로 완료할 준비가 된 것으로 선언된 XA 표준의 결과입니다. 또한 XA 트랜잭션은 추론적인 결과로 완료할 수 있으며, 이를 통해 수동으로 해결해야 합니다. 이러한 트랜잭션을 관리하는 Pod(예: in-doubt 또는 heuristic 트랜잭션)를 종료하면 데이터 불일치/복지 또는 데이터 잠금이 발생할 수 있습니다.
JBoss EAP Operator는 복제본 수를 줄이기 전에 모든 트랜잭션이 완료되도록 하는 스케일다운 기능을 제공합니다. 이 기능은 Pod의 모든 트랜잭션이 완료/해결되었는지 확인하고 Operator에서 종료를 위해 Pod를 정리한 것으로 표시합니다.
자세한 내용은 WildFly Operator 사용자 가이드를 참조하십시오.
프로세스
JBoss EAP 애플리케이션 서버의 복제본 크기를 줄이려면 다음 중 하나를 수행하십시오.
복제본 크기를 패치합니다.
oc patch wildflyserver <name> -p '[{"op":"replace", "path":"/spec/replicas", "value":0}]' --type jsonoc patch wildflyserver <name> -p '[{"op":"replace", "path":"/spec/replicas", "value":0}]' --type jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 복제본 크기를 수동으로 편집합니다.
oc edit wildflyserver <name>
oc edit wildflyserver <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
StatefulSet 에서 복제본 크기를 직접 줄이거나 Pod를 삭제하면 적용되지 않습니다. 이러한 변경 사항은 자동으로 되돌아갑니다.
전체 JBoss EAP 서버 정의(oc delete wildflyserver <deployment_name>')를 삭제해도 트랜잭션 복구 프로세스가 시작되지 않습니다. Pod는 완료되지 않은 트랜잭션과 관계없이 종료됩니다. 데이터 불일치 없이 안전하게 배포를 제거하려면 먼저 포드 수를 0으로 축소하고 모든 포드가 종료될 때까지 기다린 다음 JBoss EAP 인스턴스를 삭제합니다.
JBoss EAP 트랜잭션 하위 시스템에서 네레이나 복구 리스너를 활성화해야 합니다. 이 기능이 없으면 특정 JBoss EAP 포드에 대한 스케일 다운 트랜잭션 복구 처리가 건너뜁니다.
9.1.7.6. scaleDown 프로세스 링크 복사링크가 클립보드에 복사되었습니다!
스케일다운 프로세스가 시작되면 Pod 상태 oc get pod <pod_name>이 여전히 Running 으로 표시됩니다. 이 상태에서 Operator를 사용하면 Pod가 이를 대상으로 하는 원격 migration 호출을 포함하여 완료되지 않은 모든 트랜잭션을 완료할 수 있습니다. 스케일 다운 프로세스를 모니터링하려면 JBoss EAP 인스턴스의 상태를 모니터링할 수 있습니다. oc describe wildflyserver <name>을 사용하여 Pod 상태를 확인합니다.
| 이름 | 설명 |
|---|---|
| 활성 상태 | Pod는 요청을 적극적으로 처리합니다. |
| SCALING_DOWN_RECOVERY_INVESTIGATION | Pod는 라이프사이클이 성공적으로 완료되지 않은 트랜잭션이 있는지 확인하기 위해 조사 중입니다. |
| SCALING_DOWN_RECOVERY_PROCESSING | 로그 저장소에는 in-doubt 트랜잭션이 있습니다. 이러한 트랜잭션이 완료되거나 정리될 때까지 Pod를 종료할 수 없습니다. |
| SCALING_DOWN_RECOVERY_HEURISTICS | 로그 저장소에는 heuristic transactions이 있습니다. 이러한 트랜잭션이 수동으로 해결되거나 정리될 때까지 Pod를 종료할 수 없습니다. |
| SCALING_DOWN_CLEAN | Pod는 트랜잭션 축소 프로세스를 완료했으며 클러스터에서 제거될 수 있도록 정리되어 있습니다. |
9.1.7.7. 스케일 다운 중 트랜잭션 복구 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
스케일 다운 중에 트랜잭션 복구를 비활성화하려면 WildFlyServerSpec.DeactivateTransactionRecovery 속성을 true로 구성할 수 있습니다(기본적으로 false로 설정됨). DeactivateTransactionRecovery 를 활성화하면 분산 트랜잭션을 사용할 때 데이터 불일치 또는 손실을 초래할 수 있습니다.
- heuristic Transactions
XA 트랜잭션의 결과는
커밋,롤백또는추론일 수 있습니다. 후자의 결과는 분산 거래의 일부 참가자가 2 단계 프로토콜의 첫 번째 단계의 결과에 따라 완료되지 않았다는 것을 인정하는 것입니다 ( XA 트랜잭션을 완료하는 데 사용됩니다). 그 결과, 추론 트랜잭션은 정확한 결과를 적용하기 위해 수동 개입이 필요합니다(처음 단계에서 모든 참여자에게 트랜잭션 코디네이터가 적용됨).JBoss EAP 포드에서 heuristic 트랜잭션을 처리하는 경우 해당 Pod는
SCALING_DOWN_RECOVERY_HEURISTICS로 레이블이 지정됩니다. 관리자는 특정 JBoss EAP 포드에 수동으로 연결하고(jboss-cli를 사용하여) 추론 트랜잭션을 수동으로 확인해야 합니다. 트랜잭션 오브젝트 저장소에서 이러한 모든 레코드가 해결/제거되면 Operator는 Pod에SCALING_DOWN_CLEAN으로 레이블을 지정하고 Pod가 종료됩니다.- StatefulSet 동작
-
StatefulSet은 Pod 순서에 따라 안정적인 네트워크 호스트 이름을 보장합니다. Pod의 이름은 정의된 순서로 지정됩니다. pod-0 전에 pod-1을 종료해야 합니다. pod-1이SCALING_DOWN_RECOVERY_HEURISTICS에 있고 pod-0이SCALING_DOWN_CLEAN에 있는 경우 pod-0은 pod-1이 종료될 때까지 해당 상태로 linger됩니다. Pod가SCALING_DOWN_CLEAN에 있더라도 새 요청을 받지 않고 유휴 상태로 유지됩니다.
9.1.8. 수평 Pod 자동 스케일러 HPA를 사용하여 Pod 자동 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
EAP Operator를 사용하면 수평 Pod 자동 스케일러 HPA를 사용하여 해당 EAP 애플리케이션에 속하는 Pod에서 수집한 메트릭을 기반으로 EAP 애플리케이션의 규모를 자동으로 늘리거나 줄일 수 있습니다.
HPA를 사용하면 Pod를 축소할 때 트랜잭션 복구가 계속 처리됩니다.
프로세스
리소스를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요자동 스케일링이 예상대로 작동하려면 Pod에서 컨테이너의 리소스 제한 및 요청을 지정해야 합니다.
Horizontal Pod 자동 스케일러를 생성합니다.
oc autoscale wildflyserver/eap-helloworld --cpu-percent=50 --min=1 --max=10
oc autoscale wildflyserver/eap-helloworld --cpu-percent=50 --min=1 --max=10Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
- 복제본을 확인하여 HPA 동작을 확인할 수 있습니다. 워크로드 증가 또는 감소에 따라 복제본 수가 증가 또는 감소합니다.
9.1.9. Jarkarta Enterprise beans Remoting on OpenShift 링크 복사링크가 클립보드에 복사되었습니다!
9.1.9.1. Jakarta Enterprise Cryostats remoting on openShift 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP가 OpenShift의 다른 JBoss EAP 클러스터 간에 엔터프라이즈급 remoting 호출을 올바르게 사용하려면 OpenShift에서 엔터프라이즈 empty 원격 구성 옵션을 이해해야 합니다.
OpenShift에 배포할 때 EAP Operator 사용을 고려하십시오. EAP Operator는 엔터프라이즈 빈 원격 설정 및 트랜잭션 복구 처리를 적절하게 처리하기 위해 StatefulSet 을 사용합니다. StatefulSet 은 Pod를 다시 시작한 후에도 영구 스토리지 및 네트워크 호스트 이름 안정성을 보장합니다.
트랜잭션 전파를 통한 엔터프라이즈VLAN 원격 호출을 사용하여 JBoss EAP 인스턴스에 연결할 때 네트워크 호스트 이름 안정성이 필요합니다. 포드가 다시 시작되는 경우에도 동일한 호스트 이름으로 JBoss EAP 인스턴스에 연결할 수 있어야 합니다. 상태 저장 구성 요소인 트랜잭션 관리자는 지속된 트랜잭션 데이터를 특정 JBoss EAP 인스턴스에 바인딩합니다. 트랜잭션 로그는 특정 JBoss EAP 인스턴스에 바인딩되므로 동일한 인스턴스에서 완료해야 합니다.
JDBC 트랜잭션 로그 저장소를 사용할 때 데이터 손실을 방지하려면 데이터베이스에서 데이터 일치 읽기 및 쓰기를 제공하는지 확인합니다. 데이터베이스가 여러 인스턴스로 수평으로 확장될 때 일관된 데이터 읽기 및 쓰기가 중요합니다.
enterprise Cryostat 원격 호출자에는 원격 호출을 구성하는 두 가지 옵션이 있습니다.
- 원격 아웃바운드 연결을 정의합니다.
- 원격 서버에서 8080에 대해 프로그래밍 방식의 JNDI 조회를 사용합니다. 자세한 내용은 원격 자카르타 Enterprise Cryostat 클라이언트 사용을 참조하십시오.
엔터프라이즈 빈 원격 호출 구성 방법에 따라 대상 노드의 주소를 나타내는 값을 재구성해야 합니다.
원격 호출의 대상 엔터프라이즈 빈 이름은 첫 번째 포드의 DNS 주소여야 합니다.
StatefulSet 동작은 Pod의 순서에 따라 다릅니다. Pod의 이름은 사전 정의된 순서로 지정됩니다. 예를 들어 애플리케이션을 3개의 복제본으로 스케일링하는 경우 Pod에 name -server-0 , Cryostat-server -1 , Cryostat 와 같은 이름이 있습니다.
-server -2
EAP Operator는 특정 DNS 호스트 이름이 포드에 할당되도록 하는 헤드리스 서비스도 사용합니다. 애플리케이션에서 EAP Operator를 사용하는 경우 헤드리스 서비스가 이름(예: Cryostat -server-headless )으로 생성됩니다. 이 경우 첫 번째 Pod의 DNS 이름은 Cryostat -server-0.eap-server-headless 입니다.
hostname -server-0.eap-server-headless 를 사용하면 엔터프라이즈 콩 호출이 클러스터에 연결된 모든 EAP 인스턴스에 도달할 수 있습니다. 부트스트랩 연결은 다음 단계로 EAP 클러스터의 구조를 수집하는 Jakarta Enterprise Cryostats 클라이언트를 초기화하는 데 사용됩니다.
9.1.9.1.1. OpenShift에서 Jakarta Enterprise Cryostat 구성 링크 복사링크가 클립보드에 복사되었습니다!
엔터프라이즈 빈 재모팅을 위해 호출자 역할을 하는 JBoss EAP 서버를 구성해야 합니다. 대상 서버는 엔터프라이즈 빈 원격 호출을 수신할 수 있는 권한이 있는 사용자를 구성해야 합니다.
사전 요구 사항
- OpenShift에서 JBoss EAP 애플리케이션 인스턴스를 배포 및 관리하기 위해 EAP 운영자와 지원되는 OpenShift S2I 이미지를 사용했습니다.
- 클러스터링이 올바르게 설정됩니다. JBoss EAP 클러스터링에 대한 자세한 내용은 Cryostat 섹션을 참조하십시오. https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/8.0/html-single/using_jboss_eap_on_openshift_container_platform/index#ref_openshift-clustering_assembly_reference-information-for-openshift-container-platform
프로세스
엔터프라이즈 empty 원격 호출을 수신할 수 있는 권한을 사용하여 대상 서버에 사용자를 생성합니다.
$JBOSS_HOME/bin/add-user.sh
$JBOSS_HOME/bin/add-user.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 호출자 JBoss EAP 애플리케이션 서버를 구성합니다.
-
사용자 지정 구성 기능을 사용하여
$JBOSS_HOME/standalone/configuration에 Cryostat-config.xml파일을 만듭니다. 자세한 내용은 사용자 지정 구성 을 참조하십시오. wildfly.config.url속성을 사용하여 호출자 JBoss EAP 애플리케이션 서버를 구성합니다.JAVA_OPTS_APPEND="-Dwildfly.config.url=$JBOSS_HOME/standalone/configuration/eap-config.xml"
JAVA_OPTS_APPEND="-Dwildfly.config.url=$JBOSS_HOME/standalone/configuration/eap-config.xml"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고구성에 다음 예제를 사용하는 경우 구성한 사용자 이름 및 암호로 >>
PASTE_…_HERE<<를 사용자 이름 및 암호로 바꿉니다.설정 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
사용자 지정 구성 기능을 사용하여
10장. 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
Pod는 여러 가지 이유로 다시 시작할 수 있지만 JBoss EAP 포드 재시작의 일반적인 원인에는 특히 메모리 부족 문제가 발생할 수 있습니다. OpenShift Pod 제거에 대한 자세한 내용은 OpenShift 설명서를 참조하십시오.
10.1. Pod 재시작 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 OpenShift 템플릿용 JBoss EAP는 메모리 부족 문제와 같은 상황이 발생하면 영향을 받는 컨테이너를 자동으로 재시작하도록 구성됩니다. 다음 단계는 메모리 부족 및 기타 Pod 재시작 문제를 진단하고 해결하는 데 도움이 될 수 있습니다.
문제가 발생한 Pod의 이름을 가져옵니다.
Pod 이름과 각 Pod가 다음 명령을 사용하여 재시작한 횟수를 확인할 수 있습니다.
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 포드가 재시작된 이유를 진단하기 위해 이전 포드의 JBoss EAP 로그 또는 OpenShift 이벤트를 검사할 수 있습니다.
이전 포드의 JBoss EAP 로그를 보려면 다음 명령을 사용합니다.
oc logs --previous POD_NAME
oc logs --previous POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift 이벤트를 보려면 다음 명령을 사용합니다.
oc get events
$ oc get eventsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 리소스 문제로 인해 포드를 다시 시작한 경우 OpenShift 포드 구성을 수정하여 리소스 요청 및 제한을 늘릴 수 있습니다. Pod 컴퓨팅 리소스 구성에 대한 자세한 내용은 OpenShift 설명서를 참조하십시오.
10.2. JBoss EAP 관리 CLI를 사용한 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 관리 CLI, EAP_HOME/bin/jboss-cli.sh 는 문제 해결을 위해 컨테이너 내에서 액세스할 수 있습니다.
JBoss EAP 관리 CLI를 사용하여 실행 중인 포드에서 구성을 변경하지 않는 것이 좋습니다. 컨테이너를 다시 시작하면 실행 중인 컨테이너에서 관리 CLI를 사용하여 변경한 구성은 손실됩니다.
OpenShift용 JBoss EAP를 구성하려면 JBoss EAP 서버 및 애플리케이션 구성을 참조하십시오.
먼저 실행 중인 포드에 대한 원격 쉘 세션을 엽니다.
oc rsh POD_NAME
$ oc rsh POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 원격 쉘 세션에서 다음 명령을 실행하여 JBoss EAP 관리 CLI를 시작합니다.
/opt/server/bin/jboss-cli.sh
$ /opt/server/bin/jboss-cli.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3. JBoss EAP 8의 버전 1.0.0에서 1.1.0으로 Helm 차트를 업데이트할 때 오류 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
Helm 차트를 JBoss EAP 8의 최신 버전으로 업그레이드할 때 오류가 발생할 수 있습니다. Helm 차트를 업그레이드하기 전에 변경할 수 없는 필드를 수정하면 업그레이드 중에 다음 오류 메시지가 표시될 수 있습니다.
UPGRADE FAILED: cannot patch "<helm-release-name>" with kind Deployment: Deployment.apps "<helm-release-name>" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/instance":"<helm-release-name>", "app.kubernetes.io/name":"<helm-release-name>"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
UPGRADE FAILED: cannot patch "<helm-release-name>" with kind Deployment: Deployment.apps "<helm-release-name>" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/instance":"<helm-release-name>", "app.kubernetes.io/name":"<helm-release-name>"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
이 오류를 해결하려면 helm upgrade <helm-release-name> 명령을 실행하기 전에 > 명령을 실행하여 배포 리소스를 삭제합니다.
oc delete deployment <helm-release-name
11장. OpenShift Container Platform에 대한 참조 정보 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션의 콘텐츠는 이 애플리케이션 이미지의 엔지니어링 문서에서 파생됩니다. 콘텐츠는 개발 목적 및 제품 문서의 범위를 벗어나는 테스트를 위한 참조로 제공됩니다.
11.1. 정보 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
다음 환경 변수는 이미지에 정보를 제공하도록 설계되었으며 사용자가 수정하지 않아야 합니다.
| 변수 이름 | 설명 및 값 |
|---|---|
| JBOSS_IMAGE_NAME | 이미지 이름입니다. 값:
|
| JBOSS_IMAGE_VERSION | 이미지 버전입니다. 값: 이미지 버전 번호입니다. 최신 값은 Red Hat Container Catalog를 참조하십시오. |
| JBOSS_MODULES_SYSTEM_PKGS | 애플리케이션에서 사용할 수 있는 JBoss EAP 시스템 모듈 패키지 쉼표로 구분된 목록입니다.
값: |
| STI_BUILDER |
값: |
11.2. 구성 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
다시 빌드하지 않고도 이미지를 조정하도록 다음 환경 변수를 구성할 수 있습니다.
여기에 나열되지 않은 다른 환경 변수는 JBoss EAP 설명서 를 참조하십시오.
| 변수 이름 | 설명 |
|---|---|
| CLI_GRACEFUL_SHUTDOWN |
0이 아닌 길이 값으로 설정하면 이미지가
예제 value: |
| CONTAINER_HEAP_PERCENT | 최대 Java 힙 크기를 사용 가능한 컨테이너 메모리의 백분율로 설정합니다.
예제 값: |
| CUSTOM_INSTALL_DIRECTORIES | S2I 프로세스 중 이미지의 아티팩트 설치 및 구성에 사용되는 쉼표로 구분된 디렉터리 목록입니다.
값 예: |
| DEFAULT_JMS_CONNECTION_FACTORY |
이 값은 Jakarta Messaging 연결 팩토리에 대한 기본 JNDI 바인딩을 지정하는 데 사용됩니다(예:
예제 값: |
| ENABLE_ACCESS_LOG | 표준 출력 채널에 대한 액세스 메시지 로깅을 활성화합니다. 액세스 메시지의 로깅은 다음 방법을 사용하여 구현됩니다.
기본값은 |
| INITIAL_HEAP_PERCENT | 초기 Java 힙 크기를 최대 힙 크기의 백분율로 설정합니다.
예제 값: |
| JAVA_OPTS_APPEND | 서버 시작 옵션.
예제 값: |
| JBOSS_MODULES_SYSTEM_PKGS_APPEND |
예시 값: |
| JGROUPS_CLUSTER_PASSWORD |
Cryostat 클러스터에 참여할 수 있도록 노드를 인증하는 데 사용되는 암호입니다.
예제 값: |
| JGROUPS_ENCRYPT_KEYSTORE |
예제 값: |
| JGROUPS_ENCRYPT_KEYSTORE_DIR | 키 저장소가 포함된 시크릿이 마운트되는 디렉터리 경로입니다.
값 예: |
| JGROUPS_ENCRYPT_NAME |
예제 값: |
| JGROUPS_ENCRYPT_PASSWORD |
예제 값: |
| JGROUPS_ENCRYPT_PROTOCOL |
클러스터 트래픽의 암호화에 사용할 Cryostat 프로토콜입니다.
기본값은
예제 값: |
| JGROUPS_PING_PROTOCOL |
노드 검색에 사용할 Cryostat 프로토콜입니다. |
| MQ_SIMPLE_DEFAULT_PHYSICAL_DESTINATION |
이전 버전과의 호환성을 위해 |
| OPENSHIFT_DNS_PING_SERVICE_NAME | DNS 검색 메커니즘을 위해 서버에서 ping 포트를 노출하는 서비스의 이름입니다.
예제 값: |
| OPENSHIFT_DNS_PING_SERVICE_PORT |
DNS 검색 메커니즘에 대한 ping 포트의 포트 번호입니다. 지정하지 않으면 서비스의 SRV 레코드에서 포트 번호를 검색하거나 기본
기본값은 |
| OPENSHIFT_KUBE_PING_LABELS | Kubernetes 검색 메커니즘에 대한 클러스터링 라벨 선택기입니다.
예제 값: |
| OPENSHIFT_KUBE_PING_NAMESPACE | Kubernetes 검색 메커니즘을 위한 프로젝트 네임스페이스 클러스터링.
예제 값: |
| SCRIPT_DEBUG |
|
11.3. 노출된 포트 링크 복사링크가 클립보드에 복사되었습니다!
| 포트 번호 | 설명 |
|---|---|
| 8443 | HTTPS |
11.4. 데이터 소스 링크 복사링크가 클립보드에 복사되었습니다!
데이터 소스는 일부 환경 변수의 값에 따라 자동으로 생성됩니다.
가장 중요한 환경 변수는 데이터 소스에 대한 JNDI 매핑을 정의하므로 DB_SERVICE_PREFIX_MAPPING 입니다. 이 변수에 허용되는 값은 쉼표로 구분된 POOLNAME-DATABASETYPE=PREFIX트립 릿 목록입니다.
-
POOLNAME은 데이터소스에서 풀 이름으로사용됩니다. -
DATABASETYPE은 사용할 데이터베이스 드라이버입니다. -
PREFIX는 데이터 소스를 구성하는 데 사용되는 환경 변수의 이름에 사용되는 접두사입니다.
11.4.1. 데이터 소스에 대한 JNDI 매핑 링크 복사링크가 클립보드에 복사되었습니다!
DB_SERVICE_PREF 트리트에 대해 시작 스크립트는 이미지를 실행할 때 실행되는 별도의 데이터 소스를 생성합니다.
IX_MAPPING 환경 변수에 정의된 각POOLNAME-DATABASETYPE=PREFIX
DB_SERVICE_PREFIX_MAPPING 의 첫 번째 부분은 소문자여야 합니다.
DATABASETYPE 은 데이터 소스에 대한 드라이버를 결정합니다.
드라이버 구성에 대한 자세한 내용은 모듈, 드라이버 및 일반 배포를 참조하십시오. JDK 8 이미지에는 기본적으로 postgresql 및 mysql 에 대한 드라이버가 있습니다.
POOLNAME 매개변수에는 특수 문자를 사용하지 마십시오.
OpenShift 이미지용 JBoss EAP와 함께 Red Hat 제공 내부 데이터 소스 드라이버 사용 지원이 더 이상 사용되지 않습니다. 데이터베이스 벤더에서 얻은 JDBC 드라이버를 JBoss EAP 애플리케이션에 사용하는 것이 좋습니다.
다음 내부 데이터 소스는 더 이상 OpenShift 이미지용 JBoss EAP와 함께 제공되지 않습니다.
- MySQL
- PostgreSQL
드라이버 설치에 대한 자세한 내용은 모듈, 드라이버 및 일반 배포를 참조하십시오.
프로비저닝된 서버에 추가하려는 경우 이러한 드라이버 및 데이터 소스를 설치하기 위해 사용자 지정 계층을 만들 수도 있습니다.
11.4.1.1. 데이터 소스 구성 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
다른 데이터 소스 속성을 구성하려면 다음 환경 변수를 사용합니다.
다음 변수 이름의 POOLNAME, DATABASETYPE 및 PREFIX 값을 적절한 값으로 교체해야 합니다. 이러한 대체 가능한 값은 이 섹션과 Datasources 섹션에 설명되어 있습니다.
| 변수 이름 | 설명 |
|---|---|
| POOLNAME_DATABASETYPE_SERVICE_HOST |
데이터 소스의
예제 값: |
| POOLNAME_DATABASETYPE_SERVICE_PORT | 데이터 소스에 대한 데이터베이스 서버의 포트를 정의합니다.
예제 값: |
| PREFIX_BACKGROUND_VALIDATION |
|
| PREFIX_BACKGROUND_VALIDATION_MILLIS |
|
| PREFIX_CONNECTION_CHECKER | 사용 중인 특정 데이터베이스에 대한 연결의 유효성을 검사하는 데 사용되는 연결 검사 클래스를 지정합니다.
예: |
| PREFIX_DATABASE | 데이터 소스의 데이터베이스 이름을 정의합니다.
예제 값: |
| PREFIX_DRIVER | 데이터 소스에 대한 Java 데이터베이스 드라이버를 정의합니다.
예시 값: |
| PREFIX_EXCEPTION_SORTER | 치명적인 데이터베이스 연결 예외 이후 적절하게 감지 및 정리하는 데 사용되는 예외 분류기 클래스를 지정합니다.
예제 값: |
| PREFIX_JNDI |
데이터 소스에 대한 JNDI 이름을 정의합니다. 기본값은
예제 값: |
| PREFIX_JTA | 비 XA 데이터 소스에 대한 Jakarta 트랜잭션 옵션을 정의합니다. XA 데이터 소스는 이미 Jakarta 트랜잭션입니다.
기본값은 |
| PREFIX_MAX_POOL_SIZE | 데이터 소스에 대한 최대 풀 크기 옵션을 정의합니다.
예제 값: |
| PREFIX_MIN_POOL_SIZE | 데이터 소스에 대한 최소 풀 크기 옵션을 정의합니다.
예제 값: |
| PREFIX_NONXA |
데이터 소스를 비 XA 데이터 소스로 정의합니다. 기본값은 |
| PREFIX_PASSWORD | 데이터 소스의 암호를 정의합니다.
예: |
| PREFIX_TX_ISOLATION | 데이터 소스에 대한 java.sql.Connection 트랜잭션 격리 수준을 정의합니다.
예제 값: |
| PREFIX_URL | 데이터 소스에 대한 연결 URL을 정의합니다.
예제 값: |
| PREFIX_USERNAME | 데이터 소스의 사용자 이름을 정의합니다.
예제 값: |
11.4.1.2. 예 링크 복사링크가 클립보드에 복사되었습니다!
이 예제에서는 DB_SERVICE_PREFIX_MAPPING 환경 변수의 값이 데이터 소스 생성에 어떤 영향을 미치는지 보여줍니다.
11.4.1.2.1. 단일 매핑 링크 복사링크가 클립보드에 복사되었습니다!
test-postgresql=TEST 값을 고려하십시오.
이렇게 하면 java:jboss/datasources/test_postgresql 이름을 사용하여 데이터 소스가 생성됩니다. 또한 password 및 username과 같은 모든 필수 설정은 Cryostat _ 접두사(예: Cryostat_ )를 사용하여 환경 변수로 제공되어야 합니다.
USERNAME 및 Cryostat _ PASSWORD
11.4.1.2.2. 여러 매핑 링크 복사링크가 클립보드에 복사되었습니다!
여러 데이터 소스 매핑을 지정할 수 있습니다.
항상 여러 데이터 소스 매핑을 쉼표로 구분합니다.
DB_SERVICE_PREFIX_MAPPING 환경 변수에 대해 다음 값을 고려하십시오. cloud-postgresql=CLOUD,test-mysql=TEST_MYSQL.
이렇게 하면 다음 두 데이터 소스가 생성됩니다.
-
java:jboss/datasources/test_mysql -
java:jboss/datasources/cloud_postgresql
그런 다음 MySQL 데이터 소스의 사용자 이름 및 암호(예: Cryostat _MYSQL_ USERNAME )와 같은 항목을 구성하기 위해 Cryostat_MYSQL 접두사를 사용할 수 있습니다. PostgreSQL 데이터 소스의 경우 CLOUD_ 접두사를 사용합니다(예: CLOUD_USERNAME ).
11.5. 클러스터링 링크 복사링크가 클립보드에 복사되었습니다!
11.5.1. Cryostat 검색 메커니즘 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift에서 JBoss EAP 클러스터링을 활성화하려면 kubernetes.KUBE_PING 또는 dns.DNS_PING 검색 메커니즘을 사용하도록 JBoss EAP 구성에서 Cryostat 프로토콜 스택을 구성합니다.
사용자 지정 standalone.xml 구성 파일을 사용할 수 있지만 환경 변수를 사용하여 이미지 빌드에서 Cryostat를 구성하는 것이 좋습니다.
아래 명령은 환경 변수를 사용하여 OpenShift 이미지용 JBoss EAP에 대한 검색 메커니즘을 구성합니다.
Helm 차트를 사용하여 OpenShift 이미지용 JBoss EAP 상단에 애플리케이션을 배포하는 경우 기본 검색 메커니즘은 dns.DNS_PING 입니다.
dns.DNS_PING 및 kubernetes.KUBE_PING 검색 메커니즘은 서로 호환되지 않습니다. 검색을 위해 dns.DNS_PING 메커니즘을 사용하고 kubernetes.KUBE_PING 메커니즘을 사용하여 두 개의 독립적인 하위 클러스터에서 슈퍼클러스터를 구성할 수 없습니다. 마찬가지로 롤링 업그레이드를 수행할 때 소스 및 대상 클러스터 둘 다 검색 메커니즘이 동일해야 합니다.
11.5.1.1. KUBE_PING 구성 링크 복사링크가 클립보드에 복사되었습니다!
KUBE_PING Cryostat 검색 메커니즘을 사용하려면 다음을 수행합니다.
KUBE_PING을 검색 메커니즘으로 사용하도록 Cryostat 프로토콜 스택을 구성해야 합니다.JGROUPS_PING_PROTOCOL환경 변수를kubernetes.KUBE_PING으로 설정하여 이 작업을 수행할 수 있습니다.JGROUPS_PING_PROTOCOL=kubernetes.KUBE_PING
JGROUPS_PING_PROTOCOL=kubernetes.KUBE_PINGCopy to Clipboard Copied! Toggle word wrap Toggle overflow KUBERNETES_NAMESPACE환경 변수를 OpenShift 프로젝트 이름으로 설정해야 합니다. 예를 들면 다음과 같습니다.KUBERNETES_NAMESPACE=PROJECT_NAME
KUBERNETES_NAMESPACE=PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow KUBERNETES_LABELS환경 변수를 설정해야 합니다. 이는 서비스 수준에서 설정된 라벨 과 일치해야 합니다. 설정되지 않으면 애플리케이션 외부의 Pod(네임스페이스에 있음)가 참여하려고 합니다. 예를 들면 다음과 같습니다.KUBERNETES_LABELS=application=APP_NAME
KUBERNETES_LABELS=application=APP_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow Kubernetes의 REST API에 액세스할 수 있도록 pod가 실행 중인 서비스 계정에 권한을 부여해야 합니다. 이 작업은 OpenShift CLI를 사용하여 수행됩니다. 다음 예제에서는 현재 프로젝트 네임스페이스의
default서비스 계정을 사용합니다.oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)
oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로젝트 네임스페이스
에서 Cryostat-service-account사용:oc policy add-role-to-user view system:serviceaccount:$(oc project -q):eap-service-account -n $(oc project -q)
oc policy add-role-to-user view system:serviceaccount:$(oc project -q):eap-service-account -n $(oc project -q)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고서비스 계정에 정책을 추가하는 방법에 대한 자세한 내용은 OpenShift에서 애플리케이션 배포를 참조하십시오.
11.5.1.2. DNS_PING 구성 링크 복사링크가 클립보드에 복사되었습니다!
DNS_PING Cryostat 검색 메커니즘을 사용하려면 다음을 수행합니다.
DNS_PING을 검색 메커니즘으로 사용하도록 Cryostat 프로토콜 스택을 구성해야 합니다.JGROUPS_PING_PROTOCOL환경 변수를dns.DNS_PING:로 설정하여 이 작업을 수행할 수 있습니다.JGROUPS_PING_PROTOCOL=dns.DNS_PING
JGROUPS_PING_PROTOCOL=dns.DNS_PINGCopy to Clipboard Copied! Toggle word wrap Toggle overflow OPENSHIFT_DNS_PING_SERVICE_NAME환경 변수는 클러스터의 ping 서비스 이름으로 설정해야 합니다.OPENSHIFT_DNS_PING_SERVICE_NAME=PING_SERVICE_NAME
OPENSHIFT_DNS_PING_SERVICE_NAME=PING_SERVICE_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow OPENSHIFT_DNS_PING_SERVICE_PORT환경 변수는 ping 서비스가 노출되는 포트 번호로 설정해야 합니다.DNS_PING프로토콜은 SRV 레코드에서 포트를 식별하려고 합니다. 그렇지 않으면 기본값은8888입니다.OPENSHIFT_DNS_PING_SERVICE_PORT=PING_PORT
OPENSHIFT_DNS_PING_SERVICE_PORT=PING_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow ping 포트를 노출하는 ping 서비스를 정의해야 합니다. 이 서비스는 헤드리스(ClusterIP=None)여야 하며 다음이 있어야 합니다.
- 포트의 이름은 이어야 합니다.
서비스에
service.alpha.kubernetes.io/tolerate-unready-endpoints및publishNotReadyAddresses속성을true로 설정해야 합니다.참고-
service.alpha.kubernetes.io/tolerate-unready-endpoints및publishNotReadyAddresses속성을 모두 사용하여 ping 서비스가 이전 OpenShift 릴리스와 최신 OpenShift 릴리스에서 작동하도록 합니다. - 이러한 주석을 생략하면 각 노드가 시작 중에 자체 "1 클러스터"를 형성합니다. 그런 다음 다른 노드가 시작된 후 다른 노드가 감지되지 않으므로 각 노드는 시작 후 클러스터를 다른 노드의 클러스터에 병합합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
DNS_PING 은 서비스 계정을 수정할 필요가 없으며 기본 권한을 사용하여 작동합니다.
11.5.2. 클러스터 트래픽을 암호화하도록 Cryostat 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift에서 JBoss EAP에 대한 클러스터 트래픽을 암호화하려면 SYM_ENCRYPT 또는 ASYM_ENCRYPT 프로토콜을 사용하도록 JBoss EAP 구성에서 Cryostat 프로토콜 스택을 구성해야 합니다.
사용자 지정 standalone.xml 구성 파일을 사용할 수 있지만 환경 변수를 사용하여 이미지 빌드에서 Cryostat를 구성하는 것이 좋습니다.
아래 명령은 환경 변수를 사용하여 OpenShift 이미지의 JBoss EAP의 클러스터 트래픽 암호화 프로토콜을 구성합니다.
SYM_ENCRYPT 및 ASYM_ENCRYPT 프로토콜은 서로 호환되지 않습니다. 클러스터 트래픽 암호화를 위해 SYM_ENCRYPT 프로토콜을 사용하고 다른 하나는 A 프로토콜을 사용하여 두 개의 독립적인 하위 클러스터로 구성할 수 없습니다. 마찬가지로 롤링 업그레이드를 수행할 때 소스 및 대상 클러스터 모두에서 프로토콜을 동일해야 합니다.
SYM_ENCRYPT
11.5.2.1. SYM_ENCRYPT 구성 링크 복사링크가 클립보드에 복사되었습니다!
SYM_ENCRYPT 프로토콜을 사용하여 Cryostat 클러스터 트래픽을 암호화하려면 다음을 수행합니다.
SYM_ENCRYPT를 암호화 프로토콜로 사용하도록 Cryostat 프로토콜 스택을 구성해야 합니다.JGROUPS_ENCRYPT_PROTOCOL환경 변수를SYM_ENCRYPT로 설정하여 이 작업을 수행할 수 있습니다.JGROUPS_ENCRYPT_PROTOCOL=SYM_ENCRYPT
JGROUPS_ENCRYPT_PROTOCOL=SYM_ENCRYPTCopy to Clipboard Copied! Toggle word wrap Toggle overflow JGROUPS_ENCRYPT_KEYSTORE_DIR환경 변수는 키 저장소를 포함하는 시크릿이 마운트된 디렉터리 경로로 설정해야 합니다. 예를 들면 다음과 같습니다.JGROUPS_ENCRYPT_KEYSTORE_DIR=/etc/jgroups-encrypt-secret-volume
JGROUPS_ENCRYPT_KEYSTORE_DIR=/etc/jgroups-encrypt-secret-volumeCopy to Clipboard Copied! Toggle word wrap Toggle overflow JGROUPS_ENCRYPT_KEYSTORE환경 변수는 지정된 시크릿 내에서 키 저장소 파일의 이름으로 설정해야 합니다. 설정되지 않은 경우 클러스터 통신이 암호화되지 않고 경고가 표시됩니다. 예를 들면 다음과 같습니다.JGROUPS_ENCRYPT_KEYSTORE=jgroups.jceks
JGROUPS_ENCRYPT_KEYSTORE=jgroups.jceksCopy to Clipboard Copied! Toggle word wrap Toggle overflow JGROUPS_ENCRYPT_NAME환경 변수를 서버 인증서와 연결된 이름으로 설정해야 합니다. 설정되지 않은 경우 클러스터 통신이 암호화되지 않고 경고가 표시됩니다. 예를 들면 다음과 같습니다.JGROUPS_ENCRYPT_NAME=jgroups
JGROUPS_ENCRYPT_NAME=jgroupsCopy to Clipboard Copied! Toggle word wrap Toggle overflow JGROUPS_ENCRYPT_PASSWORD환경 변수는 키 저장소 및 인증서에 액세스하는 데 사용되는 암호로 설정해야 합니다. 설정되지 않은 경우 클러스터 통신이 암호화되지 않고 경고가 표시됩니다. 예를 들면 다음과 같습니다.JGROUPS_ENCRYPT_PASSWORD=mypassword
JGROUPS_ENCRYPT_PASSWORD=mypasswordCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5.2.2. ASYM_ENCRYPT 구성 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 8.0에는 새로운 버전의 ASYM_ENCRYPT 프로토콜이 포함되어 있습니다. 이전 버전의 프로토콜은 더 이상 사용되지 않습니다. JGROUPS_CLUSTER_PASSWORD 환경 변수를 지정하면 더 이상 사용되지 않는 프로토콜 버전이 사용되며 Pod 로그에 경고가 표시됩니다.
ASYM_ENCRYPT 프로토콜을 사용하여 Cryostat 클러스터 트래픽을 암호화하려면 ASYM_ENCRYPT 를 암호화 프로토콜로 지정하고 elytron 하위 시스템에 구성된 키 저장소를 사용하도록 구성합니다.
-e JGROUPS_ENCRYPT_PROTOCOL="ASYM_ENCRYPT" \ -e JGROUPS_ENCRYPT_NAME="encrypt_name" \ -e JGROUPS_ENCRYPT_PASSWORD="encrypt_password" \ -e JGROUPS_ENCRYPT_KEYSTORE="encrypt_keystore" \ -e JGROUPS_CLUSTER_PASSWORD="cluster_password"
-e JGROUPS_ENCRYPT_PROTOCOL="ASYM_ENCRYPT" \
-e JGROUPS_ENCRYPT_NAME="encrypt_name" \
-e JGROUPS_ENCRYPT_PASSWORD="encrypt_password" \
-e JGROUPS_ENCRYPT_KEYSTORE="encrypt_keystore" \
-e JGROUPS_CLUSTER_PASSWORD="cluster_password"
11.5.3. Pod 스케일링 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
Cryostat의 검색 메커니즘을 기반으로 시작 노드는 기존 클러스터 코디네이터 노드를 검색합니다. 코디네이터 노드가 지정된 시간 내에 없으면 시작 노드는 해당 노드가 첫 번째 멤버라고 가정하고 코디네이터 상태를 차지합니다.
여러 노드가 동시에 시작되면 여러 파티션이 있는 분할 클러스터를 생성하는 첫 번째 멤버가 있다고 가정합니다. 예를 들어 DeploymentConfig API를 사용하여 0에서 2개의 Pod로 확장하면 분할 클러스터가 생성될 수 있습니다. 이 상황을 방지하려면 첫 번째 Pod를 시작한 다음 필요한 Pod 수로 확장해야합니다.
기본적으로 JBoss EAP Operator는 Pod 생성을 순서대로 시작하는 StatefulSet API(즉, 하나씩)를 사용하므로 분할 클러스터를 생성하지 못합니다.
11.6. 기본 상태 점검 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 이미지용 JBoss EAP는 기본적으로 OpenShift에 포함된 실시간 및 준비 상태 프로브를 구현합니다. 자세한 내용은 OpenShift Container Platform 개발자 가이드의 활성 상태 프로브 및 준비 상태 프로브를 참조하십시오.
다음 표는 이러한 상태 점검을 전달하는 데 필요한 값을 보여줍니다. 상태가 아래 값과 다른 경우 검사에 실패하고 이미지의 재시작 정책에 따라 이미지가 다시 시작됩니다.
11.7. 메시징 링크 복사링크가 클립보드에 복사되었습니다!
11.7.1. 외부 Red Hat AMQ 브로커 구성 링크 복사링크가 클립보드에 복사되었습니다!
외부 Red Hat AMQ 브로커에 연결하기 위해 환경 변수를 사용하여 OpenShift 이미지의 JBoss EAP를 구성할 수 있습니다.
11.8. 보안 도메인 링크 복사링크가 클립보드에 복사되었습니다!
새 보안 도메인을 구성하려면 사용자가 CloudEvent DOMAIN_NAME 환경 변수를 정의해야 합니다.
그러면 환경 변수 뒤에 이름이 지정된 보안 도메인이 생성됩니다. 사용자는 다음 환경 변수를 정의하여 도메인을 사용자 지정할 수도 있습니다.
| 변수 이름 | 설명 |
|---|---|
| SECDOMAIN_NAME | 추가 보안 도메인을 정의합니다.
예제 값: |
| SECDOMAIN_PASSWORD_STACKING |
정의된 경우
예제 value: |
| SECDOMAIN_LOGIN_MODULE | 사용할 로그인 모듈입니다.
기본값은 |
| SECDOMAIN_USERS_PROPERTIES | 사용자 정의가 포함된 속성 파일의 이름입니다.
기본값은 |
| SECDOMAIN_ROLES_PROPERTIES | 역할 정의가 포함된 속성 파일의 이름입니다.
기본값은 |
11.9. HTTPS 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
| 변수 이름 | 설명 |
|---|---|
| HTTPS_NAME |
예제 값: |
| HTTPS_PASSWORD |
예제 값: |
| HTTPS_KEYSTORE |
값 예: |
11.10. 관리 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
| 변수 이름 | 설명 |
|---|---|
| ADMIN_USERNAME |
이 및
예제 값: Cryo |
| ADMIN_PASSWORD |
지정된
예제 값: |
11.11. S2I 링크 복사링크가 클립보드에 복사되었습니다!
이미지에는 S2I 스크립트와 Maven이 포함됩니다. Maven은 현재 OpenShift의 JBoss EAP 기반 컨테이너(또는 관련/하위 이미지)에 배포되어야 하는 애플리케이션의 빌드 도구로만 지원됩니다.
현재 WAR 배포만 지원됩니다.
11.11.1. 사용자 정의 설정 링크 복사링크가 클립보드에 복사되었습니다!
이미지에 대한 사용자 지정 구성 파일을 추가할 수 있습니다. configuration/ 디렉토리에 배치된 모든 파일이 EAP_HOME/standalone/configuration/ 에 복사됩니다. 예를 들어 이미지에 사용되는 기본 구성을 재정의하려면 사용자 지정 standalone.xml 을 configuration/ 디렉터리에 추가하기만 하면 됩니다. 이러한 배포 예제는 예제를 참조하십시오.
11.11.1.1. 사용자 정의 모듈 링크 복사링크가 클립보드에 복사되었습니다!
사용자 지정 모듈을 추가할 수 있습니다. modules/ 디렉터리의 모든 파일이 EAP_HOME/modules/ 에 복사됩니다. 이러한 배포 예제는 예제를 참조하십시오.
11.11.2. 배포 Artifacts 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 소스 대상 디렉터리의 아티팩트가 배포됩니다. 다른 디렉터리에서 배포하려면 BuildConfig 정의에 ARTIFACT_DIR 환경 변수를 설정합니다. ARTIFACT_DIR 은 쉼표로 구분된 목록입니다. 예: ARTIFACT_DIR=app1/target,app2/target,app3/target
11.11.3. 아티팩트 저장소 미러 링크 복사링크가 클립보드에 복사되었습니다!
Maven의 리포지토리에는 다양한 유형의 빌드 아티팩트 및 종속성(예: 모든 프로젝트 JAR, 라이브러리 JAR, 플러그인 또는 기타 프로젝트별 아티팩트)이 있습니다. S2I 빌드를 수행하는 동안 아티팩트를 다운로드할 위치도 지정합니다. 중앙 리포지토리를 사용하는 것 외에도 조직에서 로컬 사용자 정의 미러 저장소를 배포하는 것이 일반적인 방법입니다.
미러를 사용하면 다음과 같은 이점이 있습니다.
- 동기화된 미러의 가용성은 지리적으로 더 빠르고 빠릅니다.
- 리포지토리 콘텐츠를 보다 효과적으로 제어할 수 있는 기능.
- 공용 서버 및 리포지토리에 의존할 필요 없이 다양한 팀(개발자, CI)에서 아티팩트를 공유할 수 있습니다.
- 빌드 시간이 개선되었습니다.
종종 저장소 관리자는 미러에 대한 로컬 캐시 역할을 할 수 있습니다. 리포지토리 관리자가 이미 배포되어 https://10.0.0.1:8443/repository/internal/ 에서 외부에서 연결할 수 있다고 가정하면 S2I 빌드는 다음과 같이 애플리케이션의 빌드 구성에 MAVEN_MIRROR_URL 환경 변수를 제공하여 이 관리자를 사용할 수 있습니다.
MAVEN_MIRROR_URL변수를 적용할 빌드 구성의 이름을 식별합니다.oc get bc -o name buildconfig/eap
oc get bc -o name buildconfig/eapCopy to Clipboard Copied! Toggle word wrap Toggle overflow MAVEN_MIRROR_URL환경 변수를 사용하여 build 구성을 업데이트합니다.oc env bc/eap MAVEN_MIRROR_URL="https://10.0.0.1:8443/repository/internal/" buildconfig "eap" updated
oc env bc/eap MAVEN_MIRROR_URL="https://10.0.0.1:8443/repository/internal/" buildconfig "eap" updatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 설정을 확인합니다.
oc env bc/eap --list # buildconfigs eap MAVEN_MIRROR_URL=https://10.0.0.1:8443/repository/internal/
oc env bc/eap --list # buildconfigs eap MAVEN_MIRROR_URL=https://10.0.0.1:8443/repository/internal/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 애플리케이션의 새 빌드를 예약합니다.
애플리케이션 빌드 중에 Maven 종속성은 기본 공용 리포지토리가 아니라 리포지토리 관리자에서 가져옵니다. 또한 빌드가 완료되면 빌드 중에 검색 및 사용된 모든 종속 항목으로 미러가 채워집니다.
11.11.3.1. 보안 아티팩트 저장소 미러 URL 링크 복사링크가 클립보드에 복사되었습니다!
Maven 리포지토리를 통해 "man-in-the-middle" 공격을 방지하려면 JBoss EAP에서 아티팩트 리포지토리 미러 URL에 대한 보안 URL을 사용해야 합니다.
URL은 보안 http("https") 및 보안 포트를 지정해야 합니다.
기본적으로 비보안 URL을 지정하면 오류가 반환됩니다. -Dinsecure.repositories=WARN 속성을 사용하여 이 동작을 재정의할 수 있습니다.
11.11.4. 스크립트 링크 복사링크가 클립보드에 복사되었습니다!
run-
이 스크립트는
standalone.xml구성으로 JBoss EAP를 구성하고 시작하는openshift-launch.sh스크립트를 사용합니다. assemble-
이 스크립트는 Maven을 사용하여 소스를 빌드하고 패키지(WAR)를 생성한 다음
EAP_HOME/standalone/deployments디렉터리로 이동합니다.
11.11.5. 사용자 지정 스크립트 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP가 시작되기 전에 포드를 시작할 때 실행할 사용자 지정 스크립트를 추가할 수 있습니다.
CLI 스크립트를 포함하여 Pod를 시작할 때 실행할 유효한 스크립트를 추가할 수 있습니다.
이미지에서 JBoss EAP를 시작할 때 스크립트를 포함하여 두 가지 옵션을 사용할 수 있습니다.
- postconfigure.sh로 실행할 configmap을 마운트합니다.
- nominated 설치 디렉터리에 install.sh 스크립트를 추가합니다.
11.11.5.1. 사용자 정의 스크립트를 실행하기 위한 configmap 마운트 링크 복사링크가 클립보드에 복사되었습니다!
런타임 시 사용자 지정 스크립트를 기존 이미지(즉, 이미 빌드된 이미지)에 마운트하려는 경우 configmap을 마운트합니다.
configmap을 마운트하려면 다음을 수행합니다.
postconfigure.sh에 포함할 콘텐츠로 configmap을 생성합니다.
예를 들어 프로젝트 루트 디렉터리에
확장이라는 디렉터리를 생성하여postconfigure.sh및extensions.cli스크립트를 포함하고 다음 명령을 실행합니다.oc create configmap jboss-cli --from-file=postconfigure.sh=extensions/postconfigure.sh --from-file=extensions.cli=extensions/extensions.cli
$ oc create configmap jboss-cli --from-file=postconfigure.sh=extensions/postconfigure.sh --from-file=extensions.cli=extensions/extensions.cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 배포 컨트롤러(dc)를 통해 configmap을 Pod에 마운트합니다.
oc set volume dc/eap-app --add --name=jboss-cli -m /opt/server/extensions -t configmap --configmap-name=jboss-cli --default-mode='0755' --overwrite
$ oc set volume dc/eap-app --add --name=jboss-cli -m /opt/server/extensions -t configmap --configmap-name=jboss-cli --default-mode='0755' --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow
postconfigure.sh예
#!/usr/bin/env bash set -x echo "Executing postconfigure.sh" $JBOSS_HOME/bin/jboss-cli.sh --file=$JBOSS_HOME/extensions/extensions.cli
#!/usr/bin/env bash
set -x
echo "Executing postconfigure.sh"
$JBOSS_HOME/bin/jboss-cli.sh --file=$JBOSS_HOME/extensions/extensions.cli
extensions.cli의 예
embed-server --std-out=echo --server-config=standalone.xml :whoami quit
embed-server --std-out=echo --server-config=standalone.xml
:whoami
quit
11.11.5.2. install.sh를 사용하여 사용자 지정 스크립트 실행 링크 복사링크가 클립보드에 복사되었습니다!
빌드 시 스크립트를 이미지의 일부로 포함하려면 install.sh를 사용합니다.
install.sh를 사용하여 사용자 정의 스크립트를 실행하려면 다음을 수행합니다.
-
s2i 빌드 중에 사용할 프로젝트의 git 리포지토리에서
.s2i라는 디렉터리를 생성합니다. s2i디렉터리 내에서 다음 콘텐츠를 사용하여 environment라는 파일을 추가합니다.cat .s2i/environment CUSTOM_INSTALL_DIRECTORIES=extensions
$ cat .s2i/environment CUSTOM_INSTALL_DIRECTORIES=extensionsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
extensions이라는 디렉터리를 만듭니다. extensions디렉토리에서 다음과 유사한 콘텐츠를 사용하여 postconfigure.sh 파일을 만듭니다(사용자 환경에 적합한 코드로 자리 표시자 코드를 교체).cat extensions/postconfigure.sh #!/usr/bin/env bash echo "Executing patch.cli" $JBOSS_HOME/bin/jboss-cli.sh --file=$JBOSS_HOME/extensions/some-cli-example.cli
$ cat extensions/postconfigure.sh #!/usr/bin/env bash echo "Executing patch.cli" $JBOSS_HOME/bin/jboss-cli.sh --file=$JBOSS_HOME/extensions/some-cli-example.cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow extensions 디렉토리에서 다음과 유사한 내용으로 파일 install.sh를 만듭니다 ( 자리 표시자 코드를 환경에 적합한 코드로 교체).
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.11.6. 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
환경 변수를 s2i build 명령에 제공하여 빌드 실행 방식에 영향을 미칠 수 있습니다. 제공할 수 있는 환경 변수는 다음과 같습니다.
| 변수 이름 | 설명 |
|---|---|
| ARTIFACT_DIR |
이 디렉터리의
예제 값: |
| ENABLE_GENERATE_DEFAULT_DATASOURCE |
선택 사항: 값이 |
| GALLEON_PROVISION_LAYERS | 선택 사항: 지정된 계층을 프로비저닝하도록 S2I 프로세스에 지시합니다. 값은 하나의 기본 계층과 임의의 수의 데코레이터 계층을 포함하여 프로비저닝할 쉼표로 구분된 계층 목록입니다.
예제 값: |
| GALLEON_PROVISION_CHANNELS |
이는 쉼표로 구분된 JBoss EAP 채널 매니페스트 목록입니다. JBoss EAP 채널 매니페스트는 참고
버전은 선택 사항이므로 최신 채널 매니페스트가 검색됩니다. JBoss EAP 8.0의 경우 이 채널 |
| GALLEON_PROVISION_FEATURE_PACKS |
환경 변수를 빌드하여 S2I 이미지의 사용자 지정 Galleon 기능 팩을 지정합니다. 예: 참고
|
| HTTP_PROXY_HOST | Maven을 사용할 HTTP 프록시의 호스트 이름 또는 IP 주소입니다.
예제 값: |
| HTTP_PROXY_PORT | Maven에서 사용할 HTTP 프록시의 TCP 포트입니다.
값 예: |
| HTTP_PROXY_USERNAME |
예제 값: |
| HTTP_PROXY_PASSWORD |
예제 값: |
| HTTP_PROXY_NONPROXYHOSTS | 제공된 경우 구성된 HTTP 프록시는 이러한 호스트를 무시합니다.
예제 값: |
| MAVEN_ARGS | 빌드 중에 Maven에 제공된 인수를 재정의합니다.
예: |
| MAVEN_ARGS_APPEND | 빌드 중에 Maven에 제공된 사용자 인수를 추가합니다.
예제 값: |
| MAVEN_MIRROR_URL | 구성할 Maven 미러/repository 관리자의 URL입니다.
예제 값: 지정된 URL은 안전해야 합니다. 자세한 내용은 Secure artifact repository 미러 URL을 참조하십시오. |
| MAVEN_CLEAR_REPO | 선택적으로 빌드 후 로컬 Maven 리포지토리를 지웁니다. 이미지에 있는 서버가 로컬 캐시에 강하게 연결된 경우 캐시가 삭제되지 않고 경고가 출력됩니다.
예제 value: |
| APP_DATADIR | 정의된 경우 데이터 파일이 복사되는 소스의 디렉터리입니다.
예제 값: |
| DATA_DIR |
예시 값: |
자세한 내용은 Maven 및 S2I 스크립트를 사용하는 OpenShift Container Platform에서 JBoss EAP 애플리케이션 빌드 및 실행을 참조하십시오.
11.12. 지원되지 않는 트랜잭션 복구 시나리오 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift에서는 JTS 트랜잭션이 지원되지 않습니다.
- OpenShift에서 XTS 트랜잭션은 지원되지 않습니다.
- 일부 타사에서 트랜잭션 완료 및 충돌 복구 흐름에 사용하는 XATerminator 인터페이스는 OpenShift에서 지원되지 않습니다.
- JBoss Remoting 을 통해 배포되지 않는 트랜잭션은 지원되지 않습니다.
JBoss Remoting 을 통해 전파되는 트랜잭션은 EAP Operator를 사용하여 지원됩니다.
11.13. 포함된 JBoss 모듈 링크 복사링크가 클립보드에 복사되었습니다!
아래 표에는 OpenShift용 JBoss EAP에 JBoss 모듈이 포함되어 있습니다.
| JBoss 모듈 |
|---|
| org.jboss.as.clustering.common |
| org.jboss.as.clustering.jgroups |
| org.jboss.as.ee |
| org.jgroups |
| org.openshift.ping |
| net.oauth.core |
11.14. EAP Operator: API 정보 링크 복사링크가 클립보드에 복사되었습니다!
EAP Operator는 다음 API를 도입합니다.
11.14.1. WildFlyServer 링크 복사링크가 클립보드에 복사되었습니다!
WildFlyServer 는 사용자 지정 JBoss EAP 리소스를 정의합니다.
11.14.2. WildFlyServerList 링크 복사링크가 클립보드에 복사되었습니다!
WildFlyServerList 는 JBoss EAP 배포 목록을 정의합니다.
| 필드 | 설명 | 스키마 | 필수 항목 |
|---|---|---|---|
|
| 표준 목록의 메타데이터 | false | |
|
|
| true |
11.14.3. WildFlyServerSpec 링크 복사링크가 클립보드에 복사되었습니다!
WildFlyServerSpec 은 JBoss EAP 리소스의 원하는 동작 사양입니다.
/opt/jboss/wildfly/standalone/data에서 스토리지에 지정된 볼륨을 마운트하는 Pod 사양과 함께 StatefulSet 을 사용합니다.
| 필드 | 설명 | 스키마 | 필수 항목 |
|---|---|---|---|
|
| 배포할 애플리케이션 이미지의 이름 | string | false |
|
| 애플리케이션에 필요한 복제본 수 | int32] | true |
|
|
| false | |
|
|
Stateful Set의 요청 또는 제한을 지정하는 | false | |
|
|
Stateful Set에서 생성한 Pod 컨테이너에 대한 권한 및 액세스 제어 설정을 정의하는 security | false | |
|
|
스토리지 사용 방법을 지정하는 스토리지 사양입니다. 생략하면 | false | |
|
| JBoss EAP Pod를 실행하는 데 사용할 ServiceAccount의 이름 | string | false |
|
|
| false | |
|
| 컨테이너에 존재하는 환경 변수 목록 | false | |
|
|
컨테이너에 볼륨으로 마운트할 시크릿 이름 목록입니다. 각 보안은 | string | false |
|
|
컨테이너에 볼륨으로 마운트할 | string | false |
|
| 애플리케이션 서비스의 HTTP 포트에 대한 경로 생성 비활성화(삭제된 경우 false) | boolean | false |
|
| 동일한 클라이언트 IP의 연결이 매번 동일한 JBoss EAP 인스턴스/Pod에 전달되는 경우(삭제된 경우 false) | boolean | false |
11.14.4. Resources 링크 복사링크가 클립보드에 복사되었습니다!
리소스는 WildflyServer 리소스에 대해 구성된 리소스를 정의합니다. Resources 필드가 정의되지 않았거나 Request 또는 Limits 가 비어 있으면 이 리소스는 StatefulSet 에서 제거됩니다. 이 리소스에 대한 설명은 표준 컨테이너 리소스 이며 corev1.ResourceRequirements의 스키마를 사용합니다.
11.14.5. StorageSpec 링크 복사링크가 클립보드에 복사되었습니다!
StorageSpec 은 WildFlyServer 리소스에 대해 구성된 스토리지를 정의합니다. EmptyDir 및 volumeClaimTemplate 이 정의되지 않은 경우 기본 EmptyDir 이 사용됩니다.
EAP Operator는 JBoss EAP에서 자체 데이터를 유지하기 위해 사용하는 standalone/data 디렉터리 전용 볼륨을 마운트하기 위해 이 StorageSpec 의 정보를 사용하여 StatefulSet 을 구성합니다. 예를 들어 트랜잭션 로그입니다. EmptyDir 을 사용하는 경우 데이터를 Pod를 다시 시작해도 데이터가 유지되지 않습니다. JBoss EAP에 배포된 애플리케이션이 트랜잭션을 사용하는 경우 Pod를 다시 시작할 때 동일한 영구 볼륨을 재사용할 수 있도록 volumeClaimTemplate 을 지정합니다.
| 필드 | 설명 | 스키마 | 필수 항목 |
|---|---|---|---|
|
|
| false | |
|
|
JBoss EAP 독립 실행형 데이터 디렉터리를 저장하기 위한 | false |
11.14.6. StandaloneConfigMapSpec 링크 복사링크가 클립보드에 복사되었습니다!
StandaloneConfigMapSpec 은 ConfigMap 에서 JBoss EAP 독립 실행형 구성을 읽을 수 있는 방법을 정의합니다. 생략하면 JBoss EAP는 이미지의 standalone.xml 구성을 사용합니다.
| 필드 | 설명 | 스키마 | 필수 항목 |
|---|---|---|---|
|
|
독립 실행형 구성 XML 파일이 포함된 | string | true |
| key |
값이 독립 실행형 구성 XML 파일인 | string | false |
11.14.7. WildFlyServerStatus 링크 복사링크가 클립보드에 복사되었습니다!
WildFlyServerStatus 는 JBoss EAP 배포의 가장 최근 관찰된 상태입니다. 읽기 전용입니다.
| 필드 | 설명 | 스키마 | 필수 항목 |
|---|---|---|---|
|
| 애플리케이션의 실제 복제본 수 | int32 | true |
|
| HorizontalPodAutoscaler에서 사용하는 Pod 선택기 | string | true |
|
| 애플리케이션 HTTP 서비스로 라우팅하는 호스트 | string | true |
|
| Pod 상태 | true | |
|
| 축소 프로세스 축소 중인 Pod 수 | int32 | true |
11.14.8. PodStatus 링크 복사링크가 클립보드에 복사되었습니다!
PodStatus 는 JBoss EAP 애플리케이션을 실행하는 Pod의 가장 최근 관찰된 상태입니다.
| 필드 | 설명 | 스키마 | 필수 항목 |
|---|---|---|---|
|
| Pod 이름 | string | true |
|
| Pod에 할당된 IP 주소 | string | true |
|
| 축소 프로세스의 Pod 상태. 상태는 기본적으로 ACTIVE이며, 이는 요청을 제공하는 것을 의미합니다. | string | false |
2025-03-09에 최종 업데이트된 문서