Начало работы с рекомендациями по безопасному обновлению
Обзор
В этой статье приведены рекомендации по безопасному обновлению (AOSM) оператора Azure (SUP). Этот набор функций позволяет конечному пользователю безопасно выполнять сложные обновления рабочих нагрузок CNF, размещенных в Операторе Azure Nexus, в соответствии с требованиями isSU партнера, где это применимо. Найдите будущие статьи в этих службах, чтобы расширить возможности и возможности SUP.
Введение
Данная сетевая служба, поддерживаемая Диспетчером служб Azure, будет состоять из одного из нескольких сетевых функций на основе контейнеров (CNFs), которые со временем потребуют обновления программного обеспечения. Для каждого обновления необходимо выполнить один ко многим операциям helm, обновив приложения зависимых сетевых функций (NfApps), в определенном порядке, чтобы наименее влиять на сетевую службу. В Диспетчере служб оператора Azure методы безопасного обновления представляют собой набор функций, которые могут автоматизировать операции CNF, необходимые для обновления сетевой службы в Операторе Azure Nexus.
- Обновление SNS Reput — выполнение операции обновления helm во всех NfApps в NFDV.
- Nexus Platform — поддержка операций репозитория SNS на целевых объектах платформы Nexus.
- Время ожидания операций — возможность задавать операционные тайм-ауты для каждой операции NfApp.
- Синхронные операции — возможность одновременно выполнять одну последовательную операцию NfApp.
- Приостановка при сбое — на основе флага установите поведение сбоя только для отката последней операции NfApp.
- Проверка одного теста диаграммы — выполнение операции тестирования helm после создания или обновления.
- Рефакторинг SNS Reput — улучшенные методы, добавляет порядок обновления и проверку очистки.
Подход к обновлению
Чтобы обновить существующую сетевую службу сайта Service Manager оператора Azure (SNS), оператор выполняет запрос на обновление репозитория для развернутого ресурса SNS. Где SNS содержит CNFs с несколькими NfApps, запрос раздувается по всем NfApps, определенным в версии определения сетевой функции (NFDV). По умолчанию в порядке, который они отображаются, или при необходимости в порядке, определенном параметром UpdateDependsOn.
Для каждого NfApp запрос на обновление репозитория поддерживает увеличение версии диаграммы helm, добавление и удаление значений helm и /или добавление и удаление любых NfApps. Время ожидания можно задать на NfApp на основе известных допустимых сред выполнения, но NfApps можно обрабатывать только в последовательном порядке, один после другого. Обновление репозитория реализует следующую логику обработки:
- Для приложения NFApp с параметром applicationEnablement задано значение false, пропустите.
- Для NFApp, которая распространена между старой и новой версией определения сетевой функции (NFDV), активируйте компонент обновления.
- Для NFApp, добавленного в новый NFDV, активируйте компонент создания.
Чтобы обеспечить результаты, тестирование NfApp поддерживается с помощью helm, либо тестов helm перед обновлением или публикацией тестов, либо автономных тестов helm. Для неудачных тестов до и после выполнения атомарный параметр учитывается. С атомарным или истинным откат завершается сбой диаграммы. С атомарным или ложным значением откат не выполняется. Для автономных тестов helm мы выполнили параметр rollbackOnTestFailure. При откатеOnTestFailure/true откат завершается сбой диаграммы. При откатеOnTestFailure/false не выполняется откат.
Необходимые компоненты
При планировании обновления с помощью Диспетчера служб оператора Azure необходимо заранее выполнить обновление, чтобы оптимизировать время, затраченное на попытку обновления.
Подключение обновленных артефактов с помощью рабочих процессов издателя и(или) конструктора.
- Издатель, магазин, проектирование сетевой службы (NSDg) и группа разработки сетевых функций (NFDg) являются статическими и не нуждаются в изменении.
- Для хранения новых диаграмм и изображений требуется новый манифест артефакта. Дополнительные сведения см. в документации по подключению для отправки новых диаграмм и изображений.
- Требуется новая версия проектирования NFDV и сетевой службы (NSDV) в соответствии с существующими NFDg и NSDg.
- Мы рассмотрим основные изменения NFDV в пошаговом разделе.
- Новый NSDV требуется только в том случае, если появилась новая версия схемы группы конфигурации (CGS).
- При необходимости новые CGS.
- Требуется, если обновление вводит новые доступные параметры конфигурации.
- Издатель, магазин, проектирование сетевой службы (NSDg) и группа разработки сетевых функций (NFDg) являются статическими и не нуждаются в изменении.
Создание обновленных артефактов с помощью рабочего процесса оператора.
- При необходимости создайте новые значения группы конфигурации (CGV) на основе новых CGS.
- Повторное использование полезных данных и создание полезных данных путем подтверждения существующих объектов службы сайта и сети сайта.
Шаблоны обновлений, чтобы обеспечить настройку параметров обновления на основе доверия к обновлению и требуемому поведению сбоя.
- Параметры, используемые для рабочей среды, могут подавлять сведения о сбоях, а параметры, используемые для отладки или тестирования, могут предоставлять эти сведения.
Процедура обновления
Выполните следующий процесс, чтобы активировать обновление с помощью Диспетчера служб оператора Azure.
Создание ресурса NFDV
Для новых версий NFDV он должен находиться в допустимом формате SemVer, где разрешены только более высокие значения добавочных обновлений исправлений и дополнительных версий. Не допускается более низкая версия NFDV. Учитывая развертывание CNF с помощью NFDV 2.0.0, новый NFDV может быть версии 2.0.1 или 2.1.0, но не 1.0.0 или 3.0.0.
Обновление новых параметров NFDV
Версии диаграмм Helm можно обновлять, или значения Helm можно обновлять или параметризировать при необходимости. Новые NfApps также можно добавить, где они не существовали в развернутой версии.
Обновление NFDV для требуемого порядка NfApp
UpdateDependsOn — это параметр NFDV, используемый для указания порядка NfApps во время операций обновления. Если UpdateDependsOn не указан, используется последовательное упорядочение приложений CNF, как показано в NFDV.
Обновление NFDV для требуемого поведения обновления
Убедитесь, что необходимо задать любое требуемое время ожидания приложения CNF, атомарный параметр и параметр rollbackOnTestFailure. Это может оказаться полезным для изменения этих параметров с течением времени, так как больше уверенности в обновлении.
Проблема с репозиторием SNS
После завершения подключения выполняется операция повторного копирования. В зависимости от числа, размера и сложности NfApps операция повторного использования может занять некоторое время (несколько часов).
Проверка результатов репозитория
Если репозиторий сообщает успешный результат, обновление завершено, и пользователь должен проверить состояние и доступность службы. Если репозиторий сообщает о сбое, выполните действия, описанные в разделе восстановления сбоя обновления, чтобы продолжить.
Повторная процедура
В случаях, когда обновление репозитория завершается сбоем, выполните следующий процесс, чтобы повторить операцию.
Диагностика неудачной NfApp
Устраните первопричину сбоя NfApp путем анализа журналов и других сведений об отладке.
Пропуск завершенных диаграмм вручную
После исправления неудачного NfApp, но прежде чем пытаться повторить обновление, рассмотрите возможность изменения параметра applicationEnablement для ускорения поведения повторных попыток. Этот параметр может быть задан как false, где следует пропустить NfApp. Этот параметр может быть полезен, если NfApp не требует обновления.
Выдача повторных попыток SNS (повторение до успешного выполнения)
По умолчанию репозиторий повторяет NfApps в объявленном порядке обновления, если они не пропускаются с помощью флага applicationEnablement.
Использование applicationEnablement
В ресурсе NFDV в разделе deployParametersMappingRuleProfile есть свойство applicationEnablement перечисления типа, которое принимает значения: Unknown, Enabled или Disabled. Его можно использовать для исключения операций NfApp во время развертывания NF.
Изменения издателя
Для свойства applicationEnablement издатель имеет два варианта: укажите значение по умолчанию или параметризируйте его.
Пример NFDV
NFDV используется издателем для задания значений по умолчанию для applicationEnablement.
{
"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"
}
}
Пример ресурса схемы группы конфигурации (CGS)
CGS используется издателем, чтобы требовать, чтобы переменные roleOverrideValues предоставлялись оператором во время выполнения. Эти ролиOverrideValues могут включать параметры, отличные от dedfault для applicationEnablement.
{
"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"
]
}
Изменения оператора
Операторы наследуют значения applicationEnablement по умолчанию, определенные NFDV. Если applicationEnablement параметризован в CGS, то его необходимо передать через свойство deploymentValues во время выполнения.
Пример значения группы конфигурации (CGV)
CGV используется оператором для задания переменных roleOverrideValues во время выполнения. RoleOverrideValues включает параметры, отличные от dedfault для applicationEnablement.
{
"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\"}}"
}
}
Пример шаблона ARM NF
Шаблон NF ARM используется оператором для отправки переменных roleOverrideValues, заданных CGV, поставщику ресурсов (RP). Оператор может изменить параметр applicationEnablement в CGV при необходимости и повторно отправить тот же шаблон NF ARM, чтобы изменить поведение между итерациями.
{
"$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')]"
]
}
}
]
}
Поддержка обновлений служб
Оператор Azure Service Manager, где это возможно, поддерживается в обновлениях службы, метод обновления, который перемещает версию развертывания без прерывания службы. Однако возможность обновления данной службы без прерывания является функцией самой службы. Дополнительные сведения о возможностях обновления в службе см. в издателе службы.
Перенаправление целей
Диспетчер службы операторов Azure продолжает увеличивать набор функций безопасного обновления и улучшать предлагаемые службы обновлений. В настоящее время рассматриваются следующие функции для будущей доступности:
- Улучшение элемента управления "Параметры обновления" — более эффективное предоставление параметров.
- Пропустить NfApp без изменений. Пропустить обработку NfApps, где результат изменений не изменяется.
- Выполните откат NFDV при сбое. На основе флага откат все завершенные NfApps при сбое.
- Асинхронно — возможность одновременно выполнять несколько операций NfApp.
- Скачивание изображений. Возможность предварительной загрузки образов в пограничный репозиторий.
- Целевые диаграммы для проверки — возможность выполнения теста helm только в определенном NfApp.