다음을 통해 공유


Azure 앱 구성 Kubernetes 공급자 참조

다음 참조에서는 Azure 앱 Configuration Kubernetes Provider에서 지원하는 속성을 간략하게 설명합니다v2.1.0. 변경에 대한 자세한 내용은 릴리스 정보를 참조하세요.

속성

AzureAppConfigurationProvider 리소스에는 아래에 다음과 같은 최상위 자식 속성이 있습니다spec. endpoint 또는 connectionStringReference 중 하나를 지정해야 합니다.

속성 설명 필수 Type
endpoint 키-값을 검색하려는 Azure App Configuration 엔드포인트. 대안 string
connectionStringReference Azure App Configuration 연결 문자열을 포함하는 Kubernetes 비밀의 이름. 대안 string
replicaDiscoveryEnabled Azure 앱 구성의 복제본이 자동으로 검색되고 장애 조치(failover)에 사용되는지 여부를 결정하는 설정입니다. 속성이 없으면 기본값 true 이 사용됩니다. false bool
loadBalancingEnabled 워크로드가 사용 가능한 모든 복제본에 App Configuration에 요청을 배포할 수 있도록 하는 설정입니다. 속성이 없으면 기본값 false 이 사용됩니다. false bool
target Kubernetes에서 검색된 키-값의 대상. true 개체
auth Azure App Configuration에 액세스하는 인증 방법. false 개체
configuration Azure 앱 Configuration에서 키-값을 쿼리하고 처리하기 위한 설정입니다. false 개체
secret Azure 앱 Configuration에서 Key Vault 참조에 대한 설정입니다. conditional 개체
featureFlag Azure 앱 구성의 기능 플래그에 대한 설정입니다. false 개체

spec.target 속성에는 다음과 같은 자식 속성이 있습니다.

속성 설명 필수 Type
configMapName 만들 ConfigMap의 이름. true string
configMapData 생성된 ConfigMap에서 검색된 데이터를 채우는 방법을 지정하는 설정. false 개체

spec.target.configMapData 속성을 설정하지 않으면 생성된 ConfigMap이 Azure 앱 Configuration에서 검색된 키 값 목록으로 채워지며, 이를 통해 ConfigMap을 환경 변수로 사용할 수 있습니다. ConfigMap을 탑재된 파일로 사용하려는 경우 이 속성을 업데이트합니다. 이 속성에는 다음과 같은 자식 속성이 있습니다.

속성 설명 필수 Type
type 생성된 ConfigMap에서 검색된 데이터를 구성하는 방법을 지정하는 설정입니다. 허용되는 값은 default, json, yaml, properties입니다. {b>선택 사항 string
key typejson, yaml, properties로 설정된 경우 검색된 데이터의 키 이름입니다. ConfigMap이 탑재된 파일로 사용하도록 설정된 경우 파일 이름으로 설정합니다. conditional string
separator 형식을 설정할 json yaml때 ConfigMap 데이터를 계층 형식으로 출력하는 데 사용되는 구분 기호입니다. 구분 기호는 기본적으로 비어 있으며 생성된 ConfigMap에는 원래 형식의 키 값이 포함됩니다. 애플리케이션에서 사용되는 구성 파일 로더가 키-값을 계층 형식으로 변환하지 않고는 로드할 수 없는 경우에만 이 설정을 구성합니다. {b>선택 사항 string

spec.auth 속성을 설정하여 App Configuration 저장소의 연결 문자열을 제공하는 경우에는 spec.connectionStringReference 속성이 필요하지 않습니다. 그렇지 않으면 ID, 서비스 주체, 워크로드 ID 또는 관리 ID 중 하나가 인증에 사용됩니다. spec.auth에는 다음과 같은 자식 속성이 있습니다. 이 중 하나만 지정해야 합니다. 이러한 ID를 설정하지 않으면 가상 머신 확장 집합의 시스템 할당 관리 ID가 사용됩니다.

속성 설명 필수 Type
servicePrincipalReference 서비스 주체의 자격 증명을 포함하는 Kubernetes 비밀의 이름. 비밀은 Kubernetes 공급자와 동일한 네임스페이스에 있어야 합니다. false string
workloadIdentity 워크로드 ID 사용에 대한 설정. false 개체
managedIdentityClientId 가상 머신 확장 집합의 사용자 할당 관리 ID의 클라이언트 ID입니다. false string

spec.auth.workloadIdentity 속성에는 다음과 같은 자식 속성이 있습니다.

속성 설명 필수 Type
serviceAccountName 워크로드 ID와 연결된 서비스 계정의 이름입니다. true string

spec.configuration에는 다음과 같은 자식 속성이 있습니다.

속성 설명 필수 Type
선택기 키-값 필터링을 위한 선택기 목록. false 개체 배열
trimKeyPrefixes 트리밍할 키 접두사 목록. false 문자열 배열
refresh Azure 앱 Configuration에서 키-값을 새로 고치는 설정입니다. 속성이 없으면 Azure 앱 Configuration의 키 값이 새로 고쳐지지 않습니다. false 개체

속성이 spec.configuration.selectors 설정되지 않은 경우 레이블이 없는 모든 키 값이 다운로드됩니다. 여기에는 다음과 같은 자식 속성이 있는 선택기 개체의 배열이 포함됩니다. 마지막 선택기의 키 값이 우선적으로 적용되고 이전 선택기에서 겹치는 키를 재정의합니다.

속성 설명 필수 Type
keyFilter 키-값을 쿼리하기 위한 키 필터. 이 속성과 snapshotName 속성을 동시에 설정하면 안 됩니다. 대안 string
labelFilter 키-값을 쿼리하기 위한 레이블 필터. 이 속성과 snapshotName 속성을 동시에 설정하면 안 됩니다. false string
snapshotName 키-값이 로드되는 스냅샷의 이름입니다. 이 속성은 다른 속성과 함께 사용하면 안 됩니다. 대안 string

spec.configuration.refresh 속성에는 다음과 같은 자식 속성이 있습니다.

속성 설명 필수 Type
사용 Azure 앱 Configuration의 키 값이 자동으로 새로 고쳐지는지 여부를 결정하는 설정입니다. 속성이 없으면 기본값 false 이 사용됩니다. false bool
모니터링 변경 검색을 위해 모니터링되는 키-값(일명 Sentinel 키)입니다. Azure 앱 구성의 키 값은 모니터링되는 키-값 중 하나 이상이 변경된 경우에만 새로 고쳐집니다. 이 속성이 없으면 선택한 모든 키 값이 새로 고침을 위해 모니터링됩니다. false 개체
interval Azure 앱 Configuration에서 키-값을 새로 고치는 간격입니다. 1초 이상이어야 합니다. 속성이 없으면 기본값인 30초가 사용됩니다. false 기간 문자열

spec.configuration.refresh.monitoring.keyValues는 다음과 같은 자식 속성을 가진 개체의 배열입니다.

속성 설명 필수 Type
key 키-값의 키. true string
label 키-값의 레이블. false string

spec.secret 속성에는 다음과 같은 자식 속성이 있습니다. Key Vault 참조가 다운로드되어야 하는 경우 필요합니다. Kubernetes 기본 제공 비밀 유형에 대한 지원에 대한 자세한 내용은 비밀 유형을 참조하세요.

속성 설명 필수 Type
target Kubernetes에서 검색된 비밀의 대상입니다. true 개체
auth Key Vault에 액세스하는 인증 방법. false 개체
refresh Key Vault에서 데이터를 새로 고치기 위한 설정입니다. 속성이 없는 경우 해당 Key Vault 참조가 다시 로드되지 않는 한 Key Vault의 데이터는 새로 고쳐지지 않습니다. false 개체

spec.secret.target 속성에는 다음과 같은 자식 속성이 있습니다.

속성 설명 필수 Type
secretName 만들 Kubernetes 비밀의 이름. true string

spec.secret.auth 속성이 설정되지 않은 경우 시스템 할당 관리 ID가 사용됩니다. 다음과 같은 자식 속성이 있습니다.

속성 설명 필수 Type
servicePrincipalReference 개별 인증 방법이 지정되지 않은 Key Vault를 사용하여 인증하는 데 사용되는 서비스 주체의 자격 증명을 포함하는 Kubernetes Secret의 이름입니다. false string
workloadIdentity 개별 인증 방법이 지정되지 않은 Key Vault 인증에 사용되는 워크로드 ID의 설정입니다. 자식 속성은 .와 동일합니다 spec.auth.workloadIdentity. false 개체
managedIdentityClientId 개별 인증 방법이 지정되지 않은 Key Vault 인증에 사용되는 가상 머신 확장 집합의 사용자 할당 관리 ID의 클라이언트 ID입니다. false string
keyVaults 개별 Key Vault에 대한 인증 방법입니다. false 개체 배열

Key Vault 의 인증 방법은 다음 속성으로 지정할 수 있습니다. managedIdentityClientId, servicePrincipalReference, workloadIdentity 중 하나를 제공해야 합니다.

속성 설명 필수 Type
uri Key Vault의 URI입니다. true string
servicePrincipalReference Key Vault 인증에 사용되는 서비스 주체의 자격 증명을 포함하는 Kubernetes Secret의 이름입니다. false string
workloadIdentity Key Vault를 사용하여 인증하는 데 사용되는 워크로드 ID의 설정입니다. 자식 속성은 .와 동일합니다 spec.auth.workloadIdentity. false 개체
managedIdentityClientId Key Vault 인증에 사용되는 가상 머신 확장 집합의 사용자 할당 관리 ID의 클라이언트 ID입니다. false string

spec.secret.refresh 속성에는 다음과 같은 자식 속성이 있습니다.

속성 설명 필수 Type
사용 Key Vault의 데이터가 자동으로 새로 고쳐지는지 여부를 결정하는 설정입니다. 속성이 없으면 기본값 false 이 사용됩니다. false bool
interval Key Vault에서 데이터를 새로 고치는 간격입니다. 1분 이상이어야 합니다. Key Vault 새로 고침은 spec.configuration.refresh를 통해 구성된 App Configuration 새로 고침과 독립적입니다. true 기간 문자열

spec.featureFlag 속성에는 다음과 같은 자식 속성이 있습니다. 기능 플래그가 다운로드되어야 하는 경우 필요합니다.

속성 설명 필수 Type
선택기 기능 플래그 필터링을 위한 선택기 목록입니다. false 개체 배열
refresh Azure 앱 Configuration에서 기능 플래그를 새로 고치는 설정입니다. 속성이 없으면 Azure 앱 구성의 기능 플래그가 새로 고쳐지지 않습니다. false 개체

속성이 spec.featureFlag.selectors 설정되지 않으면 기능 플래그가 다운로드되지 않습니다. 여기에는 다음과 같은 자식 속성이 있는 선택기 개체의 배열이 포함됩니다. 마지막 선택기의 기능 플래그가 우선적으로 적용되고 이전 선택기에서 겹치는 키를 재정의합니다.

속성 설명 필수 Type
keyFilter 기능 플래그를 쿼리하기 위한 키 필터입니다. 이 속성과 snapshotName 속성을 동시에 설정하면 안 됩니다. 대안 string
labelFilter 기능 플래그를 쿼리하기 위한 레이블 필터입니다. 이 속성과 snapshotName 속성을 동시에 설정하면 안 됩니다. false string
snapshotName 기능 플래그가 로드되는 스냅샷의 이름입니다. 이 속성은 다른 속성과 함께 사용하면 안 됩니다. 대안 string

spec.featureFlag.refresh 속성에는 다음과 같은 자식 속성이 있습니다.

속성 설명 필수 Type
사용 Azure 앱 Configuration의 기능 플래그가 자동으로 새로 고쳐지는지 여부를 결정하는 설정입니다. 속성이 없으면 기본값 false 이 사용됩니다. false bool
interval Azure 앱 Configuration에서 기능 플래그를 새로 고치는 간격입니다. 1초 이상이어야 합니다. 속성이 없으면 기본값인 30초가 사용됩니다. false 기간 문자열

설치

다음 helm install 명령을 사용하여 Azure 앱 구성 Kubernetes 공급자를 설치합니다. 매개 변수 및 해당 기본값의 전체 목록은 helm-values.yaml을 참조하세요. 명령에 플래그를 전달하여 기본값을 재정의 --set 할 수 있습니다.

helm install azureappconfiguration.kubernetesprovider \
    oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \
    --namespace azappconfig-system \
    --create-namespace

자동 확장

기본적으로 자동 크기 조정이 사용되지 않습니다. 그러나 여러 ConfigMaps/Secrets를 생성하는 리소스가 여러 AzureAppConfigurationProvider 개 있는 경우 ,로 설정 autoscaling.enabled true하여 가로 Pod 자동 크기 조정을 사용하도록 설정할 수 있습니다.

helm install azureappconfiguration.kubernetesprovider \
    oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \
    --namespace azappconfig-system \
    --create-namespace
    --set autoscaling.enabled=true

데이터 수집

소프트웨어는 귀하와 사용자의 소프트웨어 사용에 대한 정보를 수집하여 Microsoft에 보낼 수 있습니다. Microsoft는 이 정보를 사용하여 서비스를 제공하고 Microsoft 제품 및 서비스를 향상시킬 수 있습니다. Azure 앱 구성 Kubernetes 공급자를 설치하는 동안 설정 requestTracing.enabled=false 하여 원격 분석을 끌 수 있습니다. 또한 소프트웨어에는 사용자와 Microsoft가 애플리케이션 사용자로부터 데이터를 수집할 수 있는 몇 가지 기능이 있습니다. 이러한 기능을 사용하는 경우 Microsoft의 개인정보처리방침 사본과 함께 애플리케이션 사용자에게 적절한 알림을 제공하는 등 관련 법률을 준수해야 합니다. 개인정보취급방침은 https://go.microsoft.com/fwlink/?LinkID=824704에서 확인할 수 있습니다. 도움말 설명서 및 개인정보취급방침에서 데이터 수집 및 사용에 대한 자세히 알아볼 수 있습니다. 본 소프트웨어를 사용함으로써 귀하는 이러한 관례에 동의하게 됩니다.

예제

인증

가상 머신 확장 집합에서 시스템 할당 관리 ID 사용

  1. AKS(Azure Kubernetes Service) 클러스터에서 사용하는 가상 머신 확장 집합에서 시스템 할당 관리 ID를 사용하도록 설정합니다.

  2. Azure App Configuration에서 시스템 할당 관리 ID App Configuration 데이터 읽기 권한자 역할을 부여합니다.

  3. AKS 클러스터에 다음 샘플 AzureAppConfigurationProvider 리소스를 배포합니다.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
    

가상 머신 확장 집합의 사용자 할당 관리 ID 사용

  1. 사용자가 할당한 관리 ID를 만들고 만든 후 클라이언트 ID를 적어 둡니다.

  2. AKS(Azure Kubernetes Service) 클러스터에서 사용하는 가상 머신 확장 집합에서 사용자 할당 관리 ID를 할당합니다.

  3. Azure App Configuration에서 사용자 할당 관리 ID App Configuration 데이터 읽기 권한자 역할을 부여합니다.

  4. 다음 샘플 AzureAppConfigurationProvider 리소스에서 사용자가 할당한 관리 ID의 클라이언트 ID로 spec.auth.managedIdentityClientId 속성을 설정하고 AKS 클러스터에 배포합니다.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
      auth:
        managedIdentityClientId: <your-managed-identity-client-id>
    

서비스 주체 사용

  1. 서비스 주체 만들기

  2. Azure App Configuration 서비스 주체 App Configuration 데이터 읽기 권한자 역할을 부여합니다.

  3. AzureAppConfigurationProvider 리소스와 동일한 네임스페이스에 Kubernetes 비밀을 만들고 비밀에 서비스 주체의 azure_client_id, azure_client_secret, azure_tenant_id를 추가합니다.

  4. spec.auth.servicePrincipalReference 속성을 다음 샘플 AzureAppConfigurationProvider 리소스의 비밀 이름으로 설정하고 Kubernetes 클러스터에 배포합니다.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
      auth:
        servicePrincipalReference: <your-service-principal-secret-name>
    

워크로드 ID 사용

  1. AKS(Azure Kubernetes Service) 클러스터에서 워크로드 ID를 사용하도록 설정합니다.

  2. AKS 클러스터의 OIDC 발급자 URL을 가져옵니다.

  3. 사용자 할당 관리 ID 를 만들고 클라이언트 ID, 테넌트 ID, 이름 및 리소스 그룹을 적어둡니다.

  4. Azure App Configuration에서 사용자 할당 관리 ID App Configuration 데이터 읽기 권한자 역할을 부여합니다.

  5. AKS 배포 파일이 포함된 디렉터리에 다음 콘텐츠가 포함된 YAML 파일(예: serviceAccount.yaml)을 추가하여 서비스 계정을 만듭니다. 서비스 계정은 AKS 클러스터에 모든 배포 변경 내용을 적용할 때 생성됩니다(예: 사용 kubectl apply). 클라이언트 ID와 <your-managed-identity-tenant-id> 방금 만든 사용자 할당 관리 ID의 테넌트 ID로 바꿉 <your-managed-identity-client-id> 니다. 원하는 이름으로 대체 <your-service-account-name> 합니다.

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: <your-service-account-name>
      annotations:
        azure.workload.identity/client-id: <your-managed-identity-client-id>
        azure.workload.identity/tenant-id: <your-managed-identity-tenant-id>
    
  6. Azure CLI를 사용하여 사용자 할당 관리 ID에 대한 페더레이션 ID 자격 증명을 만듭니다. 이름 및 <resource-group> 새로 만든 사용자 할당 관리 ID의 리소스 그룹으로 바꿉 <user-assigned-identity-name> 니다. AKS 클러스터의 OIDC 발급자 URL로 바꿉 <aks-oidc-issuer> 니다. 새로 만든 서비스 계정의 이름으로 바꿉 <your-service-account-name> 습니다. 페더레이션 ID 자격 증명의 기본 이름으로 바꿉 <federated-identity-credential-name> 있습니다.

    az identity federated-credential create --name "<federated-identity-credential-name>" --identity-name "<user-assigned-identity-name>" --resource-group "<resource-group>" --issuer "<aks-oidc-issuer>" --subject system:serviceaccount:default:<your-service-account-name> --audience api://AzureADTokenExchange
    

    페더레이션 ID 자격 증명의 주체는 다음 형식 system:serviceaccount:<service-account-namespace>:<service-account-name>을 따라야 합니다.

  7. spec.auth.workloadIdentity.serviceAccountName 다음 샘플 AzureAppConfigurationProvider 리소스의 서비스 계정 이름으로 속성을 설정합니다. 리소스와 서비스 계정이 동일한 네임스페이스에 있는지 확인 AzureAppConfigurationProvider 합니다.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
      auth:
        workloadIdentity:
          serviceAccountName: <your-service-account-name>
    

연결 문자열 사용

  1. AzureAppConfigurationProvider 리소스와 동일한 네임스페이스에 Kubernetes 비밀을 만들고 비밀에 키 azure_app_configuration_connection_string을 사용하여 Azure App Configuration 연결 문자열을 추가합니다.

  2. spec.connectionStringReference 속성을 다음 샘플 AzureAppConfigurationProvider 리소스의 비밀 이름으로 설정하고 Kubernetes 클러스터에 배포합니다.

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      connectionStringReference: <your-connection-string-secret-name>
      target:
        configMapName: configmap-created-by-appconfig-provider
    

키-값 선택

selectors 속성을 사용하여 Azure App Configuration에서 다운로드할 키-값을 필터링합니다.

다음 샘플에서는 레이블이 없는 모든 키-값을 다운로드합니다.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider

다음 예제에서는 두 개의 선택기를 사용하여 각각 고유한 레이블이 있는 두 개의 키-값 집합을 검색합니다. 마지막 선택기의 값이 우선적으로 적용되고 이전 선택기의 겹치는 키를 재정의하는 것이 중요합니다.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
        labelFilter: common
      - keyFilter: app1*
        labelFilter: development

스냅샷은 단독으로 또는 다른 키-값 선택기와 함께 사용할 수 있습니다. 다음 샘플에서는 스냅샷에서 공통 구성의 키-값을 로드한 다음 개발용 키 값으로 그 중 일부를 재정의합니다.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - snapshotName: app1_common_configuration
      - keyFilter: app1*
        labelFilter: development

키 접두사 트리밍

다음 샘플에서는 trimKeyPrefixes 속성을 사용하여 생성된 ConfigMap에 추가하기 전에 키 이름에서 두 개의 접두사를 트리밍합니다.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    trimKeyPrefixes: [prefix1, prefix2]

구성 새로 고침

Azure App Configuration에서 데이터를 변경할 때 해당 변경 내용이 Kubernetes 클러스터에서 자동으로 새로 고쳐지도록 할 수 있습니다. 여러 키-값을 업데이트하는 것이 일반적이지만 클러스터가 업데이트 중간에 변경 내용을 선택하는 것을 원하지 않습니다. 구성 일관성을 유지하기 위해 키-값을 사용하여 업데이트 완료를 알릴 수 있습니다. 이 키-값을 Sentinel 키라고 합니다. Kubernetes 공급자는 이 키-값을 모니터링할 수 있으며 Sentinel 키에서 변경 내용이 검색된 후에만 ConfigMap 및 Secret이 업데이트된 데이터로 다시 생성됩니다.

다음 샘플에서는 app1_sentinel이라는 키-값이 1분마다 폴링되며 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
  configuration:
    selectors:
      - keyFilter: app1*
        labelFilter: common
    refresh:
      enabled: true
      interval: 1m
      monitoring:
        keyValues:
          - key: app1_sentinel
            label: common

Key Vault 참조

인증

다음 샘플에서는 하나의 Key Vault가 서비스 주체로 인증되고, 다른 모든 Key Vault는 사용자가 할당한 관리 ID로 인증됩니다.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
  secret:
    target:
      secretName: secret-created-by-appconfig-provider
    auth:
      managedIdentityClientId: <your-user-assigned-managed-identity-client-id>
      keyVaults:
        - uri: <your-key-vault-uri>
          servicePrincipalReference: <name-of-secret-containing-service-principal-credentials>

비밀 유형

현재 두 가지 Kubernetes 기본 제공 비밀 형식인 불투명 및 TLS가 지원됩니다. Key Vault 참조에서 확인된 비밀은 기본적으로 불투명 비밀 형식으로 저장됩니다. 인증서에 대한 Key Vault 참조가 있고 이를 TLS 비밀 형식으로 저장하려는 경우 Azure 앱 구성의 Key Vault 참조에 다음 이름과 값이 있는 태그를 추가할 있습니다. 이렇게 하면 형식이 kubernetes.io/tls 있는 비밀이 생성되고 Key Vault 참조의 키 이름을 따서 명명됩니다.

속성
.kubernetes.secret.type kubernetes.io/tls

다음 예제에서는 생성된 비밀에서 다양한 형식으로 데이터가 채워지는 방법을 보여 줍니다.

App Configuration 저장소에 다음 Key Vault 참조가 있다고 가정합니다.

key value tags
app1-secret1 <Key Vault 참조 1> {}
app1-secret2 <Key Vault 참조 2> {}
app1-certificate <Key Vault 참조 3> {".kubernetes.secret.type": "kubernetes.io/tls"}

다음 샘플에서는 불투명 및 TLS 형식의 비밀을 생성합니다.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
  secret:
    target:
      secretName: secret-created-by-appconfig-provider
    auth:
      managedIdentityClientId: <your-user-assigned-managed-identity-client-id>

생성된 비밀은 다음 데이터로 채워집니다.

name: secret-created-by-appconfig-provider
type: Opaque
data:
  app1-secret1: <secret value retrieved from Key Vault>
  app1-secret2: <secret value retrieved from Key Vault>
name: app1-certificate
type: kubernetes.io/tls
data:
  tls.crt: |
    <certificate data retrieved from Key Vault>
  tls.key: |
    <certificate key retrieved from Key Vault>

Key Vault에서 비밀 새로 고침

Key Vault에서 비밀을 새로 고치려면 일반적으로 Azure App Configuration에서 해당 Key Vault 참조를 다시 로드해야 합니다. 그러나 spec.secret.refresh 속성을 사용하면 Key Vault에서 비밀을 독립적으로 새로 고칠 수 있습니다. 이는 비밀 회전 중에 워크로드가 Key Vault에서 업데이트된 비밀을 자동으로 선택하도록 보장하는 데 특히 유용합니다. 최신 버전의 비밀을 로드하려면 Key Vault 참조가 버전이 지정된 비밀이 아니어야 합니다.

다음 샘플은 Key Vault에서 버전이 지정되지 않은 모든 비밀을 1시간마다 새로 고칩니다.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider
  configuration:
    selectors:
      - keyFilter: app1*
        labelFilter: common
  secret:
    target:
      secretName: secret-created-by-appconfig-provider
    auth:
      managedIdentityClientId: <your-user-assigned-managed-identity-client-id>
    refresh:
      enabled: true
      interval: 1h

기능 플래그

다음 샘플에서는 키가 시작 app1 되고 해당하는 common 레이블이 있는 기능 플래그가 10분마다 다운로드되고 새로 고쳐집니다. 생성된 ConfigMap에서 기능 플래그를 채우려면 속성이 configMapData.type 있어야 합니다 json yaml.

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: appSettings.json
  featureFlag:
    selectors:
      - keyFilter: app1*
        labelFilter: common
    refresh:
      enabled: true
      interval: 10m

ConfigMap 사용량

Kubernetes에서 실행되는 애플리케이션은 일반적으로 ConfigMap을 환경 변수 또는 구성 파일로 사용합니다. configMapData.type 속성이 없거나 기본값으로 설정된 경우 ConfigMap은 환경 변수로 쉽게 사용할 수 있는 Azure App Configuration에서 검색된 항목별 데이터 목록으로 채워집니다. configMapData.type 속성이 json, yaml 또는 속성으로 설정된 경우 Azure App Configuration 검색된 데이터는 생성된 ConfigMap의 configMapData.key 속성에 지정된 키 이름을 가진 하나의 항목으로 그룹화되며 탑재된 파일로 사용할 수 있습니다.

다음 예제에서는 생성된 ConfigMap에서 configMapData.type 속성의 다른 설정을 사용하여 데이터가 채워지는 방법을 보여 줍니다.

App Configuration 저장소에 다음과 같은 키 값이 있다고 가정합니다.

key value
key1 value1
key2 value2
key3 value3

속성이 configMapData.type 없거나 다음으로 설정됩니다 default.

apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
metadata:
  name: appconfigurationprovider-sample
spec:
  endpoint: <your-app-configuration-store-endpoint>
  target:
    configMapName: configmap-created-by-appconfig-provider

생성된 ConfigMap은 다음 데이터로 채워집니다.

data:
  key1: value1
  key2: value2
  key3: value3