Service Fabric - как развернуть несколько веток кода в одном кластере?

Из-за требований к оборудованию, что каждый кластер должен иметь как минимум 3 сервера, я хотел бы использовать это оборудование для поддержки нескольких ветвей / сред. В частности, у нас обычно есть 3 ветки Dev и 3 тестовые ветки, работающие одновременно для приложения для поддержки нескольких параллельных проектов разработки. После выпуска в продакшн код снова объединяется с другими ветвями.

Я понимаю, что могу создать несколько экземпляров типа приложения, но я думаю, что мне действительно нужно иметь несколько версий типа приложения в одном кластере. Вполне возможно, что развитие может происходить в ветвях A и B одновременно. Мы хотели бы протестировать и развернуть обе ветки в Dev Cluster.

Точно так же я хотел бы использовать тот же кластер для предоставления конечной точки тестовой среды. По мере продвижения кода я мог бы развернуть версию приложения TestB, если исправления ошибок произойдут, они будут исправлены и развернуты в версии DevB этого типа приложения.

Чтобы справиться с проблемами порта конечных точек WebAPI, мы планируем, чтобы сценарий сборки выбирал манифест службы WEBAPI, зависящий от среды, поскольку он содержит номер порта, который предоставляет приложение Service Fabric для вызывающих приложений. Итак, у меня будет файл ServiceManifest-DevB.xml, который будет переименован в простой старый ServiceManifest.xml и упакован вместе со сборкой DevB, когда она выйдет. Тогда ServiceManifest-TestB.xml будет делать то же самое, но с другим портом. Другой вариант - Tokenizer.

Но я не понимаю, как я могу иметь разные версии одного и того же типа приложения, работающие в кластере? Могу ли я переопределить тип приложения в файлах параметров или что-то в этом роде? Я очень надеюсь, что для этого мне не нужно строить 6 кластеров? Это тонна оборудования, которое не летает.

Пожалуйста, помогите и заранее спасибо, Грег


person gperrego    schedule 28.02.2017    source источник


Ответы (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">

Легко, когда знаешь, а знание - половина дела.

person gperrego    schedule 08.03.2018
comment
Как заставить его работать с тем же номером порта, есть ли способ изменить URL-адрес с каким-либо суффиксом, например localhost: 20443 / SIT / Account / login localhost: 20443 / UAT / Account / login что-то вроде выше - person FHN; 06.06.2021

Вы можете передать желаемую версию приложения при создании экземпляра приложения через New-ServiceFabricApplication. Просто скопируйте, зарегистрируйте и обновите нужные вам типы и версии приложений.

person masnider    schedule 28.02.2017
comment
Привет, парень, извини за небольшую задержку с возвращением к тебе здесь. :) У вас есть правильный ответ, если вы развертываете вручную, но если вы используете файлы параметров приложения и профиль публикации, ответ состоит в том, чтобы обновить ApplicaitonName в файле ApplicationParamter. - person gperrego; 08.03.2018