Разверните кластер AKS в существующей Vnet / подсети с использованием шаблонов ARM - PullRequest
0 голосов
/ 24 октября 2019

У меня есть виртуальная сеть, созданная с двумя подсетями: aks-subnet и persistence-subnet.

Моя цель - создать кластер Azure Kubernetes внутри aks-subnet

Я являюсьсоздание групп ресурсов и ресурсов на уровне подписки с использованием команды New-AzDeployment из ядра PowerShell.

Как и моя идея, создать группу ресурсов и развернуть в ней ресурсы, у меня есть вложенныйшаблон, определяющий ресурсы для создания в группе ресурсов.

Итак, у меня есть группа ресурсов, созданная из шаблона ARM

  • пожалуйста, найдите это определение json во всем шаблоне, показанном ниже в конце этой темы
"type": "Microsoft.Resources/resourceGroups",

И я использую ресурс Deployment для того, чтобы вложить шаблон, содержащий ресурсы, которые я хочу создать в группе ресурсов.

  • пожалуйста, найдите сразу после:
"type": "Microsoft.Resources/deployments"

Итак, внутри этого Microsoft.Resources/deployments я создаю виртуальную сеть с двумя ранее упомянутыми подсетями

и Itработает! , Vnet и подсеть создаются внутри группы ресурсов, созданной в одном шаблоне.

  • Пожалуйста, найдите во всем шаблоне, показанном ниже в концеэтот поток
"type": "Microsoft.Network/virtualNetworks",

Теперь я хочу добавить кластер Azure Kubernetes внутри aks-vnet.

  • . Найдите во всем шаблоне. :
"dependsOn": [
    "Microsoft.Network/virtualNetworks/AssessmentVNet"
],
"type": "Microsoft.ContainerService/managedClusters",

А потом, когда я связываюefaultpool (или виртуальная машина) для aks-subnet,

  • Пожалуйста, найдите атрибут vnetSubnetID этого способа во всем шаблоне, показанном ниже в конце этой темы:
"vnetSubnetID": "[resourceId(parameters('resourceGroupName'),'Microsoft.Network/virtualNetworks/subnets',parameters('vnetName'),parameters('subnet1Name'))]",

Я пытаюсь получить доступ к VnetSubnetID таким образом, в соответствии с этой официальной ссылкой AKS Advanced Network предложить:

В соответствии с указанным вышеЯ делаю здесь следующее:

  • Я получил resourceId из resourceGroupName, где находится Vnet.
  • Я указываю тип подсети ресурсов Microsoft.Network/virtualNetworks/subnets
  • И я передаю, как параметры, имя виртуальной сети, которая также имеет подсеть и имя подсети parameters('vnetName'),parameters('subnet1Name'))

Но когда я запускаю шаблон из Power shellЯ получил следующую ошибку:

PS /home/bgarcial/projects/my-project/Deployments/ARMTemplates/ResourceGroup> New-AzDeployment `
>>  -Name SentiaAssessment `
>>  -location westeurope `
>>  -TemplateUri $templateUri `
>>  -resourceGroupName $resourceGroupName `
>>  -environmentName accp `
>>  -dnsPrefix WordpressSentiaAssessment-dns `
>>  -servicePrincipalClientId $servicePrincipalClientId `
>>  -servicePrincipalClientSecret $servicePrincipalClientSecret

New-AzDeployment : 10:20:02 PM - Resource Microsoft.Resources/deployments 'storageDeployment' failed with message '{


"error": {
    "code": "InvalidTemplate",
    "message": "Unable to process template language expressions for resource '/subscriptions/9148bd11-f32b-4b5d-a6c0-5ac5317f29ca/resourceGroups/sentia-assessment/providers/Microsoft.Resources/deployments/storageDeployment' at line '150' and column '9'. 'The provided value 'sentia-assessment' is not valid subscription identifier. Please see https://aka.ms/arm-template-expressions/#resourceid for usage details.'",
    "additionalInfo": [
      {
        "type": "TemplateViolation",
        "info": {
          "lineNumber": 150,
          "linePosition": 9,
          "path": ""
        }
      }
    ]
  }
}'
At line:1 char:1
+ New-AzDeployment `
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [New-AzDeployment], Exception
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.NewAzureDeploymentCmdlet

New-AzDeployment : 10:20:02 PM - Template output evaluation skipped: at least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.
At line:1 char:1
+ New-AzDeployment `
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [New-AzDeployment], Exception
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.NewAzureDeploymentCmdlet

New-AzDeployment : 10:20:02 PM - Template output evaluation skipped: at least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.
At line:1 char:1
+ New-AzDeployment `
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [New-AzDeployment], Exception
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.NewAzureDeploymentCmdlet


DeploymentName          : MyDeployment
Location                : westeurope


ProvisioningState       : Failed
Timestamp               : 10/23/19 8:19:57 PM
Mode                    : Incremental
TemplateLink            : 
Parameters              : 
                          Name                            Type                       Value     
                          ==============================  =========================  ==========
                          resourceGroupName               String                     sentia-assessment
                          location                        String                     West Europe
                          vnetName                        String                     AssessmentVNet
                          vnetAddressPrefix               String                     10.0.0.0/8
                          subnet1Prefix                   String                     10.240.0.0/16
                          subnet1Name                     String                     aks-subnet
                          subnet2Prefix                   String                     10.241.0.0/27
                          subnet2Name                     String                     persistence-subnet
                          k8s_cluster_name                String                     WordpressSentiaAssessment
                          kubernetesVersion               String                     1.14.7    
                          dnsPrefix                       String                     WordpressSentiaAssessment-dns
                          nodeCount                       Int                        3         
                          agentVMSize                     String                     Standard_D2_v2
                          servicePrincipalClientId        SecureString                         
                          servicePrincipalClientSecret    SecureString                         
                          serviceCidr                     String                     100.0.0.0/16
                          dnsServiceIP                    String                     100.0.0.10
                          dockerBridgeCidr                String                     172.17.0.1/16
                          environmentName                 String                     accp      

Outputs                 : 
DeploymentDebugLogLevel : 


PS /home/bgarcial/projects/my-project/Deployments/ARMTemplates/ResourceGroup> 

Похоже, мне нужно было бы включить значение suscriptionId в используемую мной шаблонную функцию resourceId, но в настоящее время мне не ясно, как это сделать, несмотря на то, что язапрос ссылка на шаблон

Кстати, другая деталь в том, что я использую в качестве networkPlugin, кубенет.

Нужно ли использовать Azure CNI как сетевой плагин, чтобы его получить?

Это полный шаблон ARM. Я привел это здесь, чтобы дать представление о том, что я делаю и как, а также кому-то можно найти определения кода разделов json, которые я объясняю выше.

Я был бы очень признателен, если бы кто-то мог указать мнев правильном направлении

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "resourceGroupName": {
      "type": "string"  
    },
    "location": {
      "type": "string",
      "defaultValue": "West Europe",
      "metadata": {
        "description": "Geographic Location for all resources."
      }
    },
    "vnetName": {
      "type": "string",
      "defaultValue": "AssessmentVNet",
      "metadata": {
        "description": "Sentia Wordpress Assesment Vnet"
      }
    },
    "vnetAddressPrefix": {
      "type": "string",
      "defaultValue": "10.0.0.0/8",
      "metadata": {
        "description": "Address prefix"
      }
    },
    "subnet1Prefix": {
      "type": "string",
      "defaultValue": "10.240.0.0/16",
      "metadata": {
        "description": "AKS Subnet"
      }
    },
    "subnet1Name": {
      "type": "string",
      "defaultValue": "aks-subnet",
      "metadata": {
        "description": "aks-subnet"
      }
    },
    "subnet2Prefix": {
      "type": "string",
      "defaultValue": "10.241.0.0/27",
      "metadata": {
        "description": "Persistence subnet"
      }
    },
    "subnet2Name": {
      "type": "string",
      "defaultValue": "persistence-subnet",
      "metadata": {
        "description": "persistence-subnet"
      }
    },
    "k8s_cluster_name":{
      "type": "string",
      "defaultValue": "WordpressSentiaAssessment",
      "metadata": {
        "description": "The name of the Azure Kubernetes Service Cluster"
      }
    },
    "kubernetesVersion": {
      "type": "string",
        "defaultValue": "1.14.7",
        "metadata": {
          "description": "The version of the Azure Kubernetes Service Cluster"
        }
    },
    "dnsPrefix": {
      "type": "string",
      "metadata": {
          "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
      }
    },
    "nodeCount": {
      "type": "int",
      "defaultValue": 3,
      "metadata": {
          "description": "The number of nodes that should be created along with the cluster."
      },
      "minValue": 1,
      "maxValue": 100
    },
    "agentVMSize": {
      "type": "string",
      "defaultValue": "Standard_D2_v2",
      "metadata": {
        "description": "The size of the Virtual Machine."
      }
    },
    "servicePrincipalClientId": {
      "metadata": {
        "description": "Client ID (used by cloudprovider)."
      },
      "type": "securestring"
    },
    "servicePrincipalClientSecret": {
      "metadata": {
        "description": "The Service Principal Client Secret."
      },
      "type": "securestring"
    },
    "serviceCidr": {
      "type": "string",
        "metadata": {
            "description": "A CIDR notation IP range from which to assign service cluster IPs."
        },
        "defaultValue": "100.0.0.0/16"
    },
    "dnsServiceIP": {
      "type": "string",
        "metadata": {
          "description": "Containers DNS server IP address."
        },
        "defaultValue": "100.0.0.10"
    },
    "dockerBridgeCidr": {
      "type": "string",
      "metadata": {
          "description": "A CIDR notation IP for Docker bridge."
      },
      "defaultValue": "172.17.0.1/16"
    },
    "environmentName": {
      "type": "string",
      "metadata": {
        "description": "Environment name for tagging purposes, e.g. dev, accp, prod"
      }
    }
  },
  "variables": {
    "osDiskSizeGB": 0,
    "osType": "Linux",
    "maxPods": 110,
    "networkPlugin": "kubenet"
  },
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2018-05-01",
      "location": "[parameters('location')]",
      "name": "[parameters('resourceGroupName')]",
      "properties": {}
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2018-05-01",
      "name": "storageDeployment",
      "resourceGroup": "[parameters('resourceGroupName')]",
      "dependsOn": [
          "[resourceId('Microsoft.Resources/resourceGroups/', parameters('resourceGroupName'))]"
      ],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {},
          "variables": {},
          "resources": [
            {
              "apiVersion": "2018-10-01",
              "type": "Microsoft.Network/virtualNetworks",
              "name": "[parameters('vnetName')]",
              "location": "[parameters('location')]",
              "properties": {
                "subnets": [
                  {
                    "name": "[parameters('subnet1Name')]",
                    "properties": {
                      "addressPrefix": "[parameters('subnet1Prefix')]"
                    }
                  },
                  {
                    "name": "[parameters('subnet2Name')]",
                    "properties": {
                      "addressPrefix": "[parameters('subnet2Prefix')]",
                      "serviceEndpoints": [
                        {
                          "service": "Microsoft.Storage",
                          "locations": "[parameters('location')]"
                        },
                        {
                          "service": "Microsoft.Sql",
                          "locations": "[parameters('location')]"
                        }
                      ]
                    }
                  }
                ],      
                "addressSpace": {
                  "addressPrefixes": [
                    "[parameters('vnetAddressPrefix')]"
                  ]
                }
              },
              "tags": {
                "Environment": "[parameters('environmentName')]"
              }
            },
            {
              "apiVersion": "2019-06-01",
              "dependsOn": [
                "Microsoft.Network/virtualNetworks/AssessmentVNet"
              ],
              "type": "Microsoft.ContainerService/managedClusters",
              "location":"[parameters('location')]",
              "name": "[concat(parameters('k8s_cluster_name'), '-aks')]",
              "properties":{
                "kubernetesVersion":"[parameters('kubernetesVersion')]",
                "enableRBAC": true,
                "dnsPrefix": "[concat(parameters('k8s_cluster_name'),'-dns')]",
                "agentPoolProfiles":[
                  {
                    "name":"defaultpool",
                    "osDiskSizeGB": "[variables('osDiskSizeGB')]",
                    "count":"[parameters('nodeCount')]",
                    "vmSize": "[parameters('agentVMSize')]",
                    "osType": "[variables('osType')]",
                    "storageProfile": "ManagedDisks",
                    "type": "VirtualMachineScaleSets",
                    "vnetSubnetID": "[resourceId(parameters('resourceGroupName'),'Microsoft.Network/virtualNetworks/subnets',parameters('vnetName'),parameters('subnet1Name'))]",
                    "maxPods": "[variables('maxPods')]"
                  }
                ],
                "servicePrincipalProfile": {
                    "ClientId": "[parameters('servicePrincipalClientId')]",
                    "Secret": "[parameters('servicePrincipalClientSecret')]"
                },
                "networkProfile": {
                  "networkPlugin": "[variables('networkPlugin')]",
                  "serviceCidr": "[parameters('serviceCidr')]",
                  "dnsServiceIP": "[parameters('dnsServiceIP')]",
                  "dockerBridgeCidr": "[parameters('dockerBridgeCidr')]"
                }
              },
              "tags": {
                "Environment": "[parameters('environmentName')]"
              }
            },
            {

            }  
          ]
        }
      }
    }    
  ]
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...