Een cloudservice implementeren (uitgebreide ondersteuning) met behulp van ARM-sjablonen
In deze zelfstudie wordt uitgelegd hoe u een cloudserviceimplementatie (uitgebreide ondersteuning) maakt met behulp van ARM-sjablonen.
Voordat u begint
Controleer de implementatievoorwaarden voor Cloud Services (uitgebreide ondersteuning) en maak de bijbehorende resources.
Maak een nieuwe resourcegroep met behulp van Azure Portal of PowerShell. Deze stap is optioneel als u een bestaande resourcegroep gebruikt.
Maak een nieuw opslagaccount met behulp van Azure Portal of PowerShell. Deze stap is optioneel als u een bestaand opslagaccount gebruikt.
Upload de bestanden Package (.cspkg) en Service Configuration (.cscfg) naar het opslagaccount met behulp van Azure Portal , of PowerShell. Verkrijg de SAS-URI's van beide bestanden die later in deze zelfstudie aan de ARM-sjabloon moeten worden toegevoegd.
(Optioneel) Maak een sleutelkluis en upload de certificaten.
- Certificaten kunnen worden gekoppeld aan cloudservices om beveiligde communicatie van en naar de service mogelijk te maken. Als u certificaten wilt gebruiken, moeten de vingerafdrukgegevens worden opgegeven in uw serviceconfiguratiebestand (.cscfg) en worden geüpload naar een sleutelkluis. Een sleutelkluis kan worden gemaakt via de Azure Portal of PowerShell.
- De gekoppelde sleutelkluis moet zich in dezelfde regio en hetzelfde abonnement bevinden als de cloudservice.
- De bijbehorende sleutelkluis voor moet de juiste machtigingen hebben, zodat Cloud Services resource (uitgebreide ondersteuning) certificaten kan ophalen van Key Vault. Zie Certificaten en Key Vault
- Er moet naar de sleutelkluis worden verwezen in de sectie OsProfile van de ARM-sjabloon die in de onderstaande stappen wordt weergegeven.
Een cloudservice implementeren (uitgebreide ondersteuning)
Notitie
Een eenvoudigere en snellere manier om uw ARM-sjabloon en parameterbestand te genereren, is via de Azure Portal. U kunt de gegenereerde ARM-sjabloon downloaden via de portal om uw cloudservice te maken via PowerShell
Maak een virtueel netwerk. De naam van het virtuele netwerk moet overeenkomen met de verwijzingen in het bestand Serviceconfiguratie (.cscfg). Als u een bestaand virtueel netwerk gebruikt, laat u deze sectie weg uit de ARM-sjabloon.
"resources": [ { "apiVersion": "2019-08-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('vnetName')]", "location": "[parameters('location')]", "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "subnets": [ { "name": "WebTier", "properties": { "addressPrefix": "10.0.0.0/24" } } ] } } ]Als u een nieuw virtueel netwerk maakt, voegt u het volgende toe aan de sectie om ervoor te zorgen dat het platform het virtuele netwerk maakt voordat
dependsOnu de cloudservice maakt."dependsOn": [ "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]" ]Maak een openbaar IP-adres en stel (optioneel) de eigenschap DNS-label van het openbare IP-adres in. Als u een statisch IP-adres gebruikt, moet u hier naar verwijzen als een Gereserveerd IP in het serviceconfiguratiebestand (.cscfg). Als u een bestaand IP-adres gebruikt, slaat u deze stap over en voegt u de IP-adresgegevens rechtstreeks toe aan load balancer configuratie-instellingen van uw ARM-sjabloon.
"resources": [ { "apiVersion": "2019-08-01", "type": "Microsoft.Network/publicIPAddresses", "name": "[parameters('publicIPName')]", "location": "[parameters('location')]", "properties": { "publicIPAllocationMethod": "Dynamic", "idleTimeoutInMinutes": 10, "publicIPAddressVersion": "IPv4", "dnsSettings": { "domainNameLabel": "[variables('dnsName')]" } }, "sku": { "name": "Basic" } } ]Als u een nieuw IP-adres maakt, voegt u het volgende toe aan de sectie om ervoor te zorgen dat het platform het IP-adres maakt voordat
dependsOnu de cloudservice maakt."dependsOn": [ "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" ]Maak een cloudserviceobject (uitgebreide ondersteuning) en voeg de juiste verwijzingen toe als u virtuele netwerken of een openbaar IP-adres in uw
dependsOnsjabloon implementeert.{ "apiVersion": "2021-03-01", "type": "Microsoft.Compute/cloudServices", "name": "[variables('cloudServiceName')]", "location": "[parameters('location')]", "tags": { "DeploymentLabel": "[parameters('deploymentLabel')]", "DeployFromVisualStudio": "true" }, "dependsOn": [ "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]", "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" ], "properties": { "packageUrl": "[parameters('packageSasUri')]", "configurationUrl": "[parameters('configurationSasUri')]", "upgradeMode": "[parameters('upgradeMode')]" } }Maak een netwerkprofielobject voor uw cloudservice en koppel het openbare IP-adres aan de front-load balancer. Er wordt automatisch een load balancer gemaakt door het platform.
"networkProfile": { "loadBalancerConfigurations": [ { "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/loadBalancers/', variables('lbName'))]", "name": "[variables('lbName')]", "properties": { "frontendIPConfigurations": [ { "name": "[variables('lbFEName')]", "properties": { "publicIPAddress": { "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" } } } ] } } ] }Voeg de verwijzing naar uw sleutelkluis toe in
OsProfilede sectie van de ARM-sjabloon. Key Vault wordt gebruikt voor het opslaan van certificaten die zijn gekoppeld aan Cloud Services (uitgebreide ondersteuning). Voeg de certificaten toe aan Key Vault en verwijs vervolgens naar de certificaatvingerafdrukken in het serviceconfiguratiebestand (.cscfg). U moet ook Key Vault Toegangsbeleid inschakelen voor 'Azure Virtual Machines for deployment' (in de portal), zodat de resource voor Cloud Services (uitgebreide ondersteuning) certificaat dat is opgeslagen als geheimen kan ophalen uit Key Vault. De sleutelkluis moet zich in dezelfde regio en hetzelfde abonnement bevinden als de cloudservice en een unieke naam hebben. Zie Certificaten gebruiken met Cloud Services (uitgebreide ondersteuning) voor meer informatie."osProfile": { "secrets": [ { "sourceVault": { "id": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.KeyVault/vaults/{keyvault-name}" }, "vaultCertificates": [ { "certificateUrl": "https://{keyvault-name}.vault.azure.net:443/secrets/ContosoCertificate/{secret-id}" } ] } ] }Notitie
SourceVault is de ARM-resource-id voor uw sleutelkluis. U vindt deze informatie door de resource-id te zoeken in de sectie Eigenschappen van uw sleutelkluis.
- certificateUrl vindt u door te navigeren naar het certificaat in de sleutelkluis met het label Geheime id.
- certificateUrl moet de vorm hebben https://{keyvault-endpoin}/secrets/{secretname}/{secret-id}
Maak een rolprofiel. Zorg ervoor dat het aantal rollen, rolnamen, het aantal exemplaren in elke rol en grootte hetzelfde is in de sectie Serviceconfiguratie (.cscfg), ServiceDefinitie (.csdef) en rolprofiel in de ARM-sjabloon.
"roleProfile": { "roles": { "value": [ { "name": "WebRole1", "sku": { "name": "Standard_D1_v2", "capacity": "1" } }, { "name": "WorkerRole1", "sku": { "name": "Standard_D1_v2", "capacity": "1" } } ] } }(Optioneel) Maak een extensieprofiel om extensies toe te voegen aan uw cloudservice. In dit voorbeeld voegen we het externe bureaublad en de diagnostische azure Windows extensie toe.
Notitie
Het wachtwoord voor extern bureaublad moet tussen 8 en 123 tekens lang zijn en moet voldoen aan ten minste 3 van de vereisten voor wachtwoordcomplexiteit van het volgende: 1) Bevat een hoofdletter 2) Bevat een kleine letter 3) Bevat een numeriek cijfer 4) Bevat een speciaal teken 5) Besturingselementtekens zijn niet toegestaan
"extensionProfile": { "extensions": [ { "name": "RDPExtension", "properties": { "autoUpgradeMinorVersion": true, "publisher": "Microsoft.Windows.Azure.Extensions", "type": "RDP", "typeHandlerVersion": "1.2.1", "settings": "<PublicConfig>\r\n <UserName>[Insert Username]</UserName>\r\n <Expiration>1/21/2022 12:00:00 AM</Expiration>\r\n</PublicConfig>", "protectedSettings": "<PrivateConfig>\r\n <Password>[Insert Password]</Password>\r\n</PrivateConfig>" } }, { "name": "Microsoft.Insights.VMDiagnosticsSettings_WebRole1", "properties": { "autoUpgradeMinorVersion": true, "publisher": "Microsoft.Azure.Diagnostics", "type": "PaaSDiagnostics", "typeHandlerVersion": "1.5", "settings": "[parameters('wadPublicConfig_WebRole1')]", "protectedSettings": "[parameters('wadPrivateConfig_WebRole1')]", "rolesAppliedTo": [ "WebRole1" ] } } ] }Bekijk de volledige sjabloon.
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "cloudServiceName": { "type": "string", "metadata": { "description": "Name of the cloud service" } }, "location": { "type": "string", "metadata": { "description": "Location of the cloud service" } }, "deploymentLabel": { "type": "string", "metadata": { "description": "Label of the deployment" } }, "packageSasUri": { "type": "securestring", "metadata": { "description": "SAS Uri of the CSPKG file to deploy" } }, "configurationSasUri": { "type": "securestring", "metadata": { "description": "SAS Uri of the service configuration (.cscfg)" } }, "roles": { "type": "array", "metadata": { "description": "Roles created in the cloud service application" } }, "wadPublicConfig_WebRole1": { "type": "string", "metadata": { "description": "Public configuration of Windows Azure Diagnostics extension" } }, "wadPrivateConfig_WebRole1": { "type": "securestring", "metadata": { "description": "Private configuration of Windows Azure Diagnostics extension" } }, "vnetName": { "type": "string", "defaultValue": "[concat(parameters('cloudServiceName'), 'VNet')]", "metadata": { "description": "Name of vitual network" } }, "publicIPName": { "type": "string", "defaultValue": "contosocsIP", "metadata": { "description": "Name of public IP address" } }, "upgradeMode": { "type": "string", "defaultValue": "Auto", "metadata": { "UpgradeMode": "UpgradeMode of the CloudService" } } }, "variables": { "cloudServiceName": "[parameters('cloudServiceName')]", "subscriptionID": "[subscription().subscriptionId]", "dnsName": "[variables('cloudServiceName')]", "lbName": "[concat(variables('cloudServiceName'), 'LB')]", "lbFEName": "[concat(variables('cloudServiceName'), 'LBFE')]", "resourcePrefix": "[concat('/subscriptions/', variables('subscriptionID'), '/resourceGroups/', resourceGroup().name, '/providers/')]" }, "resources": [ { "apiVersion": "2019-08-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('vnetName')]", "location": "[parameters('location')]", "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "subnets": [ { "name": "WebTier", "properties": { "addressPrefix": "10.0.0.0/24" } } ] } }, { "apiVersion": "2019-08-01", "type": "Microsoft.Network/publicIPAddresses", "name": "[parameters('publicIPName')]", "location": "[parameters('location')]", "properties": { "publicIPAllocationMethod": "Dynamic", "idleTimeoutInMinutes": 10, "publicIPAddressVersion": "IPv4", "dnsSettings": { "domainNameLabel": "[variables('dnsName')]" } }, "sku": { "name": "Basic" } }, { "apiVersion": "2021-03-01", "type": "Microsoft.Compute/cloudServices", "name": "[variables('cloudServiceName')]", "location": "[parameters('location')]", "tags": { "DeploymentLabel": "[parameters('deploymentLabel')]", "DeployFromVisualStudio": "true" }, "dependsOn": [ "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]", "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" ], "properties": { "packageUrl": "[parameters('packageSasUri')]", "configurationUrl": "[parameters('configurationSasUri')]", "upgradeMode": "[parameters('upgradeMode')]", "roleProfile": { "roles": [ { "name": "WebRole1", "sku": { "name": "Standard_D1_v2", "capacity": "1" } }, { "name": "WorkerRole1", "sku": { "name": "Standard_D1_v2", "capacity": "1" } } ] }, "networkProfile": { "loadBalancerConfigurations": [ { "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/loadBalancers/', variables('lbName'))]", "name": "[variables('lbName')]", "properties": { "frontendIPConfigurations": [ { "name": "[variables('lbFEName')]", "properties": { "publicIPAddress": { "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" } } } ] } } ] }, "osProfile": { "secrets": [ { "sourceVault": { "id": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.KeyVault/vaults/{keyvault-name}" }, "vaultCertificates": [ { "certificateUrl": "https://{keyvault-name}.vault.azure.net:443/secrets/ContosoCertificate/{secret-id}" } ] } ] }, "extensionProfile": { "extensions": [ { "name": "RDPExtension", "properties": { "autoUpgradeMinorVersion": true, "publisher": "Microsoft.Windows.Azure.Extensions", "type": "RDP", "typeHandlerVersion": "1.2.1", "settings": "<PublicConfig>\r\n <UserName>[Insert Username]</UserName>\r\n <Expiration>1/21/2022 12:00:00 AM</Expiration>\r\n</PublicConfig>", "protectedSettings": "<PrivateConfig>\r\n <Password>[Insert Password]</Password>\r\n</PrivateConfig>" } }, { "name": "Microsoft.Insights.VMDiagnosticsSettings_WebRole1", "properties": { "autoUpgradeMinorVersion": true, "publisher": "Microsoft.Azure.Diagnostics", "type": "PaaSDiagnostics", "typeHandlerVersion": "1.5", "settings": "[parameters('wadPublicConfig_WebRole1')]", "protectedSettings": "[parameters('wadPrivateConfig_WebRole1')]", "rolesAppliedTo": [ "WebRole1" ] } } ] } } } ] }Implementeer de sjabloon en het parameterbestand (parameters definiëren in het sjabloonbestand) om de cloudservice-implementatie (uitgebreide ondersteuning) te maken. Raadpleeg deze voorbeeldsjablonen als vereist.
New-AzResourceGroupDeployment -ResourceGroupName "ContosOrg" -TemplateFile "file path to your template file" -TemplateParameterFile "file path to your parameter file"
Volgende stappen
- Bekijk veelgestelde vragen over Cloud Services (uitgebreide ondersteuning).
- Implementeer een cloudservice (uitgebreide ondersteuning) met behulp van de Azure Portal, PowerShell, Sjabloon of Visual Studio.
- Ga naar de opslagplaats Cloud Services voorbeelden van de Cloud Services (uitgebreide ondersteuning)