Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans ce tutoriel, vous allez créer une solution avec plusieurs dépendances partagées à différents niveaux dans une organisation de hiérarchie à quatre niveaux. Vous utilisez des groupes de services pour orchestrer des charges de travail à différents niveaux de la hiérarchie.
Pour plus d’informations, consultez Groupes de services à différents niveaux de hiérarchie dans l’orchestration de charge de travail.
Conditions préalables
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit.
- Configurez votre environnement pour l’orchestration des charges de travail. Si ce n’est pas le cas, accédez à Préparer votre environnement pour l’orchestration des charges de travail afin de configurer les prérequis.
- Téléchargez et extrayez les artefacts du dépôt GitHub dans un dossier particulier.
- Créez les groupes de services et les niveaux de hiérarchie. Si ce n’est pas le cas, suivez les étapes des groupes de services à différents niveaux de hiérarchie.
Remarque
Vous pouvez réutiliser les variables globales définies dans Préparer les principes de base pour exécuter l’orchestration des charges de travail et les variables de ressources définies dans Configurer les ressources de l’orchestration de charge de travail.
Définir le scénario
L’organisation a une hiérarchie à quatre niveaux, qui est représentée dans le diagramme suivant. La hiérarchie se compose des niveaux pays, région, usine et ligne. Ces niveaux représentent une structure de haut en bas où chaque niveau réduit l’étendue de l’orchestration.
Les références de sites sont créées à chaque niveau de la hiérarchie, étant SGCountry au niveau du pays, SGRegion au niveau de la région, SGFactory au niveau de l’usine. Une cible est créée à chaque niveau, étant CountryTarget au niveau du pays, RegionTarget au niveau de la région, FactoryTarget au niveau de l’usine et LineTarget au niveau de la ligne.
Une solution est déployée sur chaque cible comme suit :
- Country Adapter (CA) est une solution au niveau du pays.
- L’adaptateur de région (RA) est une solution au niveau de la région.
- L’adaptateur d’usine (FA) est une solution au niveau usine.
- Line Event Tracker (LET) est une solution au niveau de la ligne. LET dépend de FA, de RA et de CA, ce qui signifie que pendant le déploiement, la configuration LET sera mise à jour avec les informations des autres solutions.
Toutes les instances de CA, RA, FA et LET sont déployées dans le même cluster Kubernetes activé pour Azure Arc.
Créer des cibles
Créez une cible pour chaque niveau de hiérarchie. Mettez à jour custom-location.json fichier avec l’emplacement personnalisé de votre cluster.
solution_scope="one-to-n-app" # if you want to change the name, make sure it follows the K8s object naming convention countryTarget="Italy" regionTarget="Naples" factoryTarget="Contoso" lineTarget="Line01" # Create target at country level az workload-orchestration target create \ --resource-group "$rg" \ --location "$l" \ --name "$countryTarget" \ --display-name "$countryTarget" \ --hierarchy-level "country" \ --capabilities "Use for soap production" \ --description "This is Country Target" \ --solution-scope "$solution_scope" \ --target-specification "@targetspecs.json" \ --extended-location "@custom-location.json" # Create target at region level az workload-orchestration target create \ --resource-group "$rg" \ --location "$l" \ --name "$regionTarget" \ --display-name "$regionTarget" \ --hierarchy-level "region" \ --capabilities "Use for soap production" \ --description "This is Region Target" \ --solution-scope "$solution_scope" \ --target-specification "@targetspecs.json" \ --extended-location "@custom-location.json" # Create target at factory level az workload-orchestration target create \ --resource-group "$rg" \ --location "$l" \ --name "$factoryTarget" \ --display-name "$factoryTarget" \ --hierarchy-level "factory" \ --capabilities "Use for soap production" \ --description "This is Factory Target" \ --solution-scope "$solution_scope" \ --target-specification "@targetspecs.json" \ --extended-location "@custom-location.json" # Create target at line level az workload-orchestration target create \ --resource-group "$rg" \ --location "$l" \ --name "$lineTarget" \ --display-name "$lineTarget" \ --hierarchy-level "line" \ --capabilities "Use for soap production" \ --description "This is Line01 Target" \ --solution-scope "$solution_scope" \ --target-specification "@targetspecs.json" \ --extended-location "@custom-location.json"
Obtenez les identifiants des objectifs créés.
lineTargetId=$(az workload-orchestration target show --resource-group "$rg" --name "$lineTarget" --query id --output tsv) factoryTargetId=$(az workload-orchestration target show --resource-group "$rg" --name "$factoryTarget" --query id --output tsv) regionTargetId=$(az workload-orchestration target show --resource-group "$rg" --name "$regionTarget" --query id --output tsv) countryTargetId=$(az workload-orchestration target show --resource-group "$rg" --name "$countryTarget" --query id --output tsv)
Liez les ID cibles à leurs groupes de services respectifs. Veillez à remplacer les noms des groupes de services par ceux que vous avez créés.
# Link to country service group az rest \ --method put \ --uri "${countryTargetId}/providers/Microsoft.Relationships/serviceGroupMember/SGRelation?api-version=2023-09-01-preview" \ --body "{'properties':{ 'targetId': '/providers/Microsoft.Management/serviceGroups/$level1Name'}}" # Link to region service group az rest \ --method put \ --uri "${regionTargetId}/providers/Microsoft.Relationships/serviceGroupMember/SGRelation?api-version=2023-09-01-preview" \ --body "{'properties':{ 'targetId': '/providers/Microsoft.Management/serviceGroups/$level2Name'}}" # Link to factory service group az rest \ --method put \ --uri "${factoryTargetId}/providers/Microsoft.Relationships/serviceGroupMember/SGRelation?api-version=2023-09-01-preview" \ --body "{'properties':{ 'targetId': '/providers/Microsoft.Management/serviceGroups/$level3Name'}}" # Link to line service group az rest \ --method put \ --uri "${lineTargetId}/providers/Microsoft.Relationships/serviceGroupMember/SGRelation?api-version=2023-09-01-preview" \ --body "{'properties':{ 'targetId': '/providers/Microsoft.Management/serviceGroups/$level3Name'}}"
Mettez à jour les cibles après les avoir connectées aux groupes de services pour vous assurer que les configurations de hiérarchie sont mises à jour. Cette étape est facultative, mais recommandée.
# Update country target az workload-orchestration target update \ --resource-group "$rg" \ --name "$countryTarget" # Update region target az workload-orchestration target update \ --resource-group "$rg" \ --name "$regionTarget" # Update factory target az workload-orchestration target update \ --resource-group "$rg" \ --name "$factoryTarget" # Update line target az workload-orchestration target update \ --resource-group "$rg" \ --name "$lineTarget"
Préparer les modèles de solution
Pour créer les fichiers de schéma de solution et de modèle de solution, vous pouvez utiliser les fichiers common-schema.yaml et app-config-template.yaml , respectivement, dans le référentiel GitHub comme référence.
Modèle de solution pour l’autorité de certification
Créez le fichier de schéma de solution.
az workload-orchestration schema create --resource-group "$rg" --version "1.0.0" --schema-name "ca-schema" --schema-file ./ca-schema.yaml -l "$l"
Créer le fichier de modèle de solution
caversion="1.0.0" caname="ca-template" az workload-orchestration solution-template create \ --solution-template-name "$caname" \ -g "$rg" \ -l "$l" \ --capabilities "Use for soap production" \ --description "This is CA Solution" \ --configuration-template-file ./ca-config-template.yaml \ --specification "@ca-specs.json" \ --version "$caversion"
Modèle de solution pour RA
Créez le fichier de schéma de solution.
az workload-orchestration schema create --resource-group "$rg" --version "1.0.0" --schema-name "ra-schema" --schema-file ./ra-schema.yaml -l "$l"
Créer le fichier de modèle de solution
raversion="1.0.0" raname="ra-template" az workload-orchestration solution-template create \ --solution-template-name "$raname" \ -g "$rg" \ -l "$l" \ --capabilities "Use for soap production" \ --description "This is RA Solution" \ --configuration-template-file ./ra-config-template.yaml \ --specification "@ra-specs.json" \ --version "$raversion"
Modèle de solution pour FA
Créez le fichier de schéma de solution.
az workload-orchestration schema create --resource-group "$rg" --version "1.0.0" --schema-name "fa-schema" --schema-file ./fa-schema.yaml -l "$l"
Créer le fichier de modèle de solution
faversion="1.0.0" faname="fa-template" az workload-orchestration solution-template create \ --solution-template-name "$faname" \ -g "$rg" \ -l "$l" \ --capabilities "Use for soap production" \ --description "This is fa Solution" \ --configuration-template-file ./fa-config-template.yaml \ --specification "@fa-specs.json" \ --version "$faversion"
Modèle de solution pour LET
Créez le fichier de schéma de solution.
az workload-orchestration schema create --resource-group "$rg" --version "1.0.0" --schema-name "let-schema" --schema-file ./let-schema.yaml -l "$l"
Créer le fichier de modèle de solution
letversion="1.0.0" letname="let-template" az workload-orchestration solution-template create \ --solution-template-name "$letname" \ -g "$rg" \ -l "$l" \ --capabilities "Use for soap production" \ --description "This is LET Solution" \ --configuration-template-file ./let-config-template.yaml \ --specification "@let-specs.json" \ --version "$letversion"
Définir la configuration des modèles de solution
Définissez la configuration de la solution d’autorité de certification.
az workload-orchestration configuration set --subscription "$contextSubscriptionId" -g "$contextRG" --solution-template-name "$caname" --target-name "$level1Name"
Définissez la configuration de la solution RA.
az workload-orchestration configuration set --subscription "$contextSubscriptionId" -g "$contextRG" --solution-template-name "$raname" --target-name "$level1Name" az workload-orchestration configuration set --subscription "$contextSubscriptionId" -g "$contextRG" --solution-template-name "$raname" --target-name "$level2Name"
Définissez la configuration de la solution FA.
az workload-orchestration configuration set --subscription "$contextSubscriptionId" -g "$contextRG" --solution-template-name "$faname" --target-name "$level1Name" az workload-orchestration configuration set --subscription "$contextSubscriptionId" -g "$contextRG" --solution-template-name "$faname" --target-name "$level2Name" az workload-orchestration configuration set --subscription "$contextSubscriptionId" -g "$contextRG" --solution-template-name "$faname" --target-name "$level3Name"
Définissez la configuration de la solution LET.
az workload-orchestration configuration set --subscription "$contextSubscriptionId" -g "$contextRG" --solution-template-name "$letname" --target-name "$level1Name" az workload-orchestration configuration set --subscription "$contextSubscriptionId" -g "$contextRG" --solution-template-name "$letname" --target-name "$level2Name" az workload-orchestration configuration set --subscription "$contextSubscriptionId" -g "$contextRG" --solution-template-name "$letname" --target-name "$level3Name" az workload-orchestration configuration set -g "$rg" --solution-template-name "$letname" --target-name "$lineTarget"
Passer en revue la configuration
Passez en revue la configuration de la solution d’autorité de certification avec l’instance « ca-instance-a ».
az workload-orchestration target review --solution-template-name "$caname" --solution-template-version "$caversion" --resource-group "$rg" --target-name "$countryTarget" --solution-instance-name "ca-instance-a"
Passez en revue la configuration de la solution RA avec l’instance « ra-instance-a ».
az workload-orchestration target review --solution-template-name "$raname" --solution-template-version "$raversion" --resource-group "$rg" --target-name "$regionTarget" --solution-instance-name "ra-instance-a"
Passez en revue la configuration de la solution FA avec l’instance « fa-instance-a ».
az workload-orchestration target review --solution-template-name "$faname" --solution-template-version "$faversion" --resource-group "$rg" --target-name "$factoryTarget" --solution-instance-name "fa-instance-a"
Passez en revue la configuration de la solution LET avec des dépendances sur les solutions d’autorité de certification (CA), d'autorité d'enregistrement (RA) et d'autorité financière (FA). Dans le fichier dependencies.json remplacez
solutionVersionId
avec l’ID à partir de la sortie des commandes précédentes.az workload-orchestration target review --solution-template-name "$letname" --solution-template-version "$letversion" --resource-group "$rg" --target-name "$lineTarget" --solution-dependencies "@dependencies.json"
Copiez l'élément
reviewId
à partir de la sortie de la commande précédente. Vous en aurez besoin pour publier la solution.reviewId="<reviewId>" version="<name>"
Publier et déployer la solution
Publiez la solution avec l’ID de révision et le nom de version.
az workload-orchestration target publish --solution-name "$letname" --solution-version "$version" --review-id "$reviewId" --resource-group "$rg" --target-name "$lineTarget"
Déployez la solution sur la cible.
az workload-orchestration target install --solution-name "$letname" --solution-version "$version" --resource-group "$rg" --target-name "$lineTarget"
Valider le déploiement
Obtenez les informations d’identification du cluster pour la cible. Le cluster doit être lié à l’emplacement personnalisé utilisé lors de la création de cibles.
az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName> --overwrite-existing
Validez la configuration des cibles en vérifiant les valeurs de déploiement Helm. Remplacez
<Namespace>
par l’étape-solution-scope
Créer des cibles que vous avez définie.# There may be more releases in the same namespace if you have used the same custom location and namespace name before. # Look for your respective solution/instance. namespace="<Namespace>" for release in $(helm list -n "$namespace" -q); do echo "==================" echo "For release/instance: $release" helm get values "$release" -n "$namespace" echo "==================" done
Vous pouvez également accéder au portail Azure et vérifier les pods dans l’espace de noms de votre cluster AKS pour valider le déploiement.