다음을 통해 공유


자습서: Azure Spring Apps에 애플리케이션을 배포하고 서비스 커넥터를 사용하여 Azure Database for MySQL 유연한 서버에 연결

이 자습서에서는 Azure Portal 또는 Azure CLI를 사용하여 다음 작업을 완료합니다. 두 방법 모두 다음 절차에 설명되어 있습니다.

  • Azure Spring Apps 인스턴스 프로비전
  • Azure Spring Apps에 앱 빌드 및 배포
  • 서비스 커넥터를 사용하여 Azure Database for MySQL와 Azure Spring Apps 통합

Warning

사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 이 절차에서 설명된 인증 흐름은 다른 흐름에는 없는 위험을 전달하며, 애플리케이션에서 매우 높은 신뢰 수준을 요구합니다. 이 흐름은 관리 ID와 같은 보다 안전한 다른 흐름을 실행할 수 없는 경우에만 사용되어야 합니다.

필수 조건

Azure Spring Apps 인스턴스 프로비전

다음 절차에서는 Azure CLI 확장을 사용하여 Azure Spring Apps의 인스턴스를 프로비저닝합니다.

  1. Azure Spring Apps 확장으로 Azure CLI를 업데이트합니다.

    az extension update --name spring
    
  2. Azure CLI에 로그인하고 활성 구독을 선택합니다.

    az login
    az account list -o table
    az account set --subscription <Name or ID of subscription, skip if you only have 1 subscription>
    
  3. 앱과 Azure Spring Apps 서비스의 인스턴스를 포함할 리소스 그룹을 만듭니다.

    az group create --name ServiceConnector-tutorial-mysqlf --location eastus
    
  4. Azure Spring Apps 인스턴스를 만듭니다. 이름은 4~32자여야 하며, 소문자, 숫자 및 하이픈 문자만 포함할 수 있습니다. Azure Spring Apps 인스턴스 이름의 첫 글자는 문자여야 하며, 마지막 문자는 문자 또는 숫자여야 합니다.

    az spring create -n my-azure-spring -g ServiceConnector-tutorial-mysqlf
    

Azure Database for MySQL 유연한 서버 만들기

MySQL 유연한 서버 인스턴스를 만듭니다. 아래 명령에서 <admin-username><admin-password>를 선택한 자격 증명으로 교체하여 MySQL 유연한 서버에 대한 관리자 사용자를 만듭니다. 관리 사용자 이름은 azure_superuser, azure_pg_admin, admin, administrator, root, guest 또는 public이 될 수 없습니다. pg_로 시작할 수 없습니다. 암호에는 영어 대문자, 영어 소문자, 숫자 및 영숫자가 아닌 문자(예: !, #, %)의 세 가지 범주에 해당하는 8~128자의 문자가 포함되어야 합니다. 암호에 username을 포함할 수 없습니다.

az mysql flexible-server create \
    --resource-group ServiceConnector-tutorial-mysqlf \
    --name mysqlf-server \
    --database-name mysqlf-db \
    --admin-user <admin-username> \
    --admin-password <admin-password>

수동으로 재정의하지 않는 한 서버는 다음과 같은 기본값으로 만들어집니다.

설정 기본값 설명
서버 이름 시스템 생성 Azure Database for MySQL 서버를 식별하는 고유한 이름입니다.
sku-name GP_Gen5_2 SKU의 이름입니다. {가격 책정 계층}_{컴퓨팅 세대}_{vCores} 규칙을 축약형으로 따릅니다. 기본값은 2개의 vCore가 있는 범용 5세대 서버입니다. 가격 책정에 대한 자세한 내용은 가격 책정 페이지로 이동하세요.
backup-retention 7 백업을 보존하는 기간입니다. 단위는 일입니다.
geo-redundant-backup 사용 안 함 이 서버에 지역 중복 백업을 사용할 것인지 여부를 결정합니다.
location westus2 서버에 대한 Azure 위치입니다.
ssl-enforcement Enabled 이 서버에 SSL을 사용할 것인지 여부를 결정합니다.
storage-size 5120 서버의 스토리지 용량입니다(단위는 메가바이트).
version 5.7 MySQL 주 버전입니다.

참고 항목

Standard_B1ms SKU는 기본적으로 사용됩니다. 가격 책정 세부 정보는 Azure Database for MySQL 가격 책정을 참조하세요.

참고 항목

az mysql flexible-server create 명령과 해당 추가 매개 변수에 대한 자세한 내용은 Azure CLI 설명서를 참조하세요.

앱 빌드 및 배포

  1. 퍼블릭 엔드포인트가 할당된 앱을 만듭니다. Azure Spring Apps 프로젝트를 생성할 때 Java 버전 11을 선택한 경우 --runtime-version=Java_11 스위치를 포함합니다.

    az spring app create -n hellospring -s my-azure-spring -g ServiceConnector-tutorial-mysqlf --assign-endpoint true
    
  2. az spring connection create 명령을 실행하여 Azure Spring Apps에 배포된 애플리케이션을 MySQL 유연한 서버 데이터베이스에 연결합니다. 다음 자리 표시자를 사용자 고유의 정보로 바꿉니다.

    az spring connection create mysql-flexible \
        --resource-group ServiceConnector-tutorial-mysqlf \
        --service my-azure-spring \
        --app hellospring \
        --target-resource-group ServiceConnector-tutorial-mysqlf \
        --server mysqlf-server \
        --database mysqlf-db \
        --secret name=<admin-username> secret=<admin-secret>
    
    설정 설명
    --resource-group Azure Spring Apps에서 호스트하는 앱을 포함하는 리소스 그룹의 이름입니다.
    --service Azure Spring Apps 리소스의 이름입니다.
    --app 대상 서비스에 연결하는 Azure Spring Apps에서 호스트하는 애플리케이션의 이름입니다.
    --target-resource-group 스토리지 계정이 있는 리소스 그룹의 이름입니다.
    --server 연결하려는 MySQL 유연한 서버
    --database 이전에 만든 데이터베이스의 이름입니다.
    --secret name MySQL 유연한 서버 사용자 이름입니다.
    --secret MySQL 유연한 서버 암호입니다.

    참고 항목

    "구독이 Microsoft.ServiceLinker를 사용하도록 등록되어 있지 않습니다."라는 오류 메시지가 표시되면 az provider register -n Microsoft.ServiceLinker를 실행하여 Service Connector 리소스 공급자를 등록하고 연결 명령을 다시 실행합니다.

  3. 샘플 코드 복제

    git clone https://github.com/Azure-Samples/serviceconnector-springcloud-mysql-springboot.git
    
  4. Maven을 사용하여 프로젝트를 빌드합니다.

    cd serviceconnector-springcloud-mysql-springboot
    mvn clean package -DskipTests 
    
  5. target/demo-0.0.1-SNAPSHOT.jar에 대한 JAR 파일을 배포합니다.

    az spring app deploy \
        --name hellospring \
        --service my-azure-spring \
        --resource-group ServiceConnector-tutorial-mysqlf \
        --artifact-path target/demo-0.0.1-SNAPSHOT.jar
    
  6. 다음 명령을 사용하여 배포 후 앱 상태를 쿼리합니다.

    az spring app list  --resource-group ServiceConnector-tutorial-mysqlf --service my-azure-spring --output table
    

    다음과 같은 출력이 표시됩니다.

    Name         Location    ResourceGroup                     Public Url                                                 Production Deployment    Provisioning State    CPU    Memory    Running Instance    Registered Instance    Persistent Storage    Bind Service Registry    Bind Application Configuration Service
    -----------  ----------  --------------------------------  ---------------------------------------------------------  -----------------------  --------------------  -----  --------  ------------------  ---------------------  --------------------  -----------------------  ----------------------------------------
    hellospring  eastus      ServiceConnector-tutorial-mysqlf  https://my-azure-spring-hellospring.azuremicroservices.io  default                  Succeeded             1      1Gi       1/1                 0/1                    -                     -
    
    

다음 단계

서비스 커넥터에 대해 자세히 알아보려면 아래 나열된 자습서를 따르세요.