Краткое руководство. Подготовка Azure Spring Apps с помощью Bicep

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья относится к:❌ Basic ✔️ Standard ✔️ Enterprise

В этом кратком руководстве рассказывается, как развернуть кластер Azure Spring Apps в существующей виртуальной сети с помощью шаблона Bicep.

Azure Spring Apps позволяет легко развертывать в Azure приложения Spring без изменений кода. Эта служба управляет инфраструктурой приложений Spring, благодаря чему разработчики могут сосредоточиться на коде. Azure Spring Apps обеспечивает управление жизненным циклом за счет комплексного мониторинга и диагностики, управления конфигурацией, обнаружения служб, интеграции CI/CD, выполнения сине-зеленых развертываний и прочего.

План развертывания Enterprise включает следующие компоненты Tanzu:

  • Служба сборки;
  • Служба конфигурации приложений;
  • Реестр служб
  • Spring Cloud Gateway
  • Портал API.

Необходимые компоненты

  • Подписка Azure. Если у вас еще нет подписки, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
  • Две выделенные подсети для кластера Azure Spring Apps: одна для среды выполнения службы и вторая для приложений Spring. Подробнее о требованиях к подсети и виртуальной сети см. в разделе Требования виртуальной сети в статье Развертывание Azure Spring Apps в виртуальной сети.
  • Существующая рабочая область Log Analytics для параметров диагностики службы Azure Spring Apps. Дополнительные сведения см. в разделе Анализ журналов и метрик на основе параметров диагностики.
  • Три внутренних диапазона бесклассовой междоменной маршрутизации (CIDR) (как минимум /16 каждый), которые вы определили для использования в кластере Azure Spring Apps. Эти диапазоны CIDR не будут напрямую маршрутизироваться и будут использоваться только внутри кластера Приложений Azure Spring. Кластеры не могут использовать 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 или 192.0.2.0/24 в качестве внутренних диапазонов CIDR для приложения Spring, а также диапазоны IP-адресов, включаемые в диапазон адресов виртуальных сетей кластера.
  • Разрешение службы, предоставленное виртуальной сети. Поставщику ресурсов Azure Spring Apps требуются разрешения владельца для виртуальной сети. Это позволит предоставлять выделенный и динамический субъект-службу в виртуальной сети для дальнейшего развертывания и обслуживания. Инструкции и дополнительные сведения см. в разделе Разрешение службы, предоставленное виртуальной сети статьи Развертывание Azure Spring Apps в виртуальной сети.
  • Если вы используете Брандмауэр Azure или сетевое виртуальное устройство (NVA), вам также потребуется выполнить следующие предварительные требования:
  • Azure CLI
  • Если вы развертываете экземпляр плана Azure Spring Apps Enterprise впервые в целевой подписке, см. раздел "Требования" плана Enterprise в Azure Marketplace.

Развертывание с помощью Bicep

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

Создайте файл azuredeploy.bicep со следующим содержимым:

@description('The instance name of the Azure Spring Cloud resource')
param springCloudInstanceName string

@description('The name of the Application Insights instance for Azure Spring Cloud')
param appInsightsName string

@description('The resource ID of the existing Log Analytics workspace. This will be used for both diagnostics logs and Application Insights')
param laWorkspaceResourceId string

@description('The resourceID of the Azure Spring Cloud App Subnet')
param springCloudAppSubnetID string

@description('The resourceID of the Azure Spring Cloud Runtime Subnet')
param springCloudRuntimeSubnetID string

@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')
param springCloudServiceCidrs string = '10.0.0.0/16,10.2.0.0/16,10.3.0.1/16'

@description('The tags that will be associated to the Resources')
param tags object = {
  environment: 'lab'
}

var location = resourceGroup().location

resource appInsights 'Microsoft.Insights/components@2020-02-02-preview' = {
  name: appInsightsName
  location: location
  kind: 'web'
  tags: tags
  properties: {
    Application_Type: 'web'
    Flow_Type: 'Bluefield'
    Request_Source: 'rest'
    WorkspaceResourceId: laWorkspaceResourceId
  }
}

resource springCloudInstance 'Microsoft.AppPlatform/Spring@2022-03-01-preview' = {
  name: springCloudInstanceName
  location: location
  tags: tags
  sku: {
    name: 'E0'
    tier: 'Enterprise'
  }
  properties: {
    networkProfile: {
      serviceCidr: springCloudServiceCidrs
      serviceRuntimeSubnetId: springCloudRuntimeSubnetID
      appSubnetId: springCloudAppSubnetID
    }
  }

  resource serviceRegistries 'serviceRegistries' = {
    // The only supported value is 'default'
    name: 'default'

  }

  resource configurationServices 'configurationServices' = {
    // The only supported value is 'default'
    name: 'default'
    
  }

  resource gateways 'gateways' = {
    // The only supported value is 'default'
    name: 'default'
    sku: {
      capacity: 2
      name: 'E0'
      tier: 'Enterprise'
    }
    
  }

  resource apiPortals 'apiPortals' = {
    // The only supported value is 'default'
    name: 'default'
    sku: {
      capacity: 1
      name: 'E0'
      tier: 'Enterprise'
    }
    properties: {
      gatewayIds: [
        '${springCloudInstance.id}/gateways/default'
      ]
    }
    
  }  
}

resource agentPools 'Microsoft.AppPlatform/Spring/buildservices/agentPools@2022-03-01-preview' = {
  
  name: '${springCloudInstance.name}/default/default' //The only supported value is 'default'
  properties: {
    poolSize: {
      name: 'S1'
    }
  }

}

resource springCloudMonitoringSettings 'Microsoft.AppPlatform/Spring/buildservices/builders/buildpackBindings@2022-03-01-preview' = {
  name: '${springCloudInstance.name}/default/default/default' //The only supported value is 'default'
  properties: {
    bindingType: 'ApplicationInsights'
    launchProperties: {
      properties: {
        sampling_percentage: '10'
        connection_string: appInsights.properties.ConnectionString
      }
    }
    
  }
}

resource springCloudDiagnostics 'microsoft.insights/diagnosticSettings@2017-05-01-preview' = {
  name: 'monitoring'
  scope: springCloudInstance
  properties: {
    workspaceId: laWorkspaceResourceId
    logs: [
      {
        category: 'ApplicationConsole'
        enabled: true
        retentionPolicy: {
          days: 30
          enabled: false
        }
      }
    ]
  }
}

Затем откройте окно Bash и выполните приведенную ниже команду Azure CLI, заменив заполнители <value> следующими значениями:

  • resource-group: имя группы ресурсов для развертывания экземпляра Azure Spring Apps.

  • springCloudInstanceName: имя ресурса Azure Spring Apps.

  • appInsightsName: имя экземпляра Application Insights для Azure Spring Apps.

  • laWorkspaceResourceId: идентификатор ресурса существующей рабочей области Log Analytics (например, /subscriptions/<ваша подписка>/resourcegroups/<группа ресурсов Log Analytics>/providers/ Microsoft.OperationalInsights/workspaces/<имя вашей рабочей области Log Analytics>).

  • springCloudAppSubnetID: идентификатор ресурса для подсети приложения в службе "Приложения Azure Spring".

  • springCloudRuntimeSubnetID: идентификатор ресурса для подсети среды выполнения в службе "Приложения Azure Spring".

  • springCloudServiceCidrs: разделенный запятыми список диапазонов IP-адресов (всего 3) в формате CIDR. Диапазоны IP-адресов зарезервированы для размещения базовой инфраструктуры Azure Spring Apps. Эти три диапазона должны представлять собой как минимум неиспользуемые диапазоны IP-адресов /16 и не должны перекрываться с диапазонами IP-адресов маршрутизируемых подсетей, используемыми в сети.

    az deployment group create \
        --resource-group <value> \
        --name initial \
        --template-file azuredeploy.bicep \
        --parameters \
            springCloudInstanceName=<value> \
            appInsightsName=<value> \
            laWorkspaceResourceId=<value> \
            springCloudAppSubnetID=<value> \
            springCloudRuntimeSubnetID=<value> \
            springCloudServiceCidrs=<value>
    

    Эта команда использует шаблон Bicep для создания экземпляра Azure Spring Apps в существующей виртуальной сети. Команда также создает экземпляр Application Insights на основе рабочей области в существующей рабочей области Azure Monitor Log Analytics.

Просмотр развернутых ресурсов

Вы можете использовать портал Azure, чтобы проверить развернутые ресурсы, либо скрипт Azure CLI или Azure PowerShell, чтобы получить список развернутых ресурсов.

Очистка ресурсов

Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять. Удалите ненужную группу ресурсов. Ресурсы в ней будут также удалены. Чтобы удалить группу ресурсов с помощью Azure CLI, используйте следующие команды:

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

Следующие шаги

В этом кратком руководстве вы научились развертывать экземпляр службы Azure Spring Apps в существующей виртуальной сети с помощью Bicep, а затем проверять результаты развертывания. Дополнительные сведения о Azure Spring Apps содержатся в статьях ниже.