Jam*_*ock 6 c# containers azure-web-sites docker
我在Azure App Services的linux docker容器中运行了一个C#应用程序,该程序从Azure Key保管库获取其配置信息。
过去我们这样做:
config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"],
builtConfig["Azure:Auth:ClientId"], builtConfig["Azure:Auth:ClientSecret"]);
Run Code Online (Sandbox Code Playgroud)
我们一直在尝试使用托管身份。所以我:
从nuget添加了AppAuthenication库。
这样更新我的代码:
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
config.AddAzureKeyVault(builtConfig["Azure:Auth:Vault"], keyVaultClient,
new DefaultKeyVaultSecretManager());
Run Code Online (Sandbox Code Playgroud)但是,当我们通过更新容器将其放入Azure App Services时,它挂起并试图启动应用程序。没有任何反应,最终超时。
我可以找到许多有关直接应用程序服务的文档,但是对于容器来说没有什么不同。看来它受到支持。
在App Services中使linux容器能够正常工作时,我缺少什么?
即使打开托管身份,也会导致容器从不响应ping检查,更不用说正确启动了。
目前这似乎不受支持。我做了什么来验证这个声明:
创建了两个具有系统分配标识的实例:
部署相同的代码以通过curl获取令牌。
它在虚拟机上按预期工作,但在自定义映像上不起作用。
不幸的是,Azure 并未像宣传的那样在其托管服务上提供托管身份。