Delen via


Een eenvoudige app migreren van Service Fabric naar AKS

Dit artikel bevat een voorbeeld van een workloadmigratie waarmee u enkele conceptuele informatie kunt implementeren die wordt gegeven in De migratie van uw workload van Service Fabric naar AKS. Dit artikel bevat informatie over Azure Kubernetes Service (AKS) en een vergelijking van AKS met Azure Service Fabric. Ook worden overwegingen beschreven waarmee u rekening moet houden wanneer u uw workloads migreert.

Dit voorbeeld is gericht op Op Windows gebaseerde Service Fabric-toepassingen die al in een container zijn geplaatst. Azure Service Fabric en Azure Kubernetes Service ondersteunen zowel Windows- als Linux-containers. Als uw toepassing niet in een container is geplaatst, kunt u overwegen om te onderzoeken of u deze in een container kunt opslaan. Het bouwen van een containerinstallatiekopieën voor uw toepassing is een vereiste voor het implementeren van de toepassing in Azure Kubernetes Service. Als de toepassing afhankelijk is van Service Fabric-programmeermodellen (Reliable Services, Reliable Actors, ASP.NET Core en uitvoerbare gastbestanden), moet u waarschijnlijk wat herstructureringen uitvoeren.

Zie Een toepassing voorbereiden voor AKS voor meer informatie over het containeriseren van uw toepassing. Zie ASP.NET app-containerisatie en migratie naar AKS voor meer informatie over het containeriseren van een ASP.NET-toepassing.

Vereisten

Voordat u de migratie start, hebt u het volgende nodig:

  • Een containerinstallatiekopieën van toepassingen die zijn opgeslagen in Azure Container Registry.

  • Een Bash-omgeving die u kunt gebruiken om uw Azure-resources te configureren.

  • Het opdrachtregelprogramma kubectl Kubernetes. Als deze nog niet beschikbaar is in uw omgeving, kunt u deze installeren door deze opdracht uit te voeren:

    az aks install-cli
    

Migratiestappen

De eerste stap is het instellen van de resources die u nodig hebt om een Windows-knooppuntgroep te bouwen in Kubernetes. Volg hiervoor de richtlijnen in Een Windows Server-container maken op een AKS-cluster, maar zorg ervoor dat u stopt wanneer u de sectie 'De toepassing implementeren' bereikt. Volg op dat moment de instructies in dit artikel.

De vertaling van het Service Fabric-configuratiemanifest naar een AKS-manifest is een belangrijke stap. In de volgende secties ziet u:

  • Servicemanifest-XML die u kunt gebruiken voor een eenvoudige Service Fabric-implementatie.
  • Een functioneel equivalent AKS-manifest waarmee Kubernetes-implementatie- en serviceobjecten worden gemaakt.

De twee manifesten wijzen niet een-op-een toe, omdat ze zijn gebaseerd op de functionele paradigma's die specifiek zijn voor elke service, maar hun intenties zijn hetzelfde. (In deze voorbeelden gebruiken variabelen de indeling <VARIABLE DESCRIPTION>.)

In het AKS-manifest biedt een Deployment object declaratieve updates voor Pods en ReplicaSets. Een Service object maakt een toepassing beschikbaar die wordt uitgevoerd op een set pods als een netwerkservice.

Service Fabric-voorbeeldservicemanifest

<?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>

AKS-voorbeeldmanifest

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 biedt een grote set configuratieopties, wat handig is voor ervaren ontwikkelaars. Maar manifesten kunnen groot en complex worden wanneer u er te veel van gebruikt. Voor meer informatie over het implementeren van een eenvoudige migratie raden we u aan implementaties en YAML-manifesten te bekijken.

Nadat u uw manifest hebt, hoeft u dit alleen toe te passen en kunt u uw app bekijken:

kubectl apply -f <YOUR MANIFEST>.yaml
kubectl get deploy <APP NAME>
kubectl get service <SERVICE NAME> --watch

Notitie

In dit voorbeeld wordt de standaard-Kubernetes-naamruimte gebruikt. Deze wordt doorgaans alleen gebruikt voor basisscenario's. In Kubernetes bieden naamruimten een mechanisme voor het isoleren van groepen resources binnen één cluster. Naamruimten zijn belangrijk voor het afdwingen van beveiligings-, netwerk- en resourcegrenzen. Raadpleeg de documentatie voor Kuberetes-naamruimten om een configuratie te bepalen die het beste werkt voor uw toepassing.

Medewerkers

Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Belangrijkste auteurs:

Andere Inzenders:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen