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 | type 가 json , 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 사용
AKS(Azure Kubernetes Service) 클러스터에서 사용하는 가상 머신 확장 집합에서 시스템 할당 관리 ID를 사용하도록 설정합니다.
Azure App Configuration에서 시스템 할당 관리 ID App Configuration 데이터 읽기 권한자 역할을 부여합니다.
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 사용
사용자가 할당한 관리 ID를 만들고 만든 후 클라이언트 ID를 적어 둡니다.
AKS(Azure Kubernetes Service) 클러스터에서 사용하는 가상 머신 확장 집합에서 사용자 할당 관리 ID를 할당합니다.
Azure App Configuration에서 사용자 할당 관리 ID App Configuration 데이터 읽기 권한자 역할을 부여합니다.
다음 샘플
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>
서비스 주체 사용
Azure App Configuration 서비스 주체 App Configuration 데이터 읽기 권한자 역할을 부여합니다.
AzureAppConfigurationProvider
리소스와 동일한 네임스페이스에 Kubernetes 비밀을 만들고 비밀에 서비스 주체의 azure_client_id, azure_client_secret, azure_tenant_id를 추가합니다.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 사용
AKS(Azure Kubernetes Service) 클러스터에서 워크로드 ID를 사용하도록 설정합니다.
AKS 클러스터의 OIDC 발급자 URL을 가져옵니다.
사용자 할당 관리 ID 를 만들고 클라이언트 ID, 테넌트 ID, 이름 및 리소스 그룹을 적어둡니다.
Azure App Configuration에서 사용자 할당 관리 ID App Configuration 데이터 읽기 권한자 역할을 부여합니다.
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>
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>
을 따라야 합니다.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>
연결 문자열 사용
AzureAppConfigurationProvider
리소스와 동일한 네임스페이스에 Kubernetes 비밀을 만들고 비밀에 키 azure_app_configuration_connection_string을 사용하여 Azure App Configuration 연결 문자열을 추가합니다.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