Quickstart: Windows-containers implementeren in Service Fabric

Azure Service Fabric is een platform voor gedistribueerde systemen waarmee u schaalbare en betrouwbare microservices en containers implementeert en beheert.

Er zijn geen wijzigingen in uw toepassing vereist om een bestaande toepassing in een Windows-container uit te voeren in een Service Fabric-cluster. In deze snelstartgids ziet u hoe u een vooraf gebouwde Docker-containerinstallatiekopie in een Service Fabric-toepassing implementeert. Wanneer u klaar bent, hebt u een actieve Windows Server Core 2016 Server en IIS-container. In deze quickstart wordt beschreven hoe u een Windows-container implementeert. Lees deze quickstart om een Linux-container te implementeren.

IIS-standaardwebpagina

In deze snelstart leert u de volgende zaken:

  • Een Docker-containerinstallatiekopie verpakken
  • Communicatie configureren
  • De Service Fabric-toepassing bouwen en inpakken
  • De containertoepassing implementeren naar Azure

Notitie

U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Vereisten

Een Docker-containerinstallatiekopie verpakken met Visual Studio

De Service Fabric SDK en hulpprogramma's bieden een servicesjabloon waarmee u een container kunt implementeren in een Service Fabric-cluster.

Start Visual Studio als 'Beheerder'. Selecteer Bestand>Nieuw>Project.

Selecteer Service Fabric-toepassing, geef deze de naam MyFirstContainer en klik op Maken.

Selecteer Container in de lijst met sjablonen voor gehoste containers en toepassingen.

Voer bij Naam installatiekopie 'mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016' in, de Windows Server Core Server en IIS-basisinstallatiekopie.

Configureer de toewijzing van de containerpoort naar de hostpoort zó, dat binnenkomende aanvragen voor de service op poort 80 worden toegewezen aan poort 80 van de container. Stel Containerpoort in op '80' en Hostpoort op '80'.

Geef uw service de naam 'MyContainerService' en klik op OK.

Dialoogvenster voor nieuwe service

De OS-build voor de containerinstallatiekopie opgeven

Containers die zijn gebouwd met een specifieke versie van Windows Server kunnen mogelijk niet worden uitgevoerd op een host waarop een andere versie van Windows Server wordt uitgevoerd. Zo werken containers die zijn gebouwd met Windows Server 1709 niet op hosts waarop Windows Server versie 2016 wordt uitgevoerd. Zie Compatibiliteit tussen besturingssysteem van Windows Server-container en host-besturingssysteem voor meer informatie.

Met versie 6.1 en hoger van de Service Fabric-runtime kunt u meerdere besturingssysteeminstallatiekopieën per container opgeven en elke installatiekopie labelen met de buildversie van het besturingssysteem waarop deze moet worden geïmplementeerd. Zo kunt u ervoor zorgen dat uw toepassing wordt uitgevoerd op hosts waarop verschillende versies van het Windows-besturingssysteem worden uitgevoerd. Zie Containerinstallatiekopieën opgeven die specifiek zijn voor de build van het besturingssysteem.

Microsoft publiceert verschillende installatiekopieën voor versies van IIS die zijn gebouwd op verschillende versies van Windows Server. Voeg de volgende regels toe aan het bestand ApplicationManifest.xml als u ervoor wilt zorgen dat Service Fabric een container implementeert die compatibel is met de versie van Windows Server die wordt uitgevoerd op de clusterknooppunten waar uw toepassing wordt geïmplementeerd. De buildversie voor Windows Server 2016 is 14393 en die voor Windows Server versie 1709 is 16299.

    <ContainerHostPolicies CodePackageRef="Code"> 
      <ImageOverrides> 
        ...
	      <Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1803" /> 
          <Image Name= "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016" Os="14393" /> 
          <Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1709" Os="16299" /> 
      </ImageOverrides> 
    </ContainerHostPolicies> 

Het servicemanifest geeft nog steeds maar één installatiekopie op voor de nanoserver, mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016.

Wijzig ook in het bestand ApplicationManifest.xml de optie PasswordEncrypted in false. Het account en wachtwoord zijn leeg voor de openbare containerinstallatiekopie die zich in Docker Hub bevindt. Daarom schakelen we versleuteling uit omdat het versleutelen van een leeg wachtwoord een buildfout genereert.

<RepositoryCredentials AccountName="" Password="" PasswordEncrypted="false" />

Een cluster maken

Met het volgende voorbeeldscript wordt een Service Fabric-cluster met vijf knooppunten gemaakt dat wordt beveiligd met een X.509-certificaat. Met de opdracht wordt een zelfondertekend certificaat gemaakt en geüpload naar een nieuwe sleutelkluis. Het certificaat wordt ook gekopieerd naar een lokale map. Meer informatie over het maken van een cluster met behulp van dit script vindt u in Een Service Fabric-cluster maken.

Installeer zo nodig Azure PowerShell met behulp van de instructies in de Azure PowerShell-handleiding.

Voer voordat u het volgende script in PowerShell uitvoert Connect-AzAccount uit om een verbinding met Azure te maken.

Kopieer het volgende script naar het Klembord en open Windows PowerShell ISE. Plak de inhoud in het lege venster Untitled1.ps1. Geef vervolgens waarden op voor de variabelen in het script: subscriptionId, certpwd, certfolder, adminuser, adminpwd, enzovoort. De map die u opgeeft voor certfolder moet bestaan voordat u het script uitvoert.

#Provide the subscription Id
$subscriptionId = 'yourSubscriptionId'

# Certificate variables.
$certpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force
$certfolder="c:\mycertificates\"

# Variables for VM admin.
$adminuser="vmadmin"
$adminpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force 

# Variables for common values
$clusterloc="SouthCentralUS"
$clustername = "mysfcluster"
$groupname="mysfclustergroup"       
$vmsku = "Standard_D2_v2"
$vaultname = "mykeyvault"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Set the number of cluster nodes. Possible values: 1, 3-99
$clustersize=5 

# Set the context to the subscription Id where the cluster will be created
Select-AzSubscription -SubscriptionId $subscriptionId

# Create the Service Fabric cluster.
New-AzServiceFabricCluster -Name $clustername -ResourceGroupName $groupname -Location $clusterloc `
-ClusterSize $clustersize -VmUserName $adminuser -VmPassword $adminpwd -CertificateSubjectName $subname `
-CertificatePassword $certpwd -CertificateOutputFolder $certfolder `
-OS WindowsServer2016DatacenterwithContainers -VmSku $vmsku -KeyVaultName $vaultname

Nadat u de waarden voor de variabelen opgegeven hebt, drukt u op F5 om het script uit te voeren.

Nadat het script is uitgevoerd en het cluster is gemaakt, zoekt u ClusterEndpoint op in de uitvoer. Bijvoorbeeld:

...
ClusterEndpoint : https://southcentralus.servicefabric.azure.com/runtime/clusters/b76e757d-0b97-4037-a184-9046a7c818c0

Het certificaat voor het cluster installeren

We installeren de PFX nu in het certificaatarchief CurrentUser\My. Het PFX-bestand bevindt zich in de map die u hebt opgegeven met behulp van de omgevingsvariabele certfolder in het bovenstaande PowerShell-script.

Ga naar die map en voer de volgende PowerShell-opdracht uit, waarbij u de naam van het PFX-bestand dat zich in de map certfolder bevindt en het wachtwoord dat u hebt opgegeven in de variabele certpwd vervangt. In dit voorbeeld is de huidige map ingesteld op de map die is opgegeven door de variabele certfolder in het PowerShell-script. Van daaruit wordt de opdracht Import-PfxCertificate uitgevoerd:

PS C:\mycertificates> Import-PfxCertificate -FilePath .\mysfclustergroup20190130193456.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString Password#1234 -AsPlainText -Force)

Met de opdracht wordt de vingerafdruk geretourneerd:

  ...
  PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint                                Subject
----------                                -------
0AC30A2FA770BEF566226CFCF75A6515D73FC686  CN=mysfcluster.SouthCentralUS.cloudapp.azure.com

Onthoud de waarde van de vingerafdruk voor de volgende stap.

De toepassing publiceren in Azure met Visual Studio

Nu de toepassing klaar is, kunt u deze rechtstreeks vanuit Visual Studio implementeren naar een cluster.

Klik met de rechtermuisknop op MyFirstContainer in Solution Explorer en kies Publiceren. Het dialoogvenster Publiceren wordt weergegeven.

Kopieer de inhoud volgend op CN= in het PowerShell-venster toen u de bovenstaande opdracht Import-PfxCertificate uitvoerde en voeg er poort 19000 aan toe. Bijvoorbeeld mysfcluster.SouthCentralUS.cloudapp.azure.com:19000. Kopieer dit naar het veld Verbindingseindpunt. Onthoud deze waarde, want u hebt deze nodig in een toekomstige stap.

Klik op Geavanceerde verbindingsparameters en controleer de informatie van de verbindingsparameters. De waarden FindValue en ServerCertThumbprint moeten overeenkomen met de vingerafdruk van het certificaat dat is geïnstalleerd toen u Import-PfxCertificate uitvoerde in de vorige stap.

Het dialoogvenster Publiceren

Klik op Publish.

Elke toepassing in het cluster moet een unieke naam hebben. Als er een naamconflict is, wijzigt u de naam van het Visual Studio-project en voert u de implementatie opnieuw uit.

Open een browser en navigeer naar het adres dat u in de vorige stap in het veld Verbindingseindpunt hebt ingevoerd. U kunt de URL eventueel vooraf laten gaan door de schema-id, http://, en de poort, :80, aan het einde toevoegen. Bijvoorbeeld: http://mysfcluster.SouthCentralUS.cloudapp.azure.com:80.

Als het goed is, ziet u de iis-standaardwebpagina: IIS-standaardwebpagina

Opruimen

Zolang het cluster actief is, worden er kosten in rekening gebracht. Overweeg daarom het cluster te verwijderen.

Volgende stappen

In deze snelstartgids hebt u de volgende zaken geleerd:

  • Een Docker-containerinstallatiekopie verpakken
  • Communicatie configureren
  • De Service Fabric-toepassing bouwen en inpakken
  • De containertoepassing implementeren naar Azure

Ga verder met de zelfstudie voor Windows-containertoepassingen voor meer informatie over het werken met Windows-containers in Service Fabric.