azure 基于容器的功能应用在被CORSettingsChanged和AppSettingsChange回收后丢失了自定义应用设置

pcww981p  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(87)

我们的团队已经制定了一个部署Azure Function的ansible-playbook作为参考:Linux-container-from-ACR-with-private-endpoint我们使用用户分配的身份从ACR中提取函数应用程序映像。我们使用Ansible自动执行该任务,如下所示:

- name: Force Login using identity
  command: az login --identity

- name: Get function app identity's clientId
  command: az identity show --resource-group "{{ functionapp_resource_group }}" --name "{{ functionapp_user_identity }}" --query clientId --output tsv
  register: identity

- name: Config properties
  command:
    az resource update --resource-group "{{ functionapp_resource_group }}" --name "{{ functionapp_name }}/config/web"
    --set "{{ item }}" --resource-type "Microsoft.Web/sites/config"
  with_items:
    - "properties.acrUserManagedIdentityID={{ identityId.stdout }}"
    - "properties.acrUseManagedIdentityCreds=true"

- name: Config app settings
  command:
    az function app config appsettings set --name "{{ functionapp_name }}"
    --resource-group "{{ functionapp_resource_group }}" --settings "{{ item }}"
  with_items:
    - "WEBSITES_ENABLE_APP_SERVICE_STORAGE=false"
    - "SubscriptionExpiredSchedule=* 30 * * * *"
    - "KEY=VALUE..."

- name: Deploy the function app
  command:
    az function app config container set --name "{{ functionapp_name }}"
    --resource-group "{{ functionapp_resource_group }}"
    --docker-custom-image-name "{{ docker_registry_host }}/{{ image_name }}:{{ image_tag }}"
    --docker-registry-server-URL "{{ docker_registry_host }}"

刚部署时一切正常,2个定时器触发函数找到正确,crontab字符串"* 30 * * * *"从我的应用设置中检测成功:

但过了一段时间后,Application Insight中的日志仍显示1 functions found0 functions loaded

2023-01-13T10:15:47.434 [Information] 1 functions found
2023-01-13T10:15:47.434 [Information] 0 functions loaded
2023-01-13T10:15:48.352 [Information] Host Status: {
  "id": "<<function app name>>",
  "state": "Running",
  "version": "4.14.0.0",
  "versionDetails": "4.14.0+fc14864b4fc2a095f8cd92c7f0ca338dbeabd430",
  "platformVersion": "99.0.10.762",
  "instanceId": "b42e8886acdb8a5a6fd64d57ead538cc2765d75cbbc61a37cab2678ae174bea0",
  "computerName": "lw1sdlwk000014",
  "processUptime": 1677391,
  "functionAppContentEditingState": "Unknown",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "3.17.0"
  }
}

函数应用程序已关闭。返回到配置,我的所有自定义应用程序设置都丢失:

虽然第一次CI工具总是失败,但第二次手动触发CI工具后,它工作正常,没有再次失败。这太奇怪了。我是否设置了任何配置错误,导致功能应用程序关闭,第一次部署时应用程序设置丢失?

  • --更新---
    我发现功能app因为Recycling container because of CORSSettingsChanged and CORSSettingsChanged = Microsoft.Web.Hosting.CorsSettings被重新部署了,这次部署之后我所有的自定义配置都丢失了,另外我发现Recycling container because of AppSettingsChange and isMainSite = True也导致我的自定义配置丢失了,日志如下:
2023-01-17T02:29:27.044Z INFO - Pull Image successful, Time taken: 1 Minutes and 7 Seconds
2023-01-17T02:29:27.485Z INFO - Starting container for site
2023-01-17T02:29:27.485Z INFO - docker run -d --expose=80 --name <<functionapp name>>_0_4b241f6f -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=<<functionapp name>> -e WEBSITE_AUTH_ENABLED=False -e PORT=80 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=<<functionapp name>>.azurewebsites.net -e WEBSITE_INSTANCE_ID=5b6600aecfae7b5eb1290df18fcc42fb8bc88d7b721b9274087658bfa90a5d85 -e WEBSITE_USE_DIAGNOSTIC_SERVER=False <<my acr>>.azurecr.io/<<name>>:<<tag>>

2023-01-17T02:29:27.485Z INFO - Logging is not enabled for this container.
Please use https://aka.ms/linux-diagnostics to enable logging to see container logs here.
2023-01-17T02:29:29.726Z INFO - Initiating warmup request to container <<functionapp name>>_0_4b241f6f_msiProxy for site <<functionapp name>>
2023-01-17T02:29:29.874Z INFO - Container <<functionapp name>>_0_4b241f6f_msiProxy for site <<functionapp name>> initialized successfully and is ready to serve requests.
2023-01-17T02:29:29.874Z INFO - Initiating warmup request to container <<functionapp name>>_0_4b241f6f for site <<functionapp name>>
2023-01-17T02:29:39.659Z INFO - Container <<functionapp name>>_0_4b241f6f for site <<functionapp name>> initialized successfully and is ready to serve requests.
2023-01-17T02:37:22.159Z INFO - Recycling container because of CORSSettingsChanged and CORSSettingsChanged = Microsoft.Web.Hosting.CorsSettings
2023-01-17T02:37:28.816Z INFO - Pulling image: <<my acr>>.azurecr.io/<<name>>:<<tag>>
2023-01-17T02:37:29.124Z INFO - <<tag>> Pulling from <<name>>
2023-01-17T02:37:29.126Z INFO - Digest: sha256:49a690b289cd8a80d7104891a3ae5db38b8d6529f73b9b536c147d81a94a499e
2023-01-17T02:37:29.126Z INFO - Status: Image is up to date for <<my acr>>.azurecr.io/<<name>>:<<tag>>
2023-01-17T02:37:29.129Z INFO - Pull Image successful, Time taken: 0 Minutes and 0 Seconds
2023-01-17T02:37:29.188Z INFO - Starting container for site
2023-01-17T02:37:29.189Z INFO - docker run -d --expose=80 --name <<functionapp name>>_1_bf06fa66 -e WEBSITE_SITE_NAME=<<functionapp name>> -e WEBSITE_AUTH_ENABLED=False -e PORT=80 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=<<functionapp name>>.azurewebsites.net -e WEBSITE_INSTANCE_ID=5b6600aecfae7b5eb1290df18fcc42fb8bc88d7b721b9274087658bfa90a5d85 -e WEBSITE_USE_DIAGNOSTIC_SERVER=False <<my acr>>.azurecr.io/<<name>>:<<tag>>

2023-01-17T02:37:29.189Z INFO - Logging is not enabled for this container.
Please use https://aka.ms/linux-diagnostics to enable logging to see container logs here.
2023-01-17T02:37:31.739Z INFO - Initiating warmup request to container <<functionapp name>>_1_bf06fa66_msiProxy for site <<functionapp name>>
2023-01-17T02:37:31.819Z INFO - Container <<functionapp name>>_1_bf06fa66_msiProxy for site <<functionapp name>> initialized successfully and is ready to serve requests.
2023-01-17T02:37:31.820Z INFO - Initiating warmup request to container <<functionapp name>>_1_bf06fa66 for site <<functionapp name>>
2023-01-17T02:37:40.895Z INFO - Container <<functionapp name>>_1_bf06fa66 for site <<functionapp name>> initialized successfully and is ready to serve requests.
p1tboqfb

p1tboqfb1#

基于异常Recycling container because of AppSettingsChange and isMainSite = True和Docker Azure Function App的上下文中,我发现用户@mpseidel 和@Piotr 的类似异常和上下文的现有已解决问题很少,这可能有助于问题调查分析。
GitHub-Azure-Functions-Host 3500中出现类似异常的第一个案例是在基于Docker Linux的 NodeJS Azure Function应用程序上启动,但该应用程序在本地成功运行,并找到了选择操作系统作为Docker的解决方案,并使其工作。
第二种情况,在基于Azure Linux的Function-Docker部署SO #61567697的上下文中出现类似异常。
我可以看到您已经在GitHub官方页面的Azure Functions Issues中提出了分类问题,如果任何社区成员面临类似问题,这里有标签为bug的问题-#2327,正在等待分类。

相关问题