Použitíparametrůch
Nasazení služby SNS (Site Network Service) můžou selhat, protože základní nasazení síťové funkce (NF) se nepodaří správně nainstalovat. Azure Operator Service Manager (AOSM) ve výchozím nastavení odebere neúspěšná nasazení z cílového clusteru Kubernetes, aby se zachovaly prostředky. Helm install
selhání často vyžadují, aby prostředky zůstaly v clusteru, aby bylo možné selhání ladit. Tento článek s postupy popisuje, jak upravit šablonu ARM NF tak, aby toto chování přepsala nastavením parametru helm install --atomic
na false.
Požadavky
- Musíte mít nasazený svůj NF do AOSM pomocí rozšíření Az CLI AOSM. Tento článek odkazuje na strukturu složek a výstup souborů rozhraním příkazového řádku a poskytuje příklady založené na rozhraní příkazového řádku.
- Selhání instalace Helmu můžou být složitá. Ladění vyžaduje kromě znalostí NF také technické znalosti několika technologií.
- Pracovní znalost Nástroje Helm
- Pracovní znalost příkazů Kubernetes a kubectl
- Pracovní znalost načítání a nasdílení artefaktů do služby Azure Container Registry
- Vyžadujete
Contributor
přiřazení rolí ve skupině prostředků, která obsahuje úložiště artefaktů spravovaných službou AOSM. - Vhodné integrované vývojové prostředí (IDE), jako je Visual Studio Code
- Rozhraní příkazového řádku ORAS
Důležité
Důrazně doporučujeme, abyste před pokusem o nasazení pomocí AOSM otestovali úspěšné helm install
nasazení balíčku Helm ve vašem cílovém prostředí Kubernetes připojeném k Arc.
Přepsání --atomic
jednoho chartu helmu NF
Tato část vysvětluje, jak přepsat --atomic
pro NF, který se skládá z jednoho chartu Helm.
Vyhledání a úprava šablony NF BICEP
Přejděte do
nsd-cli-output
adresáře, otevřeteartifacts
adresář a otevřete<nf-arm-template>.bicep
soubor.<nf-arm-template>
je nakonfigurovaný ve vstupním souboru NSD rozšíření Az AOSM CLI. Můžete potvrdit, že máte správný soubor, a to porovnáním s následující ukázkovou šablonou fiktivní kontejnerizované síťové funkce Contoso (CNF).@secure() param configObject object var resourceGroupId = resourceGroup().id var identityObject = (configObject.managedIdentityId == '') ? { type: 'SystemAssigned' } : { type: 'UserAssigned' userAssignedIdentities: { '${configObject.managedIdentityId}': {} } } var nfdvSymbolicName = '${configObject.publisherName}/${configObject.nfdgName}/${configObject.nfdv}' resource nfdv 'Microsoft.Hybridnetwork/publishers/networkfunctiondefinitiongroups/networkfunctiondefinitionversions@2023-09-01' existing = { name: nfdvSymbolicName scope: resourceGroup(configObject.publisherResourceGroup) } resource nfResource 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = [for (values, i) in configObject.deployParameters: { name: '${configObject.nfdgName}${i}' location: configObject.location identity: identityObject properties: { networkFunctionDefinitionVersionResourceReference: { id: nfdv.id idType: 'Open' } nfviType: 'AzureArcKubernetes' nfviId: (configObject.customLocationId == '') ? resourceGroupId : configObject.customLocationId allowSoftwareUpdate: true configurationType: 'Open' deploymentValues: string(values) } }]
Název aplikace síťové funkce najdete tak, že přejdete do
cnf-cli-output
adresáře, otevřetenfDefinition
adresář a zkopírujete hodnotu z jediné položky v poli networkFunctionApplications vnfdv
prostředku. Ověřte, že máte správnou hodnotu, a to porovnáním s následujícím fiktivním fragmentem kódu BICEP contoso. V tomto případě jeContoso
název aplikace síťové funkce .resource nfdv 'Microsoft.Hybridnetwork/publishers/networkfunctiondefinitiongroups/networkfunctiondefinitionversions@2023-09-01' = { parent: nfdg name: nfDefinitionVersion location: location properties: { deployParameters: string(loadJsonContent('deployParameters.json')) networkFunctionType: 'ContainerizedNetworkFunction' networkFunctionTemplate: { nfviType: 'AzureArcKubernetes' networkFunctionApplications: [ { artifactType: 'HelmPackage' name: 'Contoso'
Upravte šablonu tak, aby přepsala výchozí možnost instalace
--atomic
helmu přidáním následující konfigurace donfResource
vlastností v šabloně ARM NF:roleOverrideValues: ['{"name": "Contoso-one", "deployParametersMappingRuleProfile": {"applicationEnablement": "Enabled", "helmMappingRuleProfile": {"options": {"installOptions": {"atomic": "false"}},{"upgradeOptions": {"atomic": "false"}}}}}']
Ověřte, že jste tuto úpravu provedli správně, a to porovnáním s následujícím fragmentem kódu z ukázkového NF společnosti Contoso.
resource nfResource 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = [for (values, i) in configObject.deployParameters: {
name: '${configObject.nfdgName}${i}'
location: configObject.location
identity: identityObject
properties: {
networkFunctionDefinitionVersionResourceReference: {
id: nfdv.id
idType: 'Open'
}
nfviType: 'AzureArcKubernetes'
nfviId: (configObject.customLocationId == '') ? resourceGroupId : configObject.customLocationId
allowSoftwareUpdate: true
configurationType: 'Open'
deploymentValues: string(values)
roleOverrideValues: [
'{"name":"Contoso-one","deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"injectArtifactStoreDetails":"true", "atomic": "false"},"upgradeOptions":{"injectArtifactStoreDetails":"true","atomic": "false"}}}}}'
]}}]
Sestavení upravené šablony ARM a jeho nahrání do úložiště artefaktů
Přejděte do
nsd-cli-output/artifacts
adresáře vytvořenéhoaz aosm nsd build
příkazem a ze souboru BICEP vygenerovaného rozhraním příkazového řádku sestavte šablonu ARM síťové funkce.bicep build <nf-name>.bicep
Vygenerujte přihlašovací údaje tokenu mapování oboru z manifestu artefaktů vytvořeného
az aosm nsd publish
v příkazu.Důležité
Musíte použít manifest artefaktů
az aosm nsd publish
vytvořený v příkazu. Šablona ARM NF je deklarována pouze v tomto manifestu, takže pouze token mapování oboru vygenerovaný tímto manifestem vám umožní odeslat (nebo vyžádat) šablonu NF ARM do úložiště artefaktů.az rest --method POST --url 'https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.HybridNetwork/publishers/<publisher>/artifactStores/<artifact-store>/artifactManifests/<artifactManifest>/listCredential?api-version=2023-09-01'
Přihlaste se ke spravované službě AOSM ACR. Název ACR spravovaný službou AOSM najdete v přehledu prostředků Úložiště artefaktů na webu Azure Portal. Uživatelské jméno a heslo najdete ve výstupu předchozího kroku.
oras login <aosm-managed-acr-name>.azurecr.io --username <username> --password <scope map token>
Pomocí ORAS nahrajte šablonu ARM síťové funkce do služby Azure Container Registry (ACR) spravované službou AOSM. Značka
<arm-template-version>
artefaktu musí být ve1.0.0
formátu.<arm-template-version>
Hodnoty<arm-template-name>
v manifestu artefaktů vytvořeném v příkazu musí odpovídat hodnotámaz aosm nsd publish
.
Přepsání --atomic
pro více helm chart NF
Mnoho složitých NF se vytváří z více grafů helmu. Tyto NF se vyjadřují ve verzi definice síťové funkce (NFDV) s více aplikacemi síťových funkcí a instalují se s více helm install
příkazy – jeden na chart Helm.
Proces přepsání --atomic
pro více helm NF je stejný jako u jednoho NF helmu kromě úprav provedených v šabloně ARM.
Fiktivní multi-helm NF, Contoso-multi-helm, se skládá ze tří chartů helmu. Jeho NFDV má tři síťové aplikace funkcí. Jedna aplikace síťových funkcí se mapuje na jeden chart Helm. Tyto aplikace síťových funkcí mají vlastnost názvu nastavena na Contoso-one
, Contoso-two
a Contoso-three
v uvedeném pořadí. Tady je příklad fragmentu kódu NFDV definující tuto síťovou funkci.
resource nfdv 'Microsoft.Hybridnetwork/publishers/networkfunctiondefinitiongroups/networkfunctiondefinitionversions@2023-09-01' = {
parent: nfdg
name: nfDefinitionVersion
location: location
properties: {
deployParameters: string(loadJsonContent('deployParameters.json'))
networkFunctionType: 'ContainerizedNetworkFunction'
networkFunctionTemplate: {
nfviType: 'AzureArcKubernetes'
networkFunctionApplications: [
{
artifactType: 'HelmPackage'
name: 'Contoso-one'
...
},
{
artifactType: 'HelmPackage'
name: 'Contoso-two'
...
},
{
artifactType: 'HelmPackage'
name: 'Contoso-three'
...
}]
}
}
}
Parametr --atomic
lze přepsat pro každou z těchto aplikací síťových funkcí nezávisle. Tady je příklad šablony NF BICEP, která přepíše --atomic
false
hodnotu for Contoso-one
a Contoso-two
, ale nastaví atomic
hodnotu true pro Contoso-three
.
resource nfResource 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = [for (values, i) in configObject.deployParameters: {
name: '${configObject.nfdgName}${i}'
location: configObject.location
identity: identityObject
properties: {
networkFunctionDefinitionVersionResourceReference: {
id: nfdv.id
idType: 'Open'
}
nfviType: 'AzureArcKubernetes'
nfviId: (configObject.customLocationId == '') ? resourceGroupId : configObject.customLocationId
allowSoftwareUpdate: true
configurationType: 'Open'
deploymentValues: string(values)
roleOverrideValues: [
'{"name":"Contoso-one","deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"injectArtifactStoreDetails":"true", "atomic": "false"},"upgradeOptions":{"injectArtifactStoreDetails":"true","atomic": "false"}}}}}'
'{"name":"Contoso-two","deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"injectArtifactStoreDetails":"true", "atomic": "false"},"upgradeOptions":{"injectArtifactStoreDetails":"true","atomic": "false"}}}}}'
'{"name":"Contoso-three","deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"injectArtifactStoreDetails":"true", "atomic": "false"},"upgradeOptions":{"injectArtifactStoreDetails":"true","atomic": "false"}}}}}'
]}}]
Další kroky
Teď můžete zkusit znovu nasadit SNS. Nasazení můžete znovu odeslat prostřednictvím ARM, BICEP nebo rozhraní REST API AOSM. Neúspěšný SNS můžete také odstranit prostřednictvím přehledu SNS webu Azure Portal a znovu nasadit podle rychlého startu operátora. Parametry NF rychlého startu nahraďte parametry síťové funkce. Verze Helmu nasazené do clusteru Kubernetes se při selhání neodeberou. Postup ladění selhání nasazení SNS popisuje sadu nástrojů pro ladění běžných selhání instalace helmu.