问题描述
新创建了一个Container App服务,构建在内部访问的环境中( Container App Environment配置了虚拟网络并设置为内部访问)。
##Container Apps Environment的网络配置如下:
当Container App应用部署完成后。查看到Application Url不完整,并不是一个有效的URL,且无法访问?
这是什么原因呢? 如何来解决它呢?
问题原因
这是因为Contianer App服务主动取消了默认的域名提供。
众所周知,在中国区的Azure环境中,所有的域名都需要进行ICP备案。而默认的域名 .azurecontainerapps.cn 是Azure所备案域名并只用于使用Container App服务。如果我们自己的应用部署在Container App上并对外提供服务,则需要自定义域名并完成ICP备案。
PS: 这点和App Service的备案公告内容一样:
- ICP 许可证和 ICP 备案是什么?如果我在 Azure 上部署我的服务,我需要 ICP 许可证或者 ICP 备案么?
ICP备案是工信部要求每一个在国内连接互联网的网站都必须要办的一个入网许可。
ICP许可证是网站经营的许可证,根据国家《互联网管理办法》规定,经营性网站必须办理ICP许可证,否则就属于非法经营。
Chinacloudapp.cn、Chinacloudapi.cn 和 Chinacloudsites.cn 域名由上海蓝云网络科技有限公司备案,仅用于向其客户提供 Azure 服务。如果您需要通过 Azure 平台对外提供服务,应使用自有的域名提供服务,并根据相关规定对自有域名做相应的 ICP 备案。通过Internet访问应用服务,仅可通过已完成ICP备案的自定义域名进行访问,任何通过应用服务默认域名的访问将会被封堵。(了解更多详情 : https://www.azure.cn/support/icp/WebApp/index.html)
是否需要办理 ICP 许可证,如您不能根据相关规定结合业务自行判断,请联系开办地通信管理局进行确认。
解决方法
当了解到原因后,为Container App配置自定义域名就可以了。
有两处可以配置自定义域名:
1: Container App Environment中的DNS suffix,可以配置通配域名(例如 *.mytest.blog)。它会统一为构建在同一个Environment下的Apps 根据名称生成子域名。
2:Container App中配置自定义域名,不能使用通配符。此域名只对当前App有效。
本文使用的是第一种,在Container App Environment中配置通配域名。
第一步:在Azure环境中创建一个Private DNS Zone
名称就指定为 mytest.blog,添加一个A记录,IP地址为Container App Environment的Static IP
第二步:配置Contianer App Environment的DNS Suffix
第三步:生成一个自签名证书并上传
(如果有使用Azure Key Vault 服务,可以直接通过它来生成一个自签名证书)
openssl.exe req -x509 -nodes -sha256 -days 3650 -subj "/CN=*.mytest.blog " -newkey rsa:2048 -keyout mytest.blog.key -out mytest.blog.crt
openssl.exe pkcs12 -export -in mytest.blog.crt -inkey mytest.blog.key -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider" -out mytest.blog.pfx
openssl命令执行效果图:
成功!
回到Container App中,查看Application URL已经完成。进入Console中,也可以通过curl 进行域名解析和访问
参考资料
- 【Azure 环境】把OpenSSL生产的自签名证书导入到Azure Key Vault Certificate中报错 : https://www.cnblogs.com/lulight/p/16859848.html
- ICP 备案操作解析 : https://www.azure.cn/support/icp/icp-faq/
- What is an Azure Private DNS zone? https://learn.microsoft.com/en-us/azure/dns/private-dns-privatednszone
- Container App DNS(域名系统): https://docs.azure.cn/zh-cn/container-apps/networking?tabs=workload-profiles-env%2Cazure-cli#dns