Wprowadzenie do bezpiecznych rozwiązań dotyczących uaktualniania
Omówienie
W tym artykule przedstawiono praktyki bezpiecznego uaktualniania (SUP) programu Azure Operator Service Manager (AOSM). Ten zestaw funkcji umożliwia użytkownikowi końcowemu bezpieczne wykonywanie złożonych uaktualnień obciążeń CNF hostowanych na platformie Azure Operator Nexus zgodnie z wymaganiami isSU partnera, jeśli ma to zastosowanie. Zapoznaj się z przyszłymi artykułami w tych usługach, aby rozwinąć funkcje i możliwości supremacji.
Wprowadzenie
Dana usługa sieciowa obsługiwana przez program Azure Operator Service Manager będzie składać się z jednej do wielu funkcji sieciowych opartych na kontenerze (CNFs), które w czasie będą wymagały aktualizacji oprogramowania. Dla każdej aktualizacji należy uruchomić jedną do wielu operacji helm, uaktualniając zależne aplikacje funkcji sieciowych (NfApps), w określonej kolejności, w sposób, który najmniej ma wpływ na usługę sieciową. W usłudze Azure Operator Service Manager rozwiązania bezpiecznego uaktualniania reprezentują zestaw funkcji, które mogą automatyzować operacje CNF wymagane do zaktualizowania usługi sieciowej na platformie Azure Operator Nexus.
- Aktualizacja SNS Reput — wykonaj operację uaktualniania narzędzia Helm we wszystkich aplikacjach NfApps w systemie plików NFDV.
- Nexus Platform — obsługa operacji SNS na docelowych platformach Nexus.
- Limity czasu operacji — możliwość ustawiania limitów czasu operacyjnego dla każdej operacji NfApp.
- Operacje synchroniczne — możliwość uruchamiania jednej szeregowej operacji NfApp naraz.
- Wstrzymaj przy awarii — na podstawie flagi ustaw zachowanie niepowodzenia, aby wycofać tylko ostatnią operację NfApp.
- Weryfikacja testu pojedynczego wykresu — uruchamianie operacji testu helm po utworzeniu lub aktualizacji.
- Refaktoryzowana funkcja SNS Reput — ulepszone metody, dodaje kolejność aktualizacji i sprawdzanie oczyszczania.
Podejście do uaktualniania
Aby zaktualizować istniejącą usługę sieciową lokacji programu Azure Operator Service Manager (SNS), operator wykonuje żądanie aktualizacji dla wdrożonego zasobu SNS. Jeśli snS zawiera pliki CNFs z wieloma aplikacjami NfApps, żądanie jest fanned out we wszystkich aplikacjach NfApps zdefiniowanych w wersji definicji funkcji sieciowej (NFDV). Domyślnie w kolejności wyświetlanej lub opcjonalnie w kolejności zdefiniowanej przez parametr UpdateDependsOn.
Dla każdej aplikacji NfApp żądanie aktualizacji poputowania obsługuje zwiększanie wersji wykresu helm, dodawanie/usuwanie wartości helm i/lub dodawanie/usuwanie dowolnych aplikacji NfApps. Limity czasu można ustawić dla aplikacji NfApp na podstawie znanych dozwolonych środowisk uruchomieniowych, ale aplikacje NfApps mogą być przetwarzane tylko w kolejności szeregowej, po drugiej. Aktualizacjaputowa implementuje następującą logikę przetwarzania:
- Aplikacje NfApps są przetwarzane zgodnie z kolejnością updateDependsOn lub w kolejności sekwencyjnej.
- Funkcja NfApps z parametrem "applicationEnabled" ustawiona na wartość disable jest pomijana.
- Wdrożone aplikacje NFApps, ale nie przywoływane przez nowy system plików NFDV, są usuwane.
- NFApps, które są wspólne między starym i nowym systemem plików NFDV są uaktualniane.
- Aplikacje NFApps, które są zainstalowane tylko w nowym systemie plików NFDV.
Aby zapewnić wyniki, testowanie aplikacji NfApp jest obsługiwane przy użyciu narzędzia Helm, uaktualnienia narzędzia Helm przed/po testach lub autonomicznych testów helm. W przypadku niepowodzeń testów przed/po testach parametr niepodzielne jest honorowany. W przypadku wartości niepodzielnej/true, wykres, który zakończył się niepowodzeniem, jest cofany. W przypadku wartości niepodzielnej/fałszywej nie jest wykonywane wycofywanie. W przypadku autonomicznych testów helm uhonorowany parametr rollbackOnTestFailure. W przypadku wycofywaniaOnTestFailure/true, wykres, który zakończył się niepowodzeniem, zostanie wycofany. W przypadku wycofywaniaOnTestFailure/false nie jest wykonywane wycofywanie.
Wymagania wstępne
Podczas planowania uaktualnienia przy użyciu programu Azure Operator Service Manager należy spełnić następujące wymagania przed wykonaniem uaktualnienia, aby zoptymalizować czas spędzony na próbie uaktualnienia.
Dołączanie zaktualizowanych artefaktów przy użyciu przepływów pracy wydawcy i/lub projektanta.
- Program Publisher, magazyn, projekt usługi sieciowej (NSDg) i grupa projektowa funkcji sieciowych (NFDg) są statyczne i nie muszą się zmieniać.
- Do przechowywania nowych wykresów i obrazów potrzebny jest nowy manifest artefaktu. Aby uzyskać więcej informacji, zobacz dokumentację dołączania, aby uzyskać szczegółowe informacje na temat przekazywania nowych wykresów i obrazów.
- Potrzebna jest nowa wersja projektowania usług NFDV i sieciowych (NSDV) w ramach istniejącej grupy zabezpieczeń i systemu plików NFDg.
- W sekcji krok po kroku omówiono podstawowe zmiany w systemie plików NFDV.
- Nowy serwer NSDV jest wymagany tylko w przypadku wprowadzenia nowej wersji schematu grupy konfiguracji (CGS).
- W razie potrzeby nowa usługa CGS.
- Wymagane, jeśli uaktualnienie wprowadza nowe uwidocznione parametry konfiguracji.
- Program Publisher, magazyn, projekt usługi sieciowej (NSDg) i grupa projektowa funkcji sieciowych (NFDg) są statyczne i nie muszą się zmieniać.
Utwórz zaktualizowane artefakty przy użyciu przepływu pracy operatora.
- W razie potrzeby utwórz nowe wartości grupy konfiguracji (CGV) na podstawie nowej usługi konfiguracji.
- Użyj ponownie i utwórz ładunek, potwierdzając istniejące obiekty usługi sieci lokacji i lokacji.
Zaktualizuj szablony, aby upewnić się, że parametry uaktualniania są ustawione na podstawie zaufania do zachowania uaktualnienia i żądanego niepowodzenia.
- Ustawienia używane w środowisku produkcyjnym mogą pomijać szczegóły błędów, podczas gdy ustawienia używane do debugowania lub testowania mogą zdecydować się na ujawnienie tych szczegółów.
Procedura uaktualniania
Postępuj zgodnie z poniższym procesem, aby wyzwolić uaktualnienie za pomocą programu Azure Operator Service Manager.
Tworzenie nowego zasobu NFDV
W przypadku nowych wersji NFDV musi być w prawidłowym formacie SemVer, gdzie dozwolone są tylko wyższe wartości przyrostowe aktualizacji poprawek i wersji pomocniczych. Niższa wersja systemu plików NFDV jest niedozwolona. W przypadku systemu plików CNF wdrożonych przy użyciu systemu plików NFDV 2.0.0 nowy system plików NFDV może mieć wersję 2.0.1 lub 2.1.0, ale nie 1.0.0 lub 3.0.0.
Aktualizowanie nowych parametrów NFDV
Wersje wykresu programu Helm można zaktualizować lub zaktualizować lub sparametryzować w razie potrzeby. Można również dodać nowe aplikacje NfApps, w których nie istniały w wdrożonej wersji.
Aktualizowanie systemu plików NFDV dla żądanej kolejności aplikacji NfApp
UpdateDependsOn to parametr NFDV używany do określania kolejności aplikacji NfApps podczas operacji aktualizacji. Jeśli parametr UpdateDependsOn nie jest podany, używane jest porządkowanie szeregowe aplikacji CNF, jak pokazano w systemie plików NFDV.
Aktualizowanie systemu plików NFDV pod kątem żądanego zachowania uaktualniania
Upewnij się, że ustawiono wszystkie żądane limity czasu aplikacji CNF, niepodzielne parametry i rollbackOnTestFailure. Zmiana tych parametrów może być przydatna w miarę upływu czasu w miarę zwiększenia pewności podczas uaktualniania.
Problem z ponoć sns
Po zakończeniu dołączania jest przesyłana operacja poputowania. W zależności od liczby, rozmiaru i złożoności aplikacji NfApps operacjaputowania może zająć trochę czasu (wiele godzin).
Sprawdzanie wyników poput
Jeśli pomiń zgłasza pomyślny wynik, uaktualnienie zostanie ukończone, a użytkownik powinien zweryfikować stan i dostępność usługi. Jeśli poput zgłasza błąd, wykonaj kroki opisane w sekcji odzyskiwanie po awarii uaktualniania, aby kontynuować.
Procedura ponawiania prób
W przypadkach, gdy aktualizacja ponowienia kończy się niepowodzeniem, można wykonać następujący proces, aby ponowić próbę wykonania operacji.
Diagnozowanie nieudanej aplikacji NfApp
Rozwiąż główną przyczynę niepowodzenia aplikacji NfApp, analizując dzienniki i inne informacje o debugowaniu.
Ręczne pomijanie ukończonych wykresów
Po naprawieniu nieudanej aplikacji NfApp, ale przed podjęciem próby uaktualnienia rozważ zmianę parametru applicationEnablement w celu przyspieszenia zachowania ponawiania prób. Ten parametr można ustawić false, gdzie należy pominąć aplikację NfApp. Ten parametr może być przydatny, gdy aplikacja NfApp nie wymaga uaktualnienia.
Problem z ponowieniem ponawiania sns (powtarzaj do momentu powodzenia)
Domyślnie ponawia próbę NfApps w zadeklarowanej kolejności aktualizacji, chyba że zostaną pominięte przy użyciu flagi applicationEnablement.
Jak używać aplikacjiEnablement
W zasobie NFDV w obszarze deployParametersMappingRuleProfile znajduje się aplikacja właściwościEnablement typu wyliczenie, które przyjmuje wartości: Nieznane, Włączone lub wyłączone. Może służyć do wykluczania operacji NfApp podczas wdrażania systemu plików NF.
Zmiany wydawcy
W przypadku właściwości applicationEnablement wydawca ma dwie opcje: podaj wartość domyślną lub parametryzację.
Przykładowy plik NFDV
NFDV jest używany przez wydawcę do ustawiania wartości domyślnych dla applicationEnablement.
{
"location":"<location>",
"properties": {
"networkFunctionTemplate": {
"networkFunctionApplications": [
{
"artifactProfile": {
"helmArtifactProfile": {
"var":"var"
},
"artifactStore": {
"id": "<artifactStore id>"
}
},
"deployParametersMappingRuleProfile": {
"helmMappingRuleProfile": {
"releaseNamespace": "{deployParameters.role1releasenamespace}",
"releaseName": "{deployParameters.role1releasename}"
},
"applicationEnablement": "Enabled"
},
"artifactType": "HelmPackage",
"dependsOnProfile": "null",
"name": "hellotest"
},
{
"artifactProfile": {
"helmArtifactProfile": {
"var":"var"
},
"artifactStore": {
"id": "<artifactStore id>"
}
},
"deployParametersMappingRuleProfile": {
"helmMappingRuleProfile": {
"releaseNamespace": "{deployParameters.role2releasenamespace}",
"releaseName": "{deployParameters.role2releasename}"
},
"applicationEnablement": "Enabled"
},
"artifactType": "HelmPackage",
"dependsOnProfile": "null",
"name": "hellotest1"
}
],
"nfviType": "AzureArcKubernetes"
},
"description": "null",
"deployParameters": {"type":"object","properties":{"role1releasenamespace":{"type":"string"},"role1releasename":{"type":"string"},"role2releasenamespace":{"type":"string"},"role2releasename":{"type":"string"}},"required":["role1releasenamespace","role1releasename","role2releasenamespace","role2releasename"]},
"networkFunctionType": "ContainerizedNetworkFunction"
}
}
Przykładowy zasób schematu grupy konfiguracji (CGS)
Usługa CGS jest używana przez wydawcę, aby wymagać, aby zmienne roleOverrideValues były udostępniane przez operator w czasie wykonywania. Te roleOverrideValues mogą zawierać ustawienia inne niż dedfault dla aplikacjiEnablement.
{
"type": "object",
"properties": {
"location": {
"type": "string"
},
"nfviType": {
"type": "string"
},
"nfdvId": {
"type": "string"
},
"helloworld-cnf-config": {
"type": "object",
"properties": {
"role1releasenamespace": {
"type": "string"
},
"role1releasename": {
"type": "string"
},
"role2releasenamespace": {
"type": "string"
},
"role2releasename": {
"type": "string"
},
"roleOverrideValues1": {
"type": "string"
},
"roleOverrideValues2": {
"type": "string"
}
},
"required": [
"role1releasenamespace",
"role1releasename",
"role2releasenamespace",
"role2releasename",
"roleOverrideValues1",
"roleOverrideValues2"
]
}
},
"required": [
"nfviType",
"nfdvId",
"location",
"helloworld-cnf-config"
]
}
Zmiany operatorów
Operatory dziedziczą domyślne wartości applicationEnablement zdefiniowane przez NFDV. Jeśli parametr applicationEnablement jest sparametryzowany w usłudze CGS, należy przekazać ją za pośrednictwem właściwości deploymentValues w czasie wykonywania.
Przykładowy zasób grupy konfiguracji (CGV)
Operator CGV służy do ustawiania zmiennych roleOverrideValues w czasie wykonywania. Wartość roleOverrideValues zawiera ustawienia inne niż dedfault dla aplikacjiEnablement.
{
"location": "<location>",
"nfviType": "AzureArcKubernetes",
"nfdvId": "<nfdv_id>",
"helloworld-cnf-config": {
"role1releasenamespace": "hello-test-releasens",
"role1releasename": "hello-test-release",
"role2releasenamespace": "hello-test-2-releasens",
"role2releasename": "hello-test-2-release",
"roleOverrideValues1": "{\"name\":\"hellotest\",\"deployParametersMappingRuleProfile\":{\"applicationEnablement\":\"Enabled\",\"helmMappingRuleProfile\":{\"releaseName\":\"override-release\",\"releaseNamespace\":\"override-namespace\",\"helmPackageVersion\":\"1.0.0\",\"values\":\"\",\"options\":{\"installOptions\":{\"atomic\":\"true\",\"wait\":\"true\",\"timeout\":\"30\",\"injectArtifactStoreDetails\":\"true\"},\"upgradeOptions\":{\"atomic\":\"true\",\"wait\":\"true\",\"timeout\":\"30\",\"injectArtifactStoreDetails\":\"true\"}}}}}",
"roleOverrideValues2": "{\"name\":\"hellotest1\",\"deployParametersMappingRuleProfile\":{\"applicationEnablement\" : \"Enabled\"}}"
}
}
Przykładowy szablon arm systemu plików NF
Szablon arm systemu plików NF jest używany przez operator do przesyłania zmiennych roleOverrideValues ustawionych przez CGV do dostawcy zasobów (RP). Operator może zmienić ustawienie applicationEnablement w CGV, w razie potrzeby, i ponownie przesłać ten sam szablon ARM NF, aby zmienić zachowanie między iteracji.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"nameValue": {
"type": "string",
"defaultValue": "HelloWorld"
},
"locationValue": {
"type": "string",
"defaultValue": "eastus"
},
"nfviTypeValue": {
"type": "string",
"defaultValue": "AzureArcKubernetes"
},
"nfviIdValue": {
"type": "string"
},
"config": {
"type": "object",
"defaultValue": {}
},
"nfdvId": {
"type": "string"
}
},
"variables": {
"deploymentValuesValue": "[string(createObject('role1releasenamespace', parameters('config').role1releasenamespace, 'role1releasename',parameters('config').role1releasename, 'role2releasenamespace', parameters('config').role2releasenamespace, 'role2releasename',parameters('config').role2releasename))]",
"nfName": "[concat(parameters('nameValue'), '-CNF')]",
"roleOverrideValues1": "[string(parameters('config').roleOverrideValues1)]",
"roleOverrideValues2": "[string(parameters('config').roleOverrideValues2)]"
},
"resources": [
{
"type": "Microsoft.HybridNetwork/networkFunctions",
"apiVersion": "2023-09-01",
"name": "[variables('nfName')]",
"location": "[parameters('locationValue')]",
"properties": {
"networkFunctionDefinitionVersionResourceReference": {
"id": "[parameters('nfdvId')]",
"idType": "Open"
},
"nfviType": "[parameters('nfviTypeValue')]",
"nfviId": "[parameters('nfviIdValue')]",
"allowSoftwareUpdate": true,
"configurationType": "Open",
"deploymentValues": "[string(variables('deploymentValuesValue'))]",
"roleOverrideValues": [
"[variables('roleOverrideValues1')]",
"[variables('roleOverrideValues2')]"
]
}
}
]
}
Obsługa uaktualnień usług
Program Azure Operator Service Manager, jeśli to możliwe, obsługuje uaktualnienia usług, metodę uaktualniania, która rozwija wersję wdrożenia bez przerywania działania usługi. Jednak możliwość uaktualnienia danej usługi bez przerwy jest funkcją samej usługi. Zapoznaj się z wydawcą usługi, aby zrozumieć możliwości uaktualniania w usłudze.
Przekazywanie celów wyszukiwania
Program Azure Operator Service Manager nadal rozwija zestaw funkcji bezpiecznej praktyki uaktualniania i wprowadza ulepszenia oferowanych usług aktualizacji. Następujące funkcje są obecnie brane pod uwagę pod kątem przyszłej dostępności:
- Ulepszanie kontrolki Opcje uaktualniania — efektywniejsze uwidaczniaj parametry.
- Pomiń NfApp na bez zmian — pomiń przetwarzanie aplikacji NfApps, gdzie nie ma żadnych zmian.
- Wykonaj wycofywanie NFDV w przypadku niepowodzenia — na podstawie flagi wycofaj wszystkie ukończone NfApps po awarii.
- Obsługa asynchroniczna — możliwość uruchamiania wielu operacji NfApp naraz.
- Pobieranie obrazów — możliwość wstępnego ładowania obrazów do repozytorium brzegowego.
- Wykresy docelowe na potrzeby walidacji — możliwość uruchamiania testu helm tylko w określonej aplikacji NfApp.