Aracılığıyla paylaş


Güvenli yükseltme uygulamalarını kullanmaya başlama

Genel bakış

Bu makalede Azure Operatör Hizmet Yöneticisi (AOSM) güvenli yükseltme uygulamaları (SUP) tanıtılıyor. Bu özellik kümesi, son kullanıcının uygun olduğunda iş ortağı ISSU gereksinimlerine uygun olarak Azure Operatör Nexus'ta barındırılan CNF iş yüklerinin karmaşık yükseltmelerini güvenli bir şekilde yürütmesini sağlar. SUP özelliklerini ve özelliklerini genişletmek için bu hizmetlerde gelecek makaleleri arayın.

Giriş

Azure Operatör Hizmeti Yöneticisi tarafından desteklenen belirli bir ağ hizmeti, zaman içinde yazılım güncelleştirmeleri gerektiren bir veya daha fazla kapsayıcı tabanlı ağ işlevinden (CNF) oluşur. Her güncelleştirme için, bağımlı ağ işlevi uygulamalarını (NfApps) ağ hizmetini en az etkileyen şekilde belirli bir sırayla yükselterek bire çok helm işlemi çalıştırmak gerekir. Azure Operatör Hizmet Yöneticisi'nde Güvenli Yükseltme Uygulamaları, Azure Operatör Nexus'ta bir ağ hizmetini güncelleştirmek için gereken CNF işlemlerini otomatikleştirebilen bir dizi özelliği temsil eder.

  • SNS Reput güncelleştirmesi - NFDV'deki tüm NfApps genelinde helm yükseltme işlemini yürütür.
  • Nexus Platformu - Nexus platformu hedeflerinde SNS hesaplama işlemlerini destekler.
  • İşlem Zaman Aşımları - Her NfApp işlemi için işlem zaman aşımlarını ayarlama olanağı.
  • Zaman Uyumlu İşlemler - Aynı anda bir seri NfApp işlemi çalıştırabilme.
  • Duraklatma Hatası - Bayrağı temel alarak, hata davranışını yalnızca son NfApp işlemini geri almak için ayarlayın.
  • Tek Grafik Testi Doğrulaması - Oluşturma veya güncelleştirme sonrasında helm test işlemi çalıştırma.
  • Yeniden düzenlenmiş SNS Reput - Geliştirilmiş yöntemler, güncelleştirme sırası ve temizleme denetimi ekler.

Yükseltme yaklaşımı

Mevcut bir Azure Operatör Hizmet Yöneticisi site ağ hizmetini (SNS) güncelleştirmek için İşleç, dağıtılan SNS kaynağına yönelik bir hesaplama güncelleştirme isteği yürütür. SNS'nin birden çok NfApps içeren CNF'leri içerdiği durumlarda, istek ağ işlev tanımı sürümünde (NFDV) tanımlanan tüm NfApps'ler arasında gerçekleştirilir. Varsayılan olarak, göründükleri sırayla veya isteğe bağlı olarak UpdateDependsOn parametresi tarafından tanımlanan sırayla.

Her NfApp için reput güncelleştirme isteği helm grafiği sürümünü artırmayı, helm değerlerini eklemeyi/kaldırmayı ve/veya NfApps eklemeyi/kaldırmayı destekler. Zaman aşımları, bilinen izin verilebilen çalışma zamanlarına göre NfApp başına ayarlanabilir, ancak NfApps yalnızca seri sırayla, ardı ardına işlenebilir. Reput güncelleştirmesi aşağıdaki işleme mantığını uygular:

  • NfApps, updateDependsOn sıralamasından sonra veya göründükleri sıralı sırada işlenir.
  • "applicationEnabled" parametresi devre dışı olarak ayarlanmış NfApps atlanır.
  • Dağıtılan ancak yeni NFDV tarafından başvurulmayan NFApps silinir.
  • Eski ve yeni NFDV arasında ortak olan NFApps yükseltilir.
  • Yalnızca yeni NFDV'de bulunan NFApps yüklenir.

Sonuçların elde edilmesini sağlamak için NfApp testi helm, helm yükseltme öncesi/sonrası testleri veya tek başına helm testleri kullanılarak desteklenir. Test öncesi/sonrası hataları için atomik parametre kabul edilir. Atomik/true ile başarısız olan grafik geri alınır. Atomic/false ile hiçbir geri alma yürütülür. Tek başına helm testleri için rollbackOnTestFailure parametresini kabul edelim. rollbackOnTestFailure/true ile başarısız olan grafik geri alınır. rollbackOnTestFailure/false ile hiçbir geri alma yürütülür.

Önkoşullar

Azure Operatör Hizmeti Yöneticisi'ni kullanarak yükseltmeyi planlarken, yükseltmeyi denerken harcanan süreyi iyileştirmek için yükseltme yürütme öncesinde aşağıdaki gereksinimleri karşılayın.

  • Yayımcı ve/veya tasarımcı iş akışlarını kullanarak güncelleştirilmiş yapıtları ekleme.

    • Yayımcı, depolama, ağ hizmeti tasarımı (NSDg) ve ağ işlevi tasarım grubu (NFDg) statiktir ve değiştirilmesi gerekmez.
      • Yeni grafikleri ve görüntüleri depolamak için yeni bir yapıt bildirimi gerekir. Daha fazla bilgi için yeni grafikleri ve görüntüleri karşıya yükleme hakkında ayrıntılı bilgi için ekleme belgelerine bakın.
    • Mevcut NFDg ve NSDg altında yeni NFDV ve ağ hizmeti tasarım sürümü (NSDV) gereklidir.
      • Adım adım bölümünde NFDV'de yapılan temel değişiklikleri ele alacağız.
      • Yeni NSDV yalnızca yeni bir yapılandırma grubu şeması (CGS) sürümü kullanıma sunulduğunda gereklidir.
    • Gerekirse yeni CGS.
      • Yükseltme yeni kullanıma sunulan yapılandırma parametrelerine neden olursa gereklidir.
  • İşleç iş akışını kullanarak güncelleştirilmiş yapıtlar oluşturun.

    • Gerekirse, yeni CGS'yi temel alan yeni yapılandırma grubu değerleri (CGV) oluşturun.
    • Mevcut site ve site ağı hizmet nesnelerini onaylayarak yükü yeniden kullanın ve oluşturun.
  • Yükseltme parametrelerinin yükseltmedeki güvene ve istenen hata davranışına göre ayarlandığından emin olmak için şablonları güncelleştirin.

    • Üretim için kullanılan ayarlar hata ayrıntılarını gizleyebilirken, hata ayıklama veya test için kullanılan ayarlar bu ayrıntıları göstermeyi seçebilir.

Yükseltme yordamı

Azure Operatör Hizmet Yöneticisi ile yükseltmeyi tetikleme işlemini aşağıdaki işlemi izleyin.

Yeni NFDV kaynağı oluşturma

Yeni NFDV sürümleri için geçerli bir SemVer biçiminde olmalıdır; burada düzeltme eki ve ikincil sürüm güncelleştirmelerinin yalnızca daha yüksek artımlı değerlerine izin verilir. Daha düşük bir NFDV sürümüne izin verilmez. NFDV 2.0.0 kullanılarak dağıtılan bir CNF göz önüne alındığında, yeni NFDV 2.0.1 veya 2.1.0 sürümü olabilir, ancak 1.0.0 veya 3.0.0 olmayabilir.

Yeni NFDV parametrelerini güncelleştirme

Helm grafiği sürümleri güncelleştirilebilir veya Helm değerleri gerektiğinde güncelleştirilebilir veya parametreleştirilebilir. Dağıtılan sürümde mevcut olmayan yeni NfApps de eklenebilir.

İstenen NfApp sırası için NFDV'yi güncelleştirme

UpdateDependsOn, güncelleştirme işlemleri sırasında NfApps sıralamasını belirtmek için kullanılan bir NFDV parametresidir. UpdateDependsOn sağlanmazsa, NFDV'de gösterildiği gibi CNF uygulamalarının seri sıralaması kullanılır.

İstenen yükseltme davranışı için NFDV'yi güncelleştirme

İstenen CNF uygulama zaman aşımlarını, atomik parametresini ve rollbackOnTestFailure parametresini ayarladığınızdan emin olun. Yükseltmede daha fazla güvenilirlik kazanıldığından bu parametrelerin zaman içinde değiştirilmesi yararlı olabilir.

Sorun SNS hesaplaması

Ekleme tamamlandıktan sonra hesaplama işlemi gönderilir. NfApps'in sayısına, boyutuna ve karmaşıklığına bağlı olarak, hesaplama işleminin tamamlanması biraz zaman alabilir (birden çok saat).

Hesaplama sonuçlarını inceleme

Hesaplama başarılı bir sonuç bildiriyorsa yükseltme tamamlanır ve kullanıcı hizmetin durumunu ve kullanılabilirliğini doğrulamalıdır. Hesaplama bir hata bildiriyorsa devam etmek için yükseltme hatası kurtarma bölümündeki adımları izleyin.

Yeniden deneme yordamı

Bir hesaplama güncelleştirmesinin başarısız olduğu durumlarda, işlemi yeniden denemek için aşağıdaki işlem izlenebilir.

Başarısız NfApp'i tanılama

Günlükleri ve diğer hata ayıklama bilgilerini analiz ederek NfApp hatasının kök nedenini çözün.

Tamamlanmış grafikleri el ile atla

Başarısız NfApp düzeltildikten sonra, ancak yükseltme yeniden denemesini denemeden önce yeniden deneme davranışını hızlandırmak için applicationEnablement parametresini değiştirmeyi göz önünde bulundurun. Bu parametre false olarak ayarlanabilir; burada bir NfApp atlanmalıdır. Bu parametre, NfApp'in yükseltilmesi gerekmediği durumlarda yararlı olabilir.

SNS yeniden hesaplama denemesi verme (başarılı olana kadar yinele)

Varsayılan olarak, applicationEnablement bayrağı kullanılarak atlanmadıkları sürece, hesaplama NfApps'i bildirilen güncelleştirme sırasına göre yeniden denenir.

applicationEnablement'ı kullanma

NFDV kaynağında deployParametersMappingRuleProfile altında applicationEnablement türü sabit listesi özelliği bulunur ve bu özellik şu değerleri alır: Bilinmiyor, Etkin veya devre dışı. NF dağıtımı sırasında NfApp işlemlerini dışlamak için kullanılabilir.

Yayımcı değişiklikleri

applicationEnablement özelliği için yayımcının iki seçeneği vardır: varsayılan bir değer sağlayın veya parametreleştirin.

Örnek NFDV

NFDV, applicationEnablement için varsayılan değerleri ayarlamak üzere yayımcı tarafından kullanılır.

{ 
      "location":"<location>", 
      "properties": {
      "networkFunctionTemplate": {
        "networkFunctionApplications": [
          {
            "artifactProfile": {
              "helmArtifactProfile": { 
                "var":"var"
              },
              "artifactStore": {
                "id": "<artifactStore id>"
              }
            },
            "deployParametersMappingRuleProfile": {
              "helmMappingRuleProfile": {
                "releaseNamespace": "{deployParameters.role1releasenamespace}",
                "releaseName": "{deployParameters.role1releasename}"
              },
              "applicationEnablement": "Enabled"
            },
            "artifactType": "HelmPackage",
            "dependsOnProfile": "null",
            "name": "hellotest"
          },
          {
            "artifactProfile": {
              "helmArtifactProfile": {
                 "var":"var"
              },
              "artifactStore": {
                "id": "<artifactStore id>"
              }
            },
            "deployParametersMappingRuleProfile": {
              "helmMappingRuleProfile": {
                "releaseNamespace": "{deployParameters.role2releasenamespace}",
                "releaseName": "{deployParameters.role2releasename}"
              },
              "applicationEnablement": "Enabled"
            },
            "artifactType": "HelmPackage",
            "dependsOnProfile": "null",
            "name": "hellotest1"
          }
        ],
        "nfviType": "AzureArcKubernetes"
      },
      "description": "null",
      "deployParameters": {"type":"object","properties":{"role1releasenamespace":{"type":"string"},"role1releasename":{"type":"string"},"role2releasenamespace":{"type":"string"},"role2releasename":{"type":"string"}},"required":["role1releasenamespace","role1releasename","role2releasenamespace","role2releasename"]},
      "networkFunctionType": "ContainerizedNetworkFunction"
    }
}

Örnek yapılandırma grubu şeması (CGS) kaynağı

CGS, yayımcı tarafından roleOverrideValues değişkenlerinin çalıştırma zamanında İşleç tarafından sağlanmasını istemek için kullanılır. Bu roleOverrideValues, applicationEnablement için varsayılan olmayan ayarları içerebilir.

{
  "type": "object",
  "properties": {
    "location": {
      "type": "string"
    },
    "nfviType": {
      "type": "string"
    },
    "nfdvId": {
      "type": "string"
    },
    "helloworld-cnf-config": {
      "type": "object",
      "properties": {
        "role1releasenamespace": {
          "type": "string"
        },
        "role1releasename": {
          "type": "string"
        },
        "role2releasenamespace": {
          "type": "string"
        },
        "role2releasename": {
          "type": "string"
        },
        "roleOverrideValues1": {
          "type": "string"
        },
        "roleOverrideValues2": {
          "type": "string"
        }
      },
      "required": [
        "role1releasenamespace",
        "role1releasename",
        "role2releasenamespace",
        "role2releasename",
        "roleOverrideValues1",
        "roleOverrideValues2"
      ]
    }
  },
  "required": [
    "nfviType",
    "nfdvId",
    "location",
    "helloworld-cnf-config"
  ]
}

İşleç değişiklikleri

İşleçler, NFDV tarafından tanımlanan varsayılan applicationEnablement değerlerini devralır. applicationEnablement CGS'de parametreliyse, çalışma zamanında deploymentValues özelliği aracılığıyla geçirilmelidir.

Örnek yapılandırma grubu değeri (CGV) kaynağı

CGV, işleç tarafından runt zamanında roleOverrideValues değişkenlerini ayarlamak için kullanılır. roleOverrideValues, applicationEnablement için dedfault olmayan bir ayar içerir.

{
  "location": "<location>",
  "nfviType": "AzureArcKubernetes",
  "nfdvId": "<nfdv_id>",
  "helloworld-cnf-config": {
    "role1releasenamespace": "hello-test-releasens",
    "role1releasename": "hello-test-release",
    "role2releasenamespace": "hello-test-2-releasens",
    "role2releasename": "hello-test-2-release",
    "roleOverrideValues1": "{\"name\":\"hellotest\",\"deployParametersMappingRuleProfile\":{\"applicationEnablement\":\"Enabled\",\"helmMappingRuleProfile\":{\"releaseName\":\"override-release\",\"releaseNamespace\":\"override-namespace\",\"helmPackageVersion\":\"1.0.0\",\"values\":\"\",\"options\":{\"installOptions\":{\"atomic\":\"true\",\"wait\":\"true\",\"timeout\":\"30\",\"injectArtifactStoreDetails\":\"true\"},\"upgradeOptions\":{\"atomic\":\"true\",\"wait\":\"true\",\"timeout\":\"30\",\"injectArtifactStoreDetails\":\"true\"}}}}}",
    "roleOverrideValues2": "{\"name\":\"hellotest1\",\"deployParametersMappingRuleProfile\":{\"applicationEnablement\" : \"Enabled\"}}"
  }
}

Örnek NF ARM şablonu

NF ARM şablonu, CGV tarafından ayarlanan roleOverrideValues değişkenlerini kaynak sağlayıcısına (RP) göndermek için işleç tarafından kullanılır. operatör, yinelemeler arasındaki davranışı değiştirmek için CGV'deki applicationEnablement ayarını gerektiği gibi değiştirebilir ve aynı NF ARM şablonunu yeniden gönderebilir.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "nameValue": {
      "type": "string",
      "defaultValue": "HelloWorld"
    },
    "locationValue": {
      "type": "string",
      "defaultValue": "eastus"
    },
    "nfviTypeValue": {
      "type": "string",
      "defaultValue": "AzureArcKubernetes"
    },
    "nfviIdValue": {
      "type": "string"
    },
    "config": {
      "type": "object",
      "defaultValue": {}
    },
    "nfdvId": {
      "type": "string"
    }
  },
  "variables": {
    "deploymentValuesValue": "[string(createObject('role1releasenamespace', parameters('config').role1releasenamespace, 'role1releasename',parameters('config').role1releasename, 'role2releasenamespace', parameters('config').role2releasenamespace, 'role2releasename',parameters('config').role2releasename))]",
    "nfName": "[concat(parameters('nameValue'), '-CNF')]",
    "roleOverrideValues1": "[string(parameters('config').roleOverrideValues1)]",
    "roleOverrideValues2": "[string(parameters('config').roleOverrideValues2)]"
  },
  "resources": [
    {
      "type": "Microsoft.HybridNetwork/networkFunctions",
      "apiVersion": "2023-09-01",
      "name": "[variables('nfName')]",
      "location": "[parameters('locationValue')]",
      "properties": {
        "networkFunctionDefinitionVersionResourceReference": {
          "id": "[parameters('nfdvId')]",
          "idType": "Open"
        },
        "nfviType": "[parameters('nfviTypeValue')]",
        "nfviId": "[parameters('nfviIdValue')]",
        "allowSoftwareUpdate": true,
        "configurationType": "Open",
        "deploymentValues": "[string(variables('deploymentValuesValue'))]",
        "roleOverrideValues": [
          "[variables('roleOverrideValues1')]",
          "[variables('roleOverrideValues2')]"
        ]
      }
    }
  ]
}

Hizmet yükseltmeleri için destek

Mümkün olduğunda Azure Operatör Hizmeti Yöneticisi, hizmeti kesintiye uğratmadan bir dağıtım sürümünü ilerleten bir yükseltme yöntemi olan hizmet yükseltmelerini destekler. Ancak, belirli bir hizmetin kesintisiz olarak yükseltilebilmesi, hizmetin kendisinin bir özelliğidir. Hizmet içi yükseltme özelliklerini anlamak için hizmet yayımcısına daha fazla danışın.

İletme arama hedefleri

Azure Operatör Hizmeti Yöneticisi, Güvenli Yükseltme Uygulaması özellik kümesini büyütmeye ve iyileştirmeleri sunulan güncelleştirme hizmetlerine yönlendirmeye devam eder. Gelecekteki kullanılabilirlik için şu özellikler şu anda dikkate alınıyor:

  • Yükseltme Seçenekleri Denetimini Geliştirme - Parametreleri daha etkili bir şekilde kullanıma sunma.
  • Değişiklik Yok'da NfApp atla - Değişiklik yapılmadığı durumlarda NfApps'in işlenmesini atlayın.
  • NFDV Geri Alma Işlemini Hata Durumunda Yürüt - Bayrağı temel alarak, hata durumunda tamamlanan tüm NfApps'i geri alın.
  • Zaman Uyumsuz Olarak Çalıştırma - Aynı anda birden çok NfApp işlemi çalıştırabilme.
  • Görüntüleri İndir- Uç depoya görüntüleri önceden yükleme özelliği.
  • Doğrulama için Hedef Grafikler - Yalnızca belirli bir NfApp üzerinde helm testi çalıştırma özelliği.