Ошибка при создании кластера AKS с использованием ссылки на идентификатор подсети - PullRequest
0 голосов
/ 22 октября 2018

Я получаю сообщение об ошибке при попытке развернуть кластер AKS с использованием шаблона ARM, если vnetSubnetId в свойстве agentPoolProfiles является ссылкой.Я использовал этот точный шаблон раньше без проблем (4 октября), но теперь я вижу ошибку с несколькими различными кластерами, и когда я делаю это либо через конвейер VSTS, либо вручную с помощью PowerShell.

Свойство настраивается следующим образом:

"agentPoolProfiles": [
  {
    "name": "agentpool",
    "count": "[parameters('agentCount')]",
    "vmSize": "[parameters('agentVMSize')]",
    "osType": "Linux",
    "dnsPrefix": "[variables('agentsEndpointDNSNamePrefix')]",
    "osDiskSizeGB": "[parameters('agentOsDiskSizeGB')]",
    "vnetSubnetID": "[reference(concat('Microsoft.Network/virtualNetworks/', variables('vnetName'))).subnets[0].id]"
  }
]

Переменная 'vnetName' основана на входном параметре, который я использую для имени кластера, а сама виртуальная сеть 100% существует и развертывается как частьтот же шаблон.

Если я пытаюсь развернуть новый кластер, я получаю следующую ошибку:

Message: {
  "code": "InvalidParameter",
  "message": "The value of parameter agentPoolProfile.vnetSubnetID is invalid.",
  "target": "agentPoolProfile.vnetSubnetID"
 }

Если я пытаюсь повторно развернуть кластер, без изменений шаблона или входных параметров, так как онв последний раз я получал следующую ошибку:

Message: {
  "code": "PropertyChangeNotAllowed",
  "message": "Changing property 'agentPoolProfile.vnetSubnetID' is not allowed.",
  "target": "agentPoolProfile.vnetSubnetID"
 }

Что-то изменилось, что означает, что я больше не могу получить идентификатор vnet во время выполнения?Должен ли он быть передан в качестве параметра сейчас?Если что-то изменилось, есть ли где-нибудь, где я могу узнать подробности?

Изменить: Просто чтобы уточнить, для повторного развертывания кластера, я проверил, и нет новых подсетей, и я вижутакое же поведение в 3 разных кластерах с разными виртуальными сетями.

Переключение с reference () на resourceId () решило проблему, поэтому было помечено как ответ, но я до сих пор не понимаю, почему остановился reference ()работает, обновлю и здесь, если я это выясню.

1 Ответ

0 голосов
/ 22 октября 2018

Я думаю, что произошло subnets[0].id возвращает неправильный ( РАЗЛИЧНЫЙ ) идентификатор подсети.и это то, на что указывает ошибка.Вы не можете изменить идентификатор подсети после развертывания кластера.

Возможно, кто-то создал новую подсеть в виртуальной сети.Но я бы сказал, что в целом подход неверен.вам следует создать функцию resourceId() или просто передать ее в качестве параметра

...