如何允许github操作访问vnet上的数据库

问题描述 投票:0回答:1

我已经在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 访问吗?

azure azure-web-app-service github-actions devops
1个回答
0
投票

你有两个选择。第一个选项是创建一个虚拟机并在其上安装自托管运行程序。 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
© www.soinside.com 2019 - 2024. All rights reserved.