Azure Red Hat OpenShift 클러스터에서 Open Liberty/WebSphere Liberty를 사용하여 Java 애플리케이션 수동 배포
이 문서에서는 Azure Red Hat OpenShift 클러스터에서 Open/WebSphere Liberty를 실행하기 위한 단계별 수동 지침을 제공합니다. Liberty 애플리케이션을 준비하고, 애플리케이션 Docker 이미지를 빌드하고, Azure Red Hat OpenShift 클러스터에서 컨테이너화된 애플리케이션을 실행하는 단계를 안내합니다.
특히 다음 작업을 수행하는 방법을 알아봅니다.
- Liberty 애플리케이션 준비
- 애플리케이션 이미지 빌드
- GUI 및 CLI를 사용하여 Azure Red Hat OpenShift 클러스터에서 컨테이너화된 애플리케이션 실행
Azure Red Hat OpenShift 클러스터로의 여정을 가속화하는 자동화된 솔루션은 Azure Marketplace 제품을 사용하여 AZURE Red Hat OpenShift에 IBM WebSphere Liberty 및 Open Liberty 배포를 참조하세요.
Open Liberty에 대한 자세한 내용은 Open Liberty 프로젝트 페이지를 참조하세요. WebSphere Liberty에 대한 자세한 내용은 WebSphere Liberty 제품 페이지를 참조 하세요.
이 문서는 빠르게 배포할 수 있도록 지원하기 위한 것입니다. 프로덕션으로 이동하기 전에 Liberty 튜닝을 살펴보아야 합니다.
피드백을 제공하거나 Azure 솔루션에서 WebSphere를 개발하는 엔지니어링 팀과 함께 마이그레이션 시나리오를 긴밀히 작업하려는 경우 WebSphere 마이그레이션 대한 이 간단한 설문 조사를 작성하고 연락처 정보를 포함합니다. 프로그램 관리자, 설계자 및 엔지니어 팀이 즉시 연락을 취하여 긴밀한 공동 작업을 시작합니다.
Important
Azure Red Hat OpenShift는 Red Hat 및 Microsoft가 통합된 지원 환경을 제공하기 위해 공동으로 엔지니어링, 운영 및 지원하지만, 이 문서에 설명된 것을 포함하여 Azure Red Hat OpenShift를 기반으로 실행하는 소프트웨어에는 자체 지원 및 사용 조건이 적용됩니다. Azure Red Hat OpenShift 지원에 대한 자세한 내용은 Azure Red Hat OpenShift 4에 대한 지원 수명 주기를 참조하세요. 이 문서에 설명된 소프트웨어 지원에 대한 자세한 내용은 문서에 나열된 해당 소프트웨어의 기본 페이지를 참조하세요.
참고 항목
Azure Red Hat OpenShift에는 OpenShift 클러스터를 만들고 실행하는 데 최소 40개의 코어가 필요합니다. 새 Azure 구독에 대한 기본 Azure 리소스 할당량은 이 요구 사항을 충족하지 않습니다. 리소스 제한 증가를 요청하려면 표준 할당량: VM 시리즈별 제한 증가를 참조하세요. 무료 평가판 구독은 할당량 증가에 적합하지 않으므로 할당량 증가를 요청하기 전에 종량제 구독으로 업그레이드하세요.
필수 조건
Unix와 유사한 운영 체제가 설치된 로컬 컴퓨터(예: Ubuntu, macOS 또는 Linux용 Windows 하위 시스템).
SE(Java Standard Edition) 구현, 버전 17 - 예: Eclipse Open J9.
Maven, 버전 3.9.8 이상.
OS용 Docker
Azure CLI 버전 2.61.0 이상.
Azure Red Hat OpenShift 4 클러스터. 클러스터를 만들려면 다음 지침을 사용하는 동안 Azure Red Hat OpenShift 4 클러스터 만들기의 지침을 따릅니다.
"Red Hat 끌어오기 비밀 가져오기" 단계는 선택 사항으로 레이블이 지정되어 있지만 이 문서에 필요합니다. 끌어오기 비밀을 사용하면 Azure Red Hat OpenShift 클러스터에서 Open Liberty 운영자를 찾을 수 있습니다.
Azure Red Hat OpenShift 4 클러스터 만들기에 정의된 다음 환경 변수는 이 문서의 뒷부분에서 사용됩니다.
RESOURCEGROUP
- 클러스터가 배포되는 리소스 그룹의 이름입니다.CLUSTER
- 클러스터의 이름입니다.
클러스터에서 메모리를 많이 사용하는 애플리케이션을 실행하려는 경우
--worker-vm-size
매개 변수를 사용하여 작업자 노드에 대해 적절한 가상 컴퓨터 크기를 지정합니다. 자세한 내용은 다음 문서를 참조하세요.
다음 지침을 사용하는 동안 Azure Red Hat OpenShift 4 클러스터에 연결의 단계를 수행하여 클러스터 에 연결합니다.
- 이 문서의 뒷부분에 있는 명령을 사용하므로 "OpenShift CLI 설치"의
oc
단계를 따라야 합니다. - 클러스터 콘솔 URL을 따로 저장합니다.
https://console-openshift-console.apps.<random>.<region>.aroapp.io/
형식입니다. kubeadmin
자격 증명을 기록해 둡니다.kubeadmin
자격 증명과 함께 “OpenShift CLI를 사용하여 연결”의 단계를 수행해야 합니다.
- 이 문서의 뒷부분에 있는 명령을 사용하므로 "OpenShift CLI 설치"의
Open Liberty OpenShift Operator 설치
클러스터를 만들고 연결한 후 다음 단계를 사용하여 Open Liberty 운영자를 설치합니다. Open Liberty Operator의 기본 시작 페이지는 GitHub에 있습니다.
kubeadmin
자격 증명을 사용하여 브라우저에서 OpenShift 웹 콘솔에 로그인합니다.Operator>OperatorHub로 이동하고 Open Liberty를 검색합니다.
검색 결과에서 Open Liberty를 선택합니다.
설치를 선택합니다.
설치 운영자 페이지에서 다음 단계를 사용합니다.
- 업데이트 채널의 경우 최신 채널 v1.4를 선택합니다.
- 설치 모드의 경우 클러스터의 모든 네임스페이스(기본값)를 참조하세요.
- 업데이트 승인을 위해 자동을 선택합니다.
설치를 선택하고 설치 가 완료될 때까지 몇 분 정도 기다립니다.
Open Liberty 운영자가 성공적으로 설치되어 사용할 준비가 되었는지 확인합니다. 준비가 되지 않은 경우 계속하기 전에 문제를 진단하고 해결합니다.
참고 항목
이 가이드에서는 Azure Red Hat OpenShift 클러스터에서 Liberty 애플리케이션을 관리하는 Open Liberty 운영자를 설치합니다. WebSphere Liberty 연산자를 사용하려면 WebSphere Liberty 연산자 설치의 단계에 따라 클러스터에 WebSphere Liberty 연산자를 설치합니다.
Java 앱에 대한 OpenShift 네임스페이스 만들기
다음 단계를 사용하여 앱에 사용할 OpenShift 네임스페이스를 만듭니다.
자격 증명을 사용하여 브라우저에서 OpenShift 웹 콘솔에
kubeadmin
로그인했는지 확인합니다.관리>네임스페이스>네임스페이스 만들기로 이동합니다.
이름을 입력하고 다음에 표시된 대로 만들기를 선택합니다.
open-liberty-demo
Azure Database for MySQL 유연한 서버 만들기
Azure Database for MySQL 유연한 서버 배포 모델은 Azure Database for MySQL 단일 서버 배포 모드보다 데이터베이스 관리 기능 및 구성 설정에 대한 보다 세부적인 제어 및 유연성을 제공하도록 설계된 배포 모드입니다. 이 섹션에서는 Azure CLI를 사용하여 Azure Database for MySQL 유연한 서버 인스턴스를 만드는 방법을 보여 줍니다. 자세한 내용은 빠른 시작: Azure CLI를 사용하여 Azure Database for MySQL - 유연한 서버의 인스턴스 만들기를 참조하세요.
터미널에서 다음 명령을 실행하여 Azure Database for MySQL 유연한 서버 인스턴스를 만듭니다. Azure Database for MySQL 유연한 서버에 대한 암호 복잡성 요구 사항을 충족하는 암호로 바꿉 <server-admin-password>
니다.
az mysql flexible-server create \
--name ${CLUSTER} \
--resource-group ${RESOURCEGROUP} \
--admin-user admin${RESOURCEGROUP} \
--admin-password '<server-admin-password>' \
--database-name ${RESOURCEGROUP}db \
--public-access 0.0.0.0 \
--yes
참고 항목
이 문서에서는 MySQL 인증을 사용하여 Azure Database for MySQL 유연한 서버를 만드는 방법을 안내합니다. 더 안전한 방법은 데이터베이스 서버 연결을 인증하기 위해 Microsoft Entra 인증을 사용하는 것입니다. Azure Red Hat OpenShift는 현재 Microsoft Entra 워크로드 ID 지원하지 않으므로 MySQL 인증만 사용할 수 있습니다.
이 위치에 사용 가능한 SKU가 없다는 오류 메시지가 표시되면 매개 변수를 사용하여 --location
다른 위치를 지정하고 다시 시도합니다. 다음 명령을 사용하여 특정 위치에 사용 가능한 SKU를 나열합니다.
az mysql flexible-server list-skus --location <location>
사용 가능한 SKU가 있는 위치를 찾은 다음 이전 az mysql flexible-server create
명령을 반복하지만 적절한 --location <location>
매개 변수를 추가하여 다른 모든 매개 변수를 변경하지 않습니다.
모든 Azure 리소스의 연결을 허용하는 서버, 데이터베이스, 관리자 사용자 및 방화벽 규칙을 만드는 데 몇 분 정도 걸립니다. 명령이 성공하면 출력은 다음 예제와 유사합니다.
{
"connectionString": "mysql <database-name> --host <server-name>.mysql.database.azure.com --user <server-admin-username> --password=<server-admin-password>",
"databaseName": "<database-name>",
"firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2024-7-10_16-22-8",
"host": "<server-name>.mysql.database.azure.com",
"id": "/subscriptions/REDACTED/resourceGroups/<resource-group-of-the-OpenShift-cluster>/providers/Microsoft.DBforMySQL/flexibleServers/<server-name>",
"location": "West US",
"password": "<server-admin-password>",
"resourceGroup": "<resource-group-of-the-OpenShift-cluster>",
"skuname": "Standard_B1ms",
"username": "<server-admin-username>",
"version": "5.7"
}
Liberty 애플리케이션 준비
이 가이드에서는 Java EE 8 애플리케이션을 예제로 사용합니다. Open Liberty는 Java EE 8 전체 프로필 호환 서버이므로 애플리케이션을 쉽게 실행할 수 있습니다. Open Liberty는 Jakarta EE 8 전체 프로필 호환도 지원합니다.
Open Liberty에서 애플리케이션 실행
Open Liberty에서 애플리케이션을 실행하려면 Liberty Maven 플러그 인이 배포를 위해 애플리케이션을 패키지할 수 있도록 Open Liberty 서버 구성 파일을 만들어야 합니다. Liberty Maven 플러그 인은 OpenShift에 애플리케이션을 배포할 필요가 없습니다. 그러나 이 예제에서는 Open Liberty의 개발자(개발) 모드에서 사용합니다. 개발자 모드를 사용하면 애플리케이션을 로컬로 쉽게 실행할 수 있습니다. liberty-maven-plugin
에 대한 자세한 내용은 Maven으로 웹 애플리케이션 빌드를 참조하세요.
이 섹션의 단계에 따라 이 문서의 뒷부분에서 사용할 샘플 애플리케이션을 준비합니다. 이 단계에서는 Maven 및 liberty-maven-plugin
을 사용합니다.
애플리케이션 체크 아웃
다음 명령을 사용하여 이 가이드의 샘플 코드를 복제합니다. 샘플은 GitHub에 있습니다.
git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
export BASE_DIR=$PWD
git checkout 20240920
cd ${BASE_DIR}/3-integration/connect-db/mysql
"분리된 HEAD" 상태에 있다는 메시지가 표시되면 이 메시지를 무시해도 안전합니다. 이는 단지 태그를 체크 아웃했음을 의미합니다.
리포지토리에 몇 가지 샘플이 있습니다. open-liberty-on-aro/3-integration/connect-db/mysql을 사용합니다. 애플리케이션의 파일 구조는 다음과 같습니다.
open-liberty-on-aro/3-integration/connect-db/mysql
├─ src/main/
│ ├─ aro/
│ │ ├─ db-secret.yaml
│ │ ├─ openlibertyapplication.yaml
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml
Java, 리소스 및 웹앱 디렉터리에는 응용 프로그램 예제의 소스 코드가 포함됩니다. 이 코드는 jdbc/JavaEECafeDB
(이)라는 데이터 원본을 선언하고 사용합니다.
aro 디렉터리에 두 개의 배포 파일을 배치했습니다. db-secret.xml 데이터베이스 연결 자격 증명을 사용하여 비밀을 만드는 데 사용됩니다. openlibertyapplication.yaml 파일은 애플리케이션 이미지를 배포하는 데 사용됩니다.
루트 디렉터리에 두 개의 Dockerfile을 배치했습니다. Dockerfile 및 Dockerfile-wlp 는 각각 Open Liberty 및 WebSphere Liberty를 사용하여 로컬 디버깅 및 Azure Red Hat OpenShift 배포용 이미지를 빌드하는 데 사용됩니다.
liberty/config 디렉터리에서 server.xml Open Liberty 및 WebSphere Liberty 클러스터에 대한 데이터베이스 연결을 구성하는 데 사용됩니다.
프로젝트 빌드
이전에 정의된 환경 변수를 사용하여 터미널에서 다음 명령을 실행하여 프로젝트를 빌드합니다. 프로젝트의 POM 파일은 환경에서 많은 속성을 읽습니다.
cd ${BASE_DIR}/3-integration/connect-db/mysql
# The following variables are used for deployment file generation
export DB_SERVER_NAME=$CLUSTER.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=${RESOURCEGROUP}db
export DB_USER=admin${RESOURCEGROUP}
export DB_PASSWORD='<server-admin-password>'
export NAMESPACE=open-liberty-demo
mvn clean install
(선택 사항) 로컬로 애플리케이션 테스트
필요에 따라 애플리케이션을 로컬로 실행하여 예상대로 작동하는지 확인할 수 있습니다. 먼저 로컬 컴퓨터가 Azure Database for MySQL 유연한 서버 인스턴스에 연결할 수 있도록 방화벽 규칙을 추가해야 합니다. 다음 단계를 사용하여 방화벽 규칙을 추가합니다.
- Azure Portal에 로그인하고 이전에 만든 Azure Database for MySQL 유연한 서버 인스턴스로 이동합니다.
- 왼쪽 창에서 네트워킹 설정을>선택합니다.
- 현재 클라이언트 IP 주소 추가를 선택합니다.
- 저장을 선택하고 방화벽 규칙이 추가될 때까지 기다립니다.
다음 단계를 사용하여 Azure 복잡성을 처리하기 전에 로컬에서 프로젝트 및 컨테이너 이미지를 실행하고 테스트하는 명령을 실행 liberty:devc
합니다. liberty:devc
에 대한 자세한 내용은 Liberty 플러그인 설명서를 참조하세요.
필요한 경우 로컬 Docker 환경을 시작합니다. 이 작업을 수행하기 위한 지침은 호스트 운영 체제에 따라 달라집니다.
다음 명령을 사용하여 모드에서
liberty:devc
애플리케이션을 시작합니다.cd ${BASE_DIR}/3-integration/connect-db/mysql # If you are running with Open Liberty mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile # If you are running with WebSphere Liberty mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile-wlp
애플리케이션이 예상대로 작동하는지 확인합니다. 성공하면 명령 출력에
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.
와 유사한 메시지가 표시되어야 합니다. 브라우저의https://localhost:9443/
(으)로 이동하여 애플리케이션에 액세스할 수 있고 모든 함수가 작동하는지 확인합니다.모드를 중지
liberty:devc
하려면 Control+C를 누릅니다.
애플리케이션 이미지 준비
Azure Red Hat OpenShift 클러스터에서 Liberty 애플리케이션을 배포하고 실행하려면 Open Liberty 컨테이너 이미지 또는 WebSphere Liberty 컨테이너 이미지를 사용하여 애플리케이션을 Docker 이미지로 컨테이너화합니다.
애플리케이션 빌드 및 이미지 스트림에 푸시
명령을 사용하여 liberty:devc
Liberty Docker 컨테이너에서 앱을 성공적으로 실행했으므로 다음 단계를 사용하여 클러스터에서 원격으로 이미지를 빌드합니다.
자격 증명을 사용하여 OpenShift CLI에
kubeadmin
로그인해야 합니다.다음 명령을 사용하여 원본 디렉터리와 Dockerfile을 식별합니다.
cd ${BASE_DIR}/3-integration/connect-db/mysql # If you are building with the Open Liberty base image, the existing Dockerfile is ready for you # If you are building with the WebSphere Liberty base image, uncomment and execute the following two commands to rename Dockerfile-wlp to Dockerfile # mv Dockerfile Dockerfile.backup # mv Dockerfile-wlp Dockerfile
다음 명령을 사용하여 프로젝트를 open-liberty-demo로 변경합니다.
oc project open-liberty-demo
다음 명령을 사용하여 이미지 스트림을 만듭니다.
oc create imagestream javaee-cafe-mysql
다음 명령을 사용하여 빌드 출력의 이미지 스트림 태그를 지정하는 빌드 구성을 만듭니다.
oc new-build --name javaee-cafe-mysql-config --binary --strategy docker --to javaee-cafe-mysql:v1
다음 명령을 사용하여 빌드를 시작하고, 로컬 콘텐츠를 업로드하고, 컨테이너화하고, 이전에 지정된 이미지 스트림 태그에 출력합니다.
oc start-build javaee-cafe-mysql-config --from-dir . --follow
Azure Red Hat OpenShift 클러스터에 애플리케이션 배포
이제 필수 구성 요소를 통해 작업할 때 이전에 만든 Azure Red Hat OpenShift 클러스터에 샘플 Liberty 애플리케이션을 배포할 수 있습니다.
웹 콘솔에서 애플리케이션 배포
Open Liberty 연산자를 사용하여 Liberty 애플리케이션을 관리하기 때문에 형식OpenLibertyApplication
의 사용자 지정 리소스 정의 인스턴스를 만들어야 합니다. 운영자는 배포에 필요한 OpenShift 리소스 관리의 모든 측면을 처리합니다. 다음 단계를 사용하여 이 인스턴스를 만듭니다.
kubeadmin
자격 증명을 사용하여 브라우저에서 OpenShift 웹 콘솔에 로그인합니다.홈>프로젝트 오픈 리버티 데모를 방문하여 프로젝트를>선택합니다.
워크로드>비밀로 이동합니다.
YAML에서 만들기>를 선택합니다.
생성된 yaml을 path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml에 있는 <사용자로 바꿉니다.
만들기를 실행합니다. 비밀 세부 정보 페이지로 돌아갑니다.
연산자 설치 연산>자로 이동합니다.
페이지 중간에 Open Liberty가 표시됩니다.
제공된 API에서 OpenLibertyApplication을 선택합니다. 사용자 인터페이스의 항목 탐색은 사용 중인 기술의 실제 포함 계층 구조를 반영합니다.
OpenLibertyApplication 만들기를 선택합니다.
다음을 통해 구성에 대한 YAML 보기를 선택합니다.
생성된 yaml을 path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml에 있는 <사용자로 바꿉니다.
만들기를 실행합니다. OpenLibertyApplications 목록으로 돌아갑니다.
운영자 설치 연산>>자 Open Liberty>OpenLibertyApplication으로 이동합니다.
javaee-cafe-mysql을 선택합니다.
페이지 가운데에서 리소스를 선택합니다.
테이블에서 경로의 종류로 javaee-cafe-mysql에 대한 링크를 선택합니다.
열리는 페이지에서 위치 아래의 링크를 선택합니다.
브라우저에서 애플리케이션 홈페이지가 열립니다.
웹 콘솔에서 애플리케이션 삭제
애플리케이션을 완료하면 다음 단계를 사용하여 Open Shift에서 애플리케이션을 삭제합니다.
- 왼쪽 탐색 창에서 연산자의 항목을 확장합니다.
- 설치된 Operator를 선택합니다.
- 자유 열기를 선택합니다.
- 페이지 가운데에서 OpenLibertyApplication을 선택합니다.
- javaee-café-mysql의 경우 세로 줄임표(세로 점 3개)를 선택한 다음 OpenLibertyApplication 삭제를 선택합니다.
- 삭제를 선택하여 애플리케이션을 삭제합니다.
다음 단계를 사용하여 Open Shift에서 비밀을 삭제합니다.
- 워크로드>비밀로 이동합니다.
- db-secret-mysql을 선택합니다.
- 작업>비밀 삭제를 선택합니다.
- 삭제를 선택하여 비밀을 삭제합니다.
리소스 정리
자습서: Azure Red Hat OpenShift 4 클러스터 삭제의 단계에 따라 Azure Red Hat OpenShift 클러스터를 삭제합니다. 데이터베이스 및 연결된 리소스도 삭제되었는지 확인합니다.
다음 단계
이 가이드에 사용된 참조에서 자세한 내용을 알아볼 수 있습니다.
- Open Liberty
- Azure Red Hat OpenShift
- Open Liberty Operator
- Open Liberty 서버 구성
- Liberty Maven 플러그 인
- Liberty 컨테이너 이미지 열기
- WebSphere Liberty 컨테이너 이미지
Azure에서 WebSphere 제품을 실행하는 옵션을 살펴보려면 Azure 에서 WebSphere 제품군을 실행하는 솔루션은 무엇인가요?