다음을 통해 공유


자습서: Azure Kubernetes Service에서 동적 구성 사용

AKS(Azure Kubernetes Service)를 사용하는 경우 이 자습서에서는 Azure App Configuration 및 해당 Kubernetes 공급자를 활용하여 AKS에서 워크로드에 동적 구성을 사용하도록 설정하는 방법을 보여 줍니다. 자습서에서는 사용자가 빠른 시작을 통해 작업하고 App Configuration Kubernetes 공급자를 설정했다고 가정하므로 계속하기 전에 Azure Kubernetes Service에서 Azure App Configuration 사용 빠른 시작을 완료했는지 확인합니다.

Azure App Configuration에 액세스하려면 Kubernetes에서 호스트되는 워크로드에 대한 옵션을 참조하세요.

필수 조건

빠른 시작: Azure Kubernetes Service에서 Azure App Configuration 사용을 완료합니다.

Azure Cloud Shell은 이 문서의 명령줄을 실행하는 데 사용할 수 있는 무료 대화형 셸입니다. 여기에는 .NET Core SDK를 비롯한 일반적인 Azure 도구가 미리 설치되어 있습니다. Azure 구독에 로그인한 경우 shell.azure.com에서 Azure Cloud Shell을 시작합니다. Azure Cloud Shell에 대한 자세한 내용은 설명서를 참조하세요.

Sentinel 키 추가

sentinel 키는 다른 모든 키의 변경을 완료한 후 업데이트하는 키입니다. 앱은 Sentinel 키를 모니터링합니다. 변경이 감지되면 앱이 모든 구성 값을 새로 고칩니다. 이 방식은 앱에서 구성의 일관성을 보장하고, App Configuration 저장소에 대한 전체 요청 수를 줄이는 데(모든 키의 변경 내용을 모니터링하는 것에 비해) 도움이 됩니다.

App Configuration 저장소에 다음 키-값을 추가합니다. Azure Portal 또는 CLI를 사용하여 저장소에 키-값을 추가하는 방법에 대한 자세한 내용은 키-값 만들기로 이동합니다.

Settings:Sentinel 1

App Configuration에서 데이터 다시 로드

  1. 배포 디렉터리에 있는 appConfigurationProvider.yaml 파일을 엽니다. 그런 다음 configuration 속성 아래에 refresh 섹션을 추가합니다. Sentinel 키를 모니터링하여 구성 새로 고침을 사용하도록 설정합니다.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
        configMapData: 
          type: json
          key: mysettings.json
      auth:
        workloadIdentity:
          managedIdentityClientId: <your-managed-identity-client-id>
      configuration:
        refresh:
          enabled: true
          monitoring:
            keyValues:
            - key: Settings:Sentinel
    

    기본적으로 Kubernetes 공급자는 변경 검색을 위해 30초마다 모니터링 키-값을 폴링합니다. 그러나 refreshinterval 속성을 설정하여 이 동작을 변경할 수 있습니다. App Configuration 저장소에 대한 요청 수를 줄여야 하는 경우 더 높은 값으로 조정합니다.

  2. Deployment 디렉터리에서 deployment.yaml 파일을 열고 spec.containers 섹션에 다음 콘텐츠를 추가합니다. 애플리케이션은 App Configuration Kubernetes 공급자가 생성하는 볼륨 탑재 파일에서 구성을 로드합니다. 이 환경 변수를 설정하면 애플리케이션에서 폴링을 사용하여 탑재된 파일의 변경 내용을 모니터링할 수 있습니다.

    env:
    - name: DOTNET_USE_POLLING_FILE_WATCHER
      value: "true"
    
  3. 다음 명령을 실행하여 변경 내용을 배포합니다. 기존 AKS 애플리케이션을 사용하는 경우 네임스페이스를 바꿉니다.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  4. 브라우저 창을 열고 이전 단계에서 식별한 IP 주소로 이동합니다. 웹 페이지는 다음과 같습니다.

    이전 값이 포함된 웹앱의 스크린샷.

  5. App Configuration 저장소에서 다음 키 값을 업데이트하여 마지막으로 sentinel 키를 업데이트합니다.

    Settings:Message 이제 라이브 업데이트를 사용하여 Azure App Configuration Hello 업데이트!
    Settings:Sentinel 2
  6. 브라우저를 몇 번 새로 고친 후 ConfigMap이 30초 후에 업데이트되면 업데이트된 콘텐츠를 볼 수 있습니다.

    업데이트된 값이 포함된 웹앱의 스크린샷.

ConfigMap 및 Secret 다시 로드

App Configuration Kubernetes 공급자는 환경 변수 또는 볼륨 탑재 파일로 사용할 수 있는 ConfigMap 또는 Secret을 생성합니다. 이 자습서에서는 탑재된 파일에서 변경 내용이 검색될 때마다 구성을 자동으로 다시 로드하는 .NET JSON 구성 공급자를 사용하여 JSON 파일에서 구성을 로드하는 방법을 보여 줍니다. 결과적으로 애플리케이션은 App Configuration Kubernetes 공급자가 ConfigMap을 업데이트할 때마다 업데이트된 구성을 자동으로 가져옵니다.

애플리케이션이 구성을 위한 환경 변수에 종속된 경우 업데이트된 값을 선택하기 위해 다시 시작해야 할 수 있습니다. Kubernetes에서 애플리케이션 다시 시작은 해당 Pod 또는 컨테이너에서 롤링 업데이트를 사용하여 오케스트레이션할 수 있습니다. 구성 업데이트를 자동화하기 위해 stakater/Reloader와 같은 타사 도구를 활용하여 ConfigMap 또는 Secret에 대한 변경 내용에 따라 롤링 업데이트를 자동으로 트리거할 수 있습니다.

다음 단계

Azure App Configuration Kubernetes 공급자에 대한 자세한 내용은 Azure App Configuration Kubernetes 공급자 참조를 참조하세요.