Začínáme s postupy bezpečného upgradu
Přehled
Tento článek představuje postupy bezpečného upgradu (SUP) Azure Operator Service Manageru (AOSM). Tato sada funkcí umožňuje koncovému uživateli bezpečně spouštět složité upgrady úloh CNF hostovaných na platformě Azure Operator Nexus, a to v souladu s požadavky partnera ISSU, pokud je to možné. Hledejte budoucí články v těchto službách, abyste rozšířili funkce a možnosti SUP.
Úvod
Daná síťová služba podporovaná Azure Operator Service Managerem se bude skládat z jedné až řady síťových funkcí založených na kontejnerech (CNF), které v průběhu času budou vyžadovat aktualizace softwaru. Pro každou aktualizaci je nutné spustit jednu až mnoho operací helmu, upgradovat závislé aplikace síťových funkcí (NfApps) v určitém pořadí způsobem, který má nejmenší vliv na síťovou službu. Postupy bezpečného upgradu v Azure Operator Service Manageru představují sadu funkcí, které můžou automatizovat operace CNF potřebné k aktualizaci síťové služby v Azure Operator Nexus.
- Aktualizace SNS Pro reputaci – Proveďte operaci upgradu helmu ve všech NfApps v NFDV.
- Nexus Platform – Podpora operací s reputací SNS na cílech platformy Nexus
- Časové limity operací – Možnost nastavit provozní časové limity pro každou operaci NfApp.
- Synchronní operace – možnost spustit jednu sériovou operaci NfApp najednou
- Pozastavit při selhání – na základě příznaku nastavte chování selhání tak, aby se vratily jenom poslední operace NfApp.
- Ověření testu s jedním grafem – spuštění testovací operace helmu po vytvoření nebo aktualizaci
- Refaktored SNS Reput – vylepšené metody, přidává pořadí aktualizací a kontrolu čištění.
Přístup k upgradu
Pokud chcete aktualizovat existující síťovou službu lokality Azure Operator Service Manageru (SNS), provede operátor žádost o aktualizaci s důvěryhodným požadavkem na nasazený prostředek SNS. Pokud SNS obsahuje CNF s více aplikacemi NfApps, požadavek se rozfouší ve všech NfApps definovaných ve verzi definice síťové funkce (NFDV). Ve výchozím nastavení v pořadí, ve kterém se zobrazují, nebo volitelně v pořadí definovaném parametrem UpdateDependsOn.
U každé aplikace NfApp žádost o aktualizaci pro reputaci podporuje zvýšení verze chartu Helm, přidání nebo odebrání hodnot helmu nebo přidání nebo odebrání všech NfApps. Časový limit lze nastavit pro NfApp na základě známých povolených modulů runtime, ale NfApps je možné zpracovat pouze v sériovém pořadí, jeden za druhým. Aktualizace reputace implementuje následující logiku zpracování:
- NfApps se zpracovávají buď podle pořadí updateDependsOn, nebo v sekvenčním pořadí, v jakém se zobrazují.
- NfApps s parametrem applicationEnabled nastaveným na zakázání se přeskočí.
- Aplikace NFApps nasazené, ale neodkazované na nový NFDV, se odstraní.
- Upgradují se aplikace NFApps, které jsou společné mezi starými a novými NFDV.
- NFApps, které jsou nainstalovány pouze v novém NFDV.
Aby se zajistily výsledky, podporuje se testování NfApp pomocí helmu, upgradu helmu před/po testech nebo samostatných testů helmu. V případě selhání před/po testů se bude respektovat atomický parametr. S atomický/pravdivý graf se vrátí zpět. S atomickou chybou nebo nepravdou se nespustí žádná vrácení zpět. U samostatných testů helmu jsme respektovali parametr rollbackOnTestFailure. Při vrácení zpětOnTestFailure/true se neúspěšný graf vrátí zpět. Pokud používáte rollbackOnTestFailure/false, nespustí se žádné vrácení zpět.
Požadavky
Při plánování upgradu pomocí Service Manageru operátora Azure vyřešte následující požadavky před provedením upgradu, abyste optimalizovali čas strávený pokusem o upgrade.
Onboarding aktualizovaných artefaktů pomocí pracovních postupů vydavatele nebo návrháře
- Vydavatel, úložiště, návrh síťové služby (NSDg) a skupina návrhu síťových funkcí (NFDg) jsou statické a nemusí se měnit.
- K uložení nových grafů a obrázků je potřeba nový manifest artefaktů. Další informace najdete v dokumentaci k onboardingu, kde najdete podrobnosti o nahrávání nových grafů a obrázků.
- Nová verze návrhu NFDV a síťové služby (NSDV) jsou potřeba v rámci stávajících skupin NFDg a NSDg.
- Základní změny NFDV probereme v podrobné části.
- Nová verze NSDV se vyžaduje jenom v případě, že se zavádí nová verze schématu skupiny konfigurace (CGS).
- V případě potřeby nová skupina CGS.
- Vyžaduje se, pokud upgrade zavádí nové vystavené konfigurační parametry.
- Vydavatel, úložiště, návrh síťové služby (NSDg) a skupina návrhu síťových funkcí (NFDg) jsou statické a nemusí se měnit.
Vytvoření aktualizovaných artefaktů pomocí pracovního postupu operátora
- V případě potřeby vytvořte nové hodnoty skupiny konfigurace (CGV) založené na nových skupinách CGS.
- Opětovným použitím a vytvářením datové části potvrďte existující objekty síťové služby lokality a lokality.
Aktualizujte šablony, aby se zajistilo, že jsou parametry upgradu nastavené na základě spolehlivosti upgradu a požadovaného chování selhání.
- Nastavení použitá pro produkční prostředí můžou potlačit podrobnosti o chybách, zatímco nastavení použitá pro ladění nebo testování se mohou rozhodnout tyto podrobnosti zveřejnit.
Postup upgradu
Pokud chcete aktivovat upgrade pomocí Azure Operator Service Manageru, postupujte podle následujícího postupu.
Vytvoření nového prostředku NFDV
U nových verzí NFDV musí být v platném formátu SemVer, kde jsou povoleny pouze vyšší hodnoty přírůstku oprav a aktualizací podverzí. Nižší verze NFDV není povolená. Vzhledem k tomu, že cnf nasazený pomocí NFDV 2.0.0, může být nový NFDV verze 2.0.1 nebo 2.1.0, ale ne 1.0.0 nebo 3.0.0.
Aktualizace nových parametrů NFDV
Verze chartu Helm je možné aktualizovat nebo je možné je podle potřeby aktualizovat nebo parametrizovat. Nové aplikace NfApps je také možné přidat tam, kde v nasazené verzi neexistovaly.
Aktualizace NFDV pro požadovanou objednávku NfApp
UpdateDependsOn je parametr NFDV používaný k určení řazení NfApps během operací aktualizace. Pokud není zadán UpdateDependsOn, použije se sériové řazení aplikací CNF, jak se zobrazuje v NFDV.
Aktualizace NFDV pro požadované chování upgradu
Ujistěte se, že jste nastavili všechny požadované časové limity aplikace CNF, atomický parametr a parametr rollbackOnTestFailure. Může být užitečné tyto parametry v průběhu času změnit, protože při upgradu se získává větší jistota.
Vystavení reputace SNS
Po dokončení onboardingu se odešle operace s reputací. V závislosti na počtu, velikosti a složitosti NfApps může dokončení operace reputace nějakou dobu trvat (několik hodin).
Prozkoumání výsledků reputace
Pokud reputace hlásí úspěšný výsledek, upgrade se dokončí a uživatel by měl ověřit stav a dostupnost služby. Pokud reputace hlásí selhání, pokračujte podle kroků v části obnovení selhání upgradu.
Postup opakování
V případech, kdy dojde k selhání aktualizace reputace, je možné provést následující proces a zkusit operaci zopakovat.
Diagnostika selhání aplikace NfApp
Vyřešte původní příčinu selhání NfApp analýzou protokolů a dalších informací o ladění.
Ručně přeskočení dokončených grafů
Po opravě neúspěšného NfAppu, ale před pokusem o opakování upgradu zvažte změnu parametru applicationEnablement, aby se urychlilo chování opakování. Tento parametr může být nastaven na false, kde by se měl přeskočit NfApp. Tento parametr může být užitečný, pokud NfApp nevyžaduje upgrade.
Problém s důvěryhodným opakováním SNS (opakovat až do úspěchu)
Ve výchozím nastavení reputace opakuje NfApps v deklarované pořadí aktualizací, pokud nejsou vynechány pomocí příznaku applicationEnablement.
Jak používat applicationEnablement
V prostředku NFDV v části deployParametersMappingRuleProfile je vlastnost applicationEnablement typu výčtu, která přebírá hodnoty: Unknown, Enabled nebo disabled. Dá se použít k vyloučení operací NfApp během nasazování NF.
Změny vydavatele
Pro applicationEnablement vlastnost má vydavatel dvě možnosti: buď zadejte výchozí hodnotu nebo parametrizovat jej.
Ukázka NFDV
NFDV používá vydavatel k nastavení výchozích hodnot pro 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"
}
}
Ukázkový prostředek skupiny konfigurace (CGS)
CGS používá vydavatel k vyžadování, aby proměnné roleOverrideValues byly poskytovány operátorem za běhu. Tyto roleOverrideValues mohou obsahovat nedefault nastavení applicationEnablement.
{
"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"
]
}
Změny operátoru
Operátory dědí výchozí hodnoty applicationEnablement definované NFDV. Pokud je applicationEnablement parametrizován v CGS, musí být předán prostřednictvím vlastnosti deploymentValues za běhu.
Ukázkový prostředek skupiny konfigurace (CGV)
Operátor CGV používá k nastavení proměnných roleOverrideValues za běhu. RoleOverrideValues obsahuje non-dedfault nastavení pro applicationEnablement.
{
"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\"}}"
}
}
Ukázková šablona ARM NF
Šablonu NF ARM používá operátor k odeslání proměnných roleOverrideValues nastavených CGV poskytovateli prostředků (RP). Operátor může podle potřeby změnit nastavení applicationEnablement v CGV a znovu odeslat stejnou šablonu NF ARM, aby změnil chování mezi iteracemi.
{
"$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')]"
]
}
}
]
}
Podpora upgradů služeb
Pokud je to možné, azure Operator Service Manager podporuje v upgradech služeb, metodu upgradu, která přejde na verzi nasazení bez přerušení služby. Možnost upgradu dané služby bez přerušení je však funkcí samotné služby. Další informace o možnostech upgradu v rámci služby vám poskytne vydavatel služby.
Výhled na cíle
Azure Operator Service Manager stále rozšiřuje sadu funkcí Bezpečné upgradování a vylepšení nabízených aktualizačních služeb. Pro budoucí dostupnost se v současnosti zvažují následující funkce:
- Vylepšení řízení možností upgradu – efektivnější zveřejnění parametrů
- Přeskočte NfApp při žádné změně – přeskočte zpracování NfApps, kde žádný výsledek změn.
- Spuštění vrácení zpět NFDV při selhání – na základě příznaku vrácení zpět všechny dokončené NfApps při selhání.
- Provoz asynchronně – schopnost spouštět více operací NfApp najednou
- Stažení imagí – Možnost předběžného načtení imagí do hraničního úložiště
- Cílové grafy pro ověření – možnost spustit test helmu pouze na konkrétní aplikaci NfApp.