通过 AZ cli 添加 vnet 规则失败并出现 500 错误

Adding vnet rule through AZ cli fails with 500 errors

我正在试验 Azure AKS,我 运行 遇到了通过 Azure CLI 为我的 SQL 服务器添加 vnet 规则的问题。它死于错误:

Error occurred in request., RetryError: HTTPSConnectionPool(host='management.azure.com', port=443): Max retries exceeded with url:

/subscriptions/...path omitted.../mysql/virtualNetworkRules/my-vnet-rule?api-version=2015-05-01-preview (Caused by ResponseError('too many 500 error responses',))

这是我到目前为止所做的:

az group create --name myrg --location centralus
az aks create -n mycluster  -g myrg --generate-ssh-keys
az aks get-credentials -g myrg -n mycluster
az sql server create --name mysql  -g myrg  --location centralus  --admin-user myuser --admin-password mypassword

此时我得到了两个 RG,一个名为 "myrg",一个名为 "CM_myrg_mycluster_centralus"。我的 SQL 服务器在 "myrg" 中,CM_* 中有一个 vnet "aks-vnet-1234567"。 vnet 包含子网 "aks-subnet".

然后我尝试添加 vnet 规则:

az sql server vnet-rule create --name my-vnet-rule --server mysql --vnet "MC_myrg_mycluster_centralus/aks-vnet" -g mygroup --subnet "aks-subnet"

并得到上面的错误。

我也尝试指定 vnet,包括数字后缀(例如 aks-vnet-1234567),但同样的错误。

这可能意味着我没有在某处使用正确的语法。有人可以澄清一下吗?

AZ CLI 2.0.21 Linux (Ubuntu)

我是这样解决的:

  1. 在此之前,我需要将 sql 添加到服务端点:

    az network vnet subnet update -n aks-subnet -g myrg --vnet-name aks-vnet-xxx --service-endpoints "Microsoft.Sql"

  2. 修改了查询以使用 --subnet ID 而不是 --subnet NAME--vnet-name。使用以前的语法也应该是可行的。

Vnet-name 类似于 /subscriptions/.../resourceGroups.../aks-subnet

您的规则现在应该已创建。您还可以使用 -i 在规则创建期间忽略服务端点,但我相信最终会禁用规则。