Użyj parametrów opcji programu Helm, aby zapobiec usunięciu po niepowodzeniu instalacji
Wdrożenia usługi sieci lokacji (SNS) mogą zakończyć się niepowodzeniem, ponieważ podstawowe wdrożenie funkcji sieciowej (NF) kończy się niepowodzeniem z instalacją programu Helm. Program Azure Operator Service Manager (AOSM) domyślnie usuwa nieudane wdrożenia z docelowego klastra Kubernetes w celu zachowania zasobów. Helm install
błędy często wymagają, aby zasoby trwały w klastrze, aby umożliwić debugowanie awarii. W tym artykule z instrukcjami opisano sposób edytowania szablonu arm NF w celu zastąpienia tego zachowania przez ustawienie parametru helm install --atomic
na false.
Wymagania wstępne
- Musisz dołączyć system plików NF do usługi AOSM przy użyciu rozszerzenia AOSM interfejsu wiersza polecenia Az. W tym artykule odwołuje się do struktury folderów i plików wyjściowych interfejsu wiersza polecenia i przedstawiono przykłady oparte na interfejsie wiersza polecenia
- Błędy instalacji programu Helm mogą być złożone. Debugowanie wymaga wiedzy technicznej na temat kilku technologii oprócz znajomości domeny systemu plików NF
- Praca na temat programu Helm
- Znajomość poleceń kubernetes i kubectl
- Wiedza na temat ściągania i wypychania artefaktów do usługi Azure Container Registry
- Wymagane
Contributor
są przypisania ról w grupie zasobów zawierającej zarządzany magazyn artefaktów usługi AOSM - Odpowiednie środowisko IDE, takie jak Visual Studio Code
- Interfejs wiersza polecenia USŁUGI ORAS
Ważne
Zdecydowanie zaleca się przetestowanie, czy helm install
pakiet Helm powiedzie się w docelowym środowisku Kubernetes połączonym z usługą Arc przed podjęciem próby wdrożenia przy użyciu rozwiązania AOSM.
Zastępowanie --atomic
pojedynczego wykresu helm NF
W tej sekcji wyjaśniono, jak zastąpić --atomic
NF, który składa się z pojedynczego wykresu helm.
Lokalizowanie i edytowanie szablonu BICEP systemu plików NF
Przejdź do
nsd-cli-output
katalogu, otwórzartifacts
katalog i otwórz<nf-arm-template>.bicep
plik.<nf-arm-template>
jest skonfigurowany w pliku wejściowym NSD rozszerzenia interfejsu wiersza polecenia az AOSM. Możesz potwierdzić, że masz odpowiedni plik, porównując się z poniższym przykładowym szablonem fikcyjnej funkcji sieciowej konteneryzowanej firmy Contoso (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) } }]
Znajdź nazwę aplikacji funkcji sieciowej, przechodząc do
cnf-cli-output
katalogu, otwierającnfDefinition
katalog i kopiując wartość z jedynego wpisu w tablicy networkFunctionApplications w zasobienfdv
. Upewnij się, że masz poprawną wartość, porównując z następującym fikcyjnym fragmentem kodu BICEP firmy Contoso. W takim przypadku nazwa aplikacji funkcji sieciowej toContoso
.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'
Edytuj szablon, aby zastąpić domyślną opcję instalacji
--atomic
narzędzia Helm, dodając następującą konfigurację donfResource
właściwości w szablonie usługi ARM NF:roleOverrideValues: ['{"name": "Contoso-one", "deployParametersMappingRuleProfile": {"applicationEnablement": "Enabled", "helmMappingRuleProfile": {"options": {"installOptions": {"atomic": "false"}},{"upgradeOptions": {"atomic": "false"}}}}}']
Upewnij się, że ta edycja jest poprawna, porównując poniższy fragment kodu z przykładowego systemu plików NF firmy Contoso
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"}}}}}'
]}}]
Skompiluj edytowany szablon usługi ARM i przekaż go do magazynu artefaktów
Przejdź do katalogu utworzonego
nsd-cli-output/artifacts
az aosm nsd build
przez polecenie i skompiluj szablon arm funkcji sieciowej z pliku BICEP wygenerowanego przez interfejs wiersza polecenia.bicep build <nf-name>.bicep
Wygeneruj poświadczenia tokenu mapy zakresu na podstawie manifestu artefaktu utworzonego w poleceniu
az aosm nsd publish
.Ważne
Wymagane jest użycie manifestu artefaktu utworzonego w poleceniu
az aosm nsd publish
. Szablon arm systemu plików NF jest zadeklarowany tylko w tym manifeście, dlatego tylko token mapy zakresu wygenerowany przez ten manifest umożliwia wypychanie (lub ściąganie) szablonu arm systemu plików NF do magazynu artefaktów.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'
Zaloguj się do usługi ACR zarządzanej przez usługę ACR w usłudze AOSM. Nazwę usługi ACR zarządzaną przez usługę AOSM można znaleźć w artykule Omówienie zasobu usługi Artifact Store w witrynie Azure Portal. Nazwę użytkownika i hasło można znaleźć w danych wyjściowych poprzedniego kroku.
oras login <aosm-managed-acr-name>.azurecr.io --username <username> --password <scope map token>
Użyj usługi ORAS, aby przekazać szablon arm funkcji sieciowej do zarządzanej przez usługę AOSM usługi Azure Container Registry (ACR). Tag
<arm-template-version>
artefaktu musi mieć1.0.0
format. Wartości<arm-template-name>
i<arm-template-version>
muszą być zgodne z wartościami w manifeście artefaktu utworzonym w poleceniuaz aosm nsd publish
.
Zastępowanie --atomic
systemu plików NF z wieloma pakietami helm
Wiele złożonych NFs jest tworzonych na podstawie wielu wykresów helm. Te NFs są wyrażane w wersji definicji funkcji sieciowej (NFDV) z wieloma aplikacjami funkcji sieciowych i są instalowane z wieloma helm install
poleceniami — jeden na wykres helm.
Proces zastępowania --atomic
wielo helm NF jest taki sam jak w przypadku pojedynczego systemu plików NF helm, oprócz edycji wprowadzonej do szablonu usługi ARM.
Fikcyjny multi-helm NF, Contoso-multi-helm, składa się z trzech wykresów helm. Jego NFDV ma trzy aplikacje funkcji sieciowych. Jedna aplikacja funkcji sieciowej mapuje na jeden wykres helm. Te aplikacje funkcji sieciowych mają właściwość name ustawioną odpowiednio na Contoso-one
, Contoso-two
i Contoso-three
. Oto przykładowy fragment kodu NFDV definiujący tę funkcję sieciową.
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'
...
}]
}
}
}
Parametr --atomic
można zastąpić niezależnie dla każdej z tych aplikacji funkcji sieciowych. Oto przykładowy szablon BICEP systemu plików NF, który zastępuje --atomic
false
element dla Contoso-one
parametrów i Contoso-two
, ale ustawia wartość atomic
true dla elementu Contoso-three
.
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"}}}}}'
]}}]
Następne kroki
Teraz możesz ponowić próbę wdrożenia SNS. Wdrożenie można przesłać ponownie za pomocą usługi ARM, BICEP lub interfejsu API REST usługi AOSM. Możesz również usunąć nieudane sns za pomocą przeglądu sns witryny Azure Portal i ponownie wdrożyć go, wykonując kroki opisane w przewodniku Szybki start, zastępując parametry systemu plików NF przewodnika Szybki start parametrami funkcji sieciowej. Wydania narzędzia Helm wdrożone w klastrze Kubernetes nie zostaną usunięte po awarii. Jak debugować błędy wdrażania sns opisuje zestaw narzędzi do debugowania typowych błędów instalacji narzędzia Helm.