ARM Templates: Как включить CUSTOM DOMAIN HTTPS в Azure Front Doors

Данная запись подразумевает, что вы знаете, что такое Azure Resource Manager Templates

На момент написания данной записи официальная документация описывающая шаблон (ARM Template) для разворачивания Azure Front Door содержит в себе описание ресурса самого Front Door.

Azure Front Door документация
Azure Front Door. Оглавление документации.

Ну, казалось бы, огонь, сейчас составим шаблон по документации и поднимем Front Door.

Делаем все как надо и, например, получили следующий ресурс:

Azure Front Door designer
Ресурс созданный с помощью ARM Template и следую документации.

Имеем стандартный домен на уровне .azurefd.net и наш кастомный, заранее подвязанный к стандартному через CNAME в настройках DNS вашего соответствующего домена.

Все, вроде бы, отлично, но нам стало необходимо активировать HTTPS для нашего кастомного домена. Заходим в настройки домена и видим там, что данная опция отключена по-умолчанию:

Azure Front Door. Обновление настроек домена.
Azure Front Door. Обновление настроек домена.

Окей, мы можем включить ее вручную, но нам нужно сделать это автоматически при создании ресурса с помощью ARM. Пытаемся найти как это сделать в документации по ссылке выше и понимаем, что такого там нет, но мы то понимаем, что это должно быть возможно.

Export Template

Казалось бы, вот оно решение! Настраиваем опцию вручную, потом экспортируем шаблон, и смотрим каким образом включение этой опции реализовано в нем:

Включаем HTTPS вручную
Включаем HTTPS вручную
Экспортируем шаблон Azure Front Door
Экспортируем шаблон Azure Front Door

Вчитываемся в полученный шаблон и понимаем, что он полностью соответствует документации и в нем тоже нету ничего относящегося к HTTPS для кастомного домена.

Вот это поворот…

При этом настройки домена сохранились — следовательно должен быть способ ими управлять.

Azure Resource Explorer

resources.azure.com — инструмент, позволяющий увидеть все ваши ресурсы на Azure Portal в виде JSON документов.

Ищем в нем наш ресурс и находим JSON представление ARM шаблона для него:

Azure Resource Explorer
Azure Resource Explorer

Можно заметить, что наш ресурс (fd-alpha-us-west-shared3501) сожержит в себе еще какие-то ресурсы если нажать на знак ✚. Раскрываем вложенность по максимуму и видим отдельный ресурс, который определяет наш кастомный домен и его настройки, в том числе и настройку HTTPS:

Azure Resource Explorer
Azure Resource Explorer

Решение

Немного погуглив и поэкспериментировав я пришел к выводу, что можно настроить HTTPS для кастомного домена, добавив в наш начальный ARM шаблон дополнительный подресурс.

Тип подресурса — frontendEndpoints/customHttpsConfiguration

Имя — имя-frontendEndpoint + /default

Зависимость — от корневого ресурса

Свойства ресурса (properties) — все что поддерживается в REST API для данного ресурса

Пример кода

Код подресурса:

...
"resources": [
        {
          "type": "frontendEndpoints/customHttpsConfiguration",
          "apiVersion": "2020-07-01",
          "name": "[concat(variables('customFrontendEndpointName'), '/default')]",
          "dependsOn": [
            "[variables('resource')]"
          ],
          "properties": {
            "certificateSource": "FrontDoor",
            "protocolType": "ServerNameIndication",
            "minimumTlsVersion": "1.2",
            "frontDoorCertificateSourceParameters": {
              "certificateType": "Dedicated",
              "certificateTypeAsEnum": "Dedicated"
            }
          }
        }
      ]
...

Пример использования в шаблоне:

Azure Front Door HTTPS
Azure Front Door HTTPS

На этом все!