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
Etkin aboneliği olan bir Azure hesabı gereklidir. Azure aboneliğiniz yoksa başlamadan önce hesap oluşturmak için Ücretsiz başlat bölümündeki yönergeleri izleyin.
AOSM CLI uzantısının kaynak grubunu oluşturabilmesi için Bu abonelik üzerinde Katkıda Bulunan rolüne veya Katkıda Bulunan rolüne sahip olduğunuz mevcut bir Kaynak Grubu.
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öreli
cnf-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-output
bir 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.