Share via


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