A Helm követelményeinek áttekintése
A Helm a Kubernetes csomagkezelője, amely segít egyszerűsíteni az alkalmazás életciklus-felügyeletét. A Helm-csomagokat diagramoknak nevezzük, amelyek YAML-konfigurációból és sablonfájlokból állnak. Helm-művelet végrehajtásakor a diagramok a Kubernetes jegyzékfájljaiba kerülnek a megfelelő alkalmazás-életciklus-művelet aktiválásához. Az Azure Operator Service Managerrel (AOSM) való leghatékonyabb integráció érdekében a közzétevőknek figyelembe kell venniük bizonyos ajánlott eljárásokat a Helm-diagramok fejlesztése során.
A registryUrl és az imagePullSecrets beállításokkal kapcsolatos szempontok
Minden Helm-diagramhoz általában szükség van egy registryUrl- és imagePullSecret-diagramra. A közzétevők leggyakrabban ezeket a paramétereket teszik közzé a values.yaml fájlban. Az AOSM eleinte attól függött, hogy a közzétevő szigorúan közzétehesse ezeket az értékeket, így az üzembe helyezés során lecserélhetők a megfelelő Azure-értékekre. A túlóra során nem minden közzétevő tudott könnyen megfelelni az AOSM által megkövetelt értékek szigorú kezelésének.
- Egyes diagramok elrejtik a registryUrl és/vagy imagePullSecrets függvényeket a feltételes értékek mögött, vagy más értékkorlátozásokat, amelyek nem mindig teljesültek.
- Egyes diagramok nem deklarálják a registryUrl és/vagy imagePullSecrets értéket a várt elnevezett sztringként, hanem tömbként.
A közzétevők szigorú megfelelőségi követelményeinek csökkentése érdekében az AOSM később két továbbfejlesztett módszert vezetett be ezeknek az értékeknek a kezelésére. Először injektálja azArtifactStoreDetail- és végül a fürtregisztrációs adatbázist. Ez a két újabb metódus nem függ a Helm-csomagban megjelenő érvényes registryUrl- vagy imagePullSecret-metódusoktól. Ehelyett ezek a metódusok közvetlenül a podműveletbe injektálják ezeket az értékeket a hálózati függvény nevében.
A registryUrl és az imagePullSecrets metódusösszegzője
Ebben a cikkben mindhárom módszer támogatott és ismertethető. A közzétevőknek ki kell választaniuk a hálózati függvény és a használati eset legjobb lehetőségét.
Örökség.
- A publishernek megfelelő paraméterezésre van szüksége a registryUrl & imagePullSecrets helm-értékekben és az üzembe helyezési sablonokban a helyettesítéshez.
- A rendszerképek az Azure Container Registry (ACR) közzétevőjében találhatók.
InjectArtifactStoreDetail.
- Webhookot használ a registryUrl & imagePullSecrets közvetlen podműveletekbe való injektálásához, minimális függőségekkel a helmen.
- A rendszerképek továbbra is a közzétevő ACR-ben vannak tárolva.
Fürtregisztrációs adatbázis.
- Webhookot használ a registryUrl & imagePullSecrets közvetlen podműveletekbe való injektálásához, a helm függősége nélkül.
- A rendszerképek a helyi NFO-bővítményfürt-beállításjegyzékben találhatók.
Feljegyzés
Mindhárom esetben az AOSM az AOSM-értékeket helyettesíti a közzétevő által sablonokban közzétett értékekhez. Az egyetlen különbség a helyettesítési módszer.
A registryUrl és az imagePullSecrets örökölt követelményei
Az Azure Operator Service Manager (AOSM) a Network Function Manager (NFM) szolgáltatást használja a tárolóalapú hálózati függvények (CNF-ek) üzembe helyezéséhez. Az örökölt módszerrel az NFM az AOSM-tárolóregisztrációs adatbázisUrl és imagePullSecrets értékeit helyettesíti a helm-műveletbe a Hálózati függvény (NF) üzembe helyezése során.
Régi metódus használata
Az alábbi helm-telepítési sablon egy példát mutat be arra, hogy a közzétevők hogyan tehetik elérhetővé a registryPath és az imagePullSecrets adatbázist az AOSM örökölt megközelítésével való kompatibilitás érdekében.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
{{- if .Values.global.imagePullSecrets }}
imagePullSecrets: {{ toYaml .Values.global.imagePullSecrets | nindent 8 }}
{{- end }}
containers:
- name: contosoapp
image:{{ .Values.global.registryPath }}/contosoapp:1.14.2
ports:
- containerPort: 80
Az alábbi values.schema.json
fájl egy példát mutat be arra, hogyan állíthatja be a közzétevő a registryPath és az imagePullSecretsvalue követelményeit az AOSM örökölt megközelítésével való kompatibilitáshoz.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "StarterSchema",
"type": "object",
"required": ["global"],
"properties": {
"global" : {
"type": "object",
"properties": {
“registryPath”: {“type”: “string”},
“imagePullSecrets”: {“type”: “string”},
}
"required": [ "registryPath", "imagePullSecrets" ],
}
}
}
Az alábbiakban NFDVersion request payload
egy példát mutatunk be arra, hogy egy közzétevő hogyan biztosíthatja a registryPath és az imagePullSecretsvalue értékeket az AOSM örökölt megközelítésével való kompatibilitás érdekében.
"registryValuesPaths": [ "global.registryPath" ],
"imagePullSecretsValuesPaths": [ "global.imagePullSecrets" ],
Az alábbiakban values.yaml
egy példát mutatunk be arra, hogy egy közzétevő hogyan biztosíthatja a registryPath és az imagePullSecretsvalue értékeket az AOSM örökölt megközelítésével való kompatibilitás érdekében.
global:
imagePullSecrets: []
registryPath: “”
Feljegyzés
- A registryPath előtag nélkül van beállítva, például
https://
vagyoci://
. Szükség esetén a közzétevőnek meg kell adnia egy előtagot a helm-csomagban. - A create NFDVersion előkészítési lépésben meg kell adni az imagePullSecrets és a registryPath azonosítót.
Egyéb szempontok a Legacy metódussal
A Publishernek érdemes megfontolnia a következő javaslatokat az örökölt módszer használatakor:
- Külső beállításjegyzékre mutató hivatkozások elkerülése
- Manuális érvényesítés végrehajtása
- Statikus képtár és címkék biztosítása
Külső beállításjegyzékre mutató hivatkozások elkerülése
A felhasználók ne használjanak külső beállításjegyzékre mutató hivatkozásokat. Ha például a deployment.yaml merevlemezes beállításjegyzék-elérési utat vagy külső beállításjegyzék-hivatkozásokat használ, az ellenőrzés meghiúsul.
Manuális érvényesítés végrehajtása
Tekintse át a létrehozott rendszerképeket és tárolóleképezéseket, hogy a rendszerképek rendelkezzenek a registryURL előtaggal, és az imagePullSecrets fájlokat titkos névvel töltse fel.
helm template --set "global.imagePullSecrets[0].name=<secretName>" --set "global.registry.url=<registryURL>" <release-name> <chart-name> --dry-run
VAGY
helm install --set "global.imagePullSecrets[0].name=<secretName>" --set "global.registry.url=<registryURL>" <release-name> <chart-name> --dry-run
kubectl create secret <secretName> regcred --docker-server=<registryURL> --dockerusername=<regusername> --docker-password=<regpassword>
Statikus képtár és címkék biztosítása
Minden helm-diagramnak statikus képtárat és címkéket kell tartalmaznia. A statikus értékek a következőképpen vannak beállítva:
- Beállítás a képsoron, vagy
- Állítsa be őket a values.yaml fájlba, és ne adja ki ezeket az értékeket a hálózati függvény tervezőverziójában (NFDV).
A hálózati függvények tervezési verziójának (NFDV) a helm-diagramok és -képek statikus készletére kell képeznie. A diagramok és képek csak egy új hálózati függvénytervező verzió (NFDV) közzétételével frissülnek.
image: "{{ .Values.global.registryPath }}/contosoapp:1.14.2“
Vagy
image: "{{ .Values.global.registryPath }}/{{ .Values.image.repository }}:{{ .Values.image.tag}}“
YAML values.yaml
image:
repository: contosoapp
tag: 1.14.2
image: http://myURL/{{ .Values.image.repository }}:{{ .Values.image.tag}}
injectArtifactStoreDetails requirements for registryUrl and imagePullSecrets
Bizonyos esetekben előfordulhat, hogy a külső helm-diagramok nem felelnek meg teljes mértékben a registryURL AOSM-követelményeinek. Ebben az esetben az injectArtifactStoreDetails funkcióval elkerülhető a helm-csomagok megfelelőségi módosítása. Ha az injectArtifactStoreDetails engedélyezve van, a podműveletek során a megfelelő registryUrl és imagePullSecrets fájlokat egy webhook metódussal injektáljuk. Ez felülbírálja a helm-csomagban konfigurált értékeket.
Az injectArtifactStoreDetails metódus használata
Az injectArtifactStoreDetails engedélyezéséhez állítsa az installOptions paramétert az NF erőforrásszerepkörOverrides szakaszában igaz értékre az alábbi példában látható módon.
resource networkFunction 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = {
name: nfName
location: location
properties: {
nfviType: 'AzureArcKubernetes'
networkFunctionDefinitionVersionResourceReference: {
id: nfdvId
idType: 'Open'
}
allowSoftwareUpdate: true
nfviId: nfviId
deploymentValues: deploymentValues
configurationType: 'Open'
roleOverrideValues: [
// Use inject artifact store details feature on test app 1
'{"name":"testapp1", "deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"atomic":"false","wait":"false","timeout":"60","injectArtifactStoreDetails":"true"},"upgradeOptions": {"atomic": "false", "wait": "true", "timeout": "100", "injectArtifactStoreDetails": "true"}}}}}'
]
}
}
Feljegyzés
A helm-diagramcsomagnak továbbra is megfelelően formázott registryURL és imagePullSecrets értékeket kell elérhetővé tennie.
A registryUrl és az imagePullSecrets fürtregisztrációs adatbázisra vonatkozó követelményei
A fürtregisztrációs adatbázis használatával kapcsolatos információkért tekintse meg a koncepció dokumentációját.
Diagram nem módosíthatósági korlátozásai
A nem módosíthatósági korlátozások megakadályozzák a fájlok vagy címtárak módosítását. A nem módosítható fájlok például nem módosíthatók és nem nevezhetők át. A felhasználóknak el kell kerülnie az olyan mutable címkék használatát, mint a legújabb, a fejlesztői vagy a stabil. Ha például a deployment.yaml a "legújabb" értéket használta a . A Values.image.tag az üzembe helyezés sikertelen lenne.
image: "{{ .Values.global.registryPath }}/{{ .Values.image.repository }}:{{ .Values.image.tag}}“
Diagram CRD-deklarációja és használati felosztása
Javasoljuk, hogy a frissítések támogatásához ossza fel az ügyfélerőforrás-definíciók (CRD) deklarációját és használatát külön helm-diagramokra. Részletes információkért lásd: 2. módszer-külön-diagramok