Hızlı başlangıç: Windows kapsayıcıları Service Fabric'e dağıtma

Azure Service Fabric; ölçeklenebilir ve güvenilir mikro hizmetleri ve kapsayıcıları dağıtmayı ve yönetmeyi sağlayan bir dağıtılmış sistemler platformudur.

Bir Service Fabric kümesindeki Windows kapsayıcısında mevcut olan bir uygulamayı çalıştırmak için uygulamanızda herhangi bir değişiklik yapılması gerekmez. Bu hızlı başlangıç, Service Fabric uygulamasında önceden oluşturulmuş bir Docker kapsayıcısı görüntüsünü dağıtmayı gösterir. İşiniz bittiğinde, çalışan bir Windows Server Core 2016 Server ve IIS kapsayıcınız olur. Bu hızlı başlangıçta Bir Windows kapsayıcısı dağıtma işlemi açıklanmaktadır. Linux kapsayıcısı dağıtmak için bu hızlı başlangıcı okuyun.

IIS varsayılan web sayfası

Bu hızlı başlangıçta şunları yapmayı öğrenirsiniz:

  • Docker görüntü kapsayıcısını paketleme
  • İletişimi yapılandırma
  • Service Fabric uygulamasını oluşturma ve paketleme
  • Kapsayıcı uygulamasını Azure’a dağıtma

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz . Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Önkoşullar

Visual Studio ile Docker görüntü kapsayıcısını paketleme

Service Fabric SDK’sı ve araçları, bir kapsayıcıyı Service Fabric kümesine dağıtmanıza yardımcı olan bir hizmet şablonu sağlar.

Visual Studio'yu “Yönetici” olarak başlatın. Dosya>Yeni>Proje’yi seçin.

Service Fabric uygulamasını seçin, "MyFirstContainer" olarak adlandırın ve Oluştur'a tıklayın.

Barındırılan Kapsayıcılar ve Uygulamalar şablonlarından Kapsayıcı’yı seçin.

Görüntü Adı alanına Windows Server Core Server ve IIS temel görüntüsü olan "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016" girin.

80 numaralı bağlantı noktasında hizmete gelen isteklerin, kapsayıcı üzerindeki 80 numaralı bağlantı noktasıyla eşlenmesi için kapsayıcının bağlantı noktasından konağa bağlantı noktası eşlenmesini yapılandırın. Kapsayıcı Bağlantı Noktası’nı "80" olarak ve Ana Bilgisayar Bağlantı Noktası’nı "80" olarak ayarlayın.

Hizmeti "MyContainerService" olarak adlandırın ve Tamam’a tıklayın.

Yeni hizmet iletişim kutusu

Kapsayıcı görüntünüz için OS derlemesini belirtme

Windows Server'ın belirli bir sürümüyle derlenen kapsayıcılar, Windows Server'ın farklı sürümünü çalıştıran bir konakta çalışmayabilir. Örneğin, Windows Server sürüm 1709 kullanılarak oluşturulan kapsayıcılar Windows Server 2016 çalıştıran konaklarda çalışmaz. Daha fazla bilgi için bkz. Windows Server kapsayıcı işletim sistemi ve ana bilgisayar işletim sistemi uyumluluğu.

Service Fabric çalışma zamanının sürüm 6.1 veya daha yeni bir sürümüyle, kapsayıcı başına birden çok işletim sistemi görüntüsü belirtebilir ve her birini dağıtılacağı işletim sisteminin derleme sürümüyle etiketleyebilirsiniz. Bu, uygulamanızın Windows işletim sisteminin farklı sürümlerini çalıştıran konaklar arasında çalıştırılabilmesine yardımcı olur. Daha fazla bilgi edinmek için bkz. İşletim sistemi derlemesine özgü kapsayıcı görüntüleri belirtme.

Microsoft, Windows Server'ın farklı sürümleri üzerinde oluşturulmuş IIS sürümleri için farklı görüntüler yayımlar. Service Fabric'in, uygulamanızın dağıtıldığı küme düğümlerinde çalıştırılan Windows Server sürümüyle uyumlu bir kapsayıcı dağıttığından emin olmak için, ApplicationManifest.xml dosyasına aşağıdaki satırları ekleyin. WIndows Server 2016 için derleme sürümü 14393, Windows Server 1709 sürümü için derleme sürümü 16299’dur.

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

Hizmet bildirimi, mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016 nano sunucusu için tek bir görüntü belirtmeye devam eder.

Ayrıca ApplicationManifest.xml dosyasında PasswordEncrypted değerini false olarak değiştirin. Docker Hub'daki genel kapsayıcı görüntüsü için hesap ve parola boş olduğundan, boş bir parolayı şifrelemek bir derleme hatası oluşturacağından şifrelemeyi kapatıyoruz.

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

Küme oluşturma

Aşağıdaki örnek betik, X.509 sertifikasıyla güvenliği sağlanan beş düğümlü bir Service Fabric kümesi oluşturur. Bu komut otomatik olarak imzalanan bir sertifika oluşturur ve bunu yeni bir anahtar kasasına yükler. Sertifika aynı zamanda bir yerel dizine de kopyalanır. Service Fabric kümesi oluşturma bölümünde bu betiği kullanarak küme oluşturma hakkında daha fazla bilgi edinebilirsiniz.

Gerekirse, Azure PowerShell kılavuzunda bulunan yönergeleri kullanarak Azure PowerShell'i yükleyin.

Aşağıdaki betiği çalıştırmadan önce PowerShell'de Azure ile bağlantı oluşturmak için komutunu çalıştırın Connect-AzAccount .

Aşağıdaki betiği panoya kopyalayın ve Windows PowerShell ISE'yi açın. İçeriği boş Untitled1.ps1 penceresine yapıştırın. Ardından betikteki değişkenler için değerler sağlayın: subscriptionId, certpwd, certfolder, adminuser, , adminpwdve benzeri. Betiği çalıştırmadan önce belirttiğiniz certfolder dizin mevcut olmalıdır.

#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

Değişkenler için değerlerinizi sağladıktan sonra betiği çalıştırmak için F5 tuşuna basın.

Betik çalıştırıldıktan ve küme oluşturulduktan sonra çıktıda öğesini ClusterEndpoint bulun. Örneğin:

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

Kümenin sertifikasını yükleme

Şimdi PFX'i CurrentUser\My sertifika deposuna yükleyeceğiz. PFX dosyası, yukarıdaki PowerShell betiğindeki ortam değişkenini certfolder kullanarak belirttiğiniz dizinde yer alır.

Bu dizine geçin ve dizininizdeki certfolder PFX dosyasının adını ve değişkende certpwd belirttiğiniz parolayı değiştirerek aşağıdaki PowerShell komutunu çalıştırın. Bu örnekte geçerli dizin, PowerShell betiğinde certfolder değişkeni tarafından belirtilen dizine ayarlanır. Import-PfxCertificate Buradan komut çalıştırılır:

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

Komut Parmak İzi'ni döndürür:

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

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

Aşağıdaki adım için parmak izi değerini unutmayın.

Visual Studio kullanarak uygulamayı Azure’a dağıtma

Uygulama hazır olduğuna göre, doğrudan Visual Studio'dan bir kümeye dağıtabilirsiniz.

Çözüm Gezgini'nde MyFirstContainer’a sağ tıklayın ve Yayımla’yı seçin. Yayımla iletişim kutusu görüntülenir.

Yukarıdaki komutu çalıştırdığınızda Import-PfxCertificate PowerShell penceresinde aşağıdaki CN= içeriğini kopyalayın ve bağlantı noktasını 19000 ekleyin. Örneğin, mysfcluster.SouthCentralUS.cloudapp.azure.com:19000. Bağlantı Uç Noktası alanına kopyalayın. Bu değeri unutmayın çünkü bu değere gelecekteki bir adımda ihtiyacınız olacaktır.

Gelişmiş Bağlantı Parametrelerine tıklayıp bağlantı parametresi bilgilerini doğrulayın. FindValue ve ServerCertThumbprint değerleri, önceki adımda çalıştırdığınızda Import-PfxCertificate yüklenen sertifikanın parmak iziyle eşleşmelidir.

Yayımla İletişim Kutusu

Yayımla öğesine tıklayın.

Kümedeki her uygulamanın benzersiz bir adı olmalıdır. Ad çakışması varsa Visual Studio projesini yeniden adlandırın ve yeniden dağıtın.

Bir tarayıcı açın ve önceki adımda Bağlantı Uç Noktası alanına eklediğiniz adrese gidin. İsteğe bağlı olarak, URL’nin başına düzen tanımlayıcısını (http://) ve sonuna bağlantı noktasını (:80) ekleyebilirsiniz. Örneğin http://mysfcluster.SouthCentralUS.cloudapp.azure.com:80.

IIS varsayılan web sayfasını görmeniz gerekir: IIS varsayılan web sayfası

Temizleme

Küme çalışırken ücret ödemeye devam edebilirsiniz. Kümenizi silmeyi göz önünde bulundurun.

Sonraki adımlar

Bu hızlı başlangıçta şunları öğrendiniz:

  • Docker görüntü kapsayıcısını paketleme
  • İletişimi yapılandırma
  • Service Fabric uygulamasını oluşturma ve paketleme
  • Kapsayıcı uygulamasını Azure’a dağıtma

Service Fabric'te Windows kapsayıcılarıyla çalışma hakkında daha fazla bilgi edinmek için Windows kapsayıcı uygulamaları öğreticisine geçin.