Gunakan parameter opsi Helm untuk mencegah penghapusan pada kegagalan penginstalan
Penyebaran Site Network Service (SNS) mungkin gagal karena penyebaran Fungsi Jaringan (NF) yang mendasar gagal memasang dengan benar. Azure Operator Service Manager (AOSM) menghapus penyebaran yang gagal dari kluster Kubernetes yang ditargetkan secara default untuk mempertahankan sumber daya. Helm install
kegagalan sering kali mengharuskan sumber daya bertahan pada kluster untuk memungkinkan kegagalan di-debug. Artikel Panduan Ini membahas cara mengedit templat NF ARM untuk mengambil alih perilaku ini dengan mengatur helm install --atomic
parameter ke false.
Prasyarat
- Anda harus telah melakukan onboarding NF ke AOSM menggunakan ekstensi Az CLI AOSM. Artikel ini mereferensikan struktur folder dan output file oleh CLI dan memberikan contoh berbasis CLI
- Kegagalan penginstalan Helm bisa rumit. Penelusuran kesalahan membutuhkan pengetahuan teknis tentang beberapa teknologi selain pengetahuan domain tentang NF Anda
- Pengetahuan kerja tentang Helm
- Pengetahuan kerja tentang kubernetes dan perintah kubectl
- Pengetahuan kerja tentang menarik dan mendorong artefak ke Azure Container Registry
- Anda memerlukan
Contributor
penetapan peran pada grup sumber daya yang berisi Penyimpanan Artefak terkelola AOSM - IDE yang sesuai, seperti Visual Studio Code
- ORAS CLI
Penting
Sangat disarankan agar Anda telah menguji bahwa paket helm install
Helm Anda berhasil pada lingkungan Kubernetes yang terhubung dengan Arc target sebelum mencoba penyebaran menggunakan AOSM.
Mengambil alih --atomic
untuk satu bagan helm NF
Bagian ini menjelaskan cara mengambil alih --atomic
NF yang terdiri dari satu bagan helm.
Menemukan dan mengedit templat NF BICEP
Navigasi ke
nsd-cli-output
direktori, bukaartifacts
direktori, dan buka<nf-arm-template>.bicep
file.<nf-arm-template>
dikonfigurasi dalam file input NSD ekstensi Az AOSM CLI. Anda dapat mengonfirmasi bahwa Anda memiliki file yang tepat dengan membandingkan dengan contoh templat berikut untuk fungsi jaringan kontainer Contoso fiktif (CNF).@secure() param configObject object var resourceGroupId = resourceGroup().id var identityObject = (configObject.managedIdentityId == '') ? { type: 'SystemAssigned' } : { type: 'UserAssigned' userAssignedIdentities: { '${configObject.managedIdentityId}': {} } } var nfdvSymbolicName = '${configObject.publisherName}/${configObject.nfdgName}/${configObject.nfdv}' resource nfdv 'Microsoft.Hybridnetwork/publishers/networkfunctiondefinitiongroups/networkfunctiondefinitionversions@2023-09-01' existing = { name: nfdvSymbolicName scope: resourceGroup(configObject.publisherResourceGroup) } resource nfResource 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = [for (values, i) in configObject.deployParameters: { name: '${configObject.nfdgName}${i}' location: configObject.location identity: identityObject properties: { networkFunctionDefinitionVersionResourceReference: { id: nfdv.id idType: 'Open' } nfviType: 'AzureArcKubernetes' nfviId: (configObject.customLocationId == '') ? resourceGroupId : configObject.customLocationId allowSoftwareUpdate: true configurationType: 'Open' deploymentValues: string(values) } }]
Temukan nama aplikasi fungsi jaringan dengan menavigasi ke
cnf-cli-output
direktori, membukanfDefinition
direktori, dan menyalin nilai dari satu-satunya entri dalam array networkFunctionApplications dinfdv
sumber daya. Konfirmasikan bahwa Anda memiliki nilai yang benar dengan membandingkan dengan cuplikan contoh Contoso fiktif BICEP berikut. Dalam hal ini, nama aplikasi fungsi jaringan adalahContoso
.resource nfdv 'Microsoft.Hybridnetwork/publishers/networkfunctiondefinitiongroups/networkfunctiondefinitionversions@2023-09-01' = { parent: nfdg name: nfDefinitionVersion location: location properties: { deployParameters: string(loadJsonContent('deployParameters.json')) networkFunctionType: 'ContainerizedNetworkFunction' networkFunctionTemplate: { nfviType: 'AzureArcKubernetes' networkFunctionApplications: [ { artifactType: 'HelmPackage' name: 'Contoso'
Edit templat untuk mengambil alih opsi penginstalan
--atomic
helm default dengan menambahkan konfigurasi berikut kenfResource
properti di Templat ARM NF:roleOverrideValues: ['{"name": "Contoso-one", "deployParametersMappingRuleProfile": {"applicationEnablement": "Enabled", "helmMappingRuleProfile": {"options": {"installOptions": {"atomic": "false"}},{"upgradeOptions": {"atomic": "false"}}}}}']
Konfirmasikan bahwa Anda telah melakukan pengeditan ini dengan benar dengan membandingkan dengan cuplikan berikut dari contoh Contoso NF
resource nfResource 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = [for (values, i) in configObject.deployParameters: {
name: '${configObject.nfdgName}${i}'
location: configObject.location
identity: identityObject
properties: {
networkFunctionDefinitionVersionResourceReference: {
id: nfdv.id
idType: 'Open'
}
nfviType: 'AzureArcKubernetes'
nfviId: (configObject.customLocationId == '') ? resourceGroupId : configObject.customLocationId
allowSoftwareUpdate: true
configurationType: 'Open'
deploymentValues: string(values)
roleOverrideValues: [
'{"name":"Contoso-one","deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"injectArtifactStoreDetails":"true", "atomic": "false"},"upgradeOptions":{"injectArtifactStoreDetails":"true","atomic": "false"}}}}}'
]}}]
Buat Templat ARM yang diedit dan unggah ke Penyimpanan Artefak
Navigasikan ke direktori yang
nsd-cli-output/artifacts
dibuat olehaz aosm nsd build
perintah dan buat Templat ARM Fungsi Jaringan dari file BICEP yang dihasilkan oleh CLI.bicep build <nf-name>.bicep
Hasilkan kredensial token peta cakupan dari Manifes Artefak yang
az aosm nsd publish
dibuat dalam perintah.Penting
Anda diharuskan untuk menggunakan Manifes Artefak yang dibuat dalam
az aosm nsd publish
perintah. Templat NF ARM hanya dideklarasikan dalam manifes tersebut sehingga hanya token peta cakupan yang dihasilkan oleh manifes ini yang akan memungkinkan Anda untuk mendorong (atau menarik) templat NF ARM ke Penyimpanan Artefak.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'
Masuk ke ACR terkelola AOSM. Nama ACR terkelola AOSM dapat ditemukan di gambaran umum sumber daya Penyimpanan Artefak portal Azure. Nama pengguna dan kata sandi dapat ditemukan di output langkah sebelumnya.
oras login <aosm-managed-acr-name>.azurecr.io --username <username> --password <scope map token>
Gunakan ORAS untuk mengunggah templat ARM Fungsi Jaringan ke Azure Container Registry (ACR) yang dikelola AOSM. Tag
<arm-template-version>
artefak harus dalam1.0.0
format.<arm-template-name>
dan<arm-template-version>
harus cocok dengan nilai dalam Manifes Artefak yang dibuat dalamaz aosm nsd publish
perintah .
Mengambil alih --atomic
untuk NF bagan multi-helm
Banyak NF kompleks dibangun dari beberapa bagan helm. NF ini dinyatakan dalam versi definisi fungsi jaringan (NFDV) dengan beberapa aplikasi fungsi jaringan dan diinstal dengan beberapa helm install
perintah - satu per bagan helm.
Proses untuk mengambil alih --atomic
NF multi-helm sama dengan untuk satu helm NF, selain dari pengeditan yang dibuat ke templat ARM.
NF multi-helm fiktif, Contoso-multi-helm, terdiri dari tiga bagan helm. NFDV-nya memiliki tiga aplikasi fungsi jaringan. Satu aplikasi fungsi jaringan memetakan ke satu bagan helm. Aplikasi fungsi jaringan ini memiliki properti nama yang diatur ke Contoso-one
, Contoso-two
, dan Contoso-three
masing-masing. Berikut adalah contoh cuplikan NFDV yang menentukan fungsi jaringan ini.
resource nfdv 'Microsoft.Hybridnetwork/publishers/networkfunctiondefinitiongroups/networkfunctiondefinitionversions@2023-09-01' = {
parent: nfdg
name: nfDefinitionVersion
location: location
properties: {
deployParameters: string(loadJsonContent('deployParameters.json'))
networkFunctionType: 'ContainerizedNetworkFunction'
networkFunctionTemplate: {
nfviType: 'AzureArcKubernetes'
networkFunctionApplications: [
{
artifactType: 'HelmPackage'
name: 'Contoso-one'
...
},
{
artifactType: 'HelmPackage'
name: 'Contoso-two'
...
},
{
artifactType: 'HelmPackage'
name: 'Contoso-three'
...
}]
}
}
}
Parameter --atomic
dapat ditimpa untuk setiap aplikasi fungsi jaringan ini secara independen. Berikut adalah contoh templat NF BICEP yang mengambil alih ke untuk dan Contoso-two
, tetapi diatur atomic
ke true untuk Contoso-three
.Contoso-one
false
--atomic
resource nfResource 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = [for (values, i) in configObject.deployParameters: {
name: '${configObject.nfdgName}${i}'
location: configObject.location
identity: identityObject
properties: {
networkFunctionDefinitionVersionResourceReference: {
id: nfdv.id
idType: 'Open'
}
nfviType: 'AzureArcKubernetes'
nfviId: (configObject.customLocationId == '') ? resourceGroupId : configObject.customLocationId
allowSoftwareUpdate: true
configurationType: 'Open'
deploymentValues: string(values)
roleOverrideValues: [
'{"name":"Contoso-one","deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"injectArtifactStoreDetails":"true", "atomic": "false"},"upgradeOptions":{"injectArtifactStoreDetails":"true","atomic": "false"}}}}}'
'{"name":"Contoso-two","deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"injectArtifactStoreDetails":"true", "atomic": "false"},"upgradeOptions":{"injectArtifactStoreDetails":"true","atomic": "false"}}}}}'
'{"name":"Contoso-three","deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"injectArtifactStoreDetails":"true", "atomic": "false"},"upgradeOptions":{"injectArtifactStoreDetails":"true","atomic": "false"}}}}}'
]}}]
Langkah berikutnya
Anda sekarang dapat mencoba kembali penyebaran SNS. Anda dapat mengirimkan penyebaran lagi melalui ARM, BICEP, atau AOSM REST API. Anda juga dapat menghapus SNS yang gagal melalui ringkasan SNS portal Azure dan menyebarkan ulang setelah mulai cepat operator, mengganti parameter NF mulai cepat dengan parameter untuk fungsi jaringan Anda. Rilis helm yang disebarkan ke kluster Kubernetes tidak akan dihapus saat gagal. Cara men-debug kegagalan penyebaran SNS menjelaskan toolkit untuk men-debug kegagalan penginstalan helm umum.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk