Red Hat JBoss Web Server for OpenShift
OpenShift용 Red Hat JBoss Web Server 설치 및 사용
초록
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
1장. 소개
1.1. OpenShift용 Red Hat JBoss Web Server 개요
Red Hat JBoss Web Server 5.4의 Apache Tomcat 9 구성 요소는 OpenShift용으로 설계된 컨테이너화된 이미지로 사용할 수 있습니다. 개발자는 이 이미지를 사용하여 하이브리드 클라우드 환경에 배포할 Java 웹 애플리케이션을 빌드, 확장 및 테스트할 수 있습니다.
2장. 시작하기 전
2.1. OpenShift용 Red Hat JBoss Web Server와 JWS의 차이점
OpenShift 이미지용 JWS와 JWS의 일반 릴리스의 차이점은 다음과 같습니다.
-
OpenShift용 JWS 이미지 내의
JWS_HOME위치는/opt/jws-5.4/입니다. - 모든 로드 밸런싱은 Apache HTTP Server mod_cluster 또는 mod_jk 커넥터가 아닌 OpenShift 라우터에서 처리합니다.
OpenShift 이미지 관련 JWS 기능에 대한 문서는 Red Hat JBoss Web Server 설명서에서 참조하십시오.
2.2. 버전 호환성 및 지원
OpenShift 이미지 버전 호환성에 대한 자세한 내용은 OpenShift Container Platform Tested 3.X Integrations 페이지 및 OpenShift Container Platform Tested 4.X Integrations 페이지의 xPaaS 표를 참조하십시오.
OpenShift 이미지 및 애플리케이션 템플릿용 JWS 5.4 버전을 사용하여 새 애플리케이션을 배포해야 합니다.
OpenShift 이미지 및 애플리케이션 템플릿용 5.3 버전은 더 이상 사용되지 않으며 더 이상 업데이트가 수신되지 않습니다.
2.3. JBoss Web Server에서 지원되는 아키텍처
JBoss Web Server는 다음과 같은 아키텍처를 지원합니다.
- x86_64 (AMD64)
- OpenShift 환경의 IBM Z(s390x)
- OpenShift 환경의 IBM Power(ppc64le)
다양한 아키텍처에서 다양한 이미지가 지원됩니다. 이 가이드의 코드 예제에서는 x86_64 아키텍처의 명령을 보여줍니다. 다른 아키텍처를 사용하는 경우 명령에 관련 이미지 이름을 지정합니다. 이미지에 대한 자세한 내용은 Red Hat Container Catalog 를 참조하십시오.
2.4. Red Hat 컨테이너 이미지의 상태 점검
OpenShift에서 사용할 수 있는 모든 컨테이너 이미지에는 관련 상태 등급이 있습니다. 컨테이너 이미지 카탈로그로 이동하여 JBoss Web Server를 검색하고 5.4 버전을 선택하여 Red Hat JBoss Web Server 의 상태 등급을 확인할 수 있습니다.
OpenShift 컨테이너의 라이브 및 준비 상태를 테스트할 수 있는 방법에 대한 자세한 내용은 다음 문서를 참조하십시오.
3장. 시작하기
3.1. 초기 설정
이 가이드의 지침은 지원되는 OpenShift 구성 또는 OpenShift type에 설명된 것과 같이 비프로덕션 OpenShift 인스턴스를 가정하는 OpenShift typer의 지침을 따릅니다.
OpenShift 애플리케이션 템플릿용 JWS는 Tomcat 9용으로 배포됩니다.
3.2. Red Hat Container Registry에 대한 인증 구성
Red Hat JBoss Web Server 이미지를 가져와서 사용하려면 먼저 Red Hat Container Registry에 대한 인증을 구성해야 합니다.
Red Hat Container Registry에 대한 액세스를 구성하기 위해 레지스트리 서비스 계정을 사용하여 인증 토큰을 생성하는 것이 좋습니다. 즉, OpenShift 구성에 Red Hat 계정의 사용자 이름과 암호를 사용하거나 저장할 필요가 없습니다.
- Red Hat 고객 포털의 지침에 따라 레지스트리 서비스 계정을 사용하여 인증 토큰을 생성합니다.
- 토큰에 대한 OpenShift 시크릿이 포함된 YAML 파일을 다운로드합니다. 토큰의 토큰 정보 페이지의 OpenShift Secret 탭에서 YAML 파일을 다운로드할 수 있습니다.
다운로드한 YAML 파일을 사용하여 OpenShift 프로젝트의 인증 토큰 시크릿을 생성합니다.
oc create -f 1234567_myserviceaccount-secret.yaml
다음 명령을 사용하여 OpenShift 프로젝트의 시크릿을 구성하고 아래 시크릿 이름을 이전 단계에서 생성한 보안의 이름으로 교체합니다.
oc secrets link default 1234567-myserviceaccount-pull-secret --for=pull oc secrets link builder 1234567-myserviceaccount-pull-secret --for=pull
보안 레지스트리에 대한 액세스를 구성하는 다른 방법에 대한 자세한 내용은 OpenShift 설명서를 참조하십시오.
Red Hat Container Registry에 대한 인증 설정에 대한 자세한 내용은 Red Hat 고객 포털을 참조하십시오.
3.3. 최신 Red Hat JBoss Web Server Image Streams 및 템플릿 가져오기
OpenShift 이미지 스트림용 최신 Red Hat JBoss Web Server 및 JDK용 템플릿을 OpenShift 프로젝트의 네임스페이스로 가져와야 합니다.
고객 포털 인증 정보를 사용하여 Red Hat Container Registry에 로그인하여 Red Hat JBoss Web Server 이미지 스트림, 템플릿 및 이미지 스트림을 가져옵니다. 자세한 내용은 Red Hat Container Registry Authentication 을 참조하십시오.
JDK 8 (RHEL7)용 명령 가져오기
for resource in \
jws54-openjdk8-tomcat9-rhel7-basic-s2i.json \
jws54-openjdk8-tomcat9-rhel7-https-s2i.json \
jws54-openjdk8-tomcat9-rhel7-image-stream.json \
jws54-openjdk8-tomcat9-rhel7-mongodb-persistent-s2i.json \
jws54-openjdk8-tomcat9-rhel7-mongodb-s2i.json \
jws54-openjdk8-tomcat9-rhel7-mysql-persistent-s2i.json \
jws54-openjdk8-tomcat9-rhel7-mysql-s2i.json \
jws54-openjdk8-tomcat9-rhel7-postgresql-persistent-s2i.json \
jws54-openjdk8-tomcat9-rhel7-postgresql-s2i.json
do
oc replace -n openshift --force -f \
https://raw.githubusercontent.com/jboss-container-images/jboss-webserver-5-openshift-image/jws54el7-v1.0/templates/${resource}
done이 명령은 다음 이미지 스트림 및 템플릿을 가져옵니다.
- RHEL7 JDK 8 이미지 스트림: jboss-webserver54-openjdk8-tomcat9-openshift-rhel7
- 명령에 지정된 모든 템플릿입니다.
JDK 8 (RHEL8)에 대한 가져오기 명령
for resource in \
jws54-openjdk8-tomcat9-ubi8-basic-s2i.json \
jws54-openjdk8-tomcat9-ubi8-https-s2i.json \
jws54-openjdk8-tomcat9-ubi8-image-stream.json
do
oc replace -n openshift --force -f \
https://raw.githubusercontent.com/jboss-container-images/jboss-webserver-5-openshift-image/jws54el8-v1.0/templates/${resource}
done이 명령은 다음 이미지 스트림 및 템플릿을 가져옵니다.
- RHEL8 JDK 8 이미지 스트림: jboss-webserver54-openjdk8-tomcat9-openshift-ubi8
- 명령에 지정된 모든 템플릿입니다.
JDK 11 (RHEL7)에 대한 가져오기 명령
for resource in \
jws54-openjdk11-tomcat9-rhel7-basic-s2i.json \
jws54-openjdk11-tomcat9-rhel7-https-s2i.json \
jws54-openjdk11-tomcat9-rhel7-image-stream.json \
jws54-openjdk11-tomcat9-rhel7-mongodb-persistent-s2i.json \
jws54-openjdk11-tomcat9-rhel7-mongodb-s2i.json \
jws54-openjdk11-tomcat9-rhel7-mysql-persistent-s2i.json \
jws54-openjdk11-tomcat9-rhel7-mysql-s2i.json \
jws54-openjdk11-tomcat9-rhel7-postgresql-persistent-s2i.json \
jws54-openjdk11-tomcat9-rhel7-postgresql-s2i.json
do
oc replace -n openshift --force -f \
https://raw.githubusercontent.com/jboss-container-images/jboss-webserver-5-openshift-image/jws54el7-v1.0/templates/${resource}
done이 명령은 다음 이미지 스트림 및 템플릿을 가져옵니다.
- RHEL7 JDK 11 이미지 스트림: jboss-webserver54-openjdk11-tomcat9-openshift-rhel7
- 명령에 지정된 모든 템플릿입니다.
JDK 11 (RHEL8)에 대한 가져오기 명령
for resource in \
jws54-openjdk8-tomcat9-ubi8-basic-s2i.json \
jws54-openjdk8-tomcat9-ubi8-https-s2i.json \
jws54-openjdk8-tomcat9-ubi8-image-stream.json
do
oc replace -n openshift --force -f \
https://raw.githubusercontent.com/jboss-container-images/jboss-webserver-5-openshift-image/jws54el8-v1.0/templates/${resource}
done이 명령은 다음 이미지 스트림 및 템플릿을 가져옵니다.
- RHEL8 JDK 11 이미지 스트림: jboss-webserver54-openjdk11-tomcat9-openshift-ubi8
- 명령에 지정된 모든 템플릿입니다.
3.3.1. 명령 업데이트
- 코어 JWS 5.4 tomcat 9 OpenJDK8 RHEL7 OpenShift 이미지를 업데이트하려면 다음을 실행해야 합니다.
$ oc -n openshift import-image \ jboss-webserver54-openjdk8-tomcat9-openshift-rhel7:1.0
- 코어 JWS 5.4 tomcat 9 OpenJDK8 RHEL8 OpenShift를 업데이트하려면 다음을 실행해야 합니다.
$ oc -n openshift import-image \ jboss-webserver54-openjdk8-tomcat9-openshift-ubi8:1.0
- 코어 JWS 5.4 tomcat 9 OpenJDK11 RHEL7 OpenShift 이미지를 업데이트하려면 다음을 실행해야 합니다.
$ oc -n openshift import-image \ jboss-webserver54-openjdk11-tomcat9-openshift-rhel7:1.0
- 코어 JWS 5.4 tomcat 9 OpenJDK11 RHEL8 OpenShift 이미지를 업데이트하려면 다음을 실행해야 합니다.
$ oc -n openshift import-image \ jboss-webserver54-openjdk11-tomcat9-openshift-ubi8:1.0
가져온 각 이미지의 끝에 있는 1.0 태그는 이미지 스트림에 설정된 스트림 버전을 나타냅니다.
3.4. OpenShift S2I(Source-to-Image) 프로세스 사용
OpenShift 이미지에 대한 JWS를 실행하고 구성하려면 애플리케이션 템플릿 매개 변수 및 환경 변수와 함께 OpenShift S2I 프로세스를 사용합니다.
OpenShift 이미지의 JWS 프로세스는 다음과 같이 작동합니다.
configuration/source 디렉터리에 Maven settings.xml 파일이 있으면 새 이미지의$HOME/.m2/로 이동합니다.Maven 및 Maven settings.xml 파일에 대한 자세한 내용은 Apache Maven Project 웹 사이트를 참조하십시오.
소스 리포지토리에 pom.xml 파일이 있는 경우
$MAVEN_ARGS환경 변수의 콘텐츠를 사용하여 Maven 빌드가 트리거됩니다.기본적으로
패키지목표는 건너뛰기 테스트(-DskipTests)와 Red Hat GA 리포지토리(-Dcom.redhat.xpaas.repo.redhatga) 활성화를 포함하여openshift프로필과 함께 사용됩니다.Maven 빌드에 성공한 결과는
/opt/webserver/webapps/로 복사됩니다. 여기에는$ARTIFACT_DIR환경 변수로 지정된 소스 디렉토리의 모든 WAR 파일이 포함됩니다.$ARTIFACT_DIR의 기본값은target/디렉토리입니다.MAVEN_ARGS_APPEND환경 변수를 사용하여 Maven 인수를 수정합니다.-
deployments/소스 디렉터리의 모든 WAR 파일이/opt/webserver/webapps/로 복사됩니다. -
configuration/source 디렉터리의 모든 파일이/opt/webserver/conf/로 복사됩니다( Maven settings.xml 파일 제외). lib/소스 디렉토리의 모든 파일이/opt/webserver/lib/로 복사됩니다.참고사용자 지정 Tomcat 구성 파일을 사용하려면 파일 이름이 일반 Tomcat 설치와 동일해야 합니다. 예: context.xml 및 server.xml.
사용자 지정 Maven 아티팩트 저장소 미러를 사용하도록 S2I 프로세스를 구성하는 방법은 Artifact Repository Mirrors 섹션을 참조하십시오.
3.4.1. 기존 maven 바이너리를 사용하여 OpenShift 애플리케이션용 JWS 생성
기존 애플리케이션은 oc start-build 명령을 사용하여 OpenShift에 배포됩니다.
사전 요구 사항: OpenShift용 JWS에 배포할 애플리케이션의 기존 .war,.ear 또는 .jar 입니다.
로컬 파일 시스템의 디렉터리 구조를 준비합니다.
애플리케이션에 필요한 콘텐츠가 바이너리에 포함되어 있지 않은 소스 디렉터리를 생성합니다(필요한 경우 OpenShift S2I(Source-to-Image) 프로세스 사용을참조), 하위 디렉터리
배포/:$ mkdir -p <build_dir>/deployments바이너리(
.war,.ear,.jar)를deployments/에 복사합니다.$ cp /path/to/binary/<filenames_with_extensions> <build_dir>/deployments/
참고소스 디렉터리의
deployments/하위 디렉터리에 있는 애플리케이션 아카이브는 OpenShift에 빌드되는 이미지의$JWS_HOME/tomcat/webapps/디렉터리에 복사됩니다. 애플리케이션을 배포하려면 웹 애플리케이션 데이터가 포함된 디렉터리 계층을 올바르게 구조화해야 합니다( 3.4절. “OpenShift S2I(Source-to-Image) 프로세스 사용”참조).OpenShift 인스턴스에 로그인합니다.
$ oc login <url>필요한 경우 새 프로젝트를 생성합니다.
$ oc new-project <project-name>oc get를 사용하여 애플리케이션에 사용할 OpenShift 이미지 스트림의 JWS를 확인하는 것은 -n openshift입니다.$ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' ' jboss-webserver50-tomcat9-openshift참고-n openshift는 사용할 프로젝트를 지정합니다.oc.get는 openshift 프로젝트에서 이미지 스트림 리소스(임시)를 검색(가져오기)하는 -nopenshift입니다이미지 스트림 및 애플리케이션 이름을 지정하여 새 빌드 구성을 생성합니다.
$ oc new-build --binary=true \ --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7:latest \ --name=<my-jws-on-openshift-app>
OpenShift에서 OpenShift 이미지 빌드의 바이너리 입력을 위해 위에서 생성한 소스 디렉터리를 사용하도록 지시합니다.
$ oc start-build <my-jws-on-openshift-app> --from-dir=./<build_dir> --follow
이미지를 기반으로 새 OpenShift 애플리케이션을 생성합니다.
$ oc new-app <my-jws-on-openshift-app>사용자가 애플리케이션에 액세스할 수 있도록 서비스를 노출합니다.
# to check the name of the service to expose $ oc get svc -o name service/<my-jws-on-openshift-app> # to expose the service $ oc expose svc/my-jws-on-openshift-app route "my-jws-on-openshift-app" exposed
노출된 경로의 주소를 검색합니다.
oc get routes --no-headers -o custom-columns='host:spec.host' my-jws-on-openshift-app
- 브라우저에서 애플리케이션에 액세스하려면 http:// <address_of_exposed_route > / < my-war-ear-jar-filename- without-extension>
3.4.2. 예: 기존 maven 바이너리를 사용하여 OpenShift 애플리케이션용 JWS 생성
아래 예제에서는 3.4.1절. “기존 maven 바이너리를 사용하여 OpenShift 애플리케이션용 JWS 생성” 의 절차를 사용하여 tomcat-websocket-chat 빠른 시작을 사용합니다.
3.4.2.1. 사전 요구 사항
WAR 애플리케이션 아카이브를 가져오거나 애플리케이션을 로컬로 빌드합니다.
소스 코드를 복제합니다.
$ git clone https://github.com/jboss-openshift/openshift-quickstarts.git
애플리케이션을 빌드합니다.
$ cd openshift-quickstarts/tomcat-websocket-chat/
$ mvn clean package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Tomcat websocket example 1.2.0.Final [INFO] ------------------------------------------------------------------------ ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:28 min [INFO] Finished at: 2018-01-16T15:59:16+10:00 [INFO] Final Memory: 19M/271M [INFO] ------------------------------------------------------------------------
로컬 파일 시스템의 디렉터리 구조를 준비합니다.
로컬 파일 시스템 및
deployments/하위 디렉터리에서 바이너리 빌드의 소스 디렉터리를 생성합니다. WAR 아카이브를deployments/에 복사합니다.[tomcat-websocket-chat]$ ls pom.xml README.md src/ target/$ mkdir -p ocp/deployments
$ cp target/websocket-chat.war ocp/deployments/
3.4.2.2. OpenShift에서 예제 애플리케이션 설정
OpenShift 인스턴스에 로그인합니다.
$ oc login <url>필요한 경우 새 프로젝트를 생성합니다.
$ oc new-project jws-bin-demo
oc get를 사용하여 애플리케이션에 사용할 OpenShift 이미지 스트림의 JWS를 확인하는 것은 -n openshift입니다.$ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' ' jboss-webserver50-tomcat9-openshift이미지 스트림 및 애플리케이션 이름을 지정하여 새 빌드 구성을 생성합니다.
$ oc new-build --binary=true \ --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7:latest\ --name=jws-wsch-app --> Found image 8c3b85b (4 weeks old) in image stream "openshift/jboss-webserver<version>-tomcat9-openshift" under tag "latest" for "jboss-webserver<version>" JBoss Web Server 5.0 -------------------- Platform for building and running web applications on JBoss Web Server 5.0 - Tomcat v9 Tags: builder, java, tomcat9 * A source build using binary input will be created * The resulting image will be pushed to image stream "jws-wsch-app:latest" * A binary build was created, use 'start-build --from-dir' to trigger a new build --> Creating resources with label build=jws-wsch-app ... imagestream "jws-wsch-app" created buildconfig "jws-wsch-app" created --> Success
바이너리 빌드를 시작합니다. OpenShift에서 OpenShift 이미지 빌드의 바이너리 입력에 소스 디렉터리를 사용하도록 지시합니다.
$ *oc start-build jws-wsch-app --from-dir=./ocp --follow* Uploading directory "ocp" as binary input for the build ... build "jws-wsch-app-1" started Receiving source from STDIN as archive ... Copying all deployments war artifacts from /home/jboss/source/deployments directory into `/opt/jws-5.4/tomcat/webapps` for later deployment... '/home/jboss/source/deployments/websocket-chat.war' -> '/opt/jws-5.4/tomcat/webapps/websocket-chat.war' Pushing image 172.30.202.111:5000/jws-bin-demo/jws-wsch-app:latest ... Pushed 0/7 layers, 7% complete Pushed 1/7 layers, 14% complete Pushed 2/7 layers, 29% complete Pushed 3/7 layers, 49% complete Pushed 4/7 layers, 62% complete Pushed 5/7 layers, 92% complete Pushed 6/7 layers, 100% complete Pushed 7/7 layers, 100% complete Push successful
이미지를 기반으로 새 OpenShift 애플리케이션을 생성합니다.
$ oc new-app jws-wsch-app --> Found image e5f3a6b (About a minute old) in image stream "jws-bin-demo/jws-wsch-app" under tag "latest" for "jws-wsch-app" JBoss Web Server 5.0 -------------------- Platform for building and running web applications on JBoss Web Server 5.0 - Tomcat v9 Tags: builder, java, tomcat9 * This image will be deployed in deployment config "jws-wsch-app" * Ports 8080/tcp, 8443/tcp, 8778/tcp will be load balanced by service "jws-wsch-app" * Other containers can access this service through the hostname "jws-wsch-app" --> Creating resources ... deploymentconfig "jws-wsch-app" created service "jws-wsch-app" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose svc/jws-wsch-app' Run 'oc status' to view your app.사용자가 애플리케이션에 액세스할 수 있도록 서비스를 노출합니다.
# to check the name of the service to expose $ oc get svc -o name service/jws-wsch-app # to expose the service $ oc expose svc/jws-wsch-app route "jws-wsch-app" exposed
노출된 경로의 주소를 검색합니다.
oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-app
- 브라우저에서 애플리케이션에 액세스합니다. http:// <address_of_exposed_route>/websocket-chat
3.4.3. 소스 코드에서 OpenShift 애플리케이션용 JWS 생성
소스 코드에서 새 OpenShift 애플리케이션을 생성하는 방법에 대한 자세한 내용은 OpenShift.com - 소스 코드에서 애플리케이션 생성을 참조하십시오.
진행하기 전에 애플리케이션의 데이터가 올바르게 구성되어 있는지 확인합니다( 3.4절. “OpenShift S2I(Source-to-Image) 프로세스 사용”참조).
OpenShift 인스턴스에 로그인합니다.
$ oc login <url>필요한 경우 새 프로젝트를 생성합니다.
$ oc new-project <project-name>oc get를 사용하여 애플리케이션에 사용할 OpenShift 이미지 스트림의 JWS를 확인하는 것은 -n openshift입니다.$ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' ' jboss-webserver50-tomcat9-openshiftRed Hat JBoss Web Server for OpenShift 이미지를 사용하여 소스 코드에서 새 OpenShift 애플리케이션을 생성하고
--image-stream옵션을 사용합니다.$ oc new-app \ <source_code_location>\ --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7\ --name=<openshift_application_name>
예를 들면 다음과 같습니다.
$ oc new-app \ https://github.com/jboss-openshift/openshift-quickstarts.git#master \ --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7\ --context-dir='tomcat-websocket-chat' \ --name=jws-wsch-app
소스 코드가 이미지에 추가되고 소스 코드가 컴파일됩니다. 빌드 구성 및 서비스도 생성됩니다.
애플리케이션을 공개하려면 다음을 수행합니다.
# to check the name of the service to expose $ oc get svc -o name service/<openshift_application_name> # to expose the service $ oc expose svc/<openshift_application_name> route "<openshift_application_name>" exposed
노출된 경로의 주소를 검색하려면 다음을 수행합니다.
oc get routes --no-headers -o custom-columns='host:spec.host' <openshift_application_name>- 브라우저에서 애플리케이션에 액세스하려면 http:// <address_of_exposed_route> / <java_application_name>
3.5. tomcat/lib/ 디렉토리에 추가 ScanSetting 파일 추가
docker를 사용하여 추가 ScanSetting 파일을 tomcat/lib/ 디렉터리에 추가할 수 있습니다.
tomcat/lib/에 ScanSetting 파일을 추가하려면 다음을 수행합니다.
docker에서 이미지를 시작하기
docker run --network host -i -t -p 8080:8080 ImageURL
고객
ID찾기docker ps | grep <ImageName>
라이브러리를
tomcat/lib/디렉터리에 복사docker cp <yourLibrary> <CONTAINER ID>:/opt/jws-5.4/tomcat/lib/
새 이미지에 변경 사항 커밋
docker commit <CONTAINER ID> <NEW IMAGE NAME>
새 이미지 태그를 생성
docker tag <NEW IMAGE NAME>:latest <NEW IMAGE REGISTRY URL>:<TAG>
이미지를 레지스트리로 푸시
docker push <NEW IMAGE REGISTRY URL>
4장. JWS Operator
4.1. JBoss Web Server Operator
4.1.1. OpenShift Operators
Operator 프레임워크는 Operator라는 Kubernetes 네이티브 애플리케이션을 효과적이고 자동화된 확장 방식으로 관리하는 툴킷입니다. Operator를 사용하면 Kubernetes에서 복잡한 상태 저장 애플리케이션을 쉽게 관리할 수 있습니다. 모든 Operator는 Operator SDK, Operator Lifecycle Manager 및 OperatorHub.io의 세 가지 주요 구성 요소를 기반으로 합니다. 이러한 툴을 사용하면 자체 운영자를 개발하고 Kubernetes 클러스터에서 사용하는 운영자를 관리하고 커뮤니티에서 생성하는 Operator를 검색하거나 공유할 수 있습니다.
Red Hat JBoss Web Server 프로젝트는 OpenShift 이미지를 관리하는 Operator를 제공합니다. 이 섹션에서는 JWS용 OpenShift Operator를 빌드, 테스트 및 패키징하는 방법에 대해 설명합니다.
클러스터 설정에 대한 자세한 내용은 Openshift Documentation 하위 섹션 '설치'를 참조하십시오.
또한 JWS Operator는 JWS-on-OpenShift 설정과 다른 환경 변수를 사용합니다. 이러한 매개 변수의 전체 목록은 여기에서 확인할 수 있습니다.
현재 '세션 클러스터링 사용' 기능은 완전히 지원되지 않습니다.
이 가이드에서는 JWS Operator의 설치, 배포 및 삭제에 대해 자세히 설명합니다. 더 빠르지만 덜 자세한 내용은 빠른 시작 가이드를 참조하십시오.
현재 JWS 5.4 이미지만 지원합니다. 5.4 이상의 이미지는 지원되지 않습니다.
4.1.2. JWS Operator 설치
이 섹션에서는 OpenShift Container Platform에 JWS Operator의 설치에 대해 설명합니다.
4.1.2.1. 사전 요구 사항
-
클러스터
관리자 권한이 있는 계정을 사용하는 OpenShift Container Platform 클러스터(웹 콘솔만 해당) - Operator 설치 권한이 있는 계정을 사용하는 OpenShift Container Platform 클러스터
-
로컬 시스템(CLI 전용)에
oc툴 설치
4.1.2.2. JWS Operator 설치 - 웹 콘솔
- 왼쪽 메뉴에 있는 'Operators' 탭으로 이동합니다.
- 그러면 OpenShift OperatorHub가 열립니다. 여기에서 JWS를 검색하고 'JWS Operator'를 선택합니다.
- 새 메뉴가 표시됩니다 - 원하는 용량 수준을 선택한 다음 상단에서 '설치'를 클릭하여 Operator를 설치합니다.
이제 Operator 설치를 설정할 수 있습니다. 다음 3가지 옵션을 지정합니다.
- 설치 모드: 설치할 클러스터의 특정 네임스페이스를 지정합니다. 이 값을 지정하지 않으면 기본적으로 Operator가 클러스터의 모든 네임스페이스에 설치됩니다.
- 업데이트 채널: JWS Operator는 현재 하나의 채널을 통해서만 사용할 수 있습니다.
- 승인 전략: 자동 또는 수동 업데이트를 선택할 수 있습니다. 설치된 Operator에 대해 자동 업데이트를 선택하는 경우 해당 Operator의 새 버전이 사용 가능하면 Operator Lifecycle Manager (OLM)는 개입없이 Operator의 실행중인 인스턴스를 자동으로 업그레이드합니다. 수동 업데이트를 선택하면 최신 버전의 Operator가 사용 가능할 때 OLM이 업데이트 요청을 작성합니다. 클러스터 관리자는 Operator를 새 버전으로 업데이트하려면 OLM 업데이트 요청을 수동으로 승인해야 합니다.
-
하단에서 '설치'를 클릭합니다.
수동 승인 전략을선택한 경우 설치가 완료되기 전에 설치 계획을 승인해야 합니다. 이제 JWS Operator가 'Operators' 탭의 '설치된 Operator' 섹션에 표시됩니다.
4.1.2.3. JWS Operator 설치 - 명령줄 인터페이스
다음 명령을 사용하여 JWS Operator를 검사하여 지원되는 installMode 및 사용 가능한 채널을 확인합니다.
$ oc get packagemanifests -n openshift-marketplace | grep jws jws-operator Red Hat Operators 16h$ oc describe packagemanifests jws-operator -n openshift-marketplace | grep "Catalog Source" Catalog Source: redhat-operatorsOperatorGroup은 OperatorGroup과 동일한 네임 스페이스에 있는 모든 Operator에 대해 필요한 RBAC 액세스를 생성하는 대상 네임 스페이스를 선택하는 OLM 리소스입니다.
Operator를 구독하는 네임스페이스에 Operator의 InstallMode(AllNamespaces 또는 SingleNamespace 모드)와 일치하는 OperatorGroup이 있어야 합니다. 설치하려는 Operator에서 AllNamespaces를 사용하는 경우 openshift-operators 네임스페이스에 적절한 OperatorGroup이 이미 있습니다.
그러나 Operator에서 SingleNamespace 모드를 사용하는 경우 해당 네임스페이스에서 정확히 하나의 OperatorGroup을 생성해야 합니다. 실제 OperatorGroups 목록을 확인하려면 다음 명령을 사용합니다.
$ oc get operatorgroups -n <project_name>
OperatorGroup 목록의 출력 예:
NAME AGE mygroup 17h
참고이 프로세스의 웹 콘솔 버전에서는 SingleNamespace 모드를 선택할 때 자동으로 OperatorGroup 및 Subscription 개체 생성을 자동으로 처리합니다.
OperatorGroup 오브젝트 YAML 파일을 생성합니다. 예를 들면 다음과 같습니다.
OperatorGroupExample.yaml:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: <operatorgroup_name> namespace: <project_name> spec: targetNamespaces: - <project_name>
<project_name>은 Operator를 설치하는 프로젝트의 네임스페이스입니다(oc project -q). <operatorgroup_name>은 OperatorGroup의 이름입니다.
다음 명령을 사용하여 OperatorGroup 오브젝트를 생성합니다.
$ oc apply -f OperatorGroupExample.yaml
서브스크립션 오브젝트 YAML 파일(예:
jws-operator-sub.yaml)을 생성합니다. 다음과 같이 다음과 같이Subscription오브젝트 YAML 파일을 구성합니다.apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: jws-operator namespace: <project_name> spec: channel: alpha name: jws-operator source: redhat-operators sourceNamespace: openshift-marketplace<project_name>은 operator를 설치하는 프로젝트의 네임스페이스입니다(oc project -q). 모든 네임스페이스에 설치할 프로젝트의 네임스페이스는 openshift-operators를 사용합니다.
소스는 카탈로그
소스입니다. 이는 이 섹션의 1단계에서 실행한$ oc describe packagemanifests jws-operator -n openshift-marketplace | grep "Catalog Source:"명령의 값입니다. 값은redhat-operators여야 합니다.다음 명령을 사용하여 YAML 파일에서
Subscription오브젝트를 생성합니다.$ oc apply -f jws-operator-sub.yaml
설치가 완료되었는지 확인하려면 다음 명령을 실행합니다.
$ oc get csv -n <project_name>
NAME DISPLAY VERSION 단계 교체 jws-operator.V1.0.0
JBoss Web Server Operator
1.0.0
succeeded
4.1.3. 기존 JWS 이미지 배포
다음 명령을 사용하여 Operator가 설치되었는지 확인합니다.
$ oc get deployment.apps/jws-operator NAME READY UP-TO-DATE AVAILABLE AGE jws-operator 1/1 1 1 15h또는 더 자세한 출력이 필요한 경우:
$ oc describe deployment.apps/jws-operator
-
이미지를 준비하고 원하는 위치로 푸시합니다. 이 예에서는
quay.io/<USERNAME>/tomcat-demo:latest로 푸시됩니다. 사용자 지정 리소스WebServer .yaml 파일을 만듭니다. 이 예에서는 CloudEvent_cr.yaml이라는 파일이 사용됩니다. 파일은 다음 형식을 따라야 합니다.apiVersion: web.servers.org/v1alpha1 kind: WebServer metadata: name: example-image-webserver spec: # Add fields here applicationName: jws-app replicas: 2 webImage: applicationImage: quay.io/<USERNAME>/tomcat-demo:latest다음 명령을 사용하여 생성한 디렉터리에서 해당 항목을 배포합니다.
$ oc apply -f webservers_cr.yaml webserver/example-image-webserver created참고Operator가 경로를 자동으로 생성합니다. 다음 명령을 사용하여 경로를 확인할 수 있습니다.
$ oc get routes
경로에 대한 자세한 내용은 OpenShift 설명서를참조하십시오.
4단계에서 생성한
웹 서버를삭제해야 하는 경우:$ oc delete webserver example-image-webserver
또는
$ oc delete -f webservers_cr.yaml
4.1.4. 클러스터에서 Operator 삭제
4.1.4.1. 사전 요구 사항
- 관리자 권한이 있는 OpenShift Container Platform 클러스터 (ECDHE, 다음 지침에 따라 이 요구 사항을 우회할 수 있습니다)
-
로컬 시스템(CLI 전용)에
oc툴 설치
4.1.4.2. 클러스터에서 Operator 삭제 - 웹 콘솔
- 왼쪽 메뉴에서 'Operators' → '설치된 Operator'를 클릭합니다.
- 'Operator Details' 아래에서 '작업' 메뉴를 선택하고 '설치 중 Operator'를 클릭합니다.
- 이 옵션을 선택하면 Operator, Operator 배포 및 Pod가 제거됩니다. Operator를 제거해도 CRD 또는 CR을 포함한 사용자 정의 리소스 정의 또는 사용자 정의 리소스는 제거되지 않습니다. Operator가 클러스터에 애플리케이션을 배포하거나 클러스터 외부 리소스를 구성한 경우 이러한 리소스는 계속 실행되고 수동으로 정리해야 합니다.
4.1.4.3. 클러스터에서 Operator 삭제 - 명령줄 인터페이스
다음 명령을 사용하여
currentCSV필드에서 구독한 Operator의 현재 버전을 확인합니다.$ oc get subscription jws-operator -n <project_name> -o yaml | grep currentCSV f:currentCSV: {} currentCSV: jws-operator.v1.0.0참고위의 명령에서 <
;project_name>은 Operator를 설치한 프로젝트의 네임스페이스를 나타냅니다. Operator가 모든 네임스페이스에 설치된 경우 <project_name> 대신.openshift-operators를 사용합니다다음 명령을 사용하여 Operator의 서브스크립션을 삭제합니다.
$ oc delete subscription jws-operator -n <project_name>
참고위의 명령에서 <
;project_name>은 Operator를 설치한 프로젝트의 네임스페이스를 나타냅니다. Operator가 모든 네임스페이스에 설치된 경우 <project_name> 대신.openshift-operators를 사용합니다다음 명령을 사용하여 이전 단계의 currentCSV 값을 사용하여 대상 네임스페이스에서 Operator의 CSV를 삭제합니다.
$ oc delete clusterserviceversion <currentCSV> -n <project_name>
여기서
<currentCSV>은 1단계에서 얻은 값입니다.$ oc delete clusterserviceversion jws-operator.v1.0.0 clusterserviceversion.operators.coreos.com "jws-operator.v1.0.0" deleted참고위의 명령에서 <
;project_name>은 Operator를 설치한 프로젝트의 네임스페이스를 나타냅니다. Operator가 모든 네임스페이스에 설치된 경우 <project_name> 대신.openshift-operators를 사용합니다
4.1.5. 추가 리소스
Operator에 대한 자세한 내용은 공식 OpenShift 문서를 참조하십시오.
및
5장. reference
5.1. S2I(Source-to-Image)
OpenShift용 Red Hat JBoss Web Server 이미지에는 S2I 스크립트 및 Maven이 포함되어 있습니다.
5.1.1. OpenShift용 JWS와 함께 maven artifact 저장소 사용
Maven 리포지토리에는 프로젝트 ScanSetting, 라이브러리 ScanSetting, 플러그인 또는 기타 프로젝트별 아티팩트와 같은 빌드 아티팩트 및 종속 항목이 있습니다. 또한 S2I 빌드를 수행하는 동안 아티팩트를 다운로드할 위치도 정의합니다. Maven Central Repository 사용과 함께 일부 조직에서는 로컬 사용자 지정 리포지토리(미러)도 배포합니다.
로컬 미러를 사용하는 이점은 다음과 같습니다.
- 지리적으로 더 빠르고 빠르게 동기화된 미러를 사용할 수 있습니다.
- 리포지토리 콘텐츠를 보다 효과적으로 제어합니다.
- 공용 서버 및 리포지토리에 의존하지 않고도 다양한 팀(개발자, CI) 간에 아티팩트를 공유할 수 있습니다.
- 빌드 시간 개선
Maven 리포지토리 관리자는 미러에 대한 로컬 캐시 역할을 할 수 있습니다. 리포지토리 관리자가 http://10.0.0.1:8080/repository/internal/ 에 이미 배포되어 있고 외부로 연결할 수 있다고 가정하면 S2I 빌드에서 이 리포지토리를 사용할 수 있습니다. 내부 Maven 리포지토리를 사용하려면 MAVEN_MIRROR_URL 환경 변수를 애플리케이션의 빌드 구성에 추가합니다.
새 빌드 구성의 경우 oc new- app 또는 와 함께 oc new -build--build-env 옵션을 사용합니다.
$ oc new-app \ https://github.com/jboss-openshift/openshift-quickstarts.git#master \ --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7:latest\* --context-dir='tomcat-websocket-chat' \ --build-env MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/ \ --name=jws-wsch-app
기존 빌드 구성의 경우:
MAVEN_MIRROR_URL변수가 필요한 빌드 구성을 확인합니다.$ oc get bc -o name buildconfig/jwsMAVEN_MIRROR_URL환경 변수를buildconfig/jws에 추가합니다.$ oc env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/" buildconfig "jws" updated빌드 구성이 업데이트되었는지 확인합니다.
$ oc env bc/jws --list # buildconfigs jws MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/-
oc start-build를 사용하여 애플리케이션의 새 빌드 예약
애플리케이션 빌드 중에 Maven 종속성은 기본 공용 리포지토리 대신 리포지토리 관리자에서 다운로드합니다. 빌드가 완료되면 미러는 빌드 중에 검색된 모든 종속성을 포함합니다.
5.1.2. OpenShift 이미지용 Red Hat JBoss Web Server에 포함된 스크립트
run- runs catalina (Tomcat)
assemble-
Maven을 사용하여 소스를 빌드하고 패키지(
.war)를 만들고$JWS_HOME/tomcat/webapps디렉터리로 이동합니다.
5.1.3. OpenShift 데이터 소스용 JWS
데이터 원본에는 세 가지 유형이 있습니다.
-
기본 내부 데이터 소스: PostgreSQL, MySQL 및 MongoDB입니다. 이러한 데이터 소스는 Red Hat Registry를 통해 기본적으로 OpenShift에서 사용할 수 있으며 이미지 스트림에 대해 추가 환경 파일이 필요하지 않습니다. 데이터베이스를 검색하고 데이터 소스로 사용하려면
DB_SERVICE_PREFIX_MAPPING환경 변수를 OpenShift 서비스 이름으로 설정합니다. - 기타 내부 데이터 소스: 기본적으로 Red Hat Registry를 통해 사용할 수 없는 데이터 소스이지만 OpenShift에서 실행됩니다. 이러한 데이터 소스 구성은 OpenShift 보안에 추가된 환경 파일을 통해 제공됩니다.
- 외부 데이터 소스: 외부 데이터 소스의 OpenShift.Configuration에서 실행되지 않는 데이터 소스는 OpenShift 보안에 추가된 환경 파일을 통해 제공됩니다.
데이터 소스 환경 파일은 프로젝트의 OpenShift 시크릿에 추가됩니다. 이러한 환경 파일은 ENV_FILES 환경 속성을 사용하여 템플릿 내에서 호출됩니다.
데이터 소스는 특정 환경 변수의 값을 기반으로 자동 생성됩니다. 가장 중요한 환경 변수는 DB_SERVICE_PREFIX_MAPPING 입니다. DB_SERVICE_PREFIX_MAPPING 은 데이터 소스에 대한 JNDI 매핑을 정의합니다. 이 변수에 허용되는 값은 POOLNAME-DATABASETYPE=PREFIX 트래블릿의 쉼표로 구분된 목록입니다.
-
POOLNAME은 데이터 소스에서 풀 이름으로 사용됩니다. -
10.0.0.1TYPE는 사용할 데이터베이스 드라이버입니다. -
httpEFIX는 데이터 소스를 구성하는 데 사용되는 환경 변수 이름에 사용되는 접두사입니다.
DB_SERVICE_PREFIX_MAPPING 환경 변수에 정의된 각 POOLNAME-DATABASETYPE=PREFIX Uninstallt에 대해 이미지를 실행할 때 실행되는 별도의 데이터 소스를 생성합니다.
데이터 소스 구성 환경 변수의 전체 목록은 여기에 제공된 데이터 소스 구성 환경 변수 목록을 참조하십시오.
5.1.4. OpenShift 호환 환경 변수용 JWS
빌드 구성은 S2I(Source-to-Image) 빌드 명령에 환경 변수를 포함하여 수정할 수 있습니다( 5.1.1절. “OpenShift용 JWS와 함께 maven artifact 저장소 사용”참조). OpenShift용 Red Hat JBoss Web Server의 유효한 환경 변수는 다음과 같습니다.
| 변수 이름 | 표시 이름 | 설명 | 값 예 |
|---|---|---|---|
| ARTIFACT_DIR | 해당 없음 |
| 대상 |
| APPLICATION_NAME | 애플리케이션 이름 | 애플리케이션 이름입니다. | jws-app |
| CONTEXT_DIR | 컨텍스트 디렉터리 | 빌드할 Git 프로젝트 내 경로; 루트 프로젝트 디렉터리용 비어 있음 | tomcat-websocket-chat |
| GITHUB_WEBHOOK_SECRET | GitHub Webhook 보안 | GitHub 트리거 보안 | [a-zA-Z0-9]{8}에서 표현식 |
| GENERIC_WEBHOOK_SECRET | 일반 Webhook 보안 | 일반 빌드 트리거 보안 | [a-zA-Z0-9]{8}에서 표현식 |
| HOSTNAME_HTTP | 사용자 정의 HTTP 경로 호스트 이름 | http 서비스 경로에 대한 사용자 정의 호스트 이름입니다. 기본 호스트 이름의 경우 비워 둡니다. | <application-name>-<project>.<default-domain-suffix> |
| HOSTNAME_HTTPS | 사용자 정의 HTTPS 경로 호스트 이름 | https 서비스 경로에 대한 사용자 정의 호스트 이름입니다. 기본 호스트 이름의 경우 비워 둡니다. | <application-name>-<project>.<default-domain-suffix> |
| IMAGE_STREAM_NAMESPACE | 이미지 스트림 네임스페이스 | Red Hat Middleware 이미지의 ImageStream이 설치된 네임스페이스 | openshift |
| JWS_HTTPS_SECRET | 보안 이름 | 인증서 파일이 포함된 보안의 이름 | jws-app-secret |
| JWS_HTTPS_CERTIFICATE | 인증서 이름 | 보안 내의 인증서 파일의 이름 | server.crt |
| JWS_HTTPS_CERTIFICATE_KEY | 인증서 키 이름 | 보안 내의 인증서 키 파일의 이름 | server.key |
| JWS_HTTPS_CERTIFICATE_PASSWORD | 인증서 암호 | 인증서 암호 | P5ssw0rd |
| JWS_ADMIN_USERNAME | JWS 관리자 사용자 이름 | JWS 관리자 계정 사용자 이름 | ADMIN |
| JWS_ADMIN_PASSWORD | JWS 관리자 암호 | JWS 관리자 계정 암호 | P5sw0rd |
| SOURCE_REPOSITORY_URL | Git 리포지토리 URL | 애플리케이션의 Git 소스 URI | https://github.com/jboss-openshift/openshift-quickstarts.git |
| SOURCE_REPOSITORY_REFERENCE | Git 참조 | Git 분기/tag 참조 | 1.2 |
| IMAGE_STREAM_NAMESPACE | 이미지 스트림 네임스페이스 | Red Hat Middleware 이미지의 ImageStream이 설치된 네임스페이스 | openshift |
| MAVEN_MIRROR_URL | Maven 미러 URL | 구성할 Maven 미러/repository 관리자의 URL입니다. | http://10.0.0.1:8080/repository/internal/ |
5.2. OpenShift용 JWS의 축소
5.2.1. OpenShift 호환 환경 변수(valve 구성 요소)용 JWS
다음 환경 변수를 정의하여 이를 관련 catalina 컨테이너의 요청 처리 파이프라인에 삽입할 수 있습니다.
| 변수 이름 | 설명 | 값 예 | 기본값 |
|---|---|---|---|
| ENABLE_ACCESS_LOG | Access Log Valve를 사용하여 표준 출력 채널에 액세스 메시지를 기록할 수 있습니다. | true | false |
5.3. 로그 확인
실행 중인 컨테이너 콘솔에서 제공하는 OpenShift 로그 또는 로그를 보려면 다음을 수행합니다.
$ oc logs -f <pod_name> <container_name>
액세스 로그는 /opt/jws-5.4/tomcat/logs/ 에 저장됩니다.