Quickstart: Azure Spring Apps inrichten met behulp van een ARM-sjabloon

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op:❌ Basic ✔️ Standard ✔️ Enterprise

In deze quickstart wordt beschreven hoe u een Azure Resource Manager-sjabloon (ARM-sjabloon) gebruikt om een Azure Spring Apps-cluster te implementeren in een bestaand virtueel netwerk.

Met Azure Spring Apps kunt u Spring-toepassingen eenvoudig implementeren in Azure zonder codewijzigingen. De service beheert de infrastructuur van Spring-toepassingen, zodat ontwikkelaars zich kunnen richten op hun code. Azure Spring Apps biedt levenscyclusbeheer met uitgebreide bewaking en diagnose, configuratiebeheer, servicedetectie, CI/CD-integratie, blauwgroene implementaties en meer.

Het Enterprise-implementatieplan bevat de volgende Tanzu-onderdelen:

  • Build-service
  • Toepassingsconfiguratieservice
  • Serviceregister
  • Spring Cloud Gateway
  • API-portal
  • Application Accelerator
  • Liveweergave van toepassing

Een Azure Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. U beschrijft de beoogde implementatie zonder de reeks programmeeropdrachten te schrijven om de implementatie te maken.

Vereisten

  • Een Azure-abonnement. Als u geen abonnement hebt, maakt u een gratis account voordat u begint.

  • Twee toegewezen subnetten voor het Azure Spring Apps-cluster, een voor de serviceruntime en een voor de Spring-toepassingen. Zie het gedeelte Vereisten voor virtuele netwerken van Azure Spring Apps implementeren in een virtueel netwerk voor subnet- en virtuele netwerkvereisten.

  • Een bestaande Log Analytics-werkruimte voor diagnostische instellingen van Azure Spring Apps en een Application Insights-resource op basis van een werkruimte. Zie Logboeken en metrische gegevens analyseren met diagnostische instellingen en Application Insights Java In-Process Agent in Azure Spring Apps voor meer informatie.

  • Drie interne CIDR-bereiken (Classless Inter-Domain Routing) (ten minste /16 ) die u hebt geïdentificeerd voor gebruik door het Azure Spring Apps-cluster. Deze CIDR-bereiken zijn niet rechtstreeks routeerbaar en worden alleen intern gebruikt door het Azure Spring Apps-cluster. Clusters gebruiken mogelijk niet 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 of 192.0.2.0/24 voor de interne CIDR-bereiken van Azure Spring Apps. Clusters gebruiken mogelijk ook geen IP-bereiken die zijn opgenomen in het adresbereik van het virtuele clusternetwerk.

  • Servicemachtigingen verleend aan het virtuele netwerk. De Resourceprovider van Azure Spring Apps vereist eigenaarsmachtigingen voor uw virtuele netwerk om een toegewezen en dynamische service-principal in het virtuele netwerk te verlenen voor verdere implementatie en onderhoud. Zie de sectie Service verlenen aan de sectie Azure Spring Apps implementeren in een virtueel netwerk voor instructies en meer informatie.

  • Als u Azure Firewall of een NVA (Network Virtual Appliance) gebruikt, moet u ook voldoen aan de volgende vereisten:

  • Als u voor het eerst een Azure Spring Apps Enterprise-planexemplaren implementeert in het doelabonnement, raadpleegt u de sectie Vereisten van het Enterprise-plan in Azure Marketplace.

De sjabloon controleren

De sjablonen die in deze quickstart worden gebruikt, zijn afkomstig uit de Referentiearchitectuur van Azure Spring Apps.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "springCloudInstanceName": {
            "type": "string",
            "metadata": {
                "description": "The instance name of the Azure Spring Cloud resource"
            }
        },
        "appInsightsName": {
            "type": "string",
            "metadata": {
                "description": "The name of the Application Insights instance for Azure Spring Cloud"
            }
        },
        "laWorkspaceResourceId": {
            "type": "string",
            "metadata": {
                "description": "The resource ID of the existing Log Analytics workspace. This will be used for both diagnostics logs and Application Insights"
            }
        },
        "springCloudAppSubnetID": {
            "type": "string",
            "metadata": {
                "description": "The resourceID of the Azure Spring Cloud App Subnet"
            }
        },
        "springCloudRuntimeSubnetID": {
            "type": "string",
            "metadata": {
                "description": "The resourceID of the Azure Spring Cloud Runtime Subnet"
            }
        },
        "springCloudServiceCidrs": {
            "type": "string",
            "defaultValue": "10.0.0.0/16,10.2.0.0/16,10.3.0.1/16",
            "metadata": {
                "description": "Comma-separated list of IP address ranges in CIDR format. The IP ranges are reserved to host underlying Azure Spring Cloud infrastructure, which should be 3 at least /16 unused IP ranges, must not overlap with any Subnet IP ranges"
            }
        },        
        "tags": {
            "type": "object",
            "metadata": {
                "description": "The tags that will be associated to the Resources"
            },
            "defaultValue": {
                "environment": "lab"
            }
        }
    },
    "variables": {
        "location": "[resourceGroup().location]"                    
    },
    "resources": [
        {
            "type": "Microsoft.Insights/components",
            "name": "[parameters('appInsightsName')]",
            "apiVersion": "2020-02-02",
            "location": "[variables('location')]",
            "tags": "[parameters('tags')]",
            "properties": {
                "Application_Type": "web",
                "ApplicationId": "[parameters('appInsightsName')]",
                "Flow_Type": "Bluefield",
                "Request_Source": "rest",
                "WorkspaceResourceId": "[parameters('laWorkspaceResourceId')]"
            }
        },
        {
            "apiVersion": "2022-03-01-preview",
            "name": "[parameters('springCloudInstanceName')]",
            "location": "[variables('location')]",
            "tags": "[parameters('tags')]",
            "dependsOn": [
                "[resourceId('Microsoft.Insights/components', parameters('appInsightsName'))]"
                
            ],
            "type": "Microsoft.AppPlatform/Spring",
            "sku": {
                "name": "E0",
                "tier": "Enterprise"
            },
            "properties": {
                "networkProfile": {
                    "serviceCidr": "[parameters('springCloudServiceCidrs')]",
                    "serviceRuntimeSubnetId": "[parameters('springCloudRuntimeSubnetID')]",
                    "appSubnetId": "[parameters('springCloudAppSubnetID')]"
                }
            },
            "resources": [
                {
                    "type": "serviceRegistries",
                    "name": "default",
                    "apiVersion": "2022-03-01-preview",
                    "location": "[variables('location')]",
                    "dependsOn": [
                        "[resourceId('Microsoft.AppPlatform/Spring', parameters('springCloudInstanceName'))]"
                    ]
                },
                {
                    "type": "configurationServices",
                    "name": "default",
                    "apiVersion": "2022-03-01-preview",
                    "location": "[variables('location')]",
                    "dependsOn": [
                        "[resourceId('Microsoft.AppPlatform/Spring', parameters('springCloudInstanceName'))]"
                    ]
                },
                {
                    "type": "gateways",
                    "name": "default",
                    "apiVersion": "2022-03-01-preview",
                    "location": "[variables('location')]",
                    "sku": {
                        "name": "E0",
                        "tier": "Enterprise",
                        "capacity": 2
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.AppPlatform/Spring', parameters('springCloudInstanceName'))]"
                    ]
                },
                {
                    "type": "apiPortals",
                    "name": "default",
                    "apiVersion": "2022-03-01-preview",
                    "location": "[variables('location')]",
                    "sku": {
                        "name": "E0",
                        "tier": "Enterprise",
                        "capacity": 1
                    },
                    "properties": {
                        "gatewayIds": [
                            "[concat(resourceId('Microsoft.AppPlatform/Spring', parameters('springCloudInstanceName')), '/gateways/default')]"
                        ]
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.AppPlatform/Spring', parameters('springCloudInstanceName'))]"
                    ]
                },
                {
                    "type": "Microsoft.AppPlatform/Spring/buildServices/agentPools",
                    "name": "[concat(parameters('springCloudInstanceName'), '/default/default')]",
                    "apiVersion": "2022-03-01-preview",
                    "location": "[variables('location')]",
                    "properties": {
                        "poolSize": {
                            "name": "S1"
                        }
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.AppPlatform/Spring', parameters('springCloudInstanceName'))]"
                    ]
                }
            ]
        },
        {
            "apiVersion": "2022-03-01-preview",
            "name": "[concat(parameters('springCloudInstanceName'), '/default/default/default')]",
            "type": "Microsoft.AppPlatform/Spring/buildservices/builders/buildpackBindings",            
            "properties": {
                "bindingType": "ApplicationInsights",
                "launchProperties": {
                    "properties": {
                        "sampling_percentage": 10,
                        "connection_string": "[reference(concat('microsoft.insights/components/', parameters('appInsightsName')), '2015-05-01').ConnectionString]"
                    }
                }
            },
            "dependsOn": [
                "[resourceId('Microsoft.AppPlatform/Spring', parameters('springCloudInstanceName'))]"
            ]
        },
        {
            "type": "Microsoft.AppPlatform/Spring/providers/diagnosticSettings",
            "name": "[concat(parameters('springCloudInstanceName'), '/Microsoft.Insights/monitoring')]",
            "dependsOn": [  
                "[resourceId('Microsoft.AppPlatform/Spring/', parameters('springCloudInstanceName'))]"       
            ],
            "apiVersion": "2017-05-01-preview",
            "properties": {
                "name": "monitoring",
                "workspaceId": "[parameters('laWorkspaceResourceId')]",
                "logs": [
                    {
                        "category": "ApplicationConsole",
                        "enabled": true,
                        "retentionPolicy": {
                            "days": 30,
                            "enabled": false
                        }
                    }
                ]
            }
        }
               
    ],
    "outputs": {
    }
}

Er worden twee Azure-resources gedefinieerd in de sjabloon:

De sjabloon implementeren

Voer de volgende stappen uit om de sjabloon te implementeren.

Selecteer eerst de volgende afbeelding om u aan te melden bij Azure en een sjabloon te openen. Met de sjabloon maakt u een Azure Spring Apps-exemplaar in een bestaand virtueel netwerk en een Application Insights-exemplaar op basis van een werkruimte in een bestaande Azure Monitor Log Analytics-werkruimte.

Voer vervolgens waarden in voor de volgende velden:

  • Resourcegroep: Selecteer Nieuwe maken, voer een unieke naam in voor de resourcegroep en selecteer VERVOLGENS OK.
  • springCloudInstanceName: voer de naam in van de Azure Spring Apps-resource.
  • appInsightsName: Voer de naam in van het Application Insights-exemplaar voor Azure Spring Apps.
  • laWorkspaceResourceId: voer de resource-id in van de bestaande Log Analytics-werkruimte (bijvoorbeeld /subscriptions/<your subscription>/resourcegroups/<your Log Analytics resource group>/providers/Microsoft.OperationalInsights/workspaces/<your Log Analytics workspace name>.)
  • springCloudAppSubnetID: Voer de resource-id in van het Subnet van de Azure Spring Apps-toepassing.
  • springCloudRuntimeSubnetID: Voer de resource-id in van het Subnet van Azure Spring Apps Runtime.
  • springCloudServiceCidrs: Voer een door komma's gescheiden lijst met IP-adresbereiken (drie in totaal) in CIDR-indeling in. De IP-bereiken zijn gereserveerd voor het hosten van de onderliggende Azure Spring Apps-infrastructuur. Deze drie bereiken moeten ten minste /16 ongebruikte IP-bereiken zijn en mogen niet overlappen met routeerbare IP-bereiken van subnetten die in het netwerk worden gebruikt.
  • tags: Voer aangepaste tags in.

Selecteer Ten slotte Beoordelen + Maken en vervolgens Maken.

Geïmplementeerde resources bekijken

U kunt de Azure-portal gebruiken om de geïmplementeerde resources te controleren of Azure CLI of een Azure PowerShell-script gebruiken om de geïmplementeerde resources weer te geven.

Resources opschonen

Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources het beste intact laten. Als u de resourcegroep niet meer nodig hebt, verwijdert u deze. Hierdoor worden ook de resources in de resourcegroep verwijderd. Als u de resourcegroep wilt verwijderen met behulp van Azure CLI of Azure PowerShell, gebruikt u de volgende opdrachten:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Volgende stappen

In deze quickstart hebt u een Azure Spring Apps-exemplaar geïmplementeerd in een bestaand virtueel netwerk met behulp van een ARM-sjabloon en vervolgens de implementatie gevalideerd. Ga verder met de volgende resources voor meer informatie over Azure Spring Apps en Azure Resource Manager.