Azure Container Apps에서 Config Server for Spring 구성 요소에 대한 설정 구성(미리 보기)
Config Server for Spring은 구성 데이터를 여러 애플리케이션에서 사용할 수 있도록 중앙 집중식 위치를 제공합니다. 다음 지침을 사용하여 Config Server for Spring 구성 요소를 구성하고 관리하는 방법을 알아봅니다.
표시
show
명령을 사용하여 이름으로 개별 구성 요소의 세부 정보를 볼 수 있습니다.
다음 명령을 실행하기 전에 <>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.
az containerapp env java-component config-server-for-spring show \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <JAVA_COMPONENT_NAME>
List
list
명령을 사용하여 등록된 모든 Java 구성 요소를 나열할 수 있습니다.
다음 명령을 실행하기 전에 <>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.
az containerapp env java-component list \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP>
바인딩
update
명령의 --bind
매개 변수를 사용하여 Config Server for Spring 구성 요소와 컨테이너 앱 간에 연결을 만듭니다.
다음 명령을 실행하기 전에 <>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.
az containerapp update \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--bind <JAVA_COMPONENT_NAME>
바인딩 해제
컨테이너 앱과 Config Server for Spring 구성 요소 간의 연결을 끊으려면 update
명령의 --unbind
매개 변수를 사용합니다.
다음 명령을 실행하기 전에 <>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.
az containerapp update \
--name <CONTAINER_APP_NAME> \
--unbind <JAVA_COMPONENT_NAME> \
--resource-group <RESOURCE_GROUP>
구성 옵션
az containerapp update
명령은 --configuration
매개 변수를 사용하여 Config Server for Spring이 구성된 방법을 제어합니다. 여러 매개 변수를 공백으로 구분하면 한 번에 여러 매개 변수를 사용할 수 있습니다. 자세한 내용은 Spring Cloud Config Server 문서에서 확인할 수 있습니다.
다음 표에서는 사용 가능한 다양한 구성 값을 나열합니다.
Git 백 엔드 구성
속성 | 설명 |
---|---|
spring.cloud.config.server.git.uri spring.cloud.config.server.git.repos.{repoName}.uri |
원격 리포지토리의 URI입니다. |
spring.cloud.config.server.git.username spring.cloud.config.server.git.repos.{repoName}.username |
원격 리포지토리를 사용한 인증을 위한 사용자 이름입니다. |
spring.cloud.config.server.git.password spring.cloud.config.server.git.repos.{repoName}.password |
원격 리포지토리를 사용하여 인증하기 위한 암호입니다. |
spring.cloud.config.server.git.search-paths spring.cloud.config.server.git.repos.{repoName}.search-paths |
로컬 작업 복사본 내에서 사용할 경로를 검색합니다. 기본적으로 루트만 검색합니다. |
spring.cloud.config.server.git.force-pull spring.cloud.config.server.git.repos.{repoName}.force-pull |
리포지토리가 강제로 끌어오기를 해야 함을 나타내는 플래그입니다. true인 경우 로컬 변경 내용을 취소하고 원격 리포지토리에서 가져옵니다. |
spring.cloud.config.server.git.default-label spring.cloud.config.server.git.repos.{repoName}.default-label |
Git에 사용되는 기본 레이블은 main입니다. spring.cloud.config.server.git.default-label을 설정하지 않고 main이라는 분기가 존재하지 않는 경우 구성 서버는 기본적으로 master라는 분기를 체크 아웃하려고 시도합니다. 대체 분기 동작을 사용하지 않도록 설정하려면 spring.cloud.config.server.git.tryMasterBranch를 false로 설정할 수 있습니다. |
spring.cloud.config.server.git.try-master-branch spring.cloud.config.server.git.repos.{repoName}.try-master-branch |
구성 서버는 기본적으로 master라는 분기를 체크 아웃하려고 시도합니다. |
spring.cloud.config.server.git.skip-ssl-validation spring.cloud.config.server.git.repos.{repoName}.skip-ssl-validation |
git.skipSslValidation 속성을 true로 설정하면 구성 서버의 Git 서버 SSL 인증서 유효성 검사를 사용하지 않도록 설정할 수 있습니다. |
spring.cloud.config.server.git.clone-on-start spring.cloud.config.server.git.repos.{repoName}.clone-on-start |
시작 시(요청 시 아님) 리포지토리를 복제해야 함을 나타내는 플래그입니다. 일반적으로 시작 속도는 더 느리지만 첫 번째 쿼리는 더 빠릅니다. |
spring.cloud.config.server.git.timeout spring.cloud.config.server.git.repos.{repoName}.timeout |
HTTP 또는 SSH 연결을 가져오기 위한 시간 제한(초)입니다(해당하는 경우). 기본값은 5초입니다. |
spring.cloud.config.server.git.refresh-rate spring.cloud.config.server.git.repos.{repoName}.refresh-rate |
구성 서버가 Git 백 엔드에서 업데이트된 구성 데이터를 가져오는 빈도입니다. |
spring.cloud.config.server.git.private-key spring.cloud.config.server.git.repos.{repoName}.private-key |
유효한 SSH 프라이빗 키입니다. ignore-local-ssh-settings가 true이고 Git URI가 SSH 형식인 경우 설정해야 합니다. |
spring.cloud.config.server.git.host-key spring.cloud.config.server.git.repos.{repoName}.host-key |
유효한 SSH 호스트 키입니다. 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-nistp256, ecdsa-sha2-nistp384 또는 ecdsa-sha2-nistp521 중 하나입니다. host-key도 설정된 경우 설정해야 합니다. |
spring.cloud.config.server.git.strict-host-key-checking spring.cloud.config.server.git.repos.{repoName}.strict-host-key-checking |
true 또는 false. false인 경우 호스트 키 오류를 무시합니다. |
spring.cloud.config.server.git.repos.{repoName} |
원격 리포지토리의 URI입니다. |
spring.cloud.config.server.git.repos.{repoName}.pattern |
패턴 형식은 와일드카드가 있는 {application}/{profile} 이름의 쉼표로 구분된 목록입니다. {application}/{profile}이 아무 패턴과도 일치하지 않으면 아래에 정의된 기본 URI를 사용합니다. |
일반 구성
관련 구성 로깅
- logging.level.*
- logging.group.*
- logging.* 네임스페이스 아래의 다른 모든 구성은 금지되어야 합니다. 예를 들어,
logging.file
을 사용하여 로그 파일을 작성하는 것은 금지되어야 합니다.
spring.cloud.config.server.overrides
- 모든 클라이언트에 무조건 전송할 속성 원본에 대한 추가 맵입니다.
spring.cloud.config.override-none
- 원격 리포지토리에서 spring.cloud.config.override-none=true 플래그(기본값은 false)를 설정하여 애플리케이션이 환경 변수 또는 시스템 속성에 고유한 값을 제공할 수 있도록 클라이언트의 모든 재정의 우선순위를 기본값과 비슷하게 변경할 수 있습니다.
spring.cloud.config.allow-override
- 구성 첫 번째 부트스트랩을 사용하도록 설정하면 클라이언트 애플리케이션이 구성 서버에서 들어오는 애플리케이션 구성 내에 두 개의 속성을 배치하여 구성 서버에서 구성을 재정의하도록 허용할 수 있습니다.
spring.cloud.config.server.health.
- 사용자 지정 프로필 및 사용자 지정 레이블과 함께 더 많은 애플리케이션을 확인하도록 상태 표시기를 구성할 수 있습니다.
spring.cloud.config.server.accept-empty
- 애플리케이션을 찾을 수 없는 경우 서버가 HTTP
404
상태를 반환하도록spring.cloud.config.server.accept-empty
를false
로 설정할 수 있습니다. 기본적으로 이 플래그는true
로 설정됩니다.
- 애플리케이션을 찾을 수 없는 경우 서버가 HTTP
암호화 및 암호 해독(대칭)
- encrypt.key
- 구성할 단일 속성값이므로 대칭 키를 사용하는 것이 편리합니다.
- spring.cloud.config.server.encrypt.enabled
- 서버 쪽 암호 해독을 사용하지 않도록 설정하려면 이를
false
로 설정할 수 있습니다.
- 서버 쪽 암호 해독을 사용하지 않도록 설정하려면 이를
- encrypt.key
새로 고침
속성을 사용하는 서비스는 변경이 발생하기 전에 변경 내용을 알아야 합니다. Config Server for Spring의 기본 알림 방법에는 https://<YOUR_CONFIG_CLIENT_HOST_NAME>/actuator/refresh
을(를) 호출하여 새로 고침과 같은 새로 고침 이벤트를 수동으로 트리거하는 작업이 포함되며, 앱 인스턴스가 많은 경우에는 불가능할 수 있습니다.
대신 구성 클라이언트가 내부 새로 고침을 기반으로 변경 사항을 폴링하도록 하여 Config Server에서 값을 자동으로 새로 고칠 수 있습니다. 다음 단계를 사용하여 Config Server에서 값을 자동으로 새로 고칩니다.
다음 예제와 같이 예약 작업을 등록하여 지정된 간격으로 컨텍스트를 새로 고칩니다.
@Configuration @AutoConfigureAfter({RefreshAutoConfiguration.class, RefreshEndpointAutoConfiguration.class}) @EnableScheduling public class ConfigClientAutoRefreshConfiguration implements SchedulingConfigurer { @Value("${spring.cloud.config.refresh-interval:60}") private long refreshInterval; @Value("${spring.cloud.config.auto-refresh:false}") private boolean autoRefresh; private final RefreshEndpoint refreshEndpoint; public ConfigClientAutoRefreshConfiguration(RefreshEndpoint refreshEndpoint) { this.refreshEndpoint = refreshEndpoint; } @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { if (autoRefresh) { // set minimal refresh interval to 5 seconds refreshInterval = Math.max(refreshInterval, 5); scheduledTaskRegistrar.addFixedRateTask(refreshEndpoint::refresh, Duration.ofSeconds(refreshInterval)); } } }
autorefresh
을 사용하도록 설정하고 application.yml 파일에서 적절한 새로 고침 간격을 설정합니다. 다음 예제에서 클라이언트는 새로 고침 간격으로 설정할 수 있는 최솟값인 60초마다 구성 변경 내용을 폴링합니다.기본적으로
autorefresh
는false
로 설정되고refresh-interval
은 60초로 설정됩니다.spring: cloud: config: auto-refresh: true refresh-interval: 60 management: endpoints: web: exposure: include: - refresh
코드에
@RefreshScope
를 추가합니다. 다음 예제에서는 변수connectTimeout
이 60초마다 자동으로 새로 고쳐집니다.@RestController @RefreshScope public class HelloController { @Value("${timeout:4000}") private String connectTimeout; }
대칭 키를 사용한 암호화 및 암호 해독
서버 쪽 암호 해독
기본적으로 서버 쪽 암호화는 사용하도록 설정됩니다. 다음 단계를 사용하여 애플리케이션에서 암호 해독을 사용하도록 설정합니다.
git 리포지토리의 .properties 파일에 암호화된 속성을 추가합니다.
예를 들어 파일은 다음 예제와 유사해야 합니다.
message={cipher}f43e3df3862ab196a4b367624a7d9b581e1c543610da353fbdd2477d60fb282f
암호화된 속성이 있는 git 리포지토리를 사용하고 암호화 키를 설정하도록 Config Server for Spring Java 구성 요소를 업데이트합니다.
다음 명령을 실행하기 전에
<>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.az containerapp env java-component config-server-for-spring update \ --environment <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --name <JAVA_COMPONENT_NAME> \ --configuration spring.cloud.config.server.git.uri=<URI> encrypt.key=randomKey
클라이언트 쪽 암호 해독
다음 단계를 수행하여 속성의 클라이언트 쪽 암호 해독을 사용할 수 있습니다.
git 리포지토리의
*.properties*
파일에 암호화된 속성을 추가합니다.암호화된 속성이 있는 git 리포지토리를 사용하고 서버 쪽 암호 해독을 사용하지 않도록 Config Server for Spring Java 구성 요소를 업데이트합니다.
다음 명령을 실행하기 전에
<>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.az containerapp env java-component config-server-for-spring update \ --environment <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --name <JAVA_COMPONENT_NAME> \ --configuration spring.cloud.config.server.git.uri=<URI> spring.cloud.config.server.encrypt.enabled=false
클라이언트 앱에서 암호 해독 키
ENCRYPT_KEY=randomKey
를 환경 변수로 추가합니다.또는
classpath
에 spring-cloud-starter-bootstrap을 포함하거나 시스템 속성으로spring.cloud.bootstrap.enabled=true
를 설정하는 경우bootstrap.properties
에encrypt.key
를 설정하세요.다음 명령을 실행하기 전에
<>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.az containerapp update \ --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --set-env-vars "ENCRYPT_KEY=randomKey"
encrypt: key: somerandomkey