Aracılığıyla paylaş


Hızlı Başlangıç: Nginx kapsayıcıyı Kapsayıcılı Ağ İşlevi (CNF) olarak yayımlama

Bu hızlı başlangıçta, temel bir Ağ İşlevi Tanımı oluşturmak ve yayımlamak için Azure CLI uzantısının az aosm nasıl kullanılacağı açıklanmaktadır. Amacı, Publisher Azure Operatör Hizmet Yöneticisi (AOSM) kaynaklarının iş akışını göstermektir. Burada sunulan temel kavramlar, kullanıcıları daha heyecan verici hizmetler oluşturmaya hazırlamaya yöneliktir.

Önkoşullar

Giriş dosyası oluşturma

Ağ İşlevi Tanımını yayımlamak için bir giriş dosyası oluşturun. Aşağıdaki komutu yürüterek Ağ İşlevi Tanımı (NFD) için giriş yapılandırma dosyasını oluşturun.

az aosm nfd generate-config --definition-type cnf

Önceki komutun yürütülmesi bir cnf-input.jsonc dosyası oluşturur.

Not

cnf-input.jsonc dosyasını düzenleyin. Aşağıdaki örnekte gösterilen değerlerle değiştirin. Dosyayı input-cnf-nfd.jsonc olarak kaydedin.

Var olan bir kaynak grubunu kullanıyorsanız, alanı bu grupla publisher_resource_group_name eşleşecek şekilde değiştirin.

İpucu

AOSM CLI'da görüntüleriniz için kaynak olarak birden çok kapsayıcı kayıt defteri kullanabilirsiniz. Bu kayıt defterlerinden kopyalanacak görüntüler helm paketi şemasına göre otomatik olarak seçilir. Kaynak kayıt defterleri cnf-input.jsonc dosyasının listesinde yapılandırılır image_sources .

ACR'leri kullanırken, ACR'de Okuyucu ve AcrPull rollerine sahip olmanız gerekir. ACR olmayan kayıt defterlerini kullanırken, komutu çalıştırmadan önce her özel kayıt defteriyle kimlik doğrulaması yapmak için komutunu çalıştırmanız docker login az aosm nfd build gerekir. Bu hızlı başlangıçta görüntü kaynağı kayıt defteri olarak kullanacağız docker.io . Bu bir genel kayıt defteridir ve kimlik doğrulaması gerektirmez.

Örnek input-cnf-nfd.jsonc dosyası aşağıda verilmişti:

{
  // Azure location to use when creating resources e.g uksouth
  "location": "uksouth",
  // Name of the Publisher resource you want your definition published to.
  // Will be created if it does not exist.
  "publisher_name": "nginx-publisher",
  // Resource group for the Publisher resource.
  // Will be created if it does not exist.
  "publisher_resource_group_name": "nginx-publisher-rg",
  // Name of the ACR Artifact Store resource.
  // Will be created if it does not exist.
  "acr_artifact_store_name": "nginx-nsd-acr",
  // Name of NF definition.
  "nf_name": "nginx",
  // Version of the NF definition in 1.1.1 format (three integers separated by dots).
  "version": "1.0.0",
  // List of registries from which to pull the image(s).
  // For example ["sourceacr.azurecr.io/test", "myacr2.azurecr.io", "ghcr.io/path"].
  // For non Azure Container Registries, ensure you have run a docker login command before running build.
  //
  "image_sources": ["docker.io"],
  // List of Helm packages to be included in the CNF.
  "helm_packages": [
    {
      "name": "nginxdemo",
      "path_to_chart": "nginxdemo-0.3.0.tgz",
      "default_values": ""
    }
  ]
}
  • publisher_name - Tanımınızın yayımlanmasını istediğiniz Publisher kaynağının adı. Henüz yoksa oluşturulur.
  • publisher_resource_group_name - Publisher kaynağının kaynak grubu. Henüz yoksa oluşturulur.
  • acr_artifact_store_name - Azure Container Registry (ACR) Yapı Deposu kaynağının adı. Henüz yoksa oluşturulur.
  • location - Kaynak oluştururken kullanılacak Azure konumu.
  • nf_name - NF tanımının adı.
  • version - A.B.C biçimindeki NF tanımının sürümü.
  • image_sources - görüntülerin çekildiği kayıt defterlerinin listesi.
  • helm_packages:
    • name - Helm paketinin adı.
    • path_to_chart - Yerel diskteki Helm Grafiği'nin dosya yolu. .tgz, .tar veya .tar.gz kabul eder. Windows üzerinde çalışıyor olsa bile Linux eğik çizgi (/) dosya ayırıcısını kullanın. Yol, mutlak bir yol veya dosyanın konumuna cnf-input.jsonc göre yol olmalıdır.
    • default_values - Helm grafiğinde bulunan values.yaml dosyası yerine kullanılan yerel diskteki YAML değerleri dosyasının dosya yolu (mutlak veya görelicnf-input.jsonc).
    • depends_on - Bu paketin bağımlı olduğu Helm paketlerinin adları. Bağımlılık yoksa boş bir dizi olarak bırakın.

Ağ İşlevi Tanımını (NFD) Oluşturma

Ağ İşlevi Tanımını (NFD) oluşturmak için derleme işlemini başlatın.

az aosm nfd build -f input-cnf-nfd.jsonc --definition-type cnf

Az CLI AOSM uzantısı adlı cnf-cli-outputbir dizin oluşturur. Bu dizin, bir NFDV yayımlamak ve AOSM tarafından yönetilen depolamaya dağıtmak için gereken görüntüleri karşıya yüklemek için gereken AOSM kaynaklarını tanımlayan BICEP dosyalarını içerir. Ağ İşlevi Tanımı (NFD) yapısını daha iyi anlamak için oluşturulan dosyaları inceleyin.

Dizin/Dosya Açıklama
nfDefinition/deployParameters.json Bu Ağ İşlevi Tanım Sürümünden (NFDV) bir Ağ İşlevi (NF) oluşturmak için gereken dağıtım parametrelerinin şemasını tanımlar.
nfDefinition/nginxdemo-mappings.json Ağ İşlevi Tanımı Sürümü (NFDV) için dağıtım parametrelerini helm grafiği için gereken değerlerle eşler.
nfDefinition/deploy.bicep Ağ İşlevi Tanımı Sürümünün (NFDV) kendisini oluşturmaya yönelik Bicep şablonu.
yapıtlar/artifacts.json NF tarafından gereken helm paketlerinin ve kapsayıcı görüntülerinin listesi.
artifactManifest/deploy.bicep Yapıt bildirimi oluşturmak için Bicep şablonu.
base/deploy.bicep Yayımcı, ağ işlevi tanım grubu ve yapıt deposu kaynaklarını oluşturmak için Bicep şablonu

Ağ İşlevi Tanımını yayımlama ve yapıtları karşıya yükleme

Aşağıdaki komutu yürüterek Ağ İşlevi Tanımı'nı (NFD) yayımlayın ve ilişkili yapıtları karşıya yükleyin:

Not

Windows kullanıyorsanız yayımlama adımı sırasında Docker Desktop'ın çalışıyor olması gerekir.

Not

Yayımcı adları bir bölge içinde benzersiz olmalıdır. Büyük olasılıkla örnek yapılandırma dosyasında tanımlanan 'nginx-publisher' zaten var.

"Sağlanan bölgede 'nginx-publisher' adlı bir özel yayımcı kaynağı zaten var" hatasını alırsanız, yapılandırma dosyasındaki alanı benzersiz olacak şekilde düzenleyin publisher_name (örneğin, rastgele dize son eki ekleyin), komutu yeniden çalıştırın build (yukarıda) ve sonra bu publish komutu yeniden çalıştırın.

Ağ hizmeti tasarımı oluşturmaya devam ederseniz, dizide resource_element_templates bu yeni pubilsher adını kullanmanız gerekir.

az aosm nfd publish -b cnf-cli-output --definition-type cnf

Komut tamamlandığında, oluşturulan bileşenleri ve yapıtları gözden geçirmek için Publisher Kaynak Grubunuzdaki kaynakları inceleyin.

Sonraki adımlar