Azure CLI Azure Operatör Hizmet Yöneticisi (AOSM) uzantısı sorunları
Bu belge, Ağ İşlevlerini eklemek için Azure CLI AOSM uzantısını kullanırken karşılaşılan yaygın sorunların listesini ve bunların çözümlerini içerir.
Genel sorunlar
Publisher bölgede zaten var
Yayımcı adları bir Azure bölgesinde benzersiz olmalıdır. Aşağıdaki hatayı görürseniz, seçtiğiniz yayımcı adı zaten kullanımdadır:
Message: A private publisher resource with the name 'nginx-publisher' already exists in the provided region.
Bu hatayı düzeltmek için:
Yayımcının sahibi sizseniz, kiracınızdadır ve yeniden kullanmak istiyorsunuz:
Yayımcı, AOSM CLI uzantısı yapılandırma dosyanızda tanımlanır. publisher_name
ve publisher_resource_group_name
alanları mevcut yayımcıyla eşleşmelidir ve bu dağıtım için kullandığınız kiracıda olmalıdır.
publisher_resource_group_name
Var olan yayımcıya başvurması için yapılandırma dosyasındaki öğesini değiştirin, karşılık gelen build
komutu yeniden çalıştırın ve ardından komutu yeniden çalıştırınpublish
.
Mevcut yayımcıya sahip değilsiniz:
Yeni bir yayımcı adı kullanın.
Ağ Hizmeti Tasarımı (NSD) yapıtı karşıya yükleme hatası
Komutu kullanarak az aosm nsd publish
yapıt yüklemeleri nadir durumlarda başarısız olabilir. Bu durumda hata çıktısı şudur:
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'}]}]}
Bu hatayı düzeltmek için:
1. Seçenek
Kullanmak istediğiniz abonelikte Contributor
ve AcrPush
rol atamalarına sahip olduğunuzu onaylayın. Atamazsanız atayın. Bu rol atamasını az aosm nsd publish
ayarlamak mümkün değilse parametresiyle --no-subscription-permissions
komutunu çalıştırın.
2. Seçenek
Bu izinler sorunu çözmezse, komutu tarafından az aosm nsd build
oluşturulan klasörden nsd-cli-output/artifacts
aşağıdaki komutları çalıştırın:
- CLI tarafından oluşturulan BICEP dosyasından Ağ İşlevi ARM Şablonu oluşturma
bicep build <nf-name>.bicep
- komutunda
az aosm nsd publish
oluşturulan Yapıt Bildirimi'nden kapsam eşleme belirteci kimlik bilgilerini oluşturun.
Önemli
komutunda oluşturulan Yapıt Bildirimi'ni az aosm nsd publish
kullanmanız gerekir. NF ARM şablonu yalnızca bu bildirimde bildirilir, bu nedenle yalnızca bu bildirim tarafından oluşturulan kapsam eşleme belirteci NF ARM şablonunu Yapıt Deposu'na göndermenize (veya çekmenize) izin verir.
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'
- Open Container Initiative Registry'yi Depolama (ORAS) olarak yükleyin ve AOSM tarafından yönetilen ACR'de oturum açın. AOSM tarafından yönetilen ACR adı, Yapıt Deposu kaynağının Azure portal sayfasında bulunabilir. Kullanıcı adı ve parola, önceki adımın çıkışında bulunabilir.
oras login <aosm-managed-acr-name>.azurecr.io --username <username> --password <scope map token>
- Ağ İşlevi ARM şablonunu AOSM tarafından yönetilen Azure Container Registry'ye (ACR) yüklemek için ORAS kullanın. Yapıt
<arm-template-version>
etiketi biçiminde1.0.0
olmalıdır.
oras push <aosm-managed-acr-name>.azurecr.io/Contoso-nsd:<arm-template-version> ./nsd-cli-output/artifacts/<nf-name>.json
Kiracılar arası kopyalama hataları
Azure CLI AOSM Uzantısı, kiracılar arası görüntü kopyalarını yerel olarak desteklemez. Ancak, CLI ortamınızı bu işlevselliğe izin veren bir şekilde yapılandırmak mümkündür. İşlem, varsayılan Azure aboneliğini kaynak ACR'yi içeren aboneliğe ayarlamak, kaynak ACR'de oturum açmak ve ardından değeri hedef aboneliğe ayarlayarak parametresiyle --subscription
tüm az aosm
komutları çalıştırmaktır. Kaynak ve hedef abonelikler farklı kiracılarda olabilir.
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>
Yaygın yanlış yapılandırmalar
Site ve Ağ Hizmeti Tasarım Sürümü (NSDV) yapılandırması eşleşmediğinde Site Ağ Hizmeti (SNS) dağıtımı başarısız oluyor
Site kaynağının nfvi özelliği NSDV'nin nfvisFromSite özelliğiyle eşleşmiyorsa SNS oluşturma girişimleri başarısız olur. Hata:
{
"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.\"}]}}",
}
Bu örnekte NSDV nfvisFromSite özelliği şunları içerir:
nfvisFromSite: {
nfvi1: {
name: 'nsd-contoso_NFVI1'
type: 'AzureArcKubernetes'
}
Site kaynağı nfvi özelliği, NSDV'deki ad ve türle eşleşmelidir.
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>'
}
}
]
}
}
Yapılandırma Grubu Değeri'ndeki (CGV) nfdvName, yayımlanan Ağ İşlevi Tanımı Sürümü (NFDV) ile eşleşmiyor
Azure CLI AOSM Uzantısı tarafından oluşturulan yapılandırma grubu şemaları adlı nfdvName
zorunlu bir parametreye sahiptir. nfdvname
, biçimindeki bir dize olan NFDV'nin 1.0.0
adıdır. Ağ İşlevi (NF) veya Ağ İşlevi Tanım Grubu'nun (NFDG) adı değildir. Aşağıdaki örnekte doğru kullanım gösterilmektedir.
{
"nsd-contoso": {
"nfdvName": "1.0.0",
"deployParameters": [
{}
],
"customLocationId": "<custom-location-arm-id>",
"managedIdentityId": "<managed-id-arm-id>"
}
}
Yapılandırma Grubu Şemasında (CGS) parametre gösterilmediğinde hatalı CGV değerleri özelliği
Azure CLI AOSM Uzantısı tarafından oluşturulan yapılandırma grubu şemaları, varsayılan olarak bir JSON nesneleri dizisi olan bir deployParameters
alanı kullanıma sunar. Boş deployParameters
bir alana sahip bir CGV oluşturmak istemenin birkaç nedeni vardır:
- Yapılandırma Grubu Şeması'nda kullanıma sunulan bir yapılandırmanız yok ve helm grafiğindeki varsayılan values.yaml dosyasında tüm değerler ayarlanır.
- Varsayılan değerleri içeren bir Yapılandırma grubu şeması oluşturdunuz ve bunları geçersiz kılmak istemiyorsunuz.
Boş deployParameters
alan içeren bir CGV oluşturuyorsanız, alan değeri boş bir JSON nesnesi içeren bir dizi olmalıdır.
{
"nsd-contoso": {
"nfdv": "1.0.0",
"deployParameters": [
{}
],
"customLocationId": "<custom-location-arm-id>",
"managedIdentityId": "<managed-id-arm-id>"
}
}
CGV boş bir nesne[{}]
() içeren bir dizi yerine boş bir dizi (yani[]
) içeriyorsa AOSM aşağıdaki hata iletisini döndürür.
{"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."}
Helm grafiklerindeki görüntü özelliği ile kaynak ACR'deki konum arasındaki uyuşmazlık
AOSM CLI, kaynak kayıt defterinizdeki görüntülerin helm grafiğinizde yazılanla aynı depo yapısında olmasını gerektirir. Örneğin, helm grafiğinde core/contoso-a:1.0.0
bulunan bir görüntünün ile biten core/contoso-a:1.0.0
bir yolda kaynak kayıt defterinde kullanılabilir olması gerekir. Görüntünün kaynak kayıt defterinde doğru yola yüklenememesi aşağıdaki hatayla başarısız olmasına neden olur az aosm nfd publish
.
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"}}]}
Birden çok çözüm mevcuttur.
- Helm grafiğinizi düzenleyin veya values.yaml dosyasındaki görüntü yollarını geçirin ve görüntü yollarını kaynak kayıt defterinizdeki depo yapısıyla eşleşecek şekilde ayarlayın.
- Görüntüleri kaynak kayıt defterinize yükleyin; böylece dosyadaki
cnf-input.jsonc
"image_sources" birleştirmesi ve helm grafiğindeki görüntü yolu kaynak kayıt defterinde karşıya yüklenen konumla eşleşir. - AOSM CLI, içinde
cnf-cli-output/artifacts/artifacts.json
keşfettiği görüntülerin meta verilerini depolar. AOSM CLI'nın kaynak kayıt defterinde arayştırma yolu şeklindedir<registry_name>/<registry_namespace>/<artifact_name>/<artifact_version>
. Bu dosyayı el ile düzenleyerek değerlerin kaynak ACR'nizdeki görüntünün konumuyla eşleşmesini sağlayabilirsiniz.
Parametre null türüne sahip olduğunda CGV'ler CGS ile eşleşmiyor
AOSM şu anda deployParameters şemasında varsayılan değer olarak desteklenmemektedir null
ve bu da Yapılandırma Grubu Şemalarında varsayılan değere null
izin verilmediği anlamına gelir. Bu sorunu geçici olarak çözmek için AOSM CLI, null türündeki parametrelerin varsayılan değerini dizesi "null"
olarak ayarlar ve bu da NFDV'nin başarıyla yayımlanmasına olanak tanır.
Portalı kullanarak CGV'ler oluştururken parametreniz değeri olarak otomatik "null"
olarak doldurulur. Bu değeri değiştirmezseniz Portalda şu hata iletisi gösterilir: "Yeni Yapılandırma Grubu Değeri şemayla eşleşmiyor - lütfen değerleri düzenleyin."
Bu hatayı düzeltmek için CGV'lerde olarak değiştirin "null"
null
.
Örneğin, başlangıçta değerini "null"
elde ederiz:
"serviceAccount_name": "null",
Değeri olarak null
değiştirilmelidir.
"serviceAccount_name": null,