Azure: использование Deployment slots

Автор: | 13/01/2016
 

azure_logoВо время деплоя веб-приложения – его можно задеплоить на т.н. “deployment slot” вместо деплоя непосредственно на PROD. Доступна эта возможность только в Standard и Premium пакетах подписки.

Фактически, такой слот является полноценным приложением с собственным именем хоста. Содержимое и элементы конфигурации могут быть переключены между двумя такими слотами (PROD и STAGING). 

Добавление deployment slot

Проверяем группу ресурсов:

$ azure group show t_1
info:    Executing command group show
+ Listing resource groups
+ Listing resources for the group
data:    Id:                  /subscriptions/784f2db5-***-560bd3043989/resourceGroups/t_1
data:    Name:                t_1
data:    Location:            westus
data:    Provisioning State:  Succeeded
data:    Tags: null
data:    Resources:
data:
data:      Id      : /subscriptions/784f2db5-***-560bd3043989/resourceGroups/t_1/providers/microsoft.insights/alertrules/ForbiddenRequests prodt1
data:      Name    : ForbiddenRequests prodt1
data:      Type    : alertrules
data:      Location: westus
data:      Tags    : hidden-link:/subscriptions/784f2db5-***-560bd3043989/resourceGroups/t_1/providers/Microsoft.Web/sites/prodt1=Resource
data:
data:      Id      : /subscriptions/784f2db5-***-560bd3043989/resourceGroups/t_1/providers/Microsoft.Web/sites/prodt1
data:      Name    : prodt1
data:      Type    : sites
data:      Location: westus
data:      Tags    :
data:
data:    Permissions:
data:      Actions: *
data:      NotActions:
data:

Переходим в Settings, находим Deployment slots и жмем Add slot:

Screen Shot 2016-01-05 at 16.33.26

Указываем имя и выбираем PROD-приложение, из которого будет создан STAGING:

Screen Shot 2016-01-05 at 16.40.10

Жмем ОК, и ожидаем пару минут:

Screen Shot 2016-01-05 at 16.41.15


Обратите внимание на URL для staging-окружения.

Проверяем PROD:

$ curl http://prodt1.azurewebsites.net/
<!DOCTYPE html><html><head>    <title>Microsoft Azure Web App - Welcome</title>
...

Проверяем STAG:

$ curl http://prodt1-staging.azurewebsites.net/
<!DOCTYPE html><html><head>    <title>Microsoft Azure Web App - Welcome</title>
...

Теперь – выполним деплой и замену рабочих окружений.

Копируем файлы:

$ git clone https://user:[email protected]:443/prodt1.git
Cloning into 'prodt1'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

Проверяем:

$ ls -la prodt1/
total 0
drwxr-xr-x   3 username  wheel  102 Jan  5 16:45 .
drwxr-xr-x  11 username  wheel  374 Jan  5 16:47 ..
drwxr-xr-x  10 username  wheel  340 Jan  5 16:45 .git

Добавляем новый файл:

$ cd prodt1/
$ echo "Hello, deploy slot PROD" > pindex.html
$ git add index.html
$ git commit -m "index.html prod"
[master (root-commit) 04e35e3] index.html prod
 1 file changed, 1 insertion(+)
 create mode 100644 index.html

Пушим и проверяем:

$ git push origin
$ curl http://prodt1.azurewebsites.net/index.html
Hello, deploy slot PROD

Переключаем окружение:

Screen Shot 2016-01-05 at 16.55.00

Выбираем PROD > STAG:

Screen Shot 2016-01-05 at 16.55.58

Клонируем еще раз:

$ git clone https://user:[email protected]:443/prodt1.git
Cloning into 'prodt1'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

И снова добавляем файл, но немного изменим текст:

$ echo "Hello, deploy slot STAG" > index.html

Деплоим, и проверяем:

$ curl http://prodt1.azurewebsites.net/index.html
Hello, deploy slot STAG

Переключаем слоты обратно:

Screen Shot 2016-01-05 at 17.02.24

Проверяем:

$ curl http://prodt1.azurewebsites.net/index.html
Hello, deploy slot PROD

Готово.

Что бы проверить – какой из слотов активен в настоящий момент – можно использовать Azure CLI:

$ azure site list prod1
...
data:    prod1  staging  Running  West US   Standard  prod1-staging.azurewebsites.net
data:    prod1           Running  West US   Standard  prod1.azurewebsites.net

Переключаем (“свапаем”):

$ azure site swap prod1
info:    Executing command site swap
+ Getting sites
Swap slot "staging" from site "prod1" with slot "production" ? [y/n] y
+ Swapping slot "staging" from site "prod1" with slot "production"
info:    Site "prod1" slots has been swapped

Проверяем еще раз:

$ azure site list prod1
info:    Executing command site list
...
data:    prod1           Running  West US   Standard  prod1.azurewebsites.net
data:    prod1  staging  Running  West US   Standard  prod1-staging.azurewebsites.net

Больше команд:

$ azure site --help

Ссылки по теме

https://azure.microsoft.com