Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano, jak program Azure Operator Service Manager (AOSM) może uruchamiać testy w funkcjach sieciowych (NFs) w ramach operacji instalacji lub uaktualniania. Po włączeniu każdej aplikacji funkcji sieciowej (nfApp) jest testowana po zakończeniu instalacji lub uaktualniania składnika. Pomyślny wynik we wszystkich testach nfApp jest wymagany, aby stan operacji NF zakończył się pomyślnie.
Omówienie
W ramach programu bezpiecznego uaktualniania system AOSM obsługuje korzystanie z testów helm jako krok gating podczas operacji instalacji lub uaktualniania funkcji sieciowej. W poniższym przepływie pracy opisano logikę używaną przez rozwiązanie AOSM w przypadku dołączania tej dodatkowej warstwy weryfikacji:
- Użytkownicy twórzą własne testy i dołączają je do pakietu helm podczas dołączania systemu plików NF.
- Tylko w przypadku włączenia usługa AOSM wykonuje te testy helm w każdej aplikacji nfApp.
- Po pomyślnym przetestowaniu aplikacja AOSM przechodzi do następnej aplikacji nfApp.
- Po niepowodzeniu testu usługa AOSM honoruje
rollbackOnTestFail, aby określić, czy aplikacja nfApp zostanie wycofana. - Operacja nadrzędnego systemu plików NF kończy się niepowodzeniem, jeśli jakikolwiek test skonfigurowany przez aplikację nfApp zakończy się niepowodzeniem.
- Po niepowodzeniu elementu nadrzędnego usługa AOSM honoruje skonfigurowaną metodę kontroli awarii systemu plików NF lub
pause-on-failurerollback-on-failure.
Uwaga
Test programu Helm jest obsługiwany tylko w ramach operacji instalacji lub uaktualniania i nie można go uruchomić autonomicznie.
Tworzenie testów helm
Wydawca jest odpowiedzialny za tworzenie testów helm podczas budowy wykresów helm. Testy helm są definiowane na wykresie helm w folderze : <ChartName>/Templates/. Każdy test zawiera definicję zadania, która określa środowisko kontenera i polecenie do uruchomienia. Środowisko kontenera powinno zakończyć się pomyślnie, aby test został uznany za powodzenie. Definicja zadania musi zawierać adnotację (helm.sh/hook: test) elementu zaczepienia testowego narzędzia Helm, która ma być rozpoznawana jako test przez narzędzie Helm.
Włączanie testów helm podczas operacji
System AOSM udostępnia zestaw konfigurowalnych opcji instalacji i uaktualniania dla każdej aplikacji nfApp. Te istniejące opcje są rozszerzone o nowy testOptions parametr. Za pomocą tego parametru użytkownik może określić testOptions ustawienia na aplikację nfApp i na typ operacji. Parametr testOptions obsługuje następujące parametry:
enable- Włącza lub wyłącza test helm w aplikacji nfApp po zakończeniu instalacji lub uaktualnienia.
- Wartość domyślna to false.
timeout- Przyjmuje wartość reprezentującą limit czasu testu w minutach.
- Wartość domyślna to 20 minut.
rollbackOnTestFailure- Włącza lub wyłącza wycofywanie w przypadku niepowodzenia testu narzędzia Helm aplikacji nfApp.
- Domyślna wartość to true.
filter- Umożliwia uruchamianie tylko podzbioru testów przez metodę . Akceptuje listę ciągów, w których każdy ciąg na liście reprezentuje test do wykonania.
- Wartość domyślna nie jest filtrem, a wszystkie testy są uruchamiane.
Uwidacznianie kontrolki testu helm za pomocą parametrów
System AOSM obsługuje już parametry installOptions ładunku NF i upgradeOptions dla każdej aplikacji nfApp w obszarze roleOverrideValues. Te parametry są rozszerzone w celu uwzględnienia nowych testOptions ustawień. Uwidacznianie tych nowych ustawień parametrów umożliwia operatorowi kontrolowanie zachowania uaktualniania w czasie wykonywania. Zapoznaj się z trzema poniższymi przykładami pokazującym użycie obiektu testOptions.
roleOverrideValues uciekł przykład
Poniżej znajduje się przykład roleOverrideValues ucieczki z elementami testOptionsinstallOptions i upgradeOptions dla składnika o nazwie application1. W tym przykładzie użyto elementu filter, aby wykonać tylko testy zgodne z podanym ciągiem, używa niestandardowego limitu czasu i włącza funkcję 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 unescaped example (przykład roleOverrideValues unescaped)
Poniżej znajduje się niewyobrażony przykład roleOverrideValues ładunku NF z elementami testOptionsinstallOptions i upgradeOptions dla składnika o nazwie hellotest. W tym przykładzie użyto elementu , filter aby wykonać tylko testy zgodne z podanym ciągiem, używają niestandardowego limitu czasu i włącza wartość 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”] } } } } } }"
]
Przykład ładunku NF
Poniżej znajduje się przykładowy ładunek NF z elementami installOptionstestOptions i upgradeOptions dla składnika o nazwie application1. W tym przykładzie użyto elementu , filter aby wykonać tylko testy zgodne z podanym ciągiem, używa niestandardowego limitu czasu i włącza funkcję 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\”]}}}}}}"
]
}
}