Formation
Module
Anwenden von Clusterupgrades und Sicherheitspatches für Azure Kubernetes Service - Training
Wenden Sie die neuesten Versionsupgrades und Patches auf Ihre Azure Kubernetes Service-Cluster an.
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour bénéficier des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Cet article présente les pratiques de mise à niveau sécurisées (SUP) d’Azure Operator Service Manager (AOSM). Cet ensemble de fonctionnalités permet à un utilisateur final d’exécuter en toute sécurité des mises à niveau complexes des charges de travail CNF (Container Network Function) hébergées sur Azure Operator Nexus, en conformité avec les exigences de mise à niveau logicielle du partenaire (ISSU), le cas échéant. Recherchez les futurs articles de ces services pour développer les fonctionnalités et capacités des pratiques de mise à niveau sécurisées (SUP).
Un service réseau donné pris en charge par Azure Operator Service Manager sera composé d’une à plusieurs fonctions réseau basées sur un conteneur (CNF) qui, au fil du temps, nécessitera des mises à jour logicielles. Pour chaque mise à jour, il est nécessaire d’exécuter une à plusieurs opérations Helm, ce qui met à niveau des applications de fonction réseau (NfApps) dépendantes dans un ordre particulier, d’une manière qui a le moins d’impact sur le service réseau. Sur Azure Operator Service Manager, les pratiques de mise à niveau sécurisées (SUP) constituent un ensemble de fonctionnalités qui peuvent automatiser les opérations CNF requises pour mettre à jour un service réseau sur Azure Operator Nexus.
Pour mettre à jour un service réseau de site Azure Operator Service Manager (SNS), l’Operator exécute une demande de mise à jour Reput sur la ressource SNS déployée. Dans le service de réseau de site (SNS) contenant des CNF avec plusieurs NfApps, la demande est distribuée sur toutes les NfApps définies dans la version de définition de fonction réseau (NFDV). Par défaut, dans l’ordre dans lequel elle apparaît ou éventuellement dans l’ordre défini par le paramètre UpdateDependsOn.
Pour chaque NfApp, la demande de mise à jour Reput prend en charge l’augmentation d’une version de graphique Helm, l’ajout ou la suppression des valeurs Helm et/ou l’ajout ou la suppression de NfApps. Vous pouvez définir les délais d’expiration par NfApp, en fonction des runtimes autorisés connus, mais les NfApps peuvent uniquement être traitées dans un ordre en série, l’une après l’autre. La mise à jour Reput implémente la logique de traitement suivante :
applicationEnabled
défini pour désactiver sont ignorés.skipUpgrade
défini sur activé sont ignorés si aucune modification n’a été détectée.Pour garantir les résultats, le test de NfApp est pris en charge en utilisant Helm, qu’il s’agisse de tests antérieurs ou postérieurs à la mise à niveau Helm ou de tests Helm autonome. Pour les échecs antérieurs ou postérieurs aux tests, le paramètre atomique est respecté. Avec atomique/true, le graphique en échec est restauré. Avec atomique/false, aucune restauration n’est exécutée. Pour plus d’informations sur les tests Helm autonomes, consultez l’article suivant : Exécuter des tests après l’installation ou la mise à niveau
Azure Operator Service Manager prend généralement en charge les mises à niveau de service, une méthode de mise à niveau qui avance une version de déploiement sans interrompre le service en cours d’exécution. Certaines considérations sont nécessaires pour garantir le comportement approprié d’AOSM pendant les opérations d’émission.
maxUnavailable
et maxSurge
en tant que paramètres CGS, qui peuvent ensuite être définis via l’opérateur CGV au moment de l’exécution.En fin de compte, la possibilité pour un service donné d’être mis à niveau sans interruption est une fonctionnalité du service lui-même. Pour plus d’informations, consultez l’éditeur de service pour comprendre les fonctionnalités de mise à niveau dans le service et vérifier qu’elles sont alignées sur les options comportementales AOSM appropriées.
Lors de la planification d’une mise à niveau en utilisant Azure Operator Service Manager, traitez les exigences suivantes avant l’exécution de la mise à niveau pour optimiser le temps passé à tenter la mise à niveau.
Intégrez les artifacts mis à jour en utilisant des workflows de concepteur et/ou d’éditeur.
Créez des artifacts mis à jour en utilisant un workflow Operator.
Mettez à jour les modèles pour veiller à ce que les paramètres de mise à niveau soient définis en fonction de la confiance dans la mise à niveau et du comportement d’échec souhaité.
Suivez le processus suivant pour déclencher une mise à niveau avec Azure Operator Service Manager.
Pour les nouvelles versions de NFDV, il doit s’agir d’un format SemVer valide où seules des valeurs d’incrémentation plus élevées de patch et de mises à jours mineures de versions sont autorisées. Une version de NFDV antérieure n’est pas autorisée. Pour une CNF déployée en utilisant NFDV 2.0.0, la nouvelle NFDV peut être une version 2.0.1 ou 2.1.0, mais pas 1.0.0 ou 3.0.0.
Vous pouvez mettre à jour des versions de graphique Helm ou vous pouvez mettre à jour ou paramétrer des valeurs Helm, le cas échéant. Vous pouvez également ajouter de nouvelles NfApps non existantes dans une version déployée.
UpdateDependsOn est un paramètre de NFDV utilisé pour spécifier l’ordre des NfApps pendant des opérations de mise à jour. Si le paramètre UpdateDependsOn n’est pas fourni, un ordre en série des applications CNF, comme affiché dans la NFDV, est utilisé.
Veillez à définir les délais d’expiration de l’application CNF, le paramètre atomique et le paramètre rollbackOnTestFailure souhaités. Il peut être utile de modifier ces paramètres au fil du temps à mesure que davantage de confiance est acquise dans la mise à niveau.
Une fois l’intégration terminée, l’opération Reput est soumise. En fonction du nombre, de la taille et de la complexité des NfApps, l’exécution de l’opération Reput peut prendre du temps (plusieurs heures).
Si l’opération Reput signale un résultat correct, la mise à niveau est terminée et l’utilisateur doit valider l’état et la disponibilité du service. Si l’opération Reput signale un échec, suivez les étapes de la section sur la récupération d’un échec de mise à niveau pour continuer.
En cas d’échec de la mise à jour Reput, le processus suivant peut être suivi pour réessayer l’opération.
Résolvez la cause racine de l’échec de la NfApp en analysant les journaux d’activité et d’autres informations sur le débogage.
Après avoir corrigé la NfApp en échec et avant d’essayer une nouvelle tentative de mise à niveau, envisagez de modifier le paramètre applicationEnablement pour accélérer le comportement de nouvelle tentative. Vous pouvez définir ce paramètre sur la valeur false quand une NfApp doit être ignorée. Ce paramètre peut être utile quand une NfApp n’exige pas de mise à niveau.
Par défaut, l’opération Reput effectue une nouvelle tentative des NfApps dans l’ordre de mise à jour déclaré, sauf si elles sont ignorées en utilisant l’indicateur applicationEnablement.
Dans la ressource de NFDV, sous deployParametersMappingRuleProfile, il existe la propriété applicationEnablement de type enum qui comprend les valeurs : Inconnu, Activé ou Désactivé. Il peut être utilisé pour exclure les opérations NfApp pendant le déploiement de la fonction réseau (NF).
Pour la propriété applicationEnablement, l’éditeur dispose de deux options : fournir une valeur par défaut ou la paramétriser.
NFDV est utilisé par l’éditeur pour définir les valeurs par défaut pour 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"
}
}
Le CGS est utilisée par l’éditeur pour exiger que la ou les variables roleOverrideValues soient fournies par l’opérateur lors du runtime. RoleOverrideValues peut inclure des paramètres non définis pour 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"
]
}
Les opérateurs héritent des valeurs applicationEnablement par défaut définies par NFDV. Si applicationEnablement est paramétrable dans le CGS, elle doit alors être transmise via la propriété deploymentValues lors du runtime.
La CGV est utilisée par l’opérateur pour définir la ou les variables roleOverrideValues lors du runtime. RoleOverrideValues inclut des paramètres non définis pour 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\"}}"
}
}
Le modèle ARM NF est utilisé par l’opérateur pour envoyer la variable roleOverrideValues, définie par CGV, au fournisseur de ressources (RP). L’opérateur peut modifier le paramètre applicationEnablement dans la CGV, si nécessaire, et soumettre à nouveau le même modèle ARM NF pour modifier le comportement entre les itérations.
{
"$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')]"
]
}
}
]
}
La fonctionnalité skipUpgrade
est conçue pour optimiser le temps nécessaire aux mises à niveau CNF. Lorsque l’éditeur active cet indicateur dans roleOverrideValues
sous upgradeOptions
, la couche de service AOSM effectue certaines vérifications préalables pour déterminer si une mise à niveau pour un élément spécifique nFApplication
peut être ignorée. Si tous les critères de vérification préalable sont remplis, la mise à niveau est ignorée pour cette application. Sinon, une mise à niveau est exécutée au niveau du cluster.
Une mise à niveau peut être ignorée si toutes les conditions suivantes sont remplies :
nfApplication
est réussi.La fonctionnalité skipUpgrade
est désactivée par défaut. Si ce paramètre facultatif n’est pas spécifié roleOverrideValues
sous upgradeOptions
, les mises à niveau CNF continuent de manière traditionnelle, où nfApplications
sont mises à niveau au niveau du cluster.
Pour activer la fonctionnalité SkipUpgrade via roleOverrideValues
, reportez-vous à l’exemple suivant.
{
"location": "eastus2euap",
"properties": {
"publisherName": "xyAzureArcRunnerPublisher",
"publisherScope": "Private",
"networkFunctionDefinitionGroupName": "AzureArcRunnerNFDGroup",
"networkFunctionDefinitionVersion": "1.0.0",
"networkFunctionDefinitionOfferingLocation": "eastus2euap",
"nfviType": "AzureArcKubernetes",
"nfviId": "/subscriptions/4a0479c0-b795-4d0f-96fd-c7edd2a2928f/resourcegroups/ashutosh_test_rg/providers/microsoft.extendedlocation/customlocations/ashutosh_test_cl",
"deploymentValues": "",
"roleOverrideValues": [
"{\"name\":\"hellotest\",\"deployParametersMappingRuleProfile\":{\"helmMappingRuleProfile\":{\"options\":{\"installOptions\":{\"atomic\":\"true\",\"wait\":\"true\",\"timeout\":\"1\"},\"upgradeOptions\":{\"atomic\":\"true\",\"wait\":\"true\",\"timeout\":\"4\",\"skipUpgrade\":\"true\"}}}}}",
"{\"name\":\"runnerTest\",\"deployParametersMappingRuleProfile\":{\"helmMappingRuleProfile\":{\"options\":{\"installOptions\":{\"atomic\":\"true\",\"wait\":\"true\",\"timeout\":\"5\"},\"upgradeOptions\":{\"atomic\":\"true\",\"wait\":\"true\",\"timeout\":\"5\"}}}}}"
]
}
}
hellotest
skipUpgrade
est activé. Si la demande de mise à niveau pour hellotest
répond aux critères de pré-vérification, la mise à niveau est ignorée.runnerTest
skipUpgrade
n’est pas spécifié. Par conséquent, runnerTest
exécute une mise à niveau Helm traditionnelle au niveau du cluster, même si les critères de pré-vérification sont remplis.Formation
Module
Anwenden von Clusterupgrades und Sicherheitspatches für Azure Kubernetes Service - Training
Wenden Sie die neuesten Versionsupgrades und Patches auf Ihre Azure Kubernetes Service-Cluster an.