我已经在azure中设置了一个Web应用程序+数据库,我正在尝试通过部署中心的github操作来部署我的代码。我已将连接字符串添加到 github Secrets 中的数据库中,但出现错误:
[22:54:57] ERROR (payload): Error: cannot connect to Postgres. Details: getaddrinfo
ENOTFOUND myapp-database-server.postgres.database.azure.com
error Command failed with exit code 1.
实际上这是有道理的,因为如果我的数据库位于 vnet 后面,那么 github 操作如何检查我的数据库是否存在。所以我很好奇如何在不删除我的 vnet 并将我的数据库公开的情况下解决这个问题?
评论中提到的一个选项是跑步者。我发现这段代码要添加到我的 yml 文件中:
- name: Whitelist GitHub Runner IP
uses: azure/CLI@v1
with:
inlineScript: |
set -eu
agentIP=$(curl -s https://api.ipify.org/)
az storage account network-rule add \
--resource-group "${{ secrets.RESOURCE_GROUP }}" \
--account-name "${{ secrets.STORAGE_ACCOUNT_NAME }}" \
--ip-address $agentIP
sleep 300
我的问题是如何向 vnet 添加 IP 例外?我需要以某种方式设置防火墙并允许 ip 访问吗?
你有两个选择。第一个选项是创建一个虚拟机并在其上安装自托管运行程序。 VM 应位于您的 VNET 中或连接到配对的 VNET/能够路由到该网络。 https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners
另一个选项是,您使用“选定网络”启用数据库的公共端点 然后,您可以使用您必须的脚本将 github 公共运行器的 IP 例外添加到数据库中。 (之后别忘了将其删除)
az sql server firewall-rule create -g mygroup -s myserver -n myrule --start-ip-address 1.2.3.4 --end-ip-address 5.6.7.8
https://learn.microsoft.com/en-us/cli/azure/sql/server/firewall-rule?view=azure-cli-latest
来自您发布的代码(尚未测试)
- name: Whitelist GitHub Runner IP
uses: azure/CLI@v1
with:
inlineScript: |
set -eu
agentIP=$(curl -s https://api.ipify.org/)
az sql server firewall-rule create -g "${{ secrets.RESOURCE_GROUP }}" -s "${{ secrets.SQL_SERVER_NAME }}" -n ghrunner --start-ip-address $agentIP --end-ip-address $agentIP
sleep 300