チュートリアル: Azure Kubernetes Service で動的構成を使う

Azure Kubernetes Service (AKS) をお使いの場合、このチュートリアルでは、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 の詳細については、ドキュメントを参照してください。

センチネル キーを追加する

''センチネル キー'' は、他のすべてのキーの変更を完了した後に更新するキーです。 センチネル キーをアプリで監視してください。 変更が検出されると、アプリによって構成の値がすべて更新されます。 このアプローチは、アプリの構成の一貫性を確保するのに役立ち、すべてのキーの変更を監視する場合と比べると、App Configuration ストアに対して行う全体的な要求の数が少なくなります。

App Configuration ストアに次のキーと値を追加します。 Azure portal または CLI を使用してストアにキーと値を追加する方法の詳細については、キーと値の作成に関する記事を参照してください。

キー
Settings:Sentinel 1

App Configuration からデータを再度読み込む

  1. Deployment ディレクトリにある appConfigurationProvider.yaml ファイルを開きます。 次に、configuration プロパティの下に refresh セクションを追加します。 センチネル キーを監視することで構成を更新できます。

    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 アドレスに移動します。 Web ページは次のようになります。

    古い値を含む Web アプリのスクリーンショット。

  5. App Configuration ストアで次のキー値を更新し、センチネル キーを最後に更新するようにします。

    キー
    Settings:Message Hello from Azure App Configuration - now with live updates!
    Settings:Sentinel 2
  6. ブラウザーを数回更新しているうちに、30 秒経って ConfigMap が更新されると、更新されたコンテンツが表示されるようになります。

    値が更新された Web アプリのスクリーンショット。

ConfigMap とシークレットを再度読み込む

App Configuration Kubernetes プロバイダーは、環境変数またはボリューム マウント ファイルとして使用できる ConfigMap またはシークレットを生成します。 このチュートリアルでは、.NET JSON 構成プロバイダーを使って JSON ファイルから構成を読み込む方法について説明しました。これにより、マウントされたファイルで変更が検出されるたびに構成が自動的に再度読み込まれます。 その結果、App Configuration Kubernetes プロバイダーが ConfigMap を更新するたびに、更新された構成がアプリケーションに自動的に取得されます。

アプリケーションの構成が環境変数に依存している場合、更新された値を取得するために再起動が必要になることがあります。 Kubernetes では、対応するポッドまたはコンテナーのローリング更新を使って、アプリケーションの再起動を調整できます。 構成の更新を自動化するには、stakater/Reloader などのサードパーティ製ツールを利用できます。これを使うと、ConfigMap またはシークレットに変更が加えられたときにローリング更新を自動的にトリガーできます。

次のステップ

Azure App Configuration Kubernetes プロバイダーの詳細については、「Azure App Configuration Kubernetes プロバイダー リファレンス」を参照してください。