참고 항목
기본, 표준 및 엔터프라이즈 계획은 2025년 3월 17일에 사용 중지 기간에 들어갔습니다. 자세한 내용은 Azure Spring Apps 사용 중지 공지 사항을 참조하세요.
❎ 적용됩니다.
이 문서에서는 Azure Container Apps에서 ACS(Application Configuration Service) 및 Config Server를 Config Server for Spring으로 마이그레이션하는 방법을 설명합니다. Azure Container Apps는 Azure Spring Apps에서 ACS 또는 Spring Cloud Config Server와 유사한 기능을 포함하는 Spring용 구성 서버를 관리합니다.
필수 조건
- Application Configuration Service를 사용하도록 설정된 Azure Spring Apps Enterprise 계획 인스턴스입니다.
- Config Server 및 Azure Container Apps 인스턴스에 대한 Azure Container Apps 환경입니다.
구성 서버 프로비전
다음 단계에서는 Azure Container Apps에서 Spring용 Config Server를 프로비전하는 방법을 보여 줍니다.
Azure Portal에서 Azure Container Apps 환경으로 이동합니다.
메뉴에서 Services Services를> 선택합니다.
구성 드롭다운 목록을 열고 Java 구성 요소를 선택합니다.
Java 구성 요소 구성 패널에서 다음 값을 입력합니다.
속성 값 Java 구성 요소 유형 Spring용 Config Server를 선택합니다. Java 구성 요소 이름 configserver를 입력합니다. Git 리포지토리 섹션에서 추가를 선택한 다음, 다음 표와 같이 Application Configuration Service의 값을 여기로 마이그레이션합니다. 하나의 리포지토리를 Spring용 Config Server의 기본 리포지토리로 선택합니다.
속성 값 Type 기본값을 선택합니다. URI 리포지토리의 URI 값을 입력합니다. 분기 이름 리포지토리의 레이블 값을 입력합니다. 검색 경로 리포지토리의 검색 경로 값을 입력합니다. 인증 리포지토리의 인증 유형을 선택하고 해당 정보를 입력합니다. 나머지 필드에 기본값을 그대로 두고 추가를 선택합니다.
여러 리포지토리가 있는 경우 추가를 선택하여 다른 리포지토리를 마이그레이션합니다. 형식의 경우 기타를 선택한 다음, 이전 단계와 다음 표에 표시된 대로 다른 속성을 마이그레이션합니다.
속성 값 Type 기본값을 선택합니다. 패턴 리포지토리의 패턴 값을 형식으로 {application}{application}/{profile}입력합니다.바인딩 섹션에서 드롭다운을 열어 Spring용 구성 서버에 바인딩할 앱을 선택합니다.
다음을 선택합니다.
구성 서버를 설정하려면 검토 탭에서 구성을 선택한 다음 구성 섹션의 지침을 따릅니다.
성공적으로 만든 후 Spring용 구성 서버의 프로비저닝 상태가 성공했음을 알 수 있습니다.
리소스 할당
Azure Container Apps에서 관리되는 Config Server에 대한 컨테이너 리소스 할당은 다음 값으로 고정됩니다.
- CPU: 0.5 vCPU
- 메모리: 1Gi
Spring용 Config Server의 인스턴스 수를 구성하려면 매개 변수 --min-replicas 를 --max-replicas 동일한 값으로 업데이트해야 합니다. 이 구성은 인스턴스 수가 고정된 상태로 유지되도록 합니다. 현재 시스템은 동적 크기 조정을 위한 자동 크기 조정 구성을 지원하지 않습니다.
구성 서버 구성
구성 서버의 기본 리포지토리로 ACS(Application Configuration Service)에서 하나의 Git 리포지토리를 선택하고 다른 리포지토리를 추가 리포지토리로 선택합니다.
다음 표에서는 ACS의 속성과 Config Server의 해당 구성 간의 매핑을 제공합니다.
| ACS의 속성 이름 | CONFIGURATION_KEY |
CONFIGURATION_VALUE |
|---|---|---|
name |
이 값을 Config Server에 매핑할 필요가 없습니다. | |
pattern |
이 값을 Config Server에 매핑할 필요가 없습니다. | |
uri |
spring.cloud.config.server.git.uri spring.cloud.config.server.git.repos.{repoName}.uri |
원격 리포지토리 URI입니다. |
search path |
spring.cloud.config.server.git.search-paths spring.cloud.config.server.git.repos.{repoName}.search-paths |
로컬 작업 복사본 내에서 사용할 검색 경로입니다. 기본적으로 루트만 검색합니다. |
label |
spring.cloud.config.server.git.default-label spring.cloud.config.server.git.repos.{repoName}.default-label |
Git에 사용되는 레이블입니다. |
username |
spring.cloud.config.server.git.username spring.cloud.config.server.git.repos.{repoName}.username |
인증 유형이 원격 리포지토리 인증에 대한 사용자 이름입니다HTTP Basic. |
password |
spring.cloud.config.server.git.password spring.cloud.config.server.git.repos.{repoName}.password |
인증 유형이 원격 리포지토리 인증에 대한 암호입니다HTTP Basic. |
private key |
spring.cloud.config.server.git.private-key spring.cloud.config.server.git.repos.{repoName}.private-key |
인증 유형이 .인 경우 유효한 SSH 프라이빗 키입니다 SSH. |
host key |
spring.cloud.config.server.git.host-key spring.cloud.config.server.git.repos.{repoName}.host-key |
인증 유형이 .인 경우 유효한 SSH 호스트 키입니다 SSH.
host-key-algorithm이 설정되면 설정해야 합니다. |
host key algorithm |
spring.cloud.config.server.git.host-key-algorithm spring.cloud.config.server.git.repos.{repoName}.host-key-algorithm |
ssh-dss, ssh-rsa, ssh-ed25519, ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521또는 인증 유형 SSH중 하나입니다.
host-key이 설정되면 설정해야 합니다. |
더 많은 구성 서버 속성은 Azure Container Apps에서 관리되는 Spring용 Config Server에 연결의 구성 옵션 섹션을 참조하세요.
예를 들어 ACS에 다음 구성이 있다고 가정합니다.
"settings": {
"gitProperty": {
"repositories": [
{
"name": "r1",
"patterns": [
"application"
],
"label": "master",
"uri": "https://github.com/Azure-Samples/spring-petclinic-microservices-config"
},
{
"name": "r2",
"patterns": [
"customers-service"
],
"label": "master",
"uri": "https://github.com/Azure-Samples/spring-petclinic-microservices-config"
},
{
"name": "r3",
"patterns": [
"payment"
],
"label": "main",
"uri": "https://github.com/Azure-Samples/acme-fitness-store-config"
}
]
}
}
이 ACS 구성을 사용하면 다음 구성을 사용하여 Spring용 Config Server로 마이그레이션할 수 있습니다.
spring.cloud.config.server.git.uri=https://github.com/Azure-Samples/spring-petclinic-microservices-config
spring.cloud.config.server.git.default-label=master
spring.cloud.config.server.git.repos.repo1.uri=https://github.com/Azure-Samples/acme-fitness-store-config
spring.cloud.config.server.git.repos.repo1.default-label=main
애플리케이션 구성 변경
Spring용 Config Server를 프로비전하고 구성한 후 다음 단계를 사용하여 애플리케이션 구성을 효과적으로 사용하도록 조정합니다.
Spring Boot 종속성을 업데이트합니다. Maven용 pom.xml 또는 Gradle용 build.gradle에 다음 Spring Cloud 구성 종속성을 추가합니다.
프로필을 구성합니다. ACS에 대한 프로필은 Azure Spring Apps 배포에서 패턴으로 제공되며 Config Server에서는 애플리케이션의 소스 코드에서 프로필이 구성됩니다.
Config Server가 환경별 구성을
devprod제공할 수 있도록 애플리케이션에서 올바른 프로필(예: 등)을 사용하는지 확인합니다.다음 예제와 같이 구성 서버를 가리키도록 애플리케이션의 bootstrap.yml 또는 application.yml 파일을 올바른 구성 속성으로 업데이트합니다.
spring: cloud: config: profile: dev새로 고침 간격을 구성합니다. ACS에서 새로 고침 간격을 설정하는 경우 Spring용 Config Server 구성에서
spring.cloud.config.server.git.refreshRate해당 값을 지정할 수도 있습니다. 이 값은 Spring용 Config Server가 Git 백 엔드에서 업데이트된 구성 데이터를 가져오는 빈도를 결정합니다.애플리케이션 코드에서 속성 변경 내용을 로드하려면 다음 단계를 수행합니다.
- 예약 작업을 등록하여 지정된 간격으로 컨텍스트를 새로 고칩니다.
- application.yml
autorefresh사용하도록 설정하고 설정합니다. - 코드에 추가
@RefreshScope합니다.
자세한 내용은 구성 서버 새로 고침을 참조 하세요.
Azure Container Apps에 애플리케이션 배포
애플리케이션을 로컬로 테스트한 후 Azure Container Apps 애플리케이션에 새 이미지를 배포할 수 있습니다.
다음 단계를 사용하여 배포합니다.
- Azure Portal에서 Azure Container Apps 애플리케이션으로 이동합니다.
- 메뉴에서 애플리케이션>
- 편집 및 배포를 선택하여 새 수정 버전 만들기 및 배포 페이지를 엽니다.
- 컨테이너 이미지 섹션에서 이미지를 선택한 다음 편집을 선택합니다.
- 컨테이너 편집 섹션의 속성 탭에서 애플리케이션의 새 이미지를 선택합니다.
- 환경 변수 탭에서 이름에 대해 spring.application.name 지정합니다. 그런 다음 원본의 경우 수동 항목을 선택하고 애플리케이션이 구성을 사용하는 구성 파일 이름을 지정합니다.
- 저장을 선택하여 새 수정 버전을 배포합니다.
문제 해결
Log Analytics를 사용하여 Azure Container Apps에서 Spring용 관리되는 구성 서버에 대한 로그를 볼 수 있습니다. 다음 단계를 사용합니다.
Azure Portal에서 Azure Container Apps 환경으로 이동합니다.
모니터링>로그 메뉴를 선택합니다.
로그를 보려면 다음 예제와 같이 테이블의 쿼리 편집
ContainerAppSystemLogs_CL기에 쿼리를 입력합니다.ContainerAppSystemLogs_CL | where ComponentType_s == "SpringCloudConfig" | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s | take 100
로그 쿼리에 대한 자세한 내용은 Azure Container Apps에서 관리되는 Java 구성 요소의 관찰 가능성을 참조 하세요.
알려진 제한 사항
ACS를 Spring용 Config Server로 마이그레이션하는 것은 Java 애플리케이션에만 적용됩니다. ACS는 Kubernetes 네이티브를 사용하여 구성을 관리하기 때문 ConfigMap입니다. 이 메서드를 사용하면 Kubernetes 환경에서 동적 구성 업데이트를 사용할 수 있으므로 여러 프로그래밍 언어를 사용하는 다양한 애플리케이션에 사용할 수 있습니다. Spring Cloud Config Server는 주로 Java 애플리케이션용으로 설계되지만 Spring Framework 기능을 사용하여 Java에 대한 구성 관리만 지원합니다.