Aracılığıyla paylaş


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çiminde 1.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ı nfdvNamezorunlu 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.0bir 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.jsonkeş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."

Yapılandırma grubu değerleri yapılandırma grubu şemasıyla eşleşmediğinden hata iletisinin bulunduğu portalın ekran görüntüsü.

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 nulldeğiştirilmelidir.

"serviceAccount_name": null,