Како применити апликацију Цлоуд Фоундри са (готово) нула страха помоћу Травис ЦИ

Примене апликација у облаку требало би да буду безболне. Морали бисмо бити у могућности да применимо нови код непрекидно, онолико често колико желимо, без страха. Плаво-зелени модел примене омогућава нам то.

Недавно сам се придружио новом тиму на послу који је примењивао апликације ноде.јс Цлоуд Фоундри у ИБМ Цлоуд користећи Травис са добављачем имплементације Блуемик ЦлоудФоундри. Ово одлично функционише за брзо и лако постављање примене са само неколико параметара.

Нажалост, свако постављање значи прекид рада ваше апликације јер се постојећа верзија зауставља и нова верзија покреће. Такође, не постоји верификација да је нови код добар пре него што се стари однесе.

Помоћу плаво-зелене технике примене, ваша тренутна апликација (плава) наставља да ради и узима мрежни саобраћај. Док је ваш нови код апликације (зелени) постављен на привременој рути. Нова Зелена апликација може се потврдити на привременој рути. Ако постоје проблеми, постављање се зауставља. Апликација Блуе наставља да непрекидно опслужује саобраћај. Једном када је зелена апликација проверена, рутер се ажурира тако да показује на зелену апликацију. Плаво се може зауставити.

На тај начин је увек доступна верзија апликације за преузимање промета. Било какви проблеми у примени или извођењу новог кода неће утицати на доступност ваше апликације.

Одмах сам почео да тражим око себе начин да плаво-зелено применимо наше апликације. У интересу писања што мање прилагођеног кода, одлучио сам да искористим додатак цф-блуе-греен-деплои за интерфејс командне линије Цлоуд Фоундри (ЦЛИ). Поделићу како сам ово урадио овде.

Претпоставићу да сте, ако сте овде слетели, вероватно прешли поенту да једноставно „започнете“ са Трависом. Нећу овде покривати те детаље.

Ако нисте заинтересовани за праћење и желите само да дођете директно до робе, можете да клонирате мој радни узорак са ГитХуб-а.

Инсталирање ЦФ ЦЛИ и плаво-зеленог додатка

С обзиром да не користимо добављача примене Цлоуд Фоундри, морамо сами да инсталирамо Цлоуд Фоундри ЦЛИ, као и плаво-зелени додатак за примену. То можемо учинити у before_deployфази животног циклуса Трависове изградње.

Имајте на уму да before_deployфаза тече пре сваког добављача примене. Ако радите додатне ствари у фази увођења, можда ћете желети да ове кораке преместите у after_successфазу (која се покреће само једном након успешне израде) како бисте избегли непотребне додатне инсталације. Ове кораке такође можете да преместите у саму скрипту за размештање, коју ћемо написати следеће.

Без обзира где сте га ставили, ево скрипте:

- echo "Installing cf cli"- test x$TRAVIS_OS_NAME = "xlinux" && rel="linux64-binary" || rel="macosx64"; wget "//cli.run.pivotal.io/stable?release=${rel}&source=github" -qO cf.tgz && tar -zxvf cf.tgz && rm cf.tgz- export PATH="$PATH:."- cf --version
- echo "Installing cf blue-green deploy plugin"- cf add-plugin-repo CF-Community //plugins.cloudfoundry.org- cf install-plugin blue-green-deploy -r CF-Community -f

Команда за инсталирање ЦЛИ-а долази директно из ЦлоудФоундри ДПЛ извора. Наредбе за инсталирање плаво-зеленог додатка за постављање долазе из РЕАДМЕ додатка.

Позивање на плаво-зелено распоређивање

Да бисмо позвали плаво-зелено размештање, користићемо добављача распоређивања скрипти, који извршава пружену наредбу и проверава нулти статус као знак успеха.

deploy:# on update to master branch we deploy to Cloud Foundry- provider: script skip_cleanup: true script: ./scripts/cf-blue-green-deploy.sh blue-green-cf-travis manifest.yml prod on: branch: master

Имајте на уму да skip_cleanupје постављено на true. Без овога, цф ЦЛИ и плаво-зелени додатак за постављање који сте управо инсталирали биће уклоњени пре покретања имплементације.

Скрипта цф-блуе-греен-деплои.сх пријављује се у АПИ Цлоуд Фоундри и позива плаво-зелени додатак за примену. Поред навођења имена апликације и датотеке манифеста, такође можете проследити скрипту за тестирање дима плаво-зеленом додатку за примену. Додатак ће позвати скрипту за тестирање дима након постављања новог кода апликације, али пре него што се рута апликације пребаци на нову апликацију. То вам омогућава да покренете било који број тестова против новог кода пре него што му стварни саобраћај приступи.

Скрипта за тестирање дима преноси се једним аргументом. Аргумент је привремени УРЛ новопостављене апликације. Ако скрипта за тестирање дима успешно изађе, плаво-зелено постављање ће се завршити пребацивањем руте на нову апликацију. Ако скрипта за тестирање дима изађе са грешком, саобраћај наставља да тече ка старој верзији апликације. Нова верзија остаје доступна за решавање проблема.

У мом примеру пројекта, скрипта за дим тест позива АПИ / верзију и потврђује да се враћа статусним кодом 200.

У нашим стварним пројектима на делу, покрећемо Постман колекцију против новопостављене апликације. Желите да ваш пакет за тестирање дима буде довољно велик да се осећате сигурним у свој нови код, али не толико велик да вам треба пуно времена да бисте завршили размештање или вам се пахуљасти тестови онемогуће да довршите успешно постављање.

По жељи бисте могли да покренете свеобухватнији пакет регресионих тестова after_deployнакон што нови код буде објављен.

Нежељени ефекти плаво-зелене примене у ИБМ Цлоуд-у

Постоји неколико нијанси овог приступа којих бисте требали бити свјесни ако постављате на ИБМ Цлоуд. Будући да креирате нову инстанцу апликације ЦФ сваки пут када се плаво-зелено примени, водич за апликације ће се променити. Ако користите услугу праћења доступности, ваши конфигурисани тестови ће се изгубити када се ваш водич промени.

Да бисте то заобишли, подигните трајну лажну апликацију. Напишите своје тестове за вашу плаво-зелену примену у конфигурацији ове лажне апликације. Можете да наведете било који УРЛ када пишете своје тестове за праћење доступности.

Слично томе, ако користите услугу Анализа дневника, видећете да ћете, када кликнете на везу „Поглед у Кибани“ на картици Дневници надзорне табле апликације, бити покренути у Кибана претрагу на водичу апликације. Сви евиденције апликација пре вашег најновијег постављања неће се приказати. Да бисте то заобишли, можете једноставно филтрирати име апликације, уместо водича апликације.

Друга услуга која има исти проблем је аутоматско скалирање. Сваки пут када се нова апликација постави као део плаво-зелене примене, потребна јој је реконфигурација политике аутоматског скалирања. Доступан је интерфејс командне линије који бисте вероватно могли да употребите за скриптовање овог, али још нисам имао потребе да ово испробам.

Ако било који од ових проблема за вас није почетни, увек имате могућност да напишете прилагођену плаво-зелену скрипту за примену која користи две сталне ЦФ апликације, плаву и зелену. Ове две апликације би се смењивале у режиму уживо и у празном ходу. На пример, обе апликације можете да конфигуришете политиком аутоматског скалирања.

Наравно, овај приступ значи да не можете да искористите плаво-зелену додатну компоненту описану у овом посту и да морате да одржавате сопствену прилагођену скрипту.

Окончање

У овом посту испитали смо како можемо постићи примену са ниским ризиком, без застоја помоћу Трависа и цф плаво-зеленог додатка за примену.

У стварном пројекту имали бисмо још већа уверавања, јер бисмо имали постављен пакет јединичних тестова, а тамошње грешке не би успеле у Трависовој верзији пре него што је распоређивање имало прилику да се покрене. Такође бисмо потенцијално имали развојне и контролне гране конфигурисане да се распореде на сопствене просторе у нашој организацији Цлоуд Фоундри, омогућавајући нам да потврдимо и стабилизујемо апликацију по потреби пре промоције промена у производњи.

Хвала за читање! Ово је моја прва Медиум прича и надам се да вам је била корисна.