Megosztás a következőn keresztül:


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:// vagy oci://. 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