Я хочу задать вопрос. У меня есть код функции Azure в Net8 (изолированный), затем я отправляю его в образ Docker в реестре контейнеров Azure, а затем развертываю его в службе Azure Kubernetes.
Вопрос в том, как я могу переопределить среду функций Azure? Я пробовал поместить его в Config Maps, Secrets и в свойство Env в Yaml развертывания, но он все равно читает мой appsettings.json, а не мой appsettings.Development.json.
Я хочу, чтобы после публикации функции Azure могли читать конфигурацию из appsettings.Development.json.
Для локального варианта я могу переопределить его в файле settings.json запуска, добавив свойство EnvironmentVariables, но как я могу сделать это также при публикации в Azure Kubernetes?
Спасибо
Спасибо за ответ, но я не понял, карты конфига уже пробовал. Также я хочу добавить, что я пытаюсь развернуть его из App Host, а также я все еще изучаю Docker и Kubernetes, поэтому мне нужно более подробное объяснение, что делать, потому что у меня мало знаний об этом.
Можете ли вы попробовать добавить переменную среды AzureFunctionsJobHost__environment в YAML-файл развертывания и установить для нее значение Development. Это должно позволить среде выполнения Функций Azure использовать файл конфигурации appsettings.Development.json вместо appsettings.json. также поделитесь своей конфигурацией yaml и docker
Я попробовал AzureFunctionJobHost__environment, но он все еще не читается из appsettings.Development.json, для докера я публикую его в контейнере Azure непосредственно из Visual Studio, это yaml развертывания:
spec: replicas: 1 strategy: type: Recreate template: metadata: labels: app: testfunc spec: containers: - name: testfunc image: testfunc.azurecr.io/testfunction:20240613081713 imagePullPolicy: Always env: - name: AzureFunctionsJobHost__environment value: "Development" envFrom: - secretRef: name: testfunc - configMapRef: name: testfunc-envПроблема решена, я забыл удалить CopyToPublishDirectory для моего appsettings.Development.json, поэтому он всегда читает appsettings.json.
ааа! Понимаю, приятно знать, что проблема решена.
@RaymondKenny Приятно слышать, что вы смогли решить свою проблему. Не могли бы вы задокументировать свое решение в ответе? Это внесет ясность для тех, кто сталкивается с аналогичными техническими проблемами в сообществе.





Опубликуйте это как ответ, чтобы помочь сообществу SO, столкнувшемуся с подобной проблемой. Как правильно понял Рэймонд, чтобы гарантировать, что приложение «Функции Azure» в контейнере Docker читает правильный appsettings.Development.json файл при развертывании в AKS, необходимо проверить параметры CopyToPublishDirectory в файлах конфигурации. Файл appsettings.Development.json не следует копировать в каталог публикации файла проекта (.csproj). Следует копировать только appsettings.json, а настройками, специфичными для среды, следует управлять с помощью переменных среды.
<ItemGroup>
<None Update = "appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update = "appsettings.Development.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
</ItemGroup>
Спасибо, Рэймонд за ваш положительный вклад, который сыграл важную роль в решении этой проблемы. Не стесняйтесь редактировать ответ, добавляя сюда все, что я пропустил.
Я всегда рекомендую следовать рекомендациям Microsoft. Это должно дать вам примерное представление о том, что делать: Learn.microsoft.com/en-us/azure/azure-app-configuration/…