Partager via


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.

  • 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 :

Autres contributeurs :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.

Étapes suivantes