Helm-csomagra vonatkozó követelmények
A Helm a Kubernetes csomagkezelője, amely segít a Kubernetes-alkalmazások kezelésében. A Helm-csomagokat diagramoknak nevezzük, és néhány YAML-konfigurációs fájlból és néhány Kubernetes-jegyzékfájlba renderelt sablonból állnak. A diagramokat bárki újra felhasználhatja bármilyen környezetben, ami csökkenti az összetettség és az ismétlődés mértékét.
A beállításjegyzék URL-elérési útja és az imagepullsecrets követelményei
Helm-csomag fejlesztésekor gyakran előfordul, hogy a tárolóregisztrációs adatbázis-kiszolgáló URL-címe az értékekben marad. A tárolóregisztrációs adatbázis-kiszolgáló URL-címének az értékekben való megőrzése hasznos az összetevők áthelyezéséhez az egyes környezeti tárolóregisztrációs adatbázisok között. 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ény (CNF) üzembe helyezéséhez. A Network Function Manager (NFM) olyan funkciókat tartalmaz, amelyekkel a tárolóregisztrációs kiszolgáló helyét és az imagepullsecreteket injektálhatja a helm-értékekbe a Hálózati függvény (NF) üzembe helyezése során. Az imagePullSecret egy engedélyezési jogkivonat, más néven titkos kód, amely a beállításjegyzék eléréséhez használt Docker-hitelesítő adatokat tárolja. Ha például egy alkalmazást Kubernetes-alapú telepítéssel kell üzembe helyeznie, az alábbi példához hasonlóan definiálhat egy üzembe helyezést:
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
values.schema.json
Egy fájl, amely lehetővé teszi az értékkövetelmények és megkötések egyszerű beállítását egyetlen helyen a Helm-diagramokhoz. Ebben a fájlban adja meg a registryPath és az imagePullSecrets tulajdonságot kötelező tulajdonságokként.
{
"$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 NFDVersion-kérelem hasznos adatai a következő értékeket biztosítják a registryValuesPathsban:
"registryValuesPaths": [ "global.registryPath" ],
"imagePullSecretsValuesPaths": [ "global.imagePullSecrets" ],
NF-telepítés során a hálózati függvény operátora (NFO) a registryPathot a megfelelő Azure Container Registry -kiszolgálóhelyre állítja. Az NFO például a következő egyenértékű parancsot futtatja:
$ helm install --set "global.registryPath=<registryURL>" --set "global.imagePullSecrets[0].name=<secretName>" releasename ./releasepackage
Megjegyzés:
A registryPath előtag nélkül van beállítva, például https:// vagy oci://. Ha előtagra van szükség a helm-csomagban, a közzétevőknek meg kell határozniuk ezt a csomagban.
values.yaml
Egy Helm-diagram alapértelmezett értékeit tartalmazó fájl. Ez egy YAML-fájl, amely meghatározza egy diagram alapértelmezett értékeit. A values.yaml fájlban két változótípusnak kell jelen lennie; imagePullSecrets és registryPath. Ezeket a táblázat ismerteti.
global:
imagePullSecrets: []
registryPath: “”
Name | Type | Description |
---|---|---|
imagePullSecrets | Sztring | Az imagePullSecrets titkos nevek tömbje, amelyek tárolólemezképek lekérésére szolgálnak |
registryPath | Sztring | a registryPath a AzureContainerRegistry kiszolgáló helye |
A create NFDVersion előkészítési lépésben meg kell adni az imagePullSecrets és a registryPath azonosítót.
A fürtben futó NFO feltölti ezt a két változót (imagePullSecrets és registryPath) egy helm-kiadás során a helm install –set paranccsal.
További információ: pull-image-private-registry
Nem módosíthatósági korlátozások
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, és a hozzáfűzési műveleteket lehetővé tevő fájlok nem törölhetők, nem módosíthatók és nem nevezhetők át.
Ne használjon mutable címkéket
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}}“
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.
image: http://myURL/{{ .Values.image.repository }}:{{ .Values.image.tag}}
Javaslatok
Ajánlott az egyéni erőforrás-definíciók (CRD-k) deklarációjának és használatának felosztása, valamint a manuális ellenőrzés használata. Ezeket a következő szakaszok ismertetik.
CRD-deklaráció és használat felosztása
Javasoljuk, hogy a frissítések támogatásához a CRD-k deklarációját és használatát külön helm-diagramokra ossza fel. Részletes információkért lásd: 2. módszer-külön-diagramok
Manuális érvényesítés
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
Minden helm-diagramnak statikus képtárat és címkéket kell tartalmaznia. A felhasználóknak statikus értékekre kell állítaniuk a képtárat és a címkét. A statikus értékek a következő beállítással állíthatók be:
- A képsoron való kemény kódolással vagy
- Az értékek beállítása a values.yaml fájlban, és nem teszi 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