Udostępnij za pośrednictwem


Dokumentacja dostawcy platformy Kubernetes konfiguracji aplikacja systemu Azure

W poniższej dokumentacji przedstawiono właściwości obsługiwane przez dostawcę v2.1.0platformy Kubernetes konfiguracji aplikacja systemu Azure . Aby uzyskać więcej informacji na temat zmiany, zobacz informacje o wersji.

Właściwości

Zasób AzureAppConfigurationProvider ma następujące właściwości podrzędne najwyższego poziomu w obszarze spec. connectionStringReference Albo endpoint musi być określony.

Nazwa/nazwisko opis Wymagania Typ
endpoint Punkt końcowy konfiguracji aplikacja systemu Azure, z którego chcesz pobrać wartości klucza. alternatywa string
connectionStringReference Nazwa wpisu tajnego kubernetes zawierającego aplikacja systemu Azure Configuration parametry połączenia. alternatywa string
replicaDiscoveryEnabled Ustawienie określające, czy repliki aplikacja systemu Azure Configuration są automatycznie odnajdywane i używane do pracy w trybie failover. Jeśli właściwość jest nieobecna, zostanie użyta wartość domyślna true . fałsz bool
loadBalancingEnabled Ustawienie, które umożliwia obciążeniu dystrybuowanie żądań do usługi App Configuration we wszystkich dostępnych replikach. Jeśli właściwość jest nieobecna, zostanie użyta wartość domyślna false . fałsz bool
target Miejsce docelowe pobranych wartości klucza na platformie Kubernetes. prawda obiekt
auth Metoda uwierzytelniania umożliwiająca dostęp do aplikacja systemu Azure Configuration. fałsz obiekt
konfiguracja Ustawienia służące do wykonywania zapytań i przetwarzania wartości kluczy w aplikacja systemu Azure Configuration. fałsz obiekt
wpis tajny Ustawienia odwołań do usługi Key Vault w aplikacja systemu Azure Configuration. warunkowy obiekt
featureFlag Ustawienia flag funkcji w konfiguracji aplikacja systemu Azure. fałsz obiekt

Właściwość spec.target ma następującą właściwość podrzędną.

Nazwa/nazwisko opis Wymagania Typ
configMapName Nazwa obiektu ConfigMap do utworzenia. prawda string
configMapData Ustawienie określające sposób wypełniania pobranych danych w wygenerowanej ConfigMap. fałsz obiekt

spec.target.configMapData Jeśli właściwość nie jest ustawiona, wygenerowana mapa ConfigMap zostanie wypełniona listą wartości klucz-pobranych z aplikacja systemu Azure Configuration, która umożliwia użycie obiektu ConfigMap jako zmiennych środowiskowych. Zaktualizuj tę właściwość, jeśli chcesz użyć obiektu ConfigMap jako zainstalowanego pliku. Ta właściwość ma następujące właściwości podrzędne.

Nazwa/nazwisko opis Wymagania Typ
type Ustawienie wskazujące sposób konstruowania pobranych danych w wygenerowanym obiekcie ConfigMap. Dozwolone wartości obejmują default, jsonyaml i properties. optional string
key Nazwa klucza pobranych danych, gdy type parametr jest ustawiony na json, yaml lub properties. Ustaw ją na nazwę pliku, jeśli ConfigMap jest skonfigurowany do korzystania z pliku zainstalowanego. warunkowy string
separator Ogranicznik używany do wyprowadzania danych ConfigMap w formacie hierarchicznym, gdy typ jest ustawiony na json wartość lub yaml. Separator jest domyślnie pusty, a wygenerowany obiekt ConfigMap zawiera wartości klucza w ich oryginalnej formie. Skonfiguruj to ustawienie tylko wtedy, gdy moduł ładujący plików konfiguracji używany w aplikacji nie może załadować wartości klucz-wartość bez konwertowania ich na format hierarchiczny. optional string

Właściwość nie jest wymaganaspec.auth, jeśli parametry połączenia magazynu usługi App Configuration jest udostępniana przez ustawienie spec.connectionStringReference właściwości . W przeciwnym razie jedna z tożsamości, jednostki usługi, tożsamości obciążenia lub tożsamości zarządzanej jest używana do uwierzytelniania. Obiekt spec.auth ma następujące właściwości podrzędne. Należy określić tylko jeden z nich. Jeśli żadna z nich nie zostanie ustawiona, zostanie użyta tożsamość zarządzana przypisana przez system zestawu skalowania maszyn wirtualnych.

Nazwa/nazwisko opis Wymagania Typ
servicePrincipalReference Nazwa wpisu tajnego kubernetes zawierającego poświadczenia jednostki usługi. Wpis tajny musi znajdować się w tej samej przestrzeni nazw co dostawca Kubernetes. fałsz string
workloadIdentity Ustawienia korzystania z tożsamości obciążenia. fałsz obiekt
managedIdentityClientId Identyfikator klienta tożsamości zarządzanej przypisanej przez użytkownika zestawu skalowania maszyn wirtualnych. fałsz string

Właściwość spec.auth.workloadIdentity ma następującą właściwość podrzędną.

Nazwa/nazwisko opis Wymagania Typ
serviceAccountName Nazwa konta usługi skojarzonego z tożsamością obciążenia. prawda string

Obiekt spec.configuration ma następujące właściwości podrzędne.

Nazwa/nazwisko opis Wymagania Typ
Selektory Lista selektorów filtrowania klucz-wartość. fałsz tablica obiektów
trimKeyPrefixes Lista prefiksów kluczy do przycinania. fałsz tablica ciągów
Odśwież Ustawienia odświeżania wartości kluczy z aplikacja systemu Azure Configuration. Jeśli właściwość jest nieobecna, wartości klucz-wartość z aplikacja systemu Azure Configuration nie są odświeżane. fałsz obiekt

spec.configuration.selectors Jeśli właściwość nie jest ustawiona, zostaną pobrane wszystkie wartości klucz-wartość bez etykiety. Zawiera tablicę obiektów selektora, które mają następujące właściwości podrzędne. Należy pamiętać, że wartości klucza ostatniego selektora mają pierwszeństwo i zastępują wszystkie nakładające się klucze z poprzednich selektorów.

Nazwa/nazwisko opis Wymagania Typ
keyFilter Filtr klucza do wykonywania zapytań dotyczących wartości klucz-wartość. Ta właściwość i snapshotName właściwość nie powinny być ustawiane w tym samym czasie. alternatywa string
labelFilter Filtr etykiety do wykonywania zapytań dotyczących wartości klucz-wartość. Ta właściwość i snapshotName właściwość nie powinny być ustawiane w tym samym czasie. fałsz string
snapshotName Nazwa migawki, z której są ładowane wartości klucza. Ta właściwość nie powinna być używana w połączeniu z innymi właściwościami. alternatywa string

Właściwość spec.configuration.refresh ma następujące właściwości podrzędne.

Nazwa/nazwisko opis Wymagania Typ
enabled Ustawienie określające, czy wartości klucz-wartość z aplikacja systemu Azure Configuration są automatycznie odświeżane. Jeśli właściwość jest nieobecna, zostanie użyta wartość domyślna false . fałsz bool
monitorowanie Wartości klucza monitorowane pod kątem wykrywania zmian, czyli kluczy sentinel. Wartości klucz-z aplikacja systemu Azure Configuration są odświeżane tylko wtedy, gdy zostanie zmieniony co najmniej jeden z monitorowanych wartości kluczy. Jeśli ta właściwość jest nieobecna, wszystkie wybrane wartości klucza zostaną monitorowane pod kątem odświeżania. fałsz obiekt
interval Interwał odświeżania wartości klucza z aplikacja systemu Azure Configuration. Musi być większy lub równy 1 sekundy. Jeśli właściwość jest nieobecna, zostanie użyta wartość domyślna 30 sekund. fałsz ciąg czasu trwania

Jest spec.configuration.refresh.monitoring.keyValues to tablica obiektów, które mają następujące właściwości podrzędne.

Nazwa/nazwisko opis Wymagania Typ
key Klucz klucz-wartość. prawda string
label Etykieta klucza-wartość. fałsz string

Właściwość spec.secret ma następujące właściwości podrzędne. Jest to wymagane, jeśli zostaną pobrane odwołania do usługi Key Vault. Aby dowiedzieć się więcej na temat obsługi wbudowanych typów wpisów tajnych platformy Kubernetes, zobacz Typy wpisów tajnych.

Nazwa/nazwisko opis Wymagania Typ
target Miejsce docelowe pobranych wpisów tajnych na platformie Kubernetes. prawda obiekt
auth Metoda uwierzytelniania w celu uzyskania dostępu do usługi Key Vault. fałsz obiekt
Odśwież Ustawienia odświeżania danych z usługi Key Vault. Jeśli właściwość jest nieobecna, dane z usługi Key Vault nie są odświeżane, chyba że odpowiednie odwołania do usługi Key Vault zostaną ponownie załadowane. fałsz obiekt

Właściwość spec.secret.target ma następującą właściwość podrzędną.

Nazwa/nazwisko opis Wymagania Typ
secretName Nazwa wpisu tajnego kubernetes do utworzenia. prawda string

spec.secret.auth Jeśli właściwość nie jest ustawiona, zostanie użyta tożsamość zarządzana przypisana przez system. Ma następujące właściwości podrzędne.

Nazwa/nazwisko opis Wymagania Typ
servicePrincipalReference Nazwa wpisu tajnego kubernetes zawierającego poświadczenia jednostki usługi używanej do uwierzytelniania w usłudze Key Vault, które nie mają określonych indywidualnych metod uwierzytelniania. fałsz string
workloadIdentity Ustawienia tożsamości obciążenia używanej do uwierzytelniania w usłudze Key Vault, które nie mają określonych indywidualnych metod uwierzytelniania. Ma tę samą właściwość podrzędną co spec.auth.workloadIdentity. fałsz obiekt
managedIdentityClientId Identyfikator klienta przypisanej przez użytkownika tożsamości zarządzanej zestawu skalowania maszyn wirtualnych używany do uwierzytelniania w usłudze Key Vault, które nie mają określonych indywidualnych metod uwierzytelniania. fałsz string
keyVaults Metody uwierzytelniania dla poszczególnych magazynów kluczy. fałsz tablica obiektów

Metodę uwierzytelniania każdego magazynu kluczy można określić przy użyciu następujących właściwości. managedIdentityClientIdNależy podać jeden z elementów lub servicePrincipalReference workloadIdentity.

Nazwa/nazwisko opis Wymagania Typ
uri Identyfikator URI usługi Key Vault. prawda string
servicePrincipalReference Nazwa wpisu tajnego kubernetes zawierającego poświadczenia jednostki usługi używanej do uwierzytelniania w usłudze Key Vault. fałsz string
workloadIdentity Ustawienia tożsamości obciążenia używanej do uwierzytelniania w usłudze Key Vault. Ma tę samą właściwość podrzędną co spec.auth.workloadIdentity. fałsz obiekt
managedIdentityClientId Identyfikator klienta przypisanej przez użytkownika tożsamości zarządzanej zestawu skalowania maszyn wirtualnych używany do uwierzytelniania w usłudze Key Vault. fałsz string

Właściwość spec.secret.refresh ma następujące właściwości podrzędne.

Nazwa/nazwisko opis Wymagania Typ
enabled Ustawienie określające, czy dane z usługi Key Vault są automatycznie odświeżane. Jeśli właściwość jest nieobecna, zostanie użyta wartość domyślna false . fałsz bool
interval Interwał odświeżania danych z usługi Key Vault. Musi być większy lub równy 1 minucie. Odświeżanie usługi Key Vault jest niezależne od odświeżania usługi App Configuration skonfigurowanego za pomocą polecenia spec.configuration.refresh. prawda ciąg czasu trwania

Właściwość spec.featureFlag ma następujące właściwości podrzędne. Jest to wymagane, jeśli zostaną pobrane jakiekolwiek flagi funkcji.

Nazwa/nazwisko opis Wymagania Typ
Selektory Lista selektorów filtrowania flag funkcji. fałsz tablica obiektów
Odśwież Ustawienia odświeżania flag funkcji z aplikacja systemu Azure Configuration. Jeśli właściwość jest nieobecna, flagi funkcji z aplikacja systemu Azure Configuration nie są odświeżane. fałsz obiekt

spec.featureFlag.selectors Jeśli właściwość nie jest ustawiona, flagi funkcji nie są pobierane. Zawiera tablicę obiektów selektora, które mają następujące właściwości podrzędne. Należy pamiętać, że flagi funkcji ostatniego selektora mają pierwszeństwo i przesłaniają wszystkie nakładające się klucze z poprzednich selektorów.

Nazwa/nazwisko opis Wymagania Typ
keyFilter Filtr klucza dla flag funkcji wykonywania zapytań. Ta właściwość i snapshotName właściwość nie powinny być ustawiane w tym samym czasie. alternatywa string
labelFilter Filtr etykiety dla flag funkcji kwerendy. Ta właściwość i snapshotName właściwość nie powinny być ustawiane w tym samym czasie. fałsz string
snapshotName Nazwa migawki, z której są ładowane flagi funkcji. Ta właściwość nie powinna być używana w połączeniu z innymi właściwościami. alternatywa string

Właściwość spec.featureFlag.refresh ma następujące właściwości podrzędne.

Nazwa/nazwisko opis Wymagania Typ
enabled Ustawienie określające, czy flagi funkcji z aplikacja systemu Azure Configuration są automatycznie odświeżane. Jeśli właściwość jest nieobecna, zostanie użyta wartość domyślna false . fałsz bool
interval Interwał odświeżania flag funkcji z aplikacja systemu Azure Configuration. Musi być większy lub równy 1 sekundy. Jeśli właściwość jest nieobecna, zostanie użyta wartość domyślna 30 sekund. fałsz ciąg czasu trwania

Instalacja

Użyj następującego helm install polecenia, aby zainstalować dostawcę kubernetes konfiguracji aplikacja systemu Azure. Zobacz helm-values.yaml , aby uzyskać pełną listę parametrów i ich wartości domyślnych. Wartości domyślne można zastąpić, przekazując flagę --set do polecenia .

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

Skalowanie automatyczne

Domyślnie skalowanie automatyczne jest wyłączone. Jeśli jednak masz wiele AzureAppConfigurationProvider zasobów do utworzenia wielu obiektów ConfigMaps/Secrets, możesz włączyć skalowanie automatyczne zasobników w poziomie, ustawiając wartość autoscaling.enabled .true

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

Zbieranie danych

Oprogramowanie może zbierać informacje o Użytkowniku i korzystaniu z oprogramowania oraz wysyłać je do firmy Microsoft. Microsoft może wykorzystywać te informacje w celu świadczenia usług oraz w celu ulepszenia produktów i usług Microsoft. Telemetrię można wyłączyć, ustawiając requestTracing.enabled=false podczas instalowania dostawcy kubernetes konfiguracji aplikacja systemu Azure. Istnieją również pewne funkcje oprogramowania, które mogą umożliwić Tobie i firmie Microsoft zbieranie danych od użytkowników aplikacji. Jeśli używasz tych funkcji, musisz przestrzegać obowiązującego prawa, w tym przekazywania odpowiednich powiadomień użytkownikom aplikacji wraz z kopią zasad zachowania poufności informacji firmy Microsoft. Oświadczenie o ochronie prywatności Microsoft można znaleźć pod adresem https://go.microsoft.com/fwlink/?LinkID=824704. Więcej informacji na temat zbierania i używania danych można uzyskać w dokumentacji pomocy i naszym oświadczeniu o ochronie prywatności. Używanie przez Licencjobiorcę oprogramowania oznacza zgodę Licencjobiorcy na takie działania.

Przykłady

Uwierzytelnianie

Używanie przypisanej przez system tożsamości zarządzanej zestawu skalowania maszyn wirtualnych

  1. Włącz tożsamość zarządzaną przypisaną przez system w zestawie skalowania maszyn wirtualnych używanym przez klaster usługi Azure Kubernetes Service (AKS).

  2. Udziel przypisanej przez system roli Czytelnik danych konfiguracji aplikacji tożsamości zarządzanej w usłudze aplikacja systemu Azure Configuration.

  3. Wdróż następujący przykładowy AzureAppConfigurationProvider zasób w klastrze usługi 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
    

Używanie tożsamości zarządzanej przypisanej przez użytkownika zestawu skalowania maszyn wirtualnych

  1. Utwórz tożsamość zarządzaną przypisaną przez użytkownika i zanotuj jej identyfikator klienta po utworzeniu.

  2. Przypisz tożsamość zarządzaną przypisaną przez użytkownika do zestawu skalowania maszyn wirtualnych używanego przez klaster usługi Azure Kubernetes Service (AKS).

  3. Udziel przypisanej przez użytkownika roli Czytelnik danych usługi App Configuration w usłudze aplikacja systemu Azure Configuration.

  4. spec.auth.managedIdentityClientId Ustaw właściwość na identyfikator klienta tożsamości zarządzanej przypisanej przez użytkownika w poniższym przykładowym AzureAppConfigurationProvider zasobie i wdróż ją w klastrze usługi 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>
    

Korzystanie z jednostki usługi

  1. Tworzenie jednostki usługi

  2. Przyznaj jednostce usługi rolę Czytelnik danych konfiguracji aplikacji w usłudze aplikacja systemu Azure Configuration.

  3. Utwórz wpis tajny Kubernetes w tej samej przestrzeni nazw co AzureAppConfigurationProvider zasób i dodaj azure_client_id, azure_client_secret i azure_tenant_id jednostki usługi do wpisu tajnego.

  4. spec.auth.servicePrincipalReference Ustaw właściwość na nazwę wpisu tajnego w następującym przykładowym AzureAppConfigurationProvider zasobie i wdróż ją w klastrze 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>
    

Korzystanie z tożsamości obciążenia

  1. Włącz tożsamość obciążenia w klastrze usługi Azure Kubernetes Service (AKS).

  2. Pobierz adres URL wystawcy OIDC klastra usługi AKS.

  3. Utwórz tożsamość zarządzaną przypisaną przez użytkownika i zanotuj jej identyfikator klienta, identyfikator dzierżawy, nazwę i grupę zasobów.

  4. Udziel przypisanej przez użytkownika roli Czytelnik danych usługi App Configuration w usłudze aplikacja systemu Azure Configuration.

  5. Utwórz konto usługi, dodając plik YAML (np . serviceAccount.yaml) z następującą zawartością do katalogu zawierającego pliki wdrażania usługi AKS. Konto usługi zostanie utworzone po zastosowaniu wszystkich zmian wdrożenia w klastrze usługi AKS (np. przy użyciu polecenia kubectl apply). Zastąp <your-managed-identity-client-id> element identyfikatorem klienta i <your-managed-identity-tenant-id> identyfikatorem dzierżawy tożsamości zarządzanej przypisanej przez użytkownika, która właśnie została utworzona. Zastąp <your-service-account-name> ciąg preferowaną nazwą.

    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. Utwórz poświadczenia tożsamości federacyjnej dla tożsamości zarządzanej przypisanej przez użytkownika przy użyciu interfejsu wiersza polecenia platformy Azure. Zastąp <user-assigned-identity-name> ciąg nazwą i <resource-group> grupą zasobów nowo utworzonej tożsamości zarządzanej przypisanej przez użytkownika. Zastąp ciąg <aks-oidc-issuer> adresem URL wystawcy OIDC klastra usługi AKS. Zastąp <your-service-account-name> ciąg nazwą nowo utworzonego konta usługi. Zastąp <federated-identity-credential-name> ciąg nazwą preferowaną dla poświadczeń tożsamości federacyjnej.

    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
    

    Należy pamiętać, że temat poświadczeń tożsamości federacyjnej powinien mieć następujący format: system:serviceaccount:<service-account-namespace>:<service-account-name>.

  7. spec.auth.workloadIdentity.serviceAccountName Ustaw właściwość na nazwę konta usługi w następującym przykładowym AzureAppConfigurationProvider zasobie. Upewnij się, że AzureAppConfigurationProvider zasób i konto usługi znajdują się w tej samej przestrzeni nazw.

    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>
    

Korzystanie z parametry połączenia

  1. Utwórz wpis tajny kubernetes w tej samej przestrzeni nazw co AzureAppConfigurationProvider zasób i dodaj aplikacja systemu Azure Configuration parametry połączenia z kluczem azure_app_configuration_connection_string w kluczu tajnym.

  2. spec.connectionStringReference Ustaw właściwość na nazwę wpisu tajnego w następującym przykładowym AzureAppConfigurationProvider zasobie i wdróż ją w klastrze 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
    

Wybór wartości klucza

selectors Użyj właściwości , aby filtrować wartości klucza do pobrania z aplikacja systemu Azure Configuration.

Poniższy przykład pobiera wszystkie wartości klucza bez etykiety.

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

W poniższym przykładzie dwa selektory są używane do pobierania dwóch zestawów klucz-wartości, z których każda ma unikatowe etykiety. Należy pamiętać, że wartości ostatniego selektora mają pierwszeństwo i zastępują wszystkie nakładające się klucze z poprzednich selektorów.

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

Migawka może być używana samodzielnie lub razem z innymi selektorami klucz-wartość. W poniższym przykładzie załadujesz wartości kluczy wspólnej konfiguracji z migawki, a następnie zastąpisz niektóre z nich kluczami do programowania.

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

Przycinanie prefiksu klucza

W poniższym przykładzie użyto trimKeyPrefixes właściwości do przycinania dwóch prefiksów z nazw kluczy przed dodaniem ich do wygenerowanej 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]

Odświeżanie konfiguracji

Po wprowadzeniu zmian w danych w konfiguracji aplikacja systemu Azure może być konieczne automatyczne odświeżenie tych zmian w klastrze Kubernetes. Często aktualizuje się wiele wartości klucz-wartość, ale nie chcesz, aby klaster pobierał zmianę w połowie aktualizacji. Aby zachować spójność konfiguracji, możesz użyć klucza-wartość, aby zasygnalizować ukończenie aktualizacji. Ta wartość klucza jest znana jako klucz sentinel. Dostawca Kubernetes może monitorować tę wartość klucza, a ConfigMap i Secret zostaną ponownie wygenerowane tylko przy użyciu zaktualizowanych danych po wykryciu zmiany w kluczu sentinel.

W poniższym przykładzie wartość klucza o nazwie app1_sentinel jest sondowana co minutę, a konfiguracja jest odświeżona za każdym razem, gdy zmiany zostaną wykryte w kluczu 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

Odwołania do usługi Key Vault

Uwierzytelnianie

W poniższym przykładzie jedna usługa Key Vault jest uwierzytelniana przy użyciu jednostki usługi, podczas gdy wszystkie inne magazyny kluczy są uwierzytelniane przy użyciu tożsamości zarządzanej przypisanej przez użytkownika.

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>

Typy wpisów tajnych

Obecnie obsługiwane są dwa wbudowane typy wpisów tajnych kubernetes, nieprzezroczyste i TLS. Wpisy tajne rozpoznawane z odwołań usługi Key Vault są domyślnie zapisywane jako nieprzezroczystym typem wpisu tajnego. Jeśli masz odwołanie do magazynu kluczy do certyfikatu i chcesz zapisać go jako typ wpisu tajnego protokołu TLS, możesz dodać tag o następującej nazwie i wartości do odwołania do usługi Key Vault w aplikacja systemu Azure Configuration. W ten sposób zostanie wygenerowany wpis tajny z kubernetes.io/tls typem i nazwany po kluczu odwołania do usługi Key Vault.

Nazwa/nazwisko Wartość
.kubernetes.secret.type kubernetes.io/tls

W poniższych przykładach pokazano, jak dane są wypełniane w wygenerowanych wpisach tajnych z różnymi typami.

Zakładając, że magazyn usługi App Configuration ma następujące odwołania do usługi Key Vault:

key wartość tags
app1-secret1 <Dokumentacja usługi Key Vault 1> {}
app1-secret2 <Dokumentacja usługi Key Vault 2> {}
app1-certificate <Dokumentacja usługi Key Vault 3> {".kubernetes.secret.type": "kubernetes.io/tls"}

Poniższy przykład generuje wpisy tajne zarówno dla typów nieprzezroczystych, jak i 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>

Wygenerowane wpisy tajne są wypełniane następującymi danymi:

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>

Odświeżanie wpisów tajnych z usługi Key Vault

Odświeżanie wpisów tajnych z usługi Key Vault zwykle wymaga ponownego załadowania odpowiednich odwołań usługi Key Vault z aplikacja systemu Azure Configuration. Jednak za pomocą spec.secret.refresh właściwości można niezależnie odświeżyć wpisy tajne z usługi Key Vault. Jest to szczególnie przydatne w przypadku zapewnienia, że obciążenie automatycznie pobiera wszystkie zaktualizowane wpisy tajne z usługi Key Vault podczas rotacji wpisów tajnych. Należy pamiętać, że aby załadować najnowszą wersję wpisu tajnego, odwołanie do usługi Key Vault nie może być wpisem tajnym w wersji.

Poniższy przykład odświeża wszystkie nieodświeżone wpisy tajne z usługi Key Vault co godzinę.

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

Flagi funkcji

W poniższym przykładzie flagi funkcji z kluczami rozpoczynającymi się od app1 i etykiety równoważne common są pobierane i odświeżane co 10 minut. Należy pamiętać, że aby wypełnić flagi funkcji w wygenerowanej ConfigMap, configMapData.type właściwość musi mieć json wartość lub 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

Użycie obiektu ConfigMap

Aplikacje uruchomione na platformie Kubernetes zwykle używają obiektu ConfigMap jako zmiennych środowiskowych lub plików konfiguracji. configMapData.type Jeśli właściwość jest nieobecna lub jest ustawiona na wartość domyślną, obiekt ConfigMap jest wypełniany elementami listy danych pobranych z aplikacja systemu Azure Configuration, które można łatwo użyć jako zmiennych środowiskowych. configMapData.type Jeśli właściwość jest ustawiona na json, yaml lub właściwości, dane pobrane z aplikacja systemu Azure Configuration są pogrupowane w jeden element o nazwie klucza określonej przez configMapData.key właściwość w wygenerowanej ConfigMap, która może być używana jako zainstalowany plik.

W poniższych przykładach pokazano, jak dane są wypełniane w wygenerowanej ConfigMap z różnymi ustawieniami configMapData.type właściwości.

Zakładając, że magazyn usługi App Configuration ma następujące wartości klucza:

key wartość
klucz1 wartość1
klucz2 value2
key3 value3

Właściwość jest nieobecna configMapData.type lub ustawiona na defaultwartość ,

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

Wygenerowany obiekt ConfigMap jest wypełniany następującymi danymi:

data:
  key1: value1
  key2: value2
  key3: value3