Schnellstart: Bereitstellen von Azure Spring Apps mithilfe einer ARM-Vorlage

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für:❌ Basic ✔️ Standard ✔️ Enterprise

In dieser Schnellstartanleitung wird beschrieben, wie Sie eine Azure Resource Manager-Vorlage (ARM-Vorlage) verwenden, um einen Azure Spring Apps-Cluster in einem vorhandenen virtuellen Netzwerk bereitzustellen.

Mit Azure Spring Apps lassen sich Spring-Anwendungen ganz einfach und ohne Codeänderungen in Azure bereitstellen. Der Dienst verwaltet die Infrastruktur von Spring-Anwendungen und ermöglicht es Entwicklern dadurch, sich auf ihren Code zu konzentrieren. Azure Spring Apps bietet eine Lebenszyklusverwaltung mit umfassender Überwachung und Diagnose, Konfigurationsverwaltung, Dienstermittlung, CI/CD-Integration, Blau/Grün-Bereitstellungen und mehr.

Der Enterprise-Bereitstellungsplan umfasst die folgenden Tanzu-Komponenten:

  • Buildservice
  • Anwendungskonfigurationsdienst
  • Dienstregistrierung
  • Spring Cloud Gateway
  • API-Portal
  • Application Accelerator
  • Anwendungsliveansicht

Eine Azure Resource Manager-Vorlage ist eine JSON-Datei (JavaScript Object Notation), die die Infrastruktur und die Konfiguration für Ihr Projekt definiert. Die Vorlage verwendet eine deklarative Syntax. Sie beschreiben Ihre geplante Bereitstellung, ohne die Abfolge der Programmierbefehle zu schreiben, mit denen die Bereitstellung erstellt wird.

Voraussetzungen

Überprüfen der Vorlage

Die in dieser Schnellstartanleitung verwendeten Vorlagen stammen aus der Azure Spring Apps-Referenzarchitektur.

{
    "$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": {
    }
}

Zwei Azure-Ressourcen sind in der Vorlage definiert:

Bereitstellen der Vorlage

Führen Sie die folgenden Schritte aus, um die Vorlage bereitzustellen.

Wählen Sie zunächst das folgende Bild aus, um sich bei Azure anzumelden und eine Vorlage zu öffnen. Die Vorlage erstellt eine Azure Spring Apps-Instanz in einer vorhandenen Virtual Network-Instanz und eine arbeitsbereichsbasierte Application Insights-Instanz in einem vorhandenen Azure Monitor Log Analytics-Arbeitsbereich.

Geben Sie als Nächstes Werte für die folgenden Felder ein:

  • Ressourcengruppe: Wählen Sie die Option Neu erstellen aus, geben Sie einen eindeutigen Namen für die Ressourcengruppe ein, und wählen Sie dann OK aus.
  • springCloudInstanceName: Geben Sie den Namen der Azure Spring Apps-Ressource ein.
  • appInsightsName: Geben Sie den Namen der Application Insights-Instanz für Azure Apps Cloud ein.
  • laWorkspaceResourceId: Geben Sie die Ressourcen-ID des vorhandenen Log Analytics-Arbeitsbereichs ein (z. B. / subscriptions/<Ihr Abonnement>/resourcegroups/<Ihre Log Analytics-Ressourcengruppe>/providers/Microsoft.OperationalInsights/workspaces/<Name Ihres Log Analytics-Arbeitsbereichs>.)
  • springCloudAppSubnetID: Geben Sie die Ressourcen-ID des Azure Spring Apps-Anwendungssubnetzes ein.
  • springCloudRuntimeSubnetID: Geben Sie die Ressourcen-ID des Azure Spring Apps-Runtimesubnetzes ein.
  • springCloudServiceCidrs: Geben Sie eine durch Kommas getrennte Liste von IP-Adressbereichen (insgesamt drei) im CIDR-Format ein. Die IP-Adressbereiche sind zum Hosten der zugrunde liegenden Azure Spring Apps-Infrastruktur reserviert. Diese drei Bereiche müssen nicht verwendete IP-Adressbereiche vom Typ /16 (oder größer) sein und dürfen sich nicht mit routingfähigen Subnetz-IP-Bereichen überschneiden, die im Netzwerk verwendet werden.
  • tags: Geben Sie benutzerdefinierte Tags ein.

Wählen Sie abschließend Überprüfen und erstellen und dann Erstellen aus.

Überprüfen der bereitgestellten Ressourcen

Sie können entweder das Azure-Portal nutzen, um die bereitgestellten Ressourcen zu überprüfen, oder Azure CLI oder ein Azure PowerShell-Skript, um die bereitgestellten Ressourcen aufzulisten.

Bereinigen von Ressourcen

Falls Sie mit weiteren Schnellstartanleitungen und Tutorials fortfahren möchten, sollten Sie die Ressourcen nicht bereinigen. Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden die Ressourcen in der Ressourcengruppe gelöscht. Wenn Sie die Ressourcengruppe mit der Azure CLI oder Azure PowerShell löschen möchten, verwenden Sie die folgenden Befehle:

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

Nächste Schritte

In dieser Schnellstartanleitung haben Sie mithilfe einer ARM-Vorlage eine Azure Spring Apps-Instanz in einem vorhandenen virtuellen Netzwerk bereitgestellt und die Bereitstellung überprüft. Weitere Informationen zu Azure Spring Apps und zum Azure Resource Manager finden Sie in den folgenden Ressourcen.