Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как оператор Azure Service Manager (AOSM) может выполнять тесты в сетевых функциях (NFS) в рамках операций установки или обновления. При включении каждое сетевое приложение-функция (nfApp) проверяется после завершения установки компонента или обновления. Результат успешного выполнения всех тестов nfApp необходим для успешного завершения операции NF.
Обзор
В рамках программы безопасного обновления AOSM поддерживает использование тестов helm в качестве шага gating во время операций установки или обновления сетевой функции. Следующий рабочий процесс описывает логику, используемую AOSM при включении этого дополнительного уровня проверки:
- Пользователи создают собственные тесты и включают их в пакет helm во время подключения NF.
- Только при включении AOSM выполняет эти тесты helm на каждом nfApp.
- После успешного тестирования AOSM переходит к следующему nfApp.
- При сбое теста AOSM учитывает
rollbackOnTestFail
, выполняется ли откат nfApp. - Родительская операция NF завершается сбоем, если какой-либо nfApp завершается сбоем настроенного теста.
- При родительском сбое AOSM учитывает настроенный метод элемента управления сбоем NF либо
pause-on-failure
rollback-on-failure
.
Примечание.
Тест Helm поддерживается только в рамках операции установки или обновления и не может выполняться автономно.
Разработка тестов helm
Издатель отвечает за разработку тестов helm во время построения диаграмм helm. Тесты helm определяются в диаграмме helm в папке: <ChartName>/Templates/
Каждый тест включает определение задания, указывающее среду контейнера и команду для выполнения. Среда контейнера должна успешно завершиться, чтобы тест считался успешным. Определение задания должно включать заметку (helm.sh/hook: test)
хука теста helm, чтобы быть признана тестом helm.
Включение тестов helm во время операций
AOSM предоставляет набор настраиваемых параметров установки и обновления для каждого nfApp. Эти существующие параметры расширены новым параметром testOptions
. С помощью этого параметра пользователь может указать testOptions
параметры для каждого nfApp и для каждого типа операции. Параметр testOptions
поддерживает следующие параметры:
enable
- Включает или отключает тест helm на nfApp после завершения установки или обновления.
- По умолчанию используется значение false.
timeout
- Принимает значение, представляющее время ожидания теста в минутах.
- Значение по умолчанию — 20 минут.
rollbackOnTestFailure
- Включает или отключает откат на сбой теста nfApp helm.
- Значение по умолчанию — «истина».
filter
- Позволяет методу выполнять только подмножество тестов. Принимает список строк, где каждая строка в списке представляет тест для выполнения.
- Значение по умолчанию не является фильтром и выполняются все тесты.
Предоставление тестового элемента управления helm с помощью параметров
AOSM уже поддерживает параметры installOptions
полезных данных NF и upgradeOptions
для каждого nfApp в разделе roleOverrideValues
. Эти параметры расширены для включения новых testOptions
параметров. Предоставление этих новых параметров позволяет оператору управлять поведением обновления во время выполнения. См. три следующих примера, демонстрирующих использование testOptions
.
Пример escape-кода roleOverrideValues
Ниже приведен escape-пример с именем компонента в разделе installOptions
и upgradeOptions
для компонентаapplication1
.testOptions
roleOverrideValues
В этом примере используется filter
для выполнения только тестов, соответствующих указанной строке, используется пользовательское время ожидания и включается rollbackOnTestFailures
.
"roleOverrideValues": [
"{\"name\":\"application1\",\"deployParametersMappingRuleProfile\":{\"helmMappingRuleProfile\":{\"helmPackageVersion\":\"2.1.3\",\"values\":\"{\\\"roleOneParam\\\":\\\"roleOneOverrideValue\\\"}\",\"options\":{\"installOptions\":{\"atomic\":\”true\”,\"wait\":\"true\",\"timeout\":\"30m\",\”testOptions\”:{\”enable\”:\”true\”,\”timeout\”:\”15\”,\”rollbackOnTestFailure\”:\”true\”,\”filter\”:[\”test1\”,\”test2\”,\”test3\”]}},\"upgradeOptions\":{\"atomic\": \”true\”,\"wait\":\"true\",\"timeout\":\"30\", \”testOptions\”:{\”enable ”:\”true\”,\”timeout\”:\”15\”,\”rollbackOnTestFailure\”:\”true\”,\” filter \”:[\”test1\”,\”test2\”,\”test3\”]}}}}}}"]
пример roleOverrideValues без отключаемого примера
Ниже приведен неопубликованный пример roleOverrideValues
полезных данных NF в testOptions
разделе installOptions
и upgradeOptions
для компонента с именем hellotest
. В этом примере используется filter
для выполнения только тестов, которые соответствуют указанной строке, используют пользовательское время ожидания и позволяют rollbackOnTestFailures
.
"roleOverrideValues": ["{
"name":"hellotest",
"deployParametersMappingRuleProfile": {
"helmMappingRuleProfile": {
"options": {
"installOptions": {
"atomic":"true",
"wait":"true",
"timeout":"1"
“testOptions”: {
“enable”: “true”,
“timeout”: “10”,
“rollbackOnTestFailure”: “true”,
"filter”: [“test1”, “test2”] } },
"upgradeOptions": {
"atomic":"true",
"wait":"true",
"timeout":"2",
“testOptions”: {
“enable”: “true”,
“timeout”: “10”,
“rollbackOnTestFailure”: “true”,
"filter”: [“test1”, “test2”] } } } } } }"
]
Пример полезных данных NF
Ниже приведен пример полезных данных NF, в testOptions
installOptions
который входит и upgradeOptions
для компонента с именем application1
. В этом примере используется filter
для выполнения только тестов, которые соответствуют предоставленной строке, используют пользовательское время ожидания и включает rollbackOnTestFailures
.
{
"location": "eastus",
"properties": {
"publisherName": "testVendor",
"publisherScope": "Public",
"networkFunctionDefinitionGroupName": "testnetworkFunctionDefinitionGroupName",
"networkFunctionDefinitionVersion": "1.0.1",
"networkFunctionDefinitionOfferingLocation": "eastus",
"nfviType": "AzureArcKubernetes",
"nfviId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testResourceGroup/providers/Microsoft.ExtendedLocation/customLocations/testCustomLocation",
"allowSoftwareUpdate": true,
"deploymentValues": "{\"releaseName\":\"testReleaseName\",\"namespace\":\"testNamespace\",\"wait\":\"false\"}",
"roleOverrideValues": [
"{\"name\":\"application1\",\"deployParametersMappingRuleProfile\":{\"helmMappingRuleProfile\":{\"helmPackageVersion\":\"2.1.3\",\"values\":\"{\\\"roleOneParam\\\":\\\"roleOneOverrideValue\\\"}\",\"options\":{\"installOptions\":{\"atomic\":\”true\”,\"wait\":\"true\",\"timeout\":\"30m\",\” testOptions \”:{\” enable \”:\”true\”,\” timeout\”:\”15\”,\”rollbackOnTestFailure\”:\”true\”,\” filter \”:[\”test1\”,\”test2\”,\”test3\”]}},\"upgradeOptions\":{\"atomic\": \”true\”,\"wait\":\"true\",\"timeout\":\"30\", \” testOptions \”:{\” enable \”:\”true\”,\” timeout\”:\”15\”,\”rollbackOnTestFailure\”:\”true\”,\” filter \”:[\”test1\”,\”test2\”,\”test3\”]}}}}}}"
]
}
}