다음을 통해 공유


AKS(Azure Kubernetes Service) 클러스터에서 Open Liberty 또는 WebSphere Liberty를 사용하여 Java 애플리케이션 수동 배포

이 문서에서는 Azure에서 Open/WebSphere Liberty를 실행하기 위한 단계별 수동 지침을 제공합니다.

특히 이 문서에서는 다음 작업을 수행하는 방법을 설명합니다.

  • Open Liberty 또는 WebSphere Liberty 런타임에서 Java, Java EE, Jakarta EE 또는 MicroProfile 애플리케이션을 실행합니다.
  • Liberty 컨테이너 이미지를 az acr build 사용하여 애플리케이션 Docker 이미지를 빌드합니다.
  • Liberty Operator를 사용하여 컨테이너화된 애플리케이션을 AKS(Azure Kubernetes Service) 클러스터에 배포합니다.

Liberty 운영자는 Kubernetes 클러스터에서 실행되는 애플리케이션의 배포 및 관리를 간소화합니다. Open Liberty Operator 또는 WebSphere Liberty Operator를 사용하여 추적 및 덤프 수집과 같은 고급 작업을 수행할 수도 있습니다.

AKS로의 여정을 가속화하는 자동화된 솔루션은 AKS(Azure Kubernetes Service) 클러스터에서 Open Liberty/WebSphere Liberty를 사용하여 Java 애플리케이션 배포를 참조하세요.

Open Liberty에 대한 자세한 내용은 Open Liberty 프로젝트 페이지를 참조하세요. IBM WebSphere Liberty에 대한 자세한 내용은 WebSphere Liberty 제품 페이지를 참조하세요.

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

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

필수 구성 요소

  • Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
  • Windows, macOS 또는 Linux가 설치된 로컬 컴퓨터를 준비합니다.

Azure에 로그인

아직 로그인하지 않은 경우 az login 명령을 사용하여 Azure 구독에 로그인하고 화면의 지침을 따릅니다.

az login

참고 항목

Bash와 동일한 방식으로 PowerShell에서 대부분의 Azure CLI 명령을 실행할 수 있습니다. 차이점은 변수를 사용하는 경우에만 존재합니다. 다음 섹션에서는 필요할 때 다른 탭에서 차이점을 해결합니다.

Azure 자격 증명과 연결된 여러 Azure 테넌트가 있는 경우 로그인할 테넌트만 지정해야 합니다. 옵션을 사용하여 이 --tenant 작업을 수행할 수 있습니다. 예들 들어 az login --tenant contoso.onmicrosoft.com입니다.

리소스 그룹 만들기

Azure 리소스 그룹은 Azure 리소스가 배포되고 관리되는 논리 그룹입니다.

위치에서 az group create 명령을 사용하여 호출 java-liberty-projecteastus2 리소스 그룹을 만듭니다. 이 리소스 그룹은 나중에 Azure Container Registry 인스턴스 및 AKS 클러스터를 만드는 데 사용됩니다.

export RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus2

Container Registry 인스턴스 만들기

az acr create 명령을 사용하여 Container Registry 인스턴스를 만듭니다. 다음 예제에서는 라는 youruniqueacrnameContainer Registry 인스턴스를 만듭니다. Azure 내에서 고유한지 확인 youruniqueacrname 합니다.

참고 항목

이 문서에서는 Container Registry에 권장되는 암호 없는 인증 메커니즘을 사용합니다. 사용자 이름과 암호를 가져오는 데 사용한 후에도 사용자 이름 및 암호를 docker login 사용할 az acr credential show 수 있습니다. 사용자 이름 및 암호를 사용하는 것은 암호 없는 인증보다 안전하지 않습니다.

export REGISTRY_NAME=youruniqueacrname
az acr create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $REGISTRY_NAME \
    --sku Basic

잠시 후 다음 줄이 포함된 JSON 출력이 표시됩니다.

  "provisioningState": "Succeeded",
  "publicNetworkAccess": "Enabled",
  "resourceGroup": "java-liberty-project",

다음으로 Container Registry 인스턴스에 대한 로그인 서버를 검색합니다. 나중에 AKS 클러스터에 애플리케이션 이미지를 배포할 때 이 값이 필요합니다.

export LOGIN_SERVER=$(az acr show \
    --name $REGISTRY_NAME \
    --query 'loginServer' \
    --output tsv)

AKS 클러스터 만들기

az aks create 명령을 사용하여 AKS 클러스터를 만듭니다. 다음 예제에서는 하나의 노드로 명명된 myAKSCluster 클러스터를 만듭니다. 이 명령을 완료하는 데 몇 분 정도 걸립니다.

export CLUSTER_NAME=myAKSCluster
az aks create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --node-count 1 \
    --generate-ssh-keys \
    --enable-managed-identity

몇 분 후 명령이 완료되면 다음 출력을 포함하여 클러스터에 대한 JSON 형식 정보가 반환됩니다.

  "nodeResourceGroup": "MC_java-liberty-project_myAKSCluster_eastus2",
  "privateFqdn": null,
  "provisioningState": "Succeeded",
  "resourceGroup": "java-liberty-project",

AKS 클러스터에 Container Registry 인스턴스 연결

다음 예제와 같이 AKS 클러스터가 Container Registry 인스턴스에서 이미지를 끌어오도록 인증되도록 az aks update 명령을 실행하여 CONTAINER Registry 인스턴스를 AKS 클러스터에 연결합니다.

az aks update \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --attach-acr $REGISTRY_NAME

AKS 클러스터에 연결

Kubernetes 클러스터를 관리하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용합니다. kubectl을 로컬로 설치하려면 다음 예제와 같이 az aks install-cli 명령을 사용합니다.

az aks install-cli

Kubernetes 클러스터에 연결하도록 kubectl을 구성하려면 az aks get-credentials 명령을 사용합니다. 이 명령은 자격 증명을 다운로드하고 Kubernetes CLI가 해당 자격 증명을 사용하도록 구성합니다.

az aks get-credentials \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --overwrite-existing \
    --admin

참고 항목

위의 명령은 Kubernetes 구성 파일의 기본 위치인 ~/.kube/config를 사용합니다. 를 사용하여 --fileKubernetes 구성 파일의 다른 위치를 지정할 수 있습니다.

클러스터에 대한 연결을 확인하려면 kubectl get 명령을 사용하여 클러스터 노드 목록을 반환합니다.

kubectl get nodes

다음 예제 출력은 이전 단계에서 만든 단일 노드를 보여줍니다. 노드 상태가 준비인지 확인합니다.

NAME                                STATUS   ROLES   AGE     VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy   Ready    <none>  76s     v1.29.9

Azure SQL Database 만들기

이 섹션에서는 앱에 사용할 Azure SQL Database 단일 데이터베이스를 만듭니다.

먼저 데이터베이스 관련 환경 변수를 설정합니다. Azure SQL Database 서버의 고유한 이름으로 대체 <your-unique-sql-server-name> 합니다.

export SQL_SERVER_NAME=<your-unique-sql-server-name>
export DB_NAME=demodb

터미널에서 다음 명령을 실행하여 Azure SQL Database에서 단일 데이터베이스를 만들고 현재 로그인한 사용자를 Microsoft Entra 관리자로 설정합니다. 자세한 내용은 빠른 시작: 단일 데이터베이스 만들기 - Azure SQL Database를 참조 하세요.

export ENTRA_ADMIN_NAME=$(az ad signed-in-user show --query userPrincipalName --output tsv)

az sql server create \
    --name $SQL_SERVER_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --enable-ad-only-auth \
    --external-admin-principal-type User \
    --external-admin-name $ENTRA_ADMIN_NAME \
    --external-admin-sid $(az ad signed-in-user show --query id --output tsv)
az sql db create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name $DB_NAME \
    --edition GeneralPurpose \
    --compute-model Serverless \
    --family Gen5 \
    --capacity 2

그런 다음 로컬 컴퓨터가 나중에 로컬 테스트를 위해 데이터베이스에 연결할 수 있도록 Azure SQL Database 서버 방화벽 규칙에 로컬 IP 주소를 추가합니다.

export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az sql server firewall-rule create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name AllowLocalIP \
    --start-ip-address $AZ_LOCAL_IP_ADDRESS \
    --end-ip-address $AZ_LOCAL_IP_ADDRESS

참고 항목

보안 고려 사항에 대해 SQL 인증을 사용하지 않도록 설정된 Azure SQL 서버를 만듭니다. Microsoft Entra ID만 서버에 인증하는 데 사용됩니다. SQL 인증을 사용하도록 설정해야 하는 경우 자세한 내용은 az sql server create를 참조하세요.

서비스 커넥터를 사용하여 AKS에서 서비스 연결 만들기

다음 명령을 실행하여 서비스 커넥터에서 Microsoft Entra 워크로드 ID 사용하여 AKS 클러스터와 SQL 데이터베이스 간에 연결을 만듭니다. 자세한 내용은 서비스 커넥터를 사용하여 AKS에서 서비스 연결 만들기(미리 보기)를 참조하세요.

# Register the Service Connector and Kubernetes Configuration resource providers
az provider register --namespace Microsoft.ServiceLinker --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait

# Install the Service Connector passwordless extension
az extension add --name serviceconnector-passwordless --upgrade --allow-preview true

# Retrieve the AKS cluster and Azure SQL Server resource IDs
export AKS_CLUSTER_RESOURCE_ID=$(az aks show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --query id \
    --output tsv)
export AZURE_SQL_SERVER_RESOURCE_ID=$(az sql server show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $SQL_SERVER_NAME \
    --query id \
    --output tsv)

# Create a user-assigned managed identity used for workload identity
export USER_ASSIGNED_IDENTITY_NAME=workload-identity-uami
az identity create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name ${USER_ASSIGNED_IDENTITY_NAME}

# Retrieve the user-assigned managed identity resource ID
export UAMI_RESOURCE_ID=$(az identity show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name ${USER_ASSIGNED_IDENTITY_NAME} \
    --query id \
    --output tsv)

# Create a service connection between your AKS cluster and your SQL database using Microsoft Entra Workload ID
az aks connection create sql \
    --connection akssqlconn \
    --client-type java \
    --source-id $AKS_CLUSTER_RESOURCE_ID \
    --target-id $AZURE_SQL_SERVER_RESOURCE_ID/databases/$DB_NAME \
    --workload-identity $UAMI_RESOURCE_ID

참고 항목

SQL 인증을 사용하지 않고 Azure SQL Database에 안전하게 액세스하기 위해 Microsoft Entra 워크로드 ID 사용하도록 다시 명령됩니다. SQL 인증을 사용해야 하는 경우 이 섹션의 위의 단계를 무시하고 사용자 이름과 암호를 사용하여 Azure SQL Database에 연결합니다.

서비스 커넥터에서 만든 servcie 계정 및 비밀 가져오기

Azure SQL Database에 인증하려면 Service Connector에서 만든 서비스 계정 및 비밀을 가져와야 합니다. 컨테이너 업데이트 섹션을 따릅니다. 제공된 YAML 샘플 코드 조각을 사용하여 배포를 직접 만들고 다음 단계를 실행합니다.

  1. 샘플 Kubernetes 배포 YAML의 강조 표시된 섹션에서 다음 예제와 같이 값과 secretRef.name 값을 복사 serviceAccountName 합니다.

    serviceAccountName: <service-account-name>
    containers:
    - name: raw-linux
       envFrom:
          - secretRef:
             name: <secret-name>
    
  2. <secret-name> 다음 환경 변수를 정의하기 위해 이전 단계에서 복사한 값으로 바꿉 <service-account-name> 니다.

    export SERVICE_ACCOUNT_NAME=<service-account-name>
    export SECRET_NAME=<secret-name>
    

    이러한 값은 다음 섹션에서 Liberty 애플리케이션을 AKS 클러스터에 배포하는 데 사용됩니다.

참고 항목

Service Connector에서 만든 비밀에는 Azure SQL Database에 대한 암호 없는 연결 문자열 포함AZURE_SQL_CONNECTIONSTRING됩니다. 자세한 내용은 사용자 할당 관리 ID 인증샘플 값을 참조하세요.

Open Liberty 연산자 설치

이 섹션에서는 AKS 클러스터에 Open Liberty Operator를 설치하여 Liberty 애플리케이션을 호스트합니다.

다음 명령을 실행하여 Open Liberty 연산자를 설치합니다.

# Install cert-manager Operator
CERT_MANAGER_VERSION=v1.11.2
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.yaml

# Install Open Liberty Operator
export OPERATOR_VERSION=1.4.0
mkdir -p overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/olo-all-namespaces.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/cluster-roles.yaml -q -P ./overlays/watch-all-namespaces
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/overlays/watch-all-namespaces/kustomization.yaml -q -P ./overlays/watch-all-namespaces
mkdir base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/kustomization.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-crd.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-operator.yaml -q -P ./base
wget https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/main/deploy/releases/${OPERATOR_VERSION}/kustomize/base/open-liberty-roles.yaml -q -P ./base
kubectl create namespace open-liberty
kubectl apply --server-side -k overlays/watch-all-namespaces

애플리케이션 이미지 구성 및 빌드

AKS 클러스터에서 Liberty 애플리케이션을 배포하고 실행하려면 Open Liberty 컨테이너 이미지 또는 WebSphere Liberty 컨테이너 이미지를 사용하여 애플리케이션을 Docker 이미지로 컨테이너화합니다.

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

애플리케이션 체크 아웃

이 가이드를 위한 샘플 코드를 복제합니다. 샘플은 GitHub에 있습니다. 리포지토리에 몇 가지 샘플이 있습니다. 이 문서에서는 java-app 샘플을 사용합니다. 중요한 파일은 다음에 표시됩니다.

git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20241029

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

java-app
├─ src/main/
│  ├─ aks/
│  │  ├─ openlibertyapplication-passwordless-db.yaml
│  ├─ docker/
│  │  ├─ Dockerfile
│  │  ├─ Dockerfile-wlp
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ pom.xml
├─ pom-azure-identity.xml

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

aks 디렉터리에서 openlibertyapplication-passwordless-db.yaml 파일은 애플리케이션 이미지를 배포하는 데 사용됩니다. docker 디렉터리에는 Open Liberty 또는 WebSphere Liberty를 사용하여 애플리케이션 이미지를 만들기 위한 두 개의 파일이 있습니다.

디렉터리 liberty/config에서 server.xml Open Liberty 및 WebSphere Liberty 클러스터에 대한 데이터베이스 연결을 구성하는 데 사용됩니다. Azure SQL Database에 연결하는 데 사용되는 변수 azure.sql.connectionstring 를 정의합니다.

pom.xml 파일은 프로젝트에 대한 구성 정보를 포함하는 Maven POM(프로젝트 개체 모델) 파일입니다. pom-azure-identity.xml 파일은 Microsoft Entra ID를 사용하여 Azure 서비스에 인증하는 데 사용되는 종속성을 선언 azure-identity 합니다.

참고 항목

이 샘플에서는 라이브러리를 사용하여 azure-identity 보안 고려 사항에 권장되는 Microsoft Entra 인증을 사용하여 Azure SQL Database에 인증합니다. Liberty 애플리케이션에서 SQL 인증을 사용해야 하는 경우 자세한 내용은 JDBC의 관계형 데이터베이스 연결 참조하세요.

프로젝트 빌드

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

cd $BASE_DIR/java-app

# The following variables are used for deployment file generation into target/
export LOGIN_SERVER=${LOGIN_SERVER}
export SC_SERVICE_ACCOUNT_NAME=${SERVICE_ACCOUNT_NAME}
export SC_SECRET_NAME=${SECRET_NAME}

mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources

로컬로 프로젝트 테스트

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

참고 항목

"서버리스" 데이터베이스 배포를 선택한 경우 SQL 데이터베이스가 일시 중지 모드로 전환되지 않은지 확인합니다. 이 작업을 수행하는 한 가지 방법은 빠른 시작에서 설명한 대로 데이터베이스 쿼리 편집기로 로그인하는 것입니다. Azure Portal 쿼리 편집기(미리 보기)를 사용하여 Azure SQL Database를 쿼리합니다.

  1. liberty:run를 사용하여 애플리케이션을 시작합니다.

    cd $BASE_DIR/java-app
    
    # The value of environment variable AZURE_SQL_CONNECTIONSTRING is read by configuration variable `azure.sql.connectionstring` in server.xml
    export AZURE_SQL_CONNECTIONSTRING="jdbc:sqlserver://$SQL_SERVER_NAME.database.windows.net:1433;databaseName=$DB_NAME;authentication=ActiveDirectoryDefault"
    mvn liberty:run
    
  2. 애플리케이션이 예상대로 작동하는지 확인합니다. 성공하면 명령 출력에 [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.와 유사한 메시지가 표시되어야 합니다. 브라우저에서 http://localhost:9080/으로 이동하여 애플리케이션에 액세스할 수 있고 모든 기능이 작동하는지 확인합니다.

  3. Ctrl+C를 눌러 중지합니다. 일괄 처리 작업을 종료하도록 aksed되어 있는지 선택합니다 Y .

완료되면 다음 명령을 사용하여 로컬 IP 주소가 Azure SQL Database에 액세스할 수 있도록 하는 방화벽 규칙을 삭제합니다.

az sql server firewall-rule delete \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name AllowLocalIP

AKS 배포를 위한 이미지 빌드

이제 다음 예제와 같이 az acr build 명령을 실행하여 이미지를 빌드할 수 있습니다.

cd $BASE_DIR/java-app/target

az acr build \
    --registry ${REGISTRY_NAME} \
    --image javaee-cafe:v1 \
    .

az acr build 명령은 Dockerfile에 지정된 아티팩트들을 Container Registry 인스턴스에 업로드하고, 이미지를 빌드하고, Container Registry 인스턴스에 저장합니다.

AKS 클러스터에 애플리케이션 배포

다음 단계를 사용하여 AKS 클러스터에 Liberty 애플리케이션을 배포합니다.

  1. 다음 명령을 실행하여 배포 파일을 적용합니다.

    cd $BASE_DIR/java-app/target
    
    # Apply deployment file
    kubectl apply -f openlibertyapplication-passwordless-db.yaml
    
  2. 다음 명령을 실행하여 인스턴스가 만들어지는지 여부를 OpenLibertyApplication 확인합니다.

    kubectl get openlibertyapplication javaee-cafe-cluster
    

    다음 예제와 비슷한 내용이 출력됩니다.

    NAME                  IMAGE                                        EXPOSED   RECONCILED   RESOURCESREADY   READY   WARNING   AGE
    javaee-cafe-cluster   jiangma102924acr.azurecr.io/javaee-cafe:v1             True         True             True              57s
    
  3. 다음 명령을 실행하여 운영자가 만든 배포가 준비되었는지 여부를 확인합니다.

    kubectl get deployment javaee-cafe-cluster --watch
    

    다음 예제와 비슷한 내용이 출력됩니다.

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    javaee-cafe-cluster         0/3     3            0           20s
    
  4. 열 아래와 열 아래에 AVAILABLE READY 표시 3/3 될 때까지 기다린 다음 Ctrl+C를 사용하여 조사식 프로세스를 중지 kubectl 합니다.3

애플리케이션 테스트

애플리케이션이 실행되면 Kubernetes 부하 분산 장치 서비스가 애플리케이션 프런트 엔드를 인터넷에 공개합니다. 이 프로세스를 완료하는 데 시간이 걸릴 수 있습니다.

진행률을 모니터링하려면 다음 예제와 같이 kubectl get service 명령을 인수와 함께 --watch 사용합니다.

kubectl get service javaee-cafe-cluster --watch

다음 예제와 비슷한 내용이 출력됩니다.

NAME                        TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
javaee-cafe-cluster         LoadBalancer   10.0.251.169   52.152.189.57   80:31732/TCP     68s

EXTERNAL-IP 주소가 보류 중인 실제 공용 IP 주소로 변경된 후 Ctrl+C를 사용하여 조사식 프로세스를 중지 kubectl 합니다.

이 섹션의 단계 실행과 이전 단계 사이에 약간의 시간이 경과한 경우 필요한 경우 데이터베이스가 활성 상태인지 확인합니다. 데이터베이스 일시 중지에 대한 이전 참고 사항을 참조하세요.

서비스의 외부 IP 주소(위의 예에서 52.152.189.57)로 웹 브라우저를 열어 애플리케이션 홈페이지를 확인합니다. 페이지가 올바르게 로드되지 않으면 앱이 시작되기 때문입니다. 잠시 기다렸다가 나중에 페이지를 새로 고칠 수 있습니다. 페이지의 왼쪽 위에 애플리케이션 복제본의 Pod 이름이 표시됩니다. 몇 분 동안 기다렸다가 페이지를 새로 고쳐 AKS 클러스터에서 제공하는 부하 분산으로 인해 다른 Pod 이름이 표시됩니다.

JAVA liberty 애플리케이션이 AKS에 성공적으로 배포되었습니다.

참고 항목

현재 애플리케이션은 HTTPS를 사용하지 않습니다. 자체 인증서를 사용하여 TLS를 사용하도록 설정하는 것이 좋습니다. 자세한 내용은 AKS(Azure Kubernetes Service)에서 수신 컨트롤러와 함께 TLS 사용을 참조하세요.

리소스 정리

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

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

다음 단계

이 가이드에 사용된 참조에서 자세한 내용을 알아볼 수 있습니다.

Azure Cache for Redis를 Java 앱에 통합하려면 Redisson Redis 클라이언트와 함께 Java에서 Azure Cache for Redis 사용을 참조 하세요.

Azure에서 WebSphere 제품을 실행하는 옵션을 살펴보려면 Azure 에서 WebSphere 제품군을 실행하는 솔루션은 무엇인가요?