Effectuer la migration d’une application simple de Service Fabric vers AKS
Cet article fournit un exemple de migration de charge de travail pour vous aider à implémenter certaines des informations conceptuelles fournies dans Effectuer la migration de votre charge de travail de Service Fabric vers AKS. Cet article fournit des informations sur Azure Kubernetes Service (AKS) et une comparaison entre AKS et Azure Service Fabric. Il décrit également les considérations à prendre en compte lorsque vous effectuez la migration de vos charges de travail.
Cet exemple se concentre sur des applications Service Fabric Windows qui ont déjà été conteneurisées. Azure Service Fabric et Azure Kubernetes Service prennent tous deux en charge les conteneurs Windows et Linux. Si votre application n’est pas conteneurisée, envisagez de déterminer si vous pouvez la conteneuriser. La création d’une image de conteneur pour votre application est une condition préalable au déploiement de l’application sur Azure Kubernetes Service. Si l’application dépend des modèles de programmation Service Fabric (Reliable Services, Reliable Actors, ASP.NET Core et exécutables invités), vous devrez probablement effectuer une refactorisation.
Pour plus d’informations sur la conteneurisation de votre application, consultez Préparer une application pour AKS. Pour plus d’informations sur la conteneurisation d’une application ASP.NET, voir Conteneurisation d’applications ASP.NET et leur migration vers AKS.
Prérequis
Avant de commencer la migration, vous devez avoir :
Une image de conteneur stockée dans Azure Container Registry.
Un environnement Bash que vous pouvez utiliser pour la configuration de vos ressources Azure.
Azure Cloud Shell vous permet de travailler à partir du navigateur. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
La première fois que vous utilisez l’interface Azure CLI, vous devez installer l’extension Azure CLI lorsque vous y êtes invité. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Le client de ligne de commande Kubernetes, kubectl. S’il n’est pas déjà disponible dans votre environnement, vous pouvez l’installer en exécutant cette commande :
az aks install-cli
Étapes de la migration
La première étape consiste à configurer les ressources dont vous avez besoin pour générer un pool de nœuds Windows dans Kubernetes. Pour ce faire, suivez les instructions fournies dans Créer un conteneur Windows Server sur un cluster AKS, mais veillez à vous arrêter lorsque vous atteignez la section « Déployer l’application ». Suivez alors les instructions contenues dans cet article.
La traduction du manifeste de configuration Service Fabric en manifeste AKS est une étape importante. Les sections suivantes décrivent :
- XML de manifeste de service que vous pouvez utiliser pour un déploiement Service Fabric de base.
- Manifeste AKS d’un point de vue fonctionnel équivalent qui crée des objets Déploiement et Service Kubernetes.
Les deux manifestes ne sont pas mappés un-à-un, car ils sont basés sur des paradigmes fonctionnels spécifiques à chaque service, mais leurs intentions sont les mêmes. (Dans ces exemples, les variables utilisent le format <VARIABLE DESCRIPTION>
).
Dans le manifeste AKS, un objet Deployment
fournit des mises à jour déclaratives pour Pods et ReplicaSets. Un objet Service
expose une application qui s’exécute sur un ensemble de pods en tant que service réseau.
Exemple de manifeste de Service Fabric
<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="<APP NAME>"
Version="1.0.0"
xmlns="http://schemas.microsoft.com/2011/01/fabric"
xmlns:xsd="https://www.w3.org/2001/XMLSchema"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
<ServiceTypes>
<StatelessServiceType ServiceTypeName="<SERVICE NAME>" UseImplicitHost="true" />
</ServiceTypes>
<!-- Code package is your service executable file. -->
<CodePackage Name="code" Version="1.0.0">
<EntryPoint>
<ContainerHost>
<ImageName><YOUR IMAGE></ImageName>
<Commands></Commands>
</ContainerHost>
</EntryPoint>
<!-- Pass environment variables to your container. -->
<EnvironmentVariables>
<EnvironmentVariable Name="HttpGatewayPort" Value=""/>
<EnvironmentVariable Name="BackendServiceName" Value=""/>
</EnvironmentVariables>
</CodePackage>
<ConfigPackage Name="Config" Version="1.0.0" />
<Resources>
<Endpoints>
<Endpoint Name="<HTTP ENDPOINT NAME>" UriScheme="http" Port="80" Protocol="http"/>
</Endpoints>
</Resources>
</ServiceManifest>
Exemple de manifeste AKS
apiVersion: apps/v1
kind: Deployment
metadata:
name: <APP NAME>
labels:
app: <APP NAME>
spec:
replicas: 1
template:
metadata:
name: <APP NAME>
labels:
app: <APP NAME>
spec:
nodeSelector:
"kubernetes.io/os": windows
containers:
- name: <SERVICE NAME>
image: <YOUR IMAGE>
resources:
limits:
cpu: 1
memory: 800M
ports:
- containerPort: 80
- env:
- name: HttpGatewayPort
value: ""
- name: BackendServiceName
value: ""
selector:
matchLabels:
app: <APP NAME>
---
apiVersion: v1
kind: Service
metadata:
name: <SERVICE NAME>
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
selector:
app: <SERVICE NAME>
Kubernetes fournit un large ensemble d’options de configuration qui sont utiles pour les développeurs expérimentés. Toutefois, les manifestes peuvent devenir volumineux et complexes lorsque vous en utilisez un trop grand nombre. Pour en savoir plus sur l’implémentation d’une migration simple, nous vous recommandons de consulter Déploiements et manifestes YAML.
Une fois que vous avez votre manifeste, il vous suffit de l’appliquer et vous pouvez examiner votre application :
kubectl apply -f <YOUR MANIFEST>.yaml
kubectl get deploy <APP NAME>
kubectl get service <SERVICE NAME> --watch
Notes
Cet exemple utilise l’espace de noms Kubernetes par défaut qui est généralement utilisé pour des scénarios de base uniquement. Dans Kubernetes, les espaces de noms fournissent un mécanisme permettant d’isoler des groupes de ressources au sein d’un seul cluster. Les espaces de noms sont importants pour l’application des limites de sécurité, de mise en réseau et de ressources. Pour déterminer la configuration qui convient le mieux à votre application, consultez la documentation sur les espaces de noms de Kuberetes.
Contributeurs
Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.
Auteurs principaux :
- Ally Ford | Chef de produit II
- Paolo Salvatori | Ingénieur client principal
- Brandon Smith | Gestionnaire de programme II
Autres contributeurs :
- Mick Alberts | Rédacteur technique
- Ayobami Ayodeji | Responsable de programme senior
- Moumita Dey Verma | Architecte Solutions Cloud Senior
Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.
Étapes suivantes
- Restez à jour sur AKS avec les Notes de publication d’AKS, la Feuille de route AKS et les Mises à jour Azure.
- Utilisez les dernières images Windows Server pour assurer la sécurité, améliorer le niveau de performance et réduire la surcharge.
- Utilisez le suivi des mises en production AKS pour vous tenir à jour en tirant parti de la dernière version de Kubernetes.
- Utilisez la dernière version du Kit de développement logiciel (SDK) pour des charges de travail .NET.
- Envisagez d’effectuer des tests de charge et un réglage des performances, et évaluez régulièrement les quotas de processeur et de mémoire appliqués aux pods AKS : Surveiller AKS avec Azure Monitor.
- Utilisez l’Accélérateur de zone d’atterrissage AKS pour implémenter des charges de travail sur AKS et appliquer les meilleures pratiques.