빠른 시작: Azure Red Hat OpenShift에 JBoss EAP 배포

이 문서에서는 Azure Portal을 사용하여 ARO(Azure Red Hat OpenShift)에서 JBoss EAP(엔터프라이즈 애플리케이션 플랫폼)를 신속하게 설정하는 방법을 보여 줍니다.

이 문서에서는 Azure Marketplace 제안을 JBoss EAP에 사용하여 ARO 전환을 가속화합니다. 이 제안은 기본 제공 OCR(OpenShift Container Registry)이 포함된 ARO 클러스터, JBoss EAP Operator, 선택 사항으로 JBoss EAP와 S2I(Source-to-Image)를 사용하는 고객의 애플리케이션을 비롯한 컨테이너 이미지를 포함하여 여러 리소스를 자동으로 프로비전합니다. Azure Portal에서 이 제안을 볼 수 있습니다. 제안에서 사용하도록 설정된 자동화를 사용하지 않는 ARO에서 JBoss EAP를 실행하기 위한 수동 단계별 지침을 선호하는 경우 Azure Red Hat OpenShift 4 클러스터에서 Red Hat JBoss EAP(JBoss 엔터프라이즈 애플리케이션 플랫폼)를 사용하여 Java 애플리케이션 배포를 참조하세요.

피드백을 제공하거나 Azure 솔루션에서 JBoss EAP를 개발하는 엔지니어링 팀과 함께 마이그레이션 시나리오에 대해 긴밀히 작업하려는 경우 JBoss EAP 마이그레이션에 대한 이 간단한 설문 조사를 작성하고 연락처 정보를 포함하세요. 프로그램 관리자, 설계자 및 엔지니어 팀이 즉시 연락을 취하여 긴밀한 공동 작업을 시작합니다.

필수 구성 요소

  • Azure 구독 Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

  • 완전한 프로필이 있는 Red Hat 계정. 완전한 프로필이 없으면 개인용 Red Hat 개발자 구독을 통해 무료 개발자 구독에 가입할 수 있습니다.

  • UNIX와 유사한 명령 환경(예: Ubuntu, macOS 또는 Linux용 Windows 하위 시스템)과 Azure CLI가 설치된 로컬 개발자 명령줄. Azure CLI를 설치하는 방법을 알아보려면 Azure CLI를 설치하는 방법을 참조하세요.

  • mysql CLI. 예를 들어 Ubuntu 또는 Debian 기반 시스템에서 다음 명령을 사용하여 CLI를 설치할 수 있습니다.

    sudo apt update
    sudo apt install mysql-server
    
  • 기여자 역할과 사용자 액세스 관리자 역할 또는 현재 구독의 소유자 역할이 있는 로그인에 사용하는 Azure ID입니다. Azure 역할에 대한 개요는 Azure RBAC(역할 기반 액세스 제어)란?을 참조하세요.

참고 항목

Azure Red Hat OpenShift에는 OpenShift 클러스터를 만들고 실행하는 데 최소 40개의 코어가 필요합니다. 새 Azure 구독에 대한 기본 Azure 리소스 할당량이 이 요구 사항을 충족하지 않습니다. 리소스 한도 증가를 요청하려면 VM 제품군 vCPU 할당량늘림을 참조하세요. 평가판 구독은 할당량 증가를 받을 수 없습니다. 할당량 증가를 요청하기 전에 종량제 구독으로 업그레이드합니다. 자세한 내용은 Azure 무료 계정 또는 Azure for Students 스타터 계정 업그레이드를 참조하세요.

Red Hat 끌어오기 비밀 가져오기

이 문서에서 사용되는 Azure Marketplace 제안에는 Red Hat 끌어오기 비밀이 필요합니다. 이 섹션에서는 Azure Red Hat OpenShift에 대한 Red Hat 끌어오기 비밀을 가져오는 방법을 보여줍니다. Red Hat 끌어오기 비밀이 무엇이고 왜 필요한지에 대해 알아보려면 자습서: Azure Red Hat OpenShift 4 클러스터 만들기Red Hat 끌어오기 비밀 가져오기 섹션을 참조하세요.

다음 단계를 사용하여 끌어오기 비밀을 가져옵니다.

  1. Red Hat OpenShift 하이브리드 클라우드 콘솔을 연 다음, Red Hat 계정을 사용하여 OpenShift 클러스터 관리자 포털에 로그인합니다. 다음 스크린샷과 같이 추가 약관에 동의하고 계정을 업데이트해야 할 수도 있습니다. 계정을 만들 때와 동일한 암호를 사용합니다.

    Red Hat 계정 업데이트 페이지의 스크린샷

  2. 로그인한 후에는 OpenShift, 다운로드를 차례로 선택합니다.

  3. 모든 범주 드롭다운 목록, 토큰을 차례로 선택합니다.

  4. 다음 스크린샷과 같이 끌어오기 비밀 아래에서 복사 또는 다운로드를 선택하여 값을 가져옵니다.

    끌어오기 비밀을 보여주는 Red Hat 콘솔 포털의 스크린샷입니다.

    다음 콘텐츠는 Red Hat 콘솔 포털에서 복사한 예제이며 인증 코드를 xxxx...xxx로 바꾸었습니다.

    {"auths":{"cloud.openshift.com":{"auth":"xxxx...xxx","email":"contoso-user@contoso.com"},"quay.io":{"auth":"xxx...xxx","email":"contoso-user@test.com"},"registry.connect.redhat.com":{"auth":"xxxx...xxx","email":"contoso-user@contoso.com"},"registry.redhat.io":{"auth":"xxxx...xxx","email":"contoso-user@contoso.com"}}}
    
  5. 나중에 사용할 수 있도록 비밀을 파일에 저장합니다.

Red Hat Container Registry 서비스 계정 만들기

이 문서의 뒷부분에서 S2I(Source-to-Image)를 사용하여 OpenShift에 애플리케이션을 수동으로 배포하는 방법을 보여줍니다. 애플리케이션을 실행할 JBoss EAP에 대한 컨테이너 이미지를 끌어오려면 Red Hat Container Registry 서비스 계정이 필요합니다. 사용할 준비가 된 Red Hat Container Registry 서비스 계정이 있으면 이 섹션을 건너뛰고 제안을 배포하는 다음 섹션으로 이동합니다.

다음 단계에 따라 Red Hat Container Registry 서비스 계정을 만들고 사용자 이름 및 암호를 가져옵니다. 자세한 내용은 Red Hat 문서의 레지스트리 서비스 계정 만들기를 참조하세요.

  1. Red Hat 계정을 사용하여 레지스트리 서비스 계정 관리 애플리케이션에 로그인합니다.
  2. 레지스트리 서비스 계정 페이지에서 새 서비스 계정을 선택합니다.
  3. 서비스 계정의 이름을 입력합니다. 이름 앞에 고정된 임의 문자열이 추가됩니다.
    • 설명을 입력합니다.
    • 만들기를 선택합니다.
  4. 서비스 계정으로 돌아갑니다.
  5. 앞에서 만든 서비스 계정을 선택합니다.
    • 앞에 추가된 문자열(즉, XXXXXXX|username)을 포함한 사용자 이름을 적어 둡니다. registry.redhat.io에 로그인할 때 이 사용자 이름을 사용합니다.
    • 암호를 적어 둡니다. registry.redhat.io에 로그인할 때 이 암호를 사용합니다.

Red Hat Container Registry 서비스 계정을 만들었습니다.

Azure Portal에서 Microsoft Entra 서비스 주체 만들기

이 문서에서 사용하는 Azure Marketplace 제안에는 Azure Red Hat OpenShift 클러스터를 배포하기 위한 Microsoft Entra 서비스 주체가 필요합니다. 이 제안은 배포 시간 동안 역할 할당이 필요하지 않은 적절한 권한을 서비스 주체에 할당합니다. 사용할 준비가 된 서비스 주체가 있으면 이 섹션을 건너뛰고 Red Hat Container Registry 서비스 계정을 만드는 다음 섹션으로 이동합니다.

다음 단계에 따라 서비스 주체를 배포하고 Azure Portal에서 해당 애플리케이션(클라이언트) ID와 비밀을 가져옵니다. 자세한 내용은 서비스 주체를 만들고 사용하여 Azure Red Hat OpenShift 클러스터 배포를 참조하세요.

참고 항목

애플리케이션을 Microsoft Entra 테넌트에 등록할 수 있는 충분한 권한이 있어야 합니다. 문제가 발생하면 필요한 권한을 확인하여 계정에서 ID를 만들 수 있는지 확인합니다. 자세한 내용은 Microsoft Entra 앱 등록 및 서비스 주체 만들기를 참조하세요.

  1. Azure Portal을 통해 Azure 계정에 로그인합니다.

  2. Microsoft Entra ID를 선택합니다.

  3. 앱 등록을 선택합니다.

  4. 새 등록을 선택합니다.

  5. 애플리케이션 이름을 지정합니다(예: jboss-eap-on-aro-app). 애플리케이션을 사용할 수 있는 사용자를 결정하는, 지원되는 계정 유형을 선택합니다. 값을 설정한 후에는 다음 스크린샷과 같이 등록을 선택합니다. 애플리케이션을 프로비전하는 데 몇 초 정도 걸립니다. 배포가 완료될 때까지 기다렸다가 계속 진행합니다.

    애플리케이션 등록 페이지를 보여 주는 Azure Portal의 스크린샷입니다.

  6. 다음 스크린샷과 같이 개요 페이지에서 애플리케이션(클라이언트) ID를 저장합니다. 포인터로 값(스크린샷에서 수정된 값)을 가리키고, 표시되는 복사 아이콘을 선택합니다. 도구 설명에서 클립보드에 복사라고 표시됩니다. 해당 섹션의 다른 값에도 복사 아이콘이 있으므로 올바른 값을 복사하도록 주의하세요. 나중에 사용할 수 있도록 애플리케이션 ID를 파일에 저장합니다.

    애플리케이션(클라이언트) ID가 강조 표시된 개요 페이지를 보여주는 Azure Portal의 스크린샷입니다.

  7. 다음 단계에 따라 새 클라이언트 암호를 만듭니다.

    1. 인증서 및 비밀을 선택합니다.
    2. 클라이언트 암호, 새 클라이언트 암호를 차례로 선택합니다.
    3. 클라이언트 암호에 대한 설명과 기간을 제공합니다. 완료되면 추가를 선택합니다.
    4. 클라이언트 암호가 추가되면 클라이언트 암호 값이 표시됩니다. 나중에 검색할 수 없으므로 이 값을 복사합니다. 비밀 ID가 아닌 을 복사해야 합니다.

Microsoft Entra 애플리케이션, 서비스 주체 및 클라이언트 암호를 만들었습니다.

서비스 주체의 유효성 검사

다음 명령을 사용하여 서비스 주체의 유효성을 검사합니다.

az login \
    --service-principal \
    --username <service-principal-client-id> \
    --password <service-principal-client-secret> \
    --tenant <tenant-id>
az account show

<service-principal-client-id>, <service-principal-client-secret><tenant-id>을(를) 이전 단계에서 얻은 값으로 바꿉니다. 계정 정보가 표시되면 서비스 주체가 유효합니다.

Azure Red Hat OpenShift에 JBoss EAP 배포

이 섹션의 단계에서는 JBoss EAP를 Azure Red Hat OpenShift에 배포하는 방법을 안내합니다.

다음 단계에서는 제안을 찾고 기본 사항 창을 작성하는 방법을 보여줍니다.

  1. Azure Portal 위쪽의 검색 창에 JBoss EAP를 입력합니다. 다음 스크린샷처럼 검색 결과의 Marketplace 섹션에서 Azure Red Hat OpenShift 기반 JBoss EAP를 선택합니다.

    검색 결과에서 Azure Red Hat OpenShift의 JBoss EAP를 보여 주는 Azure Portal의 스크린샷입니다.

    Azure Portal에서 Azure Red Hat OpenShift 기반 JBoss EAP 제안으로 직접 이동할 수도 있습니다.

  2. 제안 페이지에서 만들기를 선택합니다.

  3. 기본 사항 창에서 구독 필드에 표시된 값이 필수 구성 요소 섹션에 나열된 역할이 있는 값과 동일한지 확인합니다.

  4. 빈 리소스 그룹에 제안을 배포해야 합니다. 리소스 그룹 필드에서 새로 만들기를 선택하고 리소스 그룹 값을 입력합니다. 리소스 그룹은 구독 내에서 고유해야 하므로 고유한 이름을 선택합니다. 고유한 이름을 갖는 쉬운 방법은 이니셜, 오늘 날짜 및 일부 식별자의 조합을 사용하는 것입니다. 예: eaparo033123rg.

  5. 인스턴스 세부 정보 아래에서 배포할 지역을 선택합니다. OpenShift가 작동하는 Azure 지역 목록은 Azure의 Red Hat OpenShift 4.x에 대한 지역을 참조하세요.

  6. 다음: ARO를 선택합니다.

다음 단계에서는 다음 스크린샷에 표시된 ARO 창을 작성하는 방법을 보여줍니다.

Azure Red Hat OpenShift ARO 창의 JBoss EAP를 보여 주는 Azure Portal의 스크린샷입니다.

  1. 새 클러스터 만들기 아래에서 를 선택합니다.

  2. 새 클러스터 만들기를 위한 정보 제공 아래의 Red Hat 끌어오기 비밀에 대해 Red Hat 끌어오기 비밀 가져오기 섹션에서 얻은 Red Hat 끌어오기 비밀을 입력합니다. 비밀 확인에도 같은 값을 입력합니다.

  3. Azure Portal에서 Microsoft Entra 서비스 주체 만들기 섹션에서 얻은 서비스 주체 애플리케이션(클라이언트) ID로 서비스 주체 클라이언트 ID를 입력합니다.

  4. Azure Portal에서 Microsoft Entra 서비스 주체 만들기 섹션에서 얻은 서비스 주체 애플리케이션 비밀을 사용하여 서비스 주체 클라이언트 암호를 입력합니다. 비밀 확인에도 같은 값을 입력합니다.

  5. 다음 EAP 애플리케이션을 선택합니다.

다음 단계에서는 다음 스크린샷에 표시된 EAP 애플리케이션 창을 작성한 후 배포를 시작하는 방법을 보여줍니다.

Azure Red Hat OpenShift EAP 애플리케이션 창의 JBoss EAP를 보여 주는 Azure Portal의 스크린샷입니다.

  1. S2I(Source-to-Image)를 사용하여 OpenShift에 애플리케이션을 배포할까요?를 기본 옵션인 아니요로 둡니다.

    참고 항목

    이 빠른 시작의 뒷부분에서 데이터베이스 연결을 사용하여 애플리케이션을 수동으로 배포하는 방법을 보여줍니다.

  2. 완료되면 다음: 리뷰 + 만들기를 클릭합니다.

  3. 검토 + 만들기를 선택합니다. 위쪽에 녹색 유효성 검사 통과 메시지가 표시되는지 확인합니다. 메시지가 표시되지 않으면 유효성 검사 문제를 해결한 다음, 검토 + 만들기를 다시 선택합니다.

  4. 만들기를 실행합니다.

  5. 배포 진행 중 페이지에서 배포 진행률을 추적합니다.

선택한 지역의 네트워크 조건 및 기타 활동에 따라 배포를 완료하는 데 최대 35분이 걸릴 수 있습니다.

기다리는 동안 데이터베이스를 설정할 수 있습니다.

Azure Database for MySQL - 유연한 서버 설정

다음 섹션에서는 Azure Database for MySQL - 유연한 서버를 설정하는 방법을 보여줍니다.

명령줄 셸에서 환경 변수 설정

샘플은 MySQL 데이터베이스가 지원하는 Java 애플리케이션이며 S2I(Source-to-Image)를 사용하여 OpenShift 클러스터에 배포됩니다. S2I에 대한 자세한 내용은 S2I 문서를 참조하세요.

셸을 열고 다음 환경 변수를 설정합니다. 바꿔야 하는 부분을 적절하게 바꿉니다.

RG_NAME=<resource-group-name>
SERVER_NAME=<database-server-name>
DB_DATABASE_NAME=testdb
ADMIN_USERNAME=myadmin
ADMIN_PASSWORD=Secret123456
DB_USERNAME=testuser
DB_PASSWORD=Secret123456
PROJECT_NAME=eaparo-sample
CON_REG_SECRET_NAME=eaparo-sample-pull-secret
CON_REG_ACC_USER_NAME="<red-hat-container-registry-service-account-username>"
CON_REG_ACC_PWD="<red-hat-container-registry-service-account-password>"
APPLICATION_NAME=javaee-cafe
APP_REPLICAS=3

자리 표시자를 이 문서 전체에서 사용되는 다음 값으로 바꿉니다.

  • <resource-group-name>: 이전에 만든 리소스 그룹의 이름(예: eaparo033123rg)입니다.
  • <database-server-name>: MySQL 서버의 이름으로, Azure에서 고유해야 합니다(예: eaparo033123mysql).
  • ADMIN_PASSWORD: MySQL 데이터베이스 서버의 관리자 암호입니다. 이 문서는 표시된 암호를 사용하여 테스트되었습니다. 암호 규칙은 데이터베이스 문서를 참조하세요.
  • <red-hat-container-registry-service-account-username><red-hat-container-registry-service-account-password>: 이전에 만든 Red Hat Container Registry 서비스 계정의 사용자 이름과 암호입니다.

명령 실행을 완료하기 전에 셸이 종료될 경우를 대비하여 완전히 채워진 이름/값 쌍을 텍스트 파일에 저장하는 것이 좋습니다. 이렇게 하면 셸의 새 인스턴스에 붙여넣고 쉽게 계속할 수 있습니다.

이러한 이름/값 쌍은 기본적으로 "비밀"입니다. 비밀 관리를 포함하여 프로덕션에 즉시 사용 가능한 Azure Red Hat OpenShift 보호 방법은 Azure Red Hat OpenShift 랜딩 존 가속기의 보안을 참조하세요.

데이터베이스를 만들고 초기화

이제 다음 단계에 따라 Azure Database for MySQL - 유연한 서버를 만들고, 특정 데이터베이스를 읽고 쓸 수 있는 권한이 있는 사용자를 만듭니다.

  1. 다음 명령을 사용하여 Azure Database for MySQL - 유연한 서버를 만듭니다.

    az mysql flexible-server create \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME} \
        --database-name ${DB_DATABASE_NAME} \
        --public-access 0.0.0.0  \
        --admin-user ${ADMIN_USERNAME} \
        --admin-password ${ADMIN_PASSWORD} \
        --yes
    

    이 명령을 완료하는 데 10분 이상 걸릴 수 있습니다. 명령이 완료되면 다음 예와 유사한 출력이 표시됩니다.

    {
      "connectionString": "mysql testdb --host ejb010406adb.mysql.database.azure.com --user myadmin --password=Secret#123345",
      "databaseName": "testdb",
      "firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2023-4-6_21-21-3",
      "host": "ejb010406adb.mysql.database.azure.com",
      "id": "/subscriptions/redacted/resourceGroups/ejb010406a/providers/Microsoft.DBforMySQL/flexibleServers/ejb010406adb",
      "location": "East US",
      "password": "Secret#123345",
      "resourceGroup": "ejb010406a",
      "skuname": "Standard_B1ms",
      "username": "myadmin",
      "version": "5.7"
    }
    
  2. 다음 명령을 사용하여 앞에서 만든 MySQL 서버의 호스트를 가져옵니다.

    DB_HOST=$(az mysql flexible-server show \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME} \
        --query "fullyQualifiedDomainName" \
        --output tsv)
    echo $DB_HOST
    

    이름/값 쌍을 텍스트 파일에 저장합니다.

  3. 다음 명령을 사용하여 공용 인터넷에서 MySQL 서버에 연결할 수 있도록 허용하는 임시 방화벽 규칙을 만듭니다.

    az mysql flexible-server firewall-rule create \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME} \
        --rule-name "AllowAllIPs" \
        --start-ip-address 0.0.0.0 \
        --end-ip-address 255.255.255.255
    
  4. 다음 명령을 사용하여 특정 데이터베이스를 읽고 쓸 수 있는 권한이 있는 새 데이터베이스 사용자를 만듭니다. 이 명령은 SQL을 데이터베이스로 직접 보내는 데 유용합니다.

    mysql --host ${DB_HOST} --user ${ADMIN_USERNAME} --password=${ADMIN_PASSWORD} << EOF
    CREATE USER '${DB_USERNAME}'@'%' IDENTIFIED BY '${DB_PASSWORD}';
    GRANT ALL PRIVILEGES ON ${DB_DATABASE_NAME} . * TO '${DB_USERNAME}'@'%';
    FLUSH PRIVILEGES;
    EOF
    
  5. 다음 명령을 사용하여 임시 방화벽 규칙을 삭제합니다.

    az mysql flexible-server firewall-rule delete \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME}  \
        --rule-name "AllowAllIPs" \
        --yes
    

이제 MySQL 데이터베이스 서버가 실행 중이며 앱에 연결할 수 있습니다.

배포 기능 확인

이 섹션의 단계에서는 배포가 성공적으로 완료되었는지 확인하는 방법을 보여줍니다.

배포 진행 중 페이지에서 이동한 경우 다음 단계에서는 해당 페이지로 돌아가는 방법을 보여줍니다. 여전히 배포가 완료됨 페이지에 있는 경우 5단계로 건너뛸 수 있습니다.

  1. Azure Portal 페이지의 모서리에서 햄버거 메뉴, 리소스 그룹을 차례로 선택합니다.

  2. 모든 필드에 대해 필터링 텍스트가 있는 상자에 이전에 만든 리소스 그룹의 처음 몇 글자를 입력합니다. 권장 규칙을 따른 경우 이니셜을 입력한 다음 적절한 리소스 그룹을 선택합니다.

  3. 탐색 창의 설정 섹션에서 배포를 선택합니다. 이 리소스 그룹에 대한 배포 순서가 지정된 목록이 표시되며, 가장 최근 배포가 먼저 표시됩니다.

  4. 이 목록에서 가장 오래된 항목으로 스크롤합니다. 이 항목은 이전 섹션에서 시작한 배포에 해당합니다. 다음 스크린샷과 같이 가장 오래된 배포를 선택합니다.

    가장 오래된 배포가 강조 표시된 Azure Red Hat OpenShift 배포의 JBoss EAP를 보여 주는 Azure Portal의 스크린샷입니다.

  5. 탐색 창에서 출력을 선택합니다. 이 목록에는 몇 가지 유용한 정보가 포함된 배포의 출력 값이 표시됩니다.

  6. 셸을 열고 cmdToGetKubeadminCredentials 필드의 값을 붙여넣은 후 실행합니다. OpenShift 클러스터 콘솔 포털에 로그인하는 데 사용되는 관리자 계정 및 자격 증명이 표시됩니다. 다음 예에서는 관리자 계정을 보여줍니다.

    az aro list-credentials --resource-group eaparo033123rg --name clusterf9e8b9
    

    이 명령은 다음 예제와 유사한 출력을 생성합니다.

    {
      "kubeadminPassword": "xxxxx-xxxxx-xxxxx-xxxxx",
      "kubeadminUsername": "kubeadmin"
    }
    
  7. consoleUrl 필드의 값을 인터넷에 연결된 웹 브라우저에 붙여넣은 다음, Enter 키를 누릅니다. 관리 사용자 이름과 암호를 입력하고 로그인을 선택합니다. Azure Red Hat OpenShift의 관리 콘솔에서 연산자>설치된 연산자를 선택합니다. 여기서 다음 스크린샷과 같이 JBoss EAP 연산자가 성공적으로 설치된 것을 확인할 수 있습니다.

    설치된 운영자 페이지를 보여 주는 Red Hat OpenShift 클러스터 콘솔 포털의 스크린샷입니다.

이제 다음 단계에 따라 OpenShift CLI를 사용하여 OpenShift 클러스터에 연결합니다.

  1. 셸에서 다음 명령을 사용하여 GNU/Linux용 최신 OpenShift 4 CLI를 다운로드합니다. GNU/Linux 이외의 OS에서 실행 중인 경우 해당 OS에 맞는 이진 파일을 다운로드합니다.

    cd ~
    wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz
    
    mkdir openshift
    tar -zxvf openshift-client-linux.tar.gz -C openshift
    echo 'export PATH=$PATH:~/openshift' >> ~/.bashrc && source ~/.bashrc
    
  2. cmdToLoginWithKubeadmin 필드의 값을 셸에 붙여넣고 실행합니다. login successful 메시지와 사용 중인 프로젝트가 표시됩니다. 다음은 OpenShift CLI를 사용하여 OpenShift 클러스터에 연결하는 명령의 예시입니다.

    oc login \
        $(az aro show \
            --resource-group ${RG_NAME} \
            --name aro-cluster \
            --query apiserverProfile.url \
            --output tsv) \
        -u $(az aro list-credentials \
            --resource-group ${RG_NAME} \
            --name aro-cluster \
            --query kubeadminUsername \
            --output tsv) \
        -p $(az aro list-credentials \
            --resource-group ${RG_NAME} \
            --name aro-cluster \
            --query kubeadminPassword \
            --output tsv)
    

    이 명령은 다음 예제와 유사한 출력을 생성합니다.

    Login successful.
    
    You have access to 68 projects, the list has been suppressed. You can list all projects with 'oc projects'
    
    Using project "default".
    

OpenShift 클러스터에 JBoss EAP 앱 배포

이 섹션의 단계에서는 클러스터에 앱을 배포하는 방법을 보여줍니다.

클러스터에 앱 배포

다음 단계에 따라 클러스터에 앱을 배포합니다. 앱은 GitHub 리포지토리 rhel-jboss-templates/eap-coffee-app에 호스트됩니다.

  1. 셸에서 다음 명령을 실행합니다. 이 명령은 프로젝트를 만들고, S2I가 작동할 수 있도록 권한을 적용하고, 끌어오기 비밀을 이미징하고, 프로젝트의 상대 서비스 계정에 비밀을 연결하여 이미지 끌어오기를 사용하도록 설정합니다. "'분리된 HEAD' 상태"에 대한 Git 경고를 무시합니다.

    git clone https://github.com/Azure/rhel-jboss-templates.git
    cd rhel-jboss-templates
    git checkout 20240904
    cd ..
    oc new-project ${PROJECT_NAME}
    oc adm policy add-scc-to-user privileged -z default --namespace ${PROJECT_NAME}
    w0=-w0
    if [[ $OSTYPE == 'darwin'* ]]; then
      w0=
    fi
    
    CON_REG_ACC_USER_NAME_BASE64=$(echo ${CON_REG_ACC_USER_NAME} | base64 $w0)
    CON_REG_ACC_PWD_BASE64=$(echo ${CON_REG_ACC_PWD} | base64 $w0)
    

    다음 섹션에서는 HEREDOC 형식을 사용하므로 자체 코드 발췌에 이 형식을 포함하고 실행하는 것이 가장 좋습니다.

    cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: ${CON_REG_SECRET_NAME}
    type: Opaque
    data:
      username: ${CON_REG_ACC_USER_NAME_BASE64}
      password: ${CON_REG_ACC_PWD_BASE64}
    stringData:
      hostname: registry.redhat.io
    EOF
    

    비밀 만들기에 성공했음을 나타내는 secret/eaparo-sample-pull-secret created가 표시되어야 합니다. 이 출력이 표시되지 않으면 문제를 해결한 후 계속 진행합니다. 마지막으로, 클러스터에서 컨테이너 이미지를 실행할 수 있도록 컨테이너 이미지를 다운로드하는 데 사용되는 기본 서비스 계정에 비밀을 연결합니다.

    oc secrets link default ${CON_REG_SECRET_NAME} --for=pull
    oc secrets link builder ${CON_REG_SECRET_NAME} --for=pull
    
  2. 다음 명령을 사용하여 jboss-eap74-openjdk11-openshift 이미지 스트림을 끌어옵니다. 그런 다음, 원본을 이미지 프로세스로 시작하고 완료될 때까지 기다립니다.

    oc apply -f https://raw.githubusercontent.com/jboss-container-images/jboss-eap-openshift-templates/eap74/eap74-openjdk11-image-stream.json
    oc new-build --name=${APPLICATION_NAME} --binary --image-stream=jboss-eap74-openjdk11-openshift:7.4.0 -e CUSTOM_INSTALL_DIRECTORIES=extensions
    oc start-build ${APPLICATION_NAME} --from-dir=rhel-jboss-templates/eap-coffee-app --follow
    

작업이 성공하면 출력이 다음 예와 비슷하게 끝납니다.

Writing manifest to image destination
Storing signatures
Successfully pushed image-registry.openshift-image-registry.svc:5000/eaparo-sample/javaee-cafe@sha256:754587c33c03bf42ba4f3ce5a11526bbfc82aea94961ce1179a415c2bfa73449
Push successful

출력이 다음 예와 비슷하지 않으면 문제를 해결한 후 계속 진행합니다.

데이터베이스 암호로 사용할 비밀 만들기

이제 다음 단계에 따라 비밀을 만듭니다.

  1. 다음 명령을 사용하여 데이터베이스 암호를 보관할 비밀을 만듭니다.

    oc create secret generic db-secret --from-literal=password=${DB_PASSWORD}
    
  2. 다음 명령을 사용하여 컨테이너화된 앱의 복제본 3개를 클러스터에 배포하고 실행합니다.

    cat <<EOF | oc apply -f -
    apiVersion: wildfly.org/v1alpha1
    kind: WildFlyServer
    metadata:
      name: ${APPLICATION_NAME}
    spec:
      applicationImage: ${APPLICATION_NAME}:latest
      replicas: ${APP_REPLICAS}
      env:
        - name: DB_SERVICE_PREFIX_MAPPING
          value: TEST-MYSQL=DS1
        - name: TEST_MYSQL_SERVICE_HOST
          value: ${DB_HOST}
        - name: TEST_MYSQL_SERVICE_PORT
          value: '3306'
        - name: DS1_JNDI
          value: java:jboss/datasources/JavaEECafeDB
        - name: DS1_URL
          value: jdbc:mysql://${DB_HOST}:3306/${DB_DATABASE_NAME}
        - name: DS1_DRIVER
          value: mysql
        - name: DS1_DATABASE
          value: ${DB_DATABASE_NAME}
        - name: DS1_USERNAME
          value: ${DB_USERNAME}
        - name: DS1_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: password
      secrets:
        - db-secret
    EOF
    

    이 명령이 성공적으로 완료되면 wildflyserver.wildfly.org/javaee-cafe created가 표시됩니다. 이 출력이 표시되지 않으면 문제를 해결한 후 계속 진행합니다.

  3. oc get pod -w | grep 1/1 명령을 실행하여 앱의 모든 Pod가 실행 중인지 모니터링합니다. 다음 예와 비슷한 출력이 표시되면 Ctrl + C 키를 눌러 모니터링을 중지합니다.

    javaee-cafe-2         1/1     Running             0          31s
    javaee-cafe-1         1/1     Running             0          30s
    javaee-cafe-0         1/1     Running             0          30s
    

    적절한 상태에 도달하는 데 몇 분 정도 걸릴 수 있습니다. Running이(가) 표시되기 전에 ErrImagePullImagePullBackOff을(를) 포함하여 STATUS 열 값이 표시될 수도 있습니다.

  4. 다음 명령을 사용하여 애플리케이션의 URL로 돌아갑니다. 이 URL을 사용하여 배포된 샘플 앱에 액세스할 수 있습니다. 출력을 클립보드에 복사합니다.

    echo http://$(oc get route ${APPLICATION_NAME}-route -o=jsonpath='{.spec.host}')/javaee-cafe
    
  5. 출력을 인터넷에 연결된 웹 브라우저에 붙여넣고 Enter 키를 누릅니다. 다음 스크린샷처럼 Java EE Cafe 앱의 UI가 표시됩니다.

    Java EE Cafe 샘플 앱 UI의 스크린샷입니다.

  6. 일부 행을 추가하고 삭제하여 데이터베이스 연결이 올바르게 작동하는지 확인합니다.

리소스 정리

OpenShift 클러스터를 더 이상 사용할 생각이 없으면 작업 중인 리소스 그룹으로 돌아갑니다. 페이지 상단의 리소스 그룹 텍스트 아래에서 리소스 그룹을 선택합니다. 그런 다음, 리소스 그룹 삭제를 선택합니다.

다음 단계

Azure에 JBoss EAP를 배포하는 방법에 대한 자세한 내용은 Azure Red Hat JBoss EAP를 참조하세요.