Service Fabric - Как развернуть несколько веток кода в одном кластере?
Из-за требований к оборудованию, что в каждом кластере должно быть минимум 3 сервера, я бы хотел использовать это оборудование для поддержки нескольких филиалов / сред. В частности, у нас обычно есть 3 ветки Dev и 3 Test, работающие одновременно для приложения, поддерживающего несколько параллельных проектов разработки. После того, как мы выпускаем в производство, код снова сливается с другими ветками.
Я понимаю, что могу создать несколько экземпляров типа приложения, но мне кажется, что мне действительно нужно иметь несколько версий типа приложения в одном кластере. Вполне возможно, что развитие может происходить в ветвях A и B одновременно. Мы хотели бы протестировать и развернуть обе ветви в Dev Cluster.
Точно так же я хотел бы использовать тот же кластер для предоставления конечной точки тестовой среды. По мере продвижения кода я мог бы развернуть версию приложения TestB, если бы исправления ошибок происходили, они были бы исправлены и развернуты в версии DevB этого типа приложения.
Для обработки конечных точек WebAPI Проблемы с портами мы планируем, чтобы скрипт компоновки выбрал манифест службы WEBAPI для конкретной среды, поскольку он содержит номер порта, который предоставляет приложение Service Fabric для вызывающих приложений. Поэтому у меня будет файл ServiceManifest-DevB.xml, который будет переименован в обычный старый ServiceManifest.xml и упакован вместе со сборкой DevB, когда он выйдет. Тогда ServiceManifest-TestB.xml будет делать то же самое, но иметь другой порт. Другим вариантом здесь является Tokenizer.
Но я борюсь за то, как я могу иметь разные версии одного и того же типа приложения, работающие в кластере? Могу ли я переопределить тип приложения в файлах параметров или что-то подобное? Я действительно надеюсь, что мне не нужно строить 6 кластеров для этого? Это тонна оборудования, которое не будет летать.
Пожалуйста, помогите и спасибо заранее, Грег
2 ответа
У меня был этот вопрос год назад, и я записал его. Теперь его обратно, так что на этот раз я задокументирую это!!!
Я использую один кластер для обеих своих сред разработки и тестирования, и мы используем две ветви для них. Мне нужно было иметь возможность развернуть приложение для этих двух веток под разными именами приложений.
Чтобы понять это, я пошел по следу PS1. Сначала вы посмотрите на Deploy-FabricApplication.ps1, который только что передал PublishProfile в Publish-NewServiceFabricApplication.ps1. Этот парень использует метод в Utilities.ps1, который называется Get-ApplicationNameFromApplicationParameterFile. Все, что для этого нужно, - это открыть файл параметров приложения для конкретной среды и прочитать его сверху вниз:
Используйте это мой файл параметров приложения Dev:
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/MyAppDEVA" xmlns="http://schemas.microsoft.com/2011/01/fabric">
Используйте это в моем файле параметров тестового приложения "
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/MyAppTEST" xmlns="http://schemas.microsoft.com/2011/01/fabric">
Легко, когда вы знаете, а знать - это полдела.
Вы можете передать нужную версию приложения при создании экземпляра приложения через New-ServiceFabricApplication. Просто скопируйте, зарегистрируйте и обновите типы приложений и версии, которые вам нужны.