Szybki start: wdrażanie kontenerów systemu Windows do usługi Service Fabric
Usługa Azure Service Fabric to platforma systemów rozproszonych ułatwiająca pakowanie i wdrażanie skalowalnych oraz niezawodnych mikrousług i kontenerów, a także zarządzanie nimi.
Uruchomienie istniejącej aplikacji w kontenerze systemu Windows w klastrze usługi Service Fabric nie wymaga dokonywania żadnych zmian w aplikacji. W tym przewodniku Szybki start przedstawiono sposób wdrażania wstępnie skompilowanego obrazu kontenera platformy Docker w aplikacji usługi Service Fabric. Po zakończeniu będziesz mieć uruchomiony kontener Windows Server Core 2016 Server i IIS. W tym przewodniku Szybki start opisano wdrażanie kontenera systemu Windows. Przeczytaj ten przewodnik Szybki start , aby wdrożyć kontener systemu Linux.
W tym przewodniku Szybki start zawarto informacje na temat wykonywania następujących czynności:
- Pakowanie kontenera obrazu platformy Docker
- Konfigurowanie komunikacji
- Kompilowanie i tworzenie pakietu aplikacji usługi Service Fabric
- Wdrażanie aplikacji kontenera na platformie Azure
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Wymagania wstępne
- Subskrypcja platformy Azure (można utworzyć bezpłatne konto).
- Komputer deweloperów z systemem:
- Visual Studio 2019 lub Windows 2019.
- Zestaw SDK usługi Service Fabric oraz narzędzia.
Pakowanie kontenera obrazu platformy Docker przy użyciu programu Visual Studio
Zestaw SDK usługi Service Fabric oraz narzędzia udostępniają szablon usługi ułatwiający wdrażanie kontenera w klastrze usługi Service Fabric.
Uruchom program Visual Studio jako administrator. Wybierz kolejno pozycje Plik>Nowy>Projekt.
Wybierz pozycję Aplikacja usługi Service Fabric, nadaj jej nazwę "MyFirstContainer", a następnie kliknij pozycję Utwórz.
Wybierz pozycję Kontener z szablonów Hostowane kontenery i aplikacje.
W polu Nazwa obrazu wprowadź ciąg "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016", podstawowy obraz serwera Windows Server Core i usług IIS.
Skonfiguruj mapowanie portów kontenera typu „port do hosta” w taki sposób, aby żądania przychodzące do usługi na porcie 80 były mapowane na port 80 w kontenerze. Ustaw wartość „80” dla pozycji Port kontenera i Port hosta.
Nazwij usługę „MyContainerService”, a następnie kliknij przycisk OK.
Określanie kompilacji systemu operacyjnego dla obrazu kontenera
Kontenery utworzone za pomocą określonej wersji systemu Windows Server mogą nie działać na hoście z uruchomioną inną wersją tego systemu. Na przykład kontenery utworzone przy użyciu systemu Windows Server w wersji 1709 nie są uruchamiane na hostach z systemem Windows Server 2016. Aby dowiedzieć się więcej, zobacz temat Windows Server container OS and host OS compatibility (Zgodność między systemami operacyjnymi Windows Server kontenera i hosta).
W przypadku środowiska uruchomieniowego usługi Service Fabric w wersji 6.1 i nowszych można określić wiele obrazów systemu operacyjnego dla kontenera i oznaczyć każdy z nich wersją kompilacji systemu operacyjnego, na którym powinien zostać wdrożony. Ułatwia to zapewnienie, że aplikację będzie można uruchomić na hostach z różnymi wersjami systemu operacyjnego Windows. Aby dowiedzieć się więcej, zobacz temat Określanie obrazów kontenera dla kompilacji systemu operacyjnego.
Firma Microsoft publikuje różne obrazy dla wersji oprogramowania IIS opartych na różnych wersjach systemu Windows Serwer. Aby się upewnić, że usługa Service Fabric wdraża kontener zgodny z wersją systemu Windows Server uruchomionego na węzłach klastra, na których wdraża aplikację, dodaj następujące wiersze do pliku ApplicationManifest.xml. Wersja kompilacji dla systemu Windows Server 2016 to 14393, a dla systemu Windows Server w wersji 1709 — 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>
Manifest usługi nadal określa tylko jeden obraz dla nanoserwera, mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016
.
Ponadto w pliku ApplicationManifest.xml zmień wartość ustawienia PasswordEncrypted na false. W przypadku obrazu kontenera publicznego znajdującego się w usłudze Docker Hub konto i hasło są puste, dlatego wyłączamy szyfrowanie, ponieważ szyfrowanie pustego hasła spowoduje wygenerowanie błędu kompilacji.
<RepositoryCredentials AccountName="" Password="" PasswordEncrypted="false" />
Tworzenie klastra
Następujący przykładowy skrypt tworzy klaster usługi Service Fabric z pięcioma węzłami zabezpieczony za pomocą certyfikatu X.509. Polecenie tworzy certyfikat z podpisem własnym i przekazuje go do nowego magazynu kluczy. Certyfikat jest też kopiowany do katalogu lokalnego. Dowiedz się więcej na temat tworzenia klastra przy użyciu tego skryptu w temacie Tworzenie klastra usługi Service Fabric.
W razie potrzeby zainstaluj program Azure PowerShell przy użyciu instrukcji dostępnych w przewodniku programu Azure PowerShell.
Przed uruchomieniem poniższego skryptu programu PowerShell uruchom polecenie Connect-AzAccount
w celu utworzenia połączenia z platformą Azure.
Skopiuj poniższy skrypt do Schowka i otwórz program Windows PowerShell ISE. Wklej tę zawartość w pustym oknie pliku Untitled1.ps1. Następnie podaj wartości zmiennych w skrygcie: subscriptionId
, , certfolder
certpwd
, adminuser
, adminpwd
i tak dalej. Katalog określony w zmiennej certfolder
musi istnieć przed uruchomieniem skryptu.
#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
Po podaniu wartości zmiennych naciśnij F5 , aby uruchomić skrypt.
Po uruchomieniu skryptu i utworzeniu klastra znajdź w danych wyjściowych pozycję ClusterEndpoint
. Na przykład:
...
ClusterEndpoint : https://southcentralus.servicefabric.azure.com/runtime/clusters/b76e757d-0b97-4037-a184-9046a7c818c0
Instalowanie certyfikatu dla klastra
Teraz zainstalujemy plik PFX w magazynie certyfikatów CurrentUser\My . Plik PFX będzie znajdować się w katalogu określonym za pomocą zmiennej środowiskowej certfolder
w przedstawionym powyżej skrypcie programu PowerShell.
Przejdź do tego katalogu, a następnie uruchom następujące polecenie programu PowerShell, zastępując nazwę pliku PFX, który znajduje się w certfolder
katalogu, oraz hasło określone w zmiennej certpwd
. W tym przykładzie jako bieżący katalog jest ustawiony katalog określony przez zmienną certfolder
w skrypcie programu PowerShell. Z jego poziomu uruchamiane jest polecenie Import-PfxCertificate
:
PS C:\mycertificates> Import-PfxCertificate -FilePath .\mysfclustergroup20190130193456.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString Password#1234 -AsPlainText -Force)
Polecenie zwraca odcisk palca:
...
PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My
Thumbprint Subject
---------- -------
0AC30A2FA770BEF566226CFCF75A6515D73FC686 CN=mysfcluster.SouthCentralUS.cloudapp.azure.com
Zapamiętaj wartość odcisku palca na potrzeby następnego kroku.
Wdrażanie aplikacji na platformie Azure przy użyciu programu Visual Studio
Kiedy aplikacja jest gotowa, można wdrożyć ją w klastrze bezpośrednio z programu Visual Studio.
Kliknij prawym przyciskiem myszy pozycję MyFirstContainer w Eksploratorze rozwiązań i wybierz polecenie Publikuj. Zostanie wyświetlone okno dialogowe Publikowanie.
Skopiuj zawartość występującą po CN= w oknie programu PowerShell po uruchomieniu polecenia Import-PfxCertificate
powyżej, a następnie dodaj do niej port 19000
. Na przykład mysfcluster.SouthCentralUS.cloudapp.azure.com:19000
. Skopiuj tę zawartość do pola Punkt końcowy połączenia. Zapamiętaj tę wartość, ponieważ będzie ona potrzebna w przyszłym kroku.
Kliknij pozycję Zaawansowane parametry połączenia, a następnie zweryfikuj informacje dotyczące parametru połączenia. Wartości FindValue i ServerCertThumbprint muszą być zgodne z odciskiem palca certyfikatu zainstalowanego za pomocą polecenia Import-PfxCertificate
w poprzednim kroku. Następnie wybierz pozycję Publikuj.
Każda aplikacja w klastrze musi mieć unikatową nazwę. Jeśli występuje konflikt nazw, zmień nazwę projektu programu Visual Studio i wdróż go ponownie.
Otwórz przeglądarkę i przejdź do adresu, który został umieszczony w polu Punkt końcowy połączenia w poprzednim kroku. Adres URL można opcjonalnie poprzedzić identyfikatorem schematu http://
i dołączyć port :80
. Na przykład http://mysfcluster.SouthCentralUS.cloudapp.azure.com:80.
Powinna zostać wyświetlona domyślna strona internetowa usług IIS:
Czyszczenie
Podczas działania klastra nadal są naliczane opłaty. Rozważ usunięcie klastra.
Następne kroki
W tym przewodniku Szybki start zawarto informacje na temat wykonywania następujących czynności:
- Pakowanie kontenera obrazu platformy Docker
- Konfigurowanie komunikacji
- Kompilowanie i tworzenie pakietu aplikacji usługi Service Fabric
- Wdrażanie aplikacji kontenera na platformie Azure
Aby dowiedzieć się więcej na temat pracy z kontenerami systemu Windows w usłudze Service Fabric, przejdź do samouczka dotyczącego aplikacji kontenerów systemu Windows.