Problémy s rozšířením Azure CLI Azure Operator Service Manageru (AOSM)
Tento dokument obsahuje seznam běžných problémů při použití rozšíření Azure CLI AOSM k onboardingu síťových funkcí a jejich řešení.
Běžné problémy
Publisher již v oblasti existuje.
Názvy vydavatelů musí být jedinečné v rámci oblasti Azure. Pokud se zobrazí následující chyba, název vydavatele, který jste zvolili, se už používá:
Message: A private publisher resource with the name 'nginx-publisher' already exists in the provided region.
Vyřešení této chyby:
Pokud vlastníte vydavatele, nachází se ve vašem tenantovi a chcete ho znovu použít:
Vydavatel je definován v konfiguračním souboru s příponou AOSM CLI. Pole publisher_name
musí publisher_resource_group_name
odpovídat existujícímu vydavateli a musí být v tenantovi, který používáte pro toto nasazení.
publisher_resource_group_name
Změňte konfigurační soubor tak, aby odkazovat na existujícího vydavatele, znovu spusťte odpovídající build
příkaz a spusťte publish
příkaz znovu.
Existujícího vydavatele nevlastníte:
Použijte nový název vydavatele.
Selhání nahrávání artefaktů návrhu síťové služby (NSD)
Nahrávání artefaktů pomocí az aosm nsd publish
příkazu může ve výjimečných případech selhat. Výstup chyby v tomto případě je
ValueError: Issue retrieving session url: {'errors': [{'code': 'UNAUTHORIZED', 'message': 'authentication required, visit https://aka.ms/acr/authorization for more information.', 'detail': [{'Type': 'repository', 'Name': 'contoso-nsd', 'Action': 'pull'}, {'Type': 'repository', 'Name': 'contoso-nsd', 'Action': 'push'}]}]}
Vyřešení této chyby:
Možnost 1.
Ověřte, že máte Contributor
přiřazení rolí k AcrPush
předplatnému, které chcete použít. Pokud ne, přiřaďte je. Pokud nastavení tohoto přiřazení role není možné, spusťte az aosm nsd publish
příkaz s parametrem --no-subscription-permissions
.
Možnost 2.
Pokud tato oprávnění problém nevyřeší, spusťte následující příkazy ze nsd-cli-output/artifacts
složky vytvořené příkazem az aosm nsd build
:
- Sestavení šablony ARM síťové funkce ze souboru BICEP vygenerovaného rozhraním příkazového řádku
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'
- Nainstalujte Open Container Initiative Registry jako úložiště (ORAS) a přihlaste se k AOSM spravované službě ACR. Název ACR spravovaný službou AOSM najdete na stránce webu Azure Portal pro prostředek Úložiště artefaktů. 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.
oras push <aosm-managed-acr-name>.azurecr.io/Contoso-nsd:<arm-template-version> ./nsd-cli-output/artifacts/<nf-name>.json
Selhání kopírování mezi tenanty
Rozšíření Azure CLI AOSM nativně nepodporuje kopie imagí mezi tenanty. Je ale možné nakonfigurovat prostředí rozhraní příkazového řádku způsobem, který tuto funkci umožňuje. Tento postup spočívá v nastavení výchozího předplatného Azure na předplatné obsahující zdrojové ACR, přihlášení ke zdrojové službě ACR a následné spuštění všech az aosm
příkazů s parametrem --subscription
a nastavení hodnoty na cílové předplatné. Zdrojová a cílová předplatná můžou být v různých tenantech.
az account set --subscription <source-acr-subscription>
az acr login --name <source-acr-name> -u <source-acr-username> -p <source-acr-password> --subscription <source-acr-subscription>
az aosm nfd publish --definition-type cnf --subscription <target-subscription>
Běžné chybné konfigurace
Nasazení služby SNS (Site Network Service) selže v případě, že se konfigurace verze NSDV (Site And Network Service Design Version) neshoduje
Pokusy o vytvoření SNS selžou, pokud vlastnost nfvi prostředku webu neodpovídá vlastnosti nfvisFromSite NSDV. Nastala chyba
{
"statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"InvalidRequestContent\",\"message\":\"For NfviAlias = nfvi1, either NfviName = nsd-contoso_NFVI and NfviType = AzureCore does not match with site resource.\"}]}}",
}
V tomto příkladu vlastnost NSDV nfvisFromSite obsahuje:
nfvisFromSite: {
nfvi1: {
name: 'nsd-contoso_NFVI1'
type: 'AzureArcKubernetes'
}
Vlastnost Prostředek webu nfvi se musí shodovat s názvem a typem v NSDV.
resource site 'Microsoft.HybridNetwork/sites@2023-09-01' = {
name: 'contoso-site'
location: 'eastus'
properties: {
nfvis : [
{
name: 'nsd-contoso_NFVI1'
nfviType: 'AzureArcKubernetes'
customLocationReference: {
id: '<custom-location-arm-id>'
}
}
]
}
}
Název nfdvName v hodnotě skupiny konfigurace (CGV) neodpovídá publikované verzi definice síťové funkce (NFDV).
Schémata skupin konfigurace generovaná rozšířením Azure CLI AOSM mají povinný parametr s názvem nfdvName
. nfdvname
je název NFDV, což je řetězec ve 1.0.0
formátu. Nejedná se o název síťové funkce (NF) ani skupiny definic síťových funkcí (NFDG). Následující příklad ukazuje správné využití.
{
"nsd-contoso": {
"nfdvName": "1.0.0",
"deployParameters": [
{}
],
"customLocationId": "<custom-location-arm-id>",
"managedIdentityId": "<managed-id-arm-id>"
}
}
Nesprávná vlastnost hodnot CGV při vystavení žádných parametrů ve schématu skupiny konfigurace (CGS)
Schémata skupin konfigurace generovaná rozšířením Azure CLI AOSM zpřístupňují deployParameters
pole, které ve výchozím nastavení představuje pole objektů JSON. Existuje několik důvodů, proč můžete chtít vytvořit CGV s prázdným deployParameters
polem:
- Ve schématu skupiny konfigurace nemáte žádnou konfiguraci a všechny hodnoty jsou nastavené ve výchozích hodnotách.yaml v chartu Helm.
- Vytvořili jste schéma skupiny konfigurace, které obsahuje výchozí hodnoty a nechcete je přepsat.
Pokud vytváříte CGV s prázdným deployParameters
polem, hodnota pole musí být pole obsahující prázdný objekt JSON.
{
"nsd-contoso": {
"nfdv": "1.0.0",
"deployParameters": [
{}
],
"customLocationId": "<custom-location-arm-id>",
"managedIdentityId": "<managed-id-arm-id>"
}
}
AOSM vrátí následující chybovou zprávu, pokud CGV obsahuje prázdné pole (to znamená []
) místo pole obsahující prázdný objekt ([{}]
).
{"code":"BadRequest","message":"NSDV ResourceElementTemplate (name: 'mco-nsdg', type: 'NetworkFunctionDefinition') expects at least one 'networkfunctions' resource in the associated template. Please use the type: 'ArmResourceDefinition' to install generic ARM resources."}
Neshoda mezi vlastností obrázku v chartech Helm a umístěním ve zdrojové službě ACR
Rozhraní příkazového řádku AOSM vyžaduje, aby image ve zdrojovém registru byly ve stejné struktuře úložiště jako v chartu Helm. Například obrázek zahrnutý v chartu Helm, jak core/contoso-a:1.0.0
musí být k dispozici ve zdrojovém registru v cestě, která končí .core/contoso-a:1.0.0
Selhání nahrání image do správné cesty ve zdrojovém registru způsobí az aosm nfd publish
selhání s následující chybou.
Code: InvalidParameters
Message: Operation registries-cd9ad97d-f3a3-11ee-a728-6b163569f55a failed. Resource /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ContainerRegistry/registries/contoso Invalid message NotFound Not Found {"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest tagged by \"0.0.0-9\" is not found","detail":{"Tag":"0.0.0-9"}}]}
K dispozici je několik řešení.
- Upravte chart Helm nebo předejte cesty k obrázkům v values.yaml a nastavte cesty k obrázkům tak, aby odpovídaly struktuře úložiště ve zdrojovém registru.
- Nahrajte image do zdrojového registru tak, aby zřetězení "image_sources" v
cnf-input.jsonc
souboru a cesta k obrázku z chartu Helm odpovídala nahranému umístění ve zdrojovém registru. - Rozhraní příkazového řádku AOSM ukládá metadata pro image, ve
cnf-cli-output/artifacts/artifacts.json
které se objeví. Cesta, kterou rozhraní příkazového řádku AOSM hledá ve zdrojovém registru, je<registry_name>/<registry_namespace>/<artifact_name>/<artifact_version>
. Tento soubor můžete ručně upravit tak, aby hodnoty odpovídaly umístění obrázku ve zdrojové službě ACR.
CGV neodpovídá CGS, pokud má parametr typ null
V současné době AOSM nepodporuje null
jako výchozí hodnotu ve schématu deployParameters, což znamená, že výchozí hodnota null
není povolená ani ve schématech skupiny konfigurace. Chcete-li tento problém vyřešit, AOSM CLI nastaví výchozí hodnotu parametrů typu null na řetězec "null"
, který umožňuje úspěšné publikování NFDV.
Při vytváření CGV pomocí portálu se parametr automaticky vyplňuje tak, aby měl "null"
hodnotu. Pokud tuto hodnotu nezměníte, zobrazí se na portálu chybová zpráva s informací, že nová hodnota skupiny konfigurace neodpovídá schématu – upravte hodnoty.
Pokud chcete tuto chybu opravit, přejděte "null"
na null
CGV.
Například původně máme hodnotu "null"
:
"serviceAccount_name": "null",
Který musí být změněn na hodnotu null
.
"serviceAccount_name": null,