Skip to content

Commit 66681ef

Browse files
authored
Update helm-requirements.md
1 parent 4099ae7 commit 66681ef

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

articles/operator-service-manager/helm-requirements.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: About Helm package requirements for Azure Operator Service Manager
2+
title: Helm package requirements for Azure Operator Service Manager
33
description: Learn about the Helm package requirements for Azure Operator Service Manager.
44
author: msftadam
55
ms.author: adamdor
@@ -9,14 +9,14 @@ ms.service: azure-operator-service-manager
99
---
1010

1111
# Helm requirements overview
12-
Helm is a package manager for Kubernetes that helps to simplify application lifecycle management. Helm packages are called charts and consist of YAML configuration and template files. Upon execution of a Helm operation, the charts are rendered into Kubernetes manifest files to trigger the appropriate application lifecycle action. For most efficient integration with Azure Operator Service Manager (AOSM), publisher should consider certain best-practice considerations when developing Helm charts.
12+
Helm is a package manager for Kubernetes that helps to simplify application lifecycle management. Helm packages are called charts and consist of YAML configuration and template files. Upon execution of a Helm operation, the charts are rendered into Kubernetes manifest files to trigger the appropriate application lifecycle action. For most efficient integration with Azure Operator Service Manager (AOSM), publisher's should consider certain best-practice considerations when developing Helm charts.
1313

1414
## Considerations for registryUrl and imagePullSecrets
1515
Every Helm chart generally requires a declared registryUrl and imagePullSecrets. Best practice recommends that the publisher define these two parameters consistently as variables in the values.yaml. At first, AOSM depended upon the publisher exposing these values in a strict manner, so they could be ingested and then injected during deployment. This approach is known as the legacy method. Overtime, many complications arose, as not all publishers charts complied with the strict definition of registryUrl and imagePullSecrets required by AOSM.
16-
* Some charts hid registryUrl and/or imagePullSecrets behind conditionals, or other values restrictions, which were not always met.
16+
* Some charts hide registryUrl and/or imagePullSecrets behind conditionals, or other values restrictions, which were not always met.
1717
* Some charts didnt declare registryUrl and/or imagePullSecrets as the expected named string, instead as an array.
1818

19-
To reduce the strict compliance requirements on publishers for registryUrl and imagePullSecrets, AOSM later introduced two improved methods of handling these values. First injectArtifactStoreDetail and finally Cluster Registry. These two methods do not depend upon the registryUrl or imagePullSecrets appearing in the Helm package, instead AOSM derives and injects these values on behalf of the network function.
19+
To reduce the strict compliance requirements on publishers for registryUrl and imagePullSecrets, AOSM later introduced two improved methods of handling these values. First injectArtifactStoreDetail and finally Cluster Registry. These two newer methods do not depend upon the registryUrl or imagePullSecrets appearing in the Helm package, at all. Instead these methods derive and inject these values on behalf of the network function.
2020

2121
### Method summary for registryUrl and imagePullSecrets
2222

@@ -25,17 +25,17 @@ To reduce the strict compliance requirements on publishers for registryUrl and i
2525
* Images hosted in publisher Azure Container Registry (ACR).
2626

2727
**InjectArtifactStoreDetail.**
28-
* Uses a webhook to inject registryUrl & imagePullSecrets directly into pod w/o helm dependency.
29-
* Images hosted in publisher ACR.
28+
* Uses a webhook to inject registryUrl & imagePullSecrets directly into pod without any dependancy on helm.
29+
* Images still hosted in publisher ACR.
3030

3131
**Cluster Registry.**
32-
* Same as InjectArtifactStoreDetail except now the images are now hosted in a local cluster registry.
32+
* Same as InjectArtifactStoreDetail, except now the images are hosted in the local cluster registry.
3333

3434
> [!NOTE]
3535
> In all three cases, AOSM is substituting AOSM derived secrets with whatever secrets a publisher exposes in templates. The only difference is Legacy and InjectArtifactStoreDetail, the secret is bound to publisher ACR, while in Cluster Registry, the secret is bound to cluster registry.
3636
3737
## Legacy requirements for registryUrl and imagePullSecrets
38-
Azure Operator Service Manager (AOSM) uses the Network Function Manager (NFM) service to deploy Containerized Network Function (CNF). The Network Function Manager (NFM) contains features to inject container registryUrl and imagePullSecrets dynamically into the helm values during Network Function (NF) deployment. The following helm deployment template shows an example of how a publisher should expose registryPath and imagePullSecrets for compatibility with AOSM legacy approach.
38+
Azure Operator Service Manager (AOSM) uses the Network Function Manager (NFM) service to deploy Containerized Network Function (CNF). The NFM injects container registryUrl and imagePullSecrets dynamically into the helm values during Network Function (NF) deployment. The following helm deployment template shows an example of how a publisher should expose registryPath and imagePullSecrets for compatibility with AOSM legacy approach.
3939

4040
```json
4141
apiVersion: apps/v1
@@ -92,7 +92,8 @@ The following `NFDVersion request payload` shows an example of how a publisher c
9292
"registryValuesPaths": [ "global.registryPath" ],
9393
"imagePullSecretsValuesPaths": [ "global.imagePullSecrets" ],
9494
```
95-
The following `values.yaml` shows an example of how a publisher can provide the registryPath and imagePullSecretsvalue values for compatibility with AOSM legacy approach. This file contains the default values for a Helm chart. Two types of variables must be present; imagePullSecrets and registryPath.
95+
96+
The following `values.yaml` shows an example of how a publisher can provide the registryPath and imagePullSecretsvalue values for compatibility with AOSM legacy approach.
9697

9798
```json
9899
global:
@@ -127,9 +128,9 @@ OR
127128
```
128129

129130
### Static image repository and tags
130-
Each helm chart should contain static image repository and tags. Users should set the image repository and tag to static values. The static values are set as follows:
131+
Each helm chart should contain static image repository and tags. The static values are set as follows:
131132
- Setting them in the image line or,
132-
- Setting the Values in values.yaml and not exposing these values in the Network Function Design Version (NFDV).
133+
- Setting them in values.yaml and not exposing these values in the Network Function Design Version (NFDV).
133134

134135
A Network Function Design Version (NFDV) should map to a static set of helm charts and images. The charts and images are only updated by publishing a new Network Function Design Version (NFDV).
135136

@@ -148,13 +149,12 @@ image:
148149
tag: 1.14.2
149150
```
150151

151-
152152
```json
153153
image: http://myURL/{{ .Values.image.repository }}:{{ .Values.image.tag}}
154154
```
155155

156156
## injectArtifactStoreDetails requirements for registryUrl and imagePullSecrets
157-
In some cases, third-party helm charts may not be fully compliant with AOSM requirements for registryURL. In this case, the injectArtifactStoreDetails feature can be used to avoid making changes to helm packages. To use injectArtifactStoreDetails, set the installOptions parameter in the NF resource roleOverrides section to true, then use whatever registryURL value is needed to keep the registry URL valid. See following example of injectArtifactStoreDetails parameter enabled.
157+
In some cases, third-party helm charts may not be fully compliant with AOSM requirements for registryURL. In this case, the injectArtifactStoreDetails feature can be used to avoid making changes to helm packages. To use injectArtifactStoreDetails, set the installOptions parameter in the NF resource roleOverrides section to true, then, in the helm chart package, use whatever registryURL value is needed to keep the registry URL valid. See following example of injectArtifactStoreDetails parameter enabled.
158158

159159
```bash
160160
resource networkFunction 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = {
@@ -177,13 +177,13 @@ resource networkFunction 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' =
177177
}
178178
}
179179
```
180+
180181
## Chart immutability restrictions
181-
Immutability restrictions prevent changes to a file or directory. For example, an immutable file can't be changed or renamed, and a file that allows append operations can't be deleted, modified, or renamed. Users should avoid using mutable tags such as latest, dev, or stable. For example, if deployment.yaml used 'latest' for the .Values.image.tag the deployment would fail.
182+
Immutability restrictions prevent changes to a file or directory. For example, an immutable file can't be changed or renamed. Users should avoid using mutable tags such as latest, dev, or stable. For example, if deployment.yaml used 'latest' for the .Values.image.tag the deployment would fail.
182183

183184
```json
184185
image: "{{ .Values.global.registryPath }}/{{ .Values.image.repository }}:{{ .Values.image.tag}}“
185186
```
186187

187188
## Chart CRD declaration and usage split
188-
We recommend splitting the declaration and usage of CRDs into separate helm charts to support
189-
updates. For detailed information see: [method-2-separate-charts](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#method-2-separate-charts)
189+
We recommend splitting the declaration and usage of CRDs into separate helm charts to support updates. For detailed information see: [method-2-separate-charts](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#method-2-separate-charts)

0 commit comments

Comments
 (0)