Skip to content

Commit 0fb6f0f

Browse files
authored
Revise article to focus on basic concepts
Updated the title and description to reflect a shift from best practices to basic concepts for Azure Operator Service Manager. Adjusted content to align with the new focus on foundational guidelines for onboarding and deploying network functions.
1 parent fb15d5c commit 0fb6f0f

1 file changed

Lines changed: 14 additions & 71 deletions

File tree

articles/operator-service-manager/best-practices-onboard-deploy.md

Lines changed: 14 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,27 @@
11
---
2-
title: Best Practices for Azure Operator Service Manager
3-
description: Understand best practices for Azure Operator Service Manager to onboard and deploy a network function.
2+
title: Basic Concepts for Azure Operator Service Manager
3+
description: Understand Azure Operator Service Manager basic concepts to onboard and deploy a network function.
44
author: msftadam
55
ms.author: adamdor
66
ms.date: 10/06/2025
77
ms.topic: best-practice
88
ms.service: azure-operator-service-manager
99
---
1010

11-
# Azure Operator Service Manager best practices to onboard and deploy network functions
12-
13-
Microsoft has developed many proven practices for managing network functions (NFs) by using Azure Operator Service Manager. This article provides guidelines that NF vendors, telco operators, and their partners can follow to optimize the design. Keep these practices in mind when you onboard and deploy your NFs.
11+
# Basic concepts for Azure Operator Service Manager
12+
Microsoft has developed many proven practices for managing network functions (NFs) using Azure Operator Service Manager. This article provides basic guidelines that NF vendors, telco operators, and their partners can follow to optimize NF deployments. Consider these concepts when beginning the onboard and deployment planning process.
1413

1514
## General considerations
16-
1715
We recommend that you first onboard and deploy your simplest NFs (one or two charts) by using the quickstarts to familiarize yourself with the overall flow. You can add necessary configuration details in subsequent iterations. As you go through the quickstarts, consider the following points:
1816

1917
- Structure your artifacts to align with planned use. Consider separating global artifacts from the artifacts that you want to vary by site or instance.
2018
- Ensure service composition of multiple NFs with a set of parameters that matches the needs of your network. For example, you might customize 100 values in a chart that has 1,000 values. Make sure that in the configuration group schema (CGS) layer (covered more extensively in sections that follow), you expose only 100.
2119
- Think early on about how you want to separate infrastructure (for example, clusters) or artifact stores and access between suppliers, in particular within a single service. Make your set of publisher resources match this model.
2220
- The Azure Operator Service Manager site is a logical concept, a representation of a deployment destination. Examples include a Kubernetes cluster for containerized network functions (CNFs) or an Azure Operator Nexus extended custom location for virtualized network functions (VNFs). It isn't a representation of a physical edge site, so you have use cases where multiple sites share the same physical location.
2321
- Azure Operator Service Manager provides various APIs that help you combine it with Azure DevOps or other pipeline tools.
24-
22+
- The Azure Operator Service Manager command-line interface (CLI) extension assists with the publishing of network function definitions (NFDs) and NSDs. Use this tool as the starting point for creating new NFDs and NSDs. Consider using the CLI to create the initial files. Then edit them to incorporate infrastructure components before you publish.
23+
2524
## Publisher considerations
26-
2725
- We recommend that you create a single publisher per NF supplier, or per NF type per NF supplier, where the NF supplier may provide more then one NF type. This practice;
2826
- Provides for the most optimal support, maintenance, and governance experience, by preventing proliferation of publishers. Especially during upgrade activities where the same action is often executed across many NFs.
2927
- Lowers total operating costs by reducing the number of publisher backing resources, like ACR or Storage Accounts.
@@ -44,7 +42,6 @@ We recommend that you first onboard and deploy your simplest NFs (one or two cha
4442
- Consider using agreed-upon naming conventions and governance techniques to help address any remaining gaps.
4543

4644
## NFDG and NFDV considerations
47-
4845
The network function definition group (NFDG) represents the smallest component that you plan to reuse independently across multiple services. All parts of an NFDG are always deployed together. These parts are called `networkFunctionApplications` items.
4946

5047
For example, it's natural to onboard a single NF that consists of multiple Helm charts and images as a single NFDG if you always deploy those components together. In cases where multiple NFs are always deployed together, it's reasonable to have a single NFDG for all of them. Single NFDGs can have multiple NFDVs.
@@ -54,7 +51,6 @@ For CNF NFDVs, the `networkFunctionApplications` list can contain only Helm pack
5451
For VNF NFDVs, the `networkFunctionApplications` list must contain at least one `VhdImageFile` value and one ARM template. The ARM template should deploy a single virtual machine (VM). To deploy multiple VMs for a single VNF, make sure to use a separate ARM template for each VM.
5552

5653
The ARM template can deploy only Resource Manager resources from the following resource providers:
57-
5854
- `Microsoft.Compute`
5955
- `Microsoft.Network`
6056
- `Microsoft.NetworkCloud`
@@ -66,7 +62,6 @@ The ARM template can deploy only Resource Manager resources from the following r
6662
For ARM templates that contain anything beyond the preceding list, all `PUT` calls on the VNF result in a validation error.
6763

6864
### Common use cases that trigger an NFDV minor or major version update
69-
7065
- Updating CGSs or configuration group values (CGVs) for an existing release that triggers a change to `deployParametersMappingRuleProfile`
7166
- Updating values that are hard-coded in the NFDV
7267
- Marking components as inactive to prevent them from being deployed via `applicationEnablement: Disabled`
@@ -76,7 +71,6 @@ For ARM templates that contain anything beyond the preceding list, all `PUT` cal
7671
> A minimum number of changes is required every time the payload of an NF changes. A minor or major NF release without exposing new CGS parameters requires only updating the artifact manifest, pushing new images and charts, and bumping the NFDV.
7772
7873
## NSDG and NSDV considerations
79-
8074
A network service design group (NSDG) is a composite of one or more NFDGs and any infrastructure components deployed at the same time. These components might include clusters and VMs in Nexus Kubernetes or Azure Kubernetes Service (AKS). A site network service (SNS) refers to a single NSDV. Such a design provides a consistent and repeatable deployment of the network service to a site from a single SNS `PUT` call.
8175

8276
An example NSDG might consist of:
@@ -90,36 +84,25 @@ An example NSDG might consist of:
9084
These five components form a single NSDG. A single NSDG can have multiple NSDVs.
9185

9286
### Common use cases that trigger an NSDV minor or major version update
93-
9487
- Creating or deleting CGSs
9588
- Changes in the ARM template associated with one of the NFs being deployed
9689
- Changes in the infrastructure ARM template; for example, Nexus Kubernetes, AKS, or VM
9790

9891
> [!NOTE]
9992
> Changes in an NFDV shouldn't trigger an NSDV update. The NFDV should be exposed as a parameter within the CGS, so operators can control what to deploy by using CGVs.
10093
101-
## CLI considerations
102-
103-
The Azure Operator Service Manager command-line interface (CLI) extension assists with the publishing of network function definitions (NFDs) and NSDs. Use this tool as the starting point for creating new NFDs and NSDs.
104-
105-
Consider using the CLI to create the initial files. Then edit them to incorporate infrastructure components before you publish.
106-
10794
## SNS considerations
108-
10995
We recommend that you have a single SNS for the entire site, including the infrastructure. The SNS should deploy any required infrastructure (for example, clusters and VMs in Nexus Kubernetes or AKS), and then deploy the required NFs on top. Such a design provides a consistent and repeatable deployment of the network service to a site from a single SNS `PUT` call.
11096

11197
We recommend that you deploy every SNS with a user-assigned managed identity rather than a system-assigned managed identity. This user-assigned managed identity must have permissions to access the NFDV and must have the role of Managed Identity Operator on itself. For more information, see [Create and assign a user-assigned managed identity](how-to-create-user-assigned-managed-identity.md).
11298

11399
## Azure Operator Service Manager resource mapping per use case
114-
115100
The following two scenarios illustrate Azure Operator Service Manager resource mapping.
116101

117102
### Scenario: Single network function
118-
119103
An NF with one or two application components is deployed to a Nexus Kubernetes cluster.
120104

121105
Here's the breakdown of resources:
122-
123106
- **NFDG**: If components can be used independently, two NFDGs (one per component). If components are always deployed together, then a single NFDG.
124107
- **NFDV**: As needed based on use cases that trigger NFDV minor or major version updates.
125108
- **NSDG**: Single. Combines the NFs and the Kubernetes cluster definitions.
@@ -129,10 +112,7 @@ Here's the breakdown of resources:
129112
- **SNS**: Single per NSDV.
130113

131114
### Scenario: Multiple network functions
132-
133-
Multiple NFs with some shared and independent components are deployed to a Nexus Kubernetes cluster.
134-
135-
Here's the breakdown of resources:
115+
Multiple NFs with some shared and independent components are deployed to a Nexus Kubernetes cluster. Here's the breakdown of resources:
136116

137117
- **NFDG**:
138118
- Single for all shared components.
@@ -147,16 +127,13 @@ Here's the breakdown of resources:
147127
- **CGV**: Equal to the number of CGSs.
148128
- **SNS**: Single per NSDV.
149129

150-
## Software upgrade considerations
151-
130+
## Network Function upgrade considerations
152131
Assuming that NFs support in-place and in-service upgrades, the following considerations apply for CNFs:
153-
154132
- If you add new charts and images, Azure Operator Service Manager installs the new charts.
155133
- If you remove some charts and images, Azure Operator Service Manager deletes the charts that are no longer declared in the NFDV.
156134
- Azure Operator Service Manager validates that the NFDV/NSDV originated from the same NFDG/NSDG and hence the same publisher. Cross-publisher upgrades aren't supported.
157135

158136
The following considerations apply for VNFs:
159-
160137
- In-place upgrades are currently not supported. You need to instantiate a new VNF with an updated image side by side. Then delete the older VNF by deleting the SNS.
161138
- If a VNF is deployed as a pair of VMs for high availability, you can design the network service in such a way that you can delete and upgrade VMs one by one. We recommend the following design to allow the deletion and upgrade of individual VMs:
162139
- Deploy each VM by using a dedicated ARM template.
@@ -166,15 +143,14 @@ The following considerations apply for VNFs:
166143
- In the NFDV, you need to parameterize `deployParameters` and `templateParameters` in such a way that you can supply the unique values by using CGVs for each.
167144

168145
## Considerations for high availability and disaster recovery
169-
170146
Azure Operator Service Manager is a regional service deployed across availability zones in regions that support them. For a list of regions where Azure Operator Service Manager is available, see [Products available by region](https://azure.microsoft.com/explore/global-infrastructure/products-by-region/?products=operator-service-manager,azure-network-function-manager&regions=all). For a list of Azure regions that have availability zones, see [Find the Azure geography that meets your needs](https://azure.microsoft.com/explore/global-infrastructure/geographies/#geographies).
171147

172148
Consider the following requirements for high availability and disaster recovery:
173-
174149
- To provide geo-redundancy, make sure you have a publisher in every region where you're planning to deploy NFs. Consider using pipelines to keep publisher artifacts and resources in sync across the regions.
175150
- The publisher name must be unique for each Microsoft Entra tenant in each region.
176151
- If a region becomes unavailable, you can deploy (but not upgrade) an NF by using publisher resources in another region. Assuming that artifacts and resources are identical between the publishers, you need to change only the `networkServiceDesignVersionOfferingLocation` value in the SNS resource payload:
177152

153+
```
178154
<pre>
179155
resource sns 'Microsoft.HybridNetwork/sitenetworkservices@2023-09-01' = {
180156
name: snsName
@@ -189,9 +165,9 @@ Consider the following requirements for high availability and disaster recovery:
189165
networkServiceDesignVersionName: nsdvName
190166
<b>networkServiceDesignVersionOfferingLocation: location</b>
191167
</pre>
168+
```
192169

193170
## Troubleshooting considerations
194-
195171
During installation and upgrade, by default:
196172

197173
- The `atomic` and `wait` options are set to `true`.
@@ -201,14 +177,17 @@ During initial onboarding, only while you're still debugging and developing arti
201177

202178
In the ARM template, add the following section:
203179

180+
```
204181
<pre>
205182
"roleOverrideValues": [
206183
"{\"name\":\"<b>NF_component_name></b>\",\"deployParametersMappingRuleProfile\":{\"helmMappingRuleProfile\":{\"options\":{\"installOptions\":{\"atomic\":\"false\",\"wait\":\"true\",\"timeout\":\"100\"},\"upgradeOptions\":{\"atomic\":\"true\",\"wait\":\"true\",\"timeout\":\"4\"}}}}}"
207184
]
208185
</pre>
186+
```
209187

210188
The component name is defined in the NFDV:
211189

190+
```
212191
<pre>
213192
networkFunctionTemplate: {
214193
nfviType: 'AzureArcKubernetes'
@@ -222,28 +201,24 @@ The component name is defined in the NFDV:
222201
id: acrArtifactStore.id
223202
}
224203
</pre>
204+
```
225205

226206
> [!IMPORTANT]
227207
> Be sure to set `atomic` and `wait` back to `true` after initial onboarding is complete.
228208
229209
## Cleanup considerations
230-
231210
When you're cleaning up resources, the order is important. Deleting resources out of order can result in orphaned resources left behind.
232211

233212
### Operator resources
234-
235213
As the first step toward cleaning up a deployed environment, delete operator resources in the following order:
236-
237214
1. SNS
238215
1. Site
239216
1. CGV
240217

241218
You can proceed to delete other environment resources, such as the Nexus Kubernetes cluster, only after you successfully delete these operator resources.
242219

243220
### Publisher resources
244-
245221
As the first step toward cleaning up an onboarded environment, delete publisher resources in the following order:
246-
247222
1. NSDV
248223
1. NSDG
249224
1. NFDV
@@ -258,13 +233,10 @@ As the first step toward cleaning up an onboarded environment, delete publisher
258233
Azure Operator Service Manager does not delete namespaces as part of any deletion operation. As such, after all resources are deleted, some artifacts might remain on the cluster. To remove any remaining artifacts, you should delete any workload namespaces created on the cluster. Including the namespace deletion operation as part of the workflow pipeline is a recommendation to automate the action.
259234

260235
## Sequential ordering behavior for CNF applications
261-
262236
By default, CNF applications are installed or updated based on the order in which they appear in the NFDV. For the deletion operation, the CNF applications are deleted in the specified reverse order. If you need to define a specific order of CNF applications that's different from the default, use `dependsOnProfile` to define a unique sequence for installation, update, and deletion operations.
263237

264238
### How to use dependsOnProfile
265-
266239
You can use `dependsOnProfile` in the NFDV to control the sequence of Helm executions for CNF applications. In the example that follows:
267-
268240
- During an installation operation, the CNF applications are deployed in the following order: `dummyApplication1`, `dummyApplication2`, `dummyApplication`.
269241
- During an update operation, the CNF applications are updated in the following order: `dummyApplication2`, `dummyApplication1`, `dummyApplication`.
270242
- During a deletion operation, the CNF applications are deleted in the following order: `dummyApplication2`, `dummyApplication1`, `dummyApplication`.
@@ -316,7 +288,6 @@ You can use `dependsOnProfile` in the NFDV to control the sequence of Helm execu
316288
```
317289

318290
### Common errors
319-
320291
Currently, if the `dependsOnProfile` code provided in the NFDV is invalid, the NF operation fails with a validation error. The message for the validation error appears in the operation status resource and looks similar to the following example:
321292

322293
```json
@@ -333,31 +304,3 @@ Currently, if the `dependsOnProfile` code provided in the NFDV is invalid, the N
333304
}
334305
}
335306
```
336-
337-
## injectArtifactStoreDetails considerations
338-
339-
In some cases, third-party Helm charts might not be fully compliant with Azure Operator Service Manager requirements for `registryURL`. In this case, you can use the `injectArtifactStoreDetails` feature to avoid making changes to Helm packages.
340-
341-
To use `injectArtifactStoreDetails`, set the `installOptions` parameter in the NF resource's `roleOverrides` section to `true`. Then use whatever `registryURL` value keeps the registry URL valid. The following example shows the `injectArtifactStoreDetails` parameter enabled:
342-
343-
```bash
344-
resource networkFunction 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = {
345-
name: nfName
346-
location: location
347-
properties: {
348-
nfviType: 'AzureArcKubernetes'
349-
networkFunctionDefinitionVersionResourceReference: {
350-
id: nfdvId
351-
idType: 'Open'
352-
}
353-
allowSoftwareUpdate: true
354-
nfviId: nfviId
355-
deploymentValues: deploymentValues
356-
configurationType: 'Open'
357-
roleOverrideValues: [
358-
// Use inject artifact store details feature on test app 1
359-
'{"name":"testapp1", "deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"atomic":"false","wait":"false","timeout":"60","injectArtifactStoreDetails":"true"},"upgradeOptions": {"atomic": "false", "wait": "true", "timeout": "100", "injectArtifactStoreDetails": "true"}}}}}'
360-
]
361-
}
362-
}
363-
```

0 commit comments

Comments
 (0)