Azure Red Hat OpenShift에 IBM WebSphere Liberty 및 Open Liberty 배포

이 문서에서는 Azure Portal을 사용하여 Azure ARO(Red Hat OpenShift)에서 IBM WebSphere Liberty 및 Open Liberty를 빠르게 지원하는 방법을 보여줍니다.

이 문서에서는 Azure Marketplace 제안을 Open/WebSphere Liberty에 사용하여 ARO로의 여정을 가속화합니다. 이 제안은 기본 제공 OCR(OpenShift Container Registry)이 포함된 ARO 클러스터, Liberty Operator 및 선택적으로 Liberty와 사용자의 애플리케이션이 포함된 컨테이너 이미지를 포함하여 여러 리소스를 자동으로 프로비전합니다. Azure Portal에서 이 제안을 볼 수 있습니다. 제안에서 설정된 자동화를 활용하지 않는 ARO에서 Liberty를 실행하기 위한 수동 단계별 지침을 선호하는 경우 Azure Red Hat OpenShift 클러스터에서 Open Liberty/WebSphere Liberty를 사용하여 Java 애플리케이션 배포를 참조하세요.

이 문서는 빠르게 배포할 수 있도록 지원하기 위한 것입니다. 프로덕션으로 이동하기 전에 Liberty 튜닝을 살펴보아야 합니다.

Important

ARO는 Red Hat 및 Microsoft가 통합 지원 환경을 제공하기 위해 공동으로 엔지니어링, 운영 및 지원하지만, 이 문서에 설명된 것을 포함하여 ARO를 기반으로 실행하는 소프트웨어에는 자체 지원 및 사용 조건이 적용됩니다. ARO 지원에 대한 자세한 내용은 Azure Red Hat OpenShift 4에 대한 지원 수명 주기를 참조하세요. 이 문서에 설명된 소프트웨어 지원에 대한 자세한 내용은 문서에 나열된 대로 해당 소프트웨어의 기본 페이지를 참조하세요.

참고 항목

Azure Red Hat OpenShift에는 OpenShift 클러스터를 만들고 실행하는 데 최소 40개의 코어가 필요합니다. 새 Azure 구독에 대한 기본 Azure 리소스 할당량이 이 요구 사항을 충족하지 않습니다. 리소스 한도 증가를 요청하려면 VM 제품군 vCPU 할당량 늘리기조정 불가능한 할당량에 대한 증가 요청 섹션을 참조하세요. 증가를 요청해야 하는 할당량 종류는 "조정 불가능"하므로 지원 티켓을 제출해야 합니다. 조정 불가능한 할당량에 대한 증가 요청 단계에서는 올바른 내용을 포함하는 티켓을 제출하는 방법을 정확하게 보여 줍니다.

무료 평가판 구독은 할당량을 늘릴 수 없습니다. 할당량 증가를 요청하기 전에 종량제 구독으로 업그레이드합니다. 자세한 내용은 Azure 무료 계정 또는 Azure for Students 스타터 계정 업그레이드를 참조하세요.

필수 조건

  • Unix와 비슷한 운영 체제가 설치된 로컬 컴퓨터(예: Ubuntu, macOS 또는 Linux용 Windows 하위 시스템)
  • Azure CLI Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
  • az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.
  • 메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
  • az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다. 이 문서에는 Azure CLI 버전 2.31.0 이상이 필요합니다.

참고 항목

Azure Cloud Shell에서 이 지침을 실행할 수도 있습니다. 이 방식에는 Docker를 제외한 모든 필수 구성 요소 도구가 미리 설치되어 있습니다.

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

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

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

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

로그인한 후에는 OpenShift, 다운로드를 차례로 선택합니다. 모든 범주 드롭다운 목록, 토큰을 차례로 선택합니다. 다음 스크린샷과 같이 끌어오기 비밀 아래에서 복사 또는 다운로드를 선택하여 값을 가져옵니다.

끌어오기 암호를 보여 주는 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"}}}

나중에 사용할 수 있도록 비밀을 파일에 저장합니다.

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

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

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

참고 항목

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

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

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

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

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

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

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

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

    서비스 주체 클라이언트 ID를 보여 주는 Azure Portal의 스크린샷

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

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

이제 Microsoft Entra 애플리케이션, 서비스 주체 및 클라이언트 암호가 있습니다.

Azure Red Hat OpenShift에 IBM WebSphere Liberty 또는 Open Liberty 배포

이 섹션의 단계에서는 IBM WebSphere Liberty 또는 Open Liberty를 Azure Red Hat OpenShift에 배포하도록 지시합니다.

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

  1. Azure Portal 위쪽의 검색 창에서 Liberty를 입력합니다. 다음 스크린샷과 같이 자동 제안된 검색 결과의 Marketplace 섹션에서 IBM Liberty on ARO를 선택합니다.

    검색 결과에서 Azure Red Hat OpenShift의 IBM WebSphere Liberty 및 Open Liberty를 보여 주는 Azure Portal의 스크린샷

    포털 링크를 사용하여 제품으로 직접 이동할 수도 있습니다.

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

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

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

  5. 리소스 그룹 이름에 대한 셸에서 환경 변수를 만듭니다.

    export RESOURCE_GROUP_NAME=<your-resource-group-name>
    
  6. 인스턴스 세부 정보 아래에서 배포할 지역을 선택합니다. OpenShift가 작동하는 Azure 지역 목록은 Azure의 Red Hat OpenShift 4.x에 대한 지역을 참조하세요.

  7. 지역을 선택한 후 다음을 선택합니다.

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

Azure Red Hat OpenShift ARO 창의 IBM WebSphere Liberty 및 Open Liberty를 보여 주는 Azure Portal의 스크린샷

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

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

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

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

  5. 값을 입력한 후 다음을 선택합니다.

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

Azure Red Hat OpenShift Operator 및 애플리케이션 창의 IBM WebSphere Liberty 및 Open Liberty를 보여 주는 Azure Portal의 스크린샷

  1. IBM에서 지원하나요? 아래에서 를 선택합니다.

    참고 항목

    이 빠른 시작에서는 IBM 지원 WebSphere Liberty Operator를 배포하지만, 아니요를 선택하여 Open Liberty Operator를 대신 배포할 수 있습니다.

  2. 애플리케이션을 배포하나요?에 대해 기본 옵션인 아니요를 그대로 둡니다.

    참고 항목

    이 빠른 시작에서는 나중에 샘플 애플리케이션을 수동으로 배포하지만, 원하는 경우 애플리케이션을 배포하나요?에 대해 를 선택할 수 있습니다.

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

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

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

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

배포 기능 확인

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

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

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

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

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

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

    가장 오래된 배포가 강조 표시된 Azure Red Hat OpenShift 배포의 IBM WebSphere Liberty 및 Open Liberty를 보여 주는 Azure Portal의 스크린샷

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

  6. 터미널을 열고 cmdToGetKubeadminCredentials 필드의 값을 붙여넣습니다. OpenShift 클러스터 콘솔 포털에 로그인하기 위한 관리자 계정 및 자격 증명이 표시됩니다. 다음 콘텐츠는 관리자 계정의 예제입니다.

    az aro list-credentials --resource-group abc1228rg --name clusterf9e8b9
    {
      "kubeadminPassword": "xxxxx-xxxxx-xxxxx-xxxxx",
      "kubeadminUsername": "kubeadmin"
    }
    
  7. clusterConsoleUrl 필드의 값을 인터넷에 연결된 웹 브라우저에 붙여넣은 다음, Enter 키를 누릅니다. 관리자 사용자 이름과 암호를 입력하고 로그인합니다.

  8. Liberty에 적합한 Kubernetes 연산자가 설치되어 있는지 확인합니다. 다음 스크린샷과 같이 탐색 창에서 연산자, 설치된 연산자를 차례로 선택합니다.

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

    WebSphere Liberty 연산자 또는 Open Liberty 연산자를 설치한 경우 주의하세요. 연산자 변형은 배포 시 선택한 것과 일치합니다. IBM 지원을 선택한 경우 WebSphere Liberty 연산자가 있습니다. 그렇지 않은 경우 Open Liberty 연산자가 있습니다. 이 정보는 이후 단계에서 알고 있어야 합니다.

  9. OpenShift CLI 설치 자습서의 단계에 따라 oc OpenShift CLI를 다운로드하여 설치한 다음, 이 설명서로 돌아갑니다.

  10. 출력 창으로 전환하고, cmdToLoginWithKubeadmin 필드에서 값을 복사한 다음, 터미널에 붙여넣습니다. OpenShift 클러스터의 API 서버에 로그인하는 명령을 실행합니다. 다음 예제와 비슷한 출력이 콘솔에 표시됩니다.

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

Azure SQL Database 만들기

다음 단계에서는 앱에서 사용할 Azure SQL Database 단일 데이터베이스를 만드는 과정을 안내합니다.

  1. 빠른 시작: Azure SQL Database 단일 데이터베이스 만들기의 단계에 따라 단일 데이터베이스를 Azure SQL Database에 만들고, 다음 참고 사항에서 설명하는 차이점을 주의 깊게 확인합니다. 데이터베이스 서버를 만들고 구성한 후 이 문서로 돌아옵니다.

    참고 항목

    기본 사항 단계에서 리소스 그룹, 데이터베이스 이름, <server-name>.database.windows.net, 서버 관리자 로그인암호에 대한 값을 적어둡니다. 데이터베이스 리소스 그룹은 이 문서의 뒷부분에서 <db-resource-group>이라고 합니다.

    네트워킹 단계에서 연결 방법공용 엔드포인트로 설정하고, Azure 서비스 및 리소스가 이 서버에 액세스하도록 허용로 설정하고, 현재 클라이언트 IP 주소 추가로 설정합니다.

    연결 방법 및 방화벽 규칙 설정이 강조 표시된 SQL Database 만들기 페이지의 네트워킹 탭을 보여 주는 Azure Portal의 스크린샷

  2. 데이터베이스의 리소스 그룹 이름에 대한 셸에서 환경 변수를 만듭니다.

    export DB_RESOURCE_GROUP_NAME=<db-resource-group>
    

이제 데이터베이스와 ARO 클러스터가 만들어졌으므로 ARO에서 WebSphere Liberty 애플리케이션을 호스트하도록 준비할 수 있습니다.

응용 프로그램 예제 구성 및 배포

이 섹션의 단계에 따라 Liberty 런타임에 샘플 애플리케이션을 배치합니다. 이러한 단계에서는 Maven을 사용합니다.

애플리케이션 체크 아웃

다음 명령을 사용하여 이 가이드의 샘플 코드를 복제합니다. 샘플은 GitHub에 있습니다.

git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
export BASE_DIR=$PWD
git checkout 20240223
cd 3-integration/connect-db/mssql

"분리된 HEAD" 상태에 있다는 메시지가 표시되면 이 메시지를 무시해도 안전합니다. 이는 단지 태그를 체크 아웃했음을 의미합니다.

리포지토리에 몇 가지 샘플이 있습니다. 여기서는 3-integration/connect-db/mssql/을 사용합니다. 애플리케이션의 파일 구조는 다음과 같습니다.

mssql
├─ src/main/
│  ├─ aro/
│  │  ├─ db-secret.yaml
│  │  ├─ openlibertyapplication.yaml
│  │  ├─ webspherelibertyapplication.yaml
│  ├─ docker/
│  │  ├─ Dockerfile
│  │  ├─ Dockerfile-ol
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ pom.xml

Java, 리소스웹앱 디렉터리에는 응용 프로그램 예제의 소스 코드가 포함됩니다. 이 코드는 jdbc/JavaEECafeDB(이)라는 데이터 원본을 선언하고 사용합니다.

aro 디렉터리에는 세 개의 배포 파일이 있습니다. db-secret.xml은 DB 연결 자격 증명을 사용하여 Kubernetes 비밀을 만드는 데 사용됩니다. 이 빠른 시작에서는 webspherelibertyapplication.yaml 파일을 사용하여 WebSphere Liberty 애플리케이션을 배포합니다. Azure Red Hat OpenShift에 IBM WebSphere Liberty 또는 Open Liberty 배포 섹션에서 Open Liberty Operator를 배포한 경우 openlibertyapplication.yaml 파일을 사용하여 Open Liberty 애플리케이션을 배포합니다.

docker 디렉터리에는 Open Liberty 또는 WebSphere Liberty를 사용하여 애플리케이션 이미지를 만들기 위한 두 개의 파일이 있습니다. 이러한 파일은 각각 DockerfileDockerfile-ol입니다. 이 빠른 시작에서는 Dockerfile 파일을 사용하여 WebSphere Liberty가 포함된 애플리케이션 이미지를 빌드합니다. 마찬가지로, Azure Red Hat OpenShift에 IBM WebSphere Liberty 또는 Open Liberty 배포 섹션에서 Open Liberty Operator를 배포한 경우 Dockerfile-ol 파일을 사용하여 Open Liberty가 포함된 애플리케이션 이미지를 빌드합니다.

liberty/config 디렉터리에서 server.xml 파일은 Open Liberty 및 WebSphere Liberty 클러스터에 대한 DB 연결을 구성하는 데 사용됩니다.

프로젝트 빌드

이제 필요한 속성이 수집되었으므로 다음 명령을 사용하여 애플리케이션을 빌드할 수 있습니다. 프로젝트의 POM 파일은 환경에서 많은 변수를 읽습니다. Maven 빌드의 일환으로 이러한 변수는 src/main/aro에 있는 YAML 파일의 값을 채우는 데 사용됩니다. 원하는 경우 Maven 외부에서 애플리케이션에 대해 비슷한 작업을 수행할 수 있습니다.

cd ${BASE_DIR}/3-integration/connect-db/mssql

# The following variables are used for deployment file generation into target.
export DB_SERVER_NAME=<server-name>.database.windows.net
export DB_NAME=<database-name>
export DB_USER=<server-admin-login>@<server-name>
export DB_PASSWORD=<server-admin-password>

mvn clean install

(선택 사항) 로컬로 프로젝트 테스트

이제 다음 단계를 사용하여 Azure에 배포하기 전에 프로젝트를 로컬로 실행하고 테스트할 수 있습니다. 편의를 위해 liberty-maven-plugin을 사용합니다. liberty-maven-plugin에 대한 자세한 내용은 Maven으로 웹 애플리케이션 빌드를 참조하세요. 애플리케이션의 경우 로컬 IDE와 같은 다른 메커니즘을 사용하여 비슷한 작업을 수행할 수 있습니다. 컨테이너를 통한 개발에 사용되는 liberty:devc 옵션을 사용하는 것도 고려할 수 있습니다. 자세한 내용은 Liberty 문서liberty:devc에서 확인할 수 있습니다.

  1. 다음 예제와 같이 liberty:run을 사용하여 애플리케이션을 시작합니다. 또한 liberty:run은 이전 섹션에서 정의한 환경 변수를 사용합니다.

    cd ${BASE_DIR}/3-integration/connect-db/mssql
    mvn liberty:run
    
  2. 애플리케이션이 예상대로 작동하는지 확인합니다. 성공하면 명령 출력에 [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.와 유사한 메시지가 표시되어야 합니다. 브라우저에서 http://localhost:9080/ 또는 https://localhost:9443/으로 이동하여 애플리케이션에 액세스할 수 있고 모든 함수가 작동하는지 확인합니다.

  3. Ctrl+C를 눌러 중지합니다.

다음으로, 다음 단계를 사용하여 Docker를 통해 프로젝트를 컨테이너화하고, Azure에 배포하기 전에 로컬로 컨테이너로 실행합니다.

  1. docker build 명령을 실행하여 이미지를 빌드합니다.

    cd ${BASE_DIR}/3-integration/connect-db/mssql/target
    docker buildx build --platform linux/amd64 -t javaee-cafe:v1 --pull --file=Dockerfile .
    
  2. 다음 명령을 사용하여 이미지를 실행합니다. 이전에 정의한 환경 변수를 사용하고 있습니다.

    docker run -it --rm -p 9080:9080 -p 9443:9443 \
        -e DB_SERVER_NAME=${DB_SERVER_NAME} \
        -e DB_NAME=${DB_NAME} \
        -e DB_USER=${DB_USER} \
        -e DB_PASSWORD=${DB_PASSWORD} \
        javaee-cafe:v1
    
  3. 컨테이너가 시작되면 브라우저에서 http://localhost:9080/ 또는 https://localhost:9443/으로 이동하여 애플리케이션에 액세스합니다.

  4. Ctrl+C를 눌러 중지합니다.

이미지 빌드 및 이미지 스트림으로 푸시

애플리케이션 상태에 만족하면 다음 단계를 사용하여 이미지를 원격으로 클러스터에 빌드합니다.

  1. 다음 명령을 사용하여 원본 디렉터리와 Dockerfile을 식별합니다.

    cd ${BASE_DIR}/3-integration/connect-db/mssql/target
    
    # If you are deploying the application with WebSphere Liberty Operator, the existing Dockerfile is ready for you
    
    # If you are deploying the application with Open Liberty Operator, uncomment and execute the following two commands to rename Dockerfile-ol to Dockerfile
    # mv Dockerfile Dockerfile.backup
    # mv Dockerfile-ol Dockerfile
    
  2. 다음 명령을 사용하여 이미지 스트림을 만듭니다.

    oc create imagestream javaee-cafe
    
  3. 다음 명령을 사용하여 빌드 출력의 이미지 스트림 태그를 지정하는 빌드 구성을 만듭니다.

    oc new-build --name javaee-cafe-config --binary --strategy docker --to javaee-cafe:v1
    
  4. 다음 명령을 사용하여 빌드를 시작하고, 로컬 콘텐츠를 업로드하고, 컨테이너화하고, 이전에 지정된 이미지 스트림 태그에 출력합니다.

    oc start-build javaee-cafe-config --from-dir . --follow
    

애플리케이션 배포 및 테스트

다음 단계를 사용하여 애플리케이션을 배포하고 테스트합니다.

  1. 다음 명령을 사용하여 DB 비밀을 적용합니다.

    cd ${BASE_DIR}/3-integration/connect-db/mssql/target
    oc apply -f db-secret.yaml
    

    secret/db-secret-mssql created 출력이 표시됩니다.

  2. 다음 명령을 사용하여 배포 파일을 적용합니다.

    oc apply -f webspherelibertyapplication.yaml
    
  3. 다음 명령을 사용하여 모든 Pod가 시작되고 성공적으로 실행될 때까지 기다립니다.

    oc get pods -l app.kubernetes.io/name=javaee-cafe --watch
    

    모든 Pod가 실행 중임을 나타내는 다음 예제와 비슷한 출력이 표시됩니다.

    NAME                          READY   STATUS    RESTARTS   AGE
    javaee-cafe-67cdc95bc-2j2gr   1/1     Running   0          29s
    javaee-cafe-67cdc95bc-fgtt8   1/1     Running   0          29s
    javaee-cafe-67cdc95bc-h47qm   1/1     Running   0          29s
    
  4. 다음 단계를 사용하여 결과를 확인합니다.

    1. 다음 명령을 사용하여 애플리케이션과 함께 배포된 경로 리소스의 호스트를 가져옵니다.

      echo "route host: https://$(oc get route javaee-cafe --template='{{ .spec.host }}')"
      
    2. 출력에서 route host 값을 복사한 다음, 브라우저에서 열어 애플리케이션을 테스트합니다. 웹 페이지가 올바르게 렌더링되지 않는 경우 앱이 여전히 백그라운드에서 시작되고 있기 때문입니다. 몇 분간 기다린 다음 작업을 다시 시도하세요.

    3. 몇 개의 커피를 추가하고 삭제하여 앱의 기능과 데이터베이스 연결을 확인합니다.

      실행 중인 앱의 스크린샷

리소스 정리

Azure 요금을 방지하려면 불필요한 리소스를 정리해야 합니다. 클러스터가 더 이상 필요하지 않은 경우 az group delete 명령을 사용하여 리소스 그룹, ARO 클러스터, Azure SQL Database 및 모든 관련 리소스를 제거합니다.

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
az group delete --name $DB_RESOURCE_GROUP_NAME --yes --no-wait

다음 단계

다음 링크를 따라 IBM WebSphere 제품군을 Azure에 배포하는 방법에 대해 자세히 알아봅니다.