У меня есть виртуальная сеть, созданная с двумя подсетями: 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')]"
}
},
{
}
]
}
}
}
]
}