Mulai cepat: Menyebarkan kontainer Windows ke Service Fabric

Azure Service Fabric adalah platform sistem terdistribusi untuk menyebarkan dan mengelola layanan mikro dan kontainer yang dapat diskalakan dan dapat diandalkan.

Menjalankan aplikasi yang tersedia di kontainer Windows pada kluster Service Fabric tidak memerlukan perubahan apa pun pada aplikasi Anda. Mulai cepat ini menunjukkan kepada Anda cara menyebarkan gambar kontainer Docker bawaan dalam aplikasi Service Fabric. Setelah selesai, Anda akan memiliki Windows Server Core 2016 Server dan kontainer IIS yang berjalan. Mulai cepat ini menjelaskan penyebaran kontainer Windows. Baca mulai cepat ini untuk menyebarkan kontainer Linux.

Halaman web default IIS

Dalam mulai cepat ini Anda belajar cara:

  • Mengemas kontainer gambar Docker
  • Mengonfigurasi komunikasi
  • Membangun dan mengemas aplikasi Service Fabric
  • Menyebarkan aplikasi kontainer ke Azure

Catatan

Kami menyarankan agar Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Prasyarat

Mengemas kontainer gambar Docker dengan Visual Studio

SDK dan alat Service Fabric menyediakan templat layanan untuk membantu Anda menyebarkan kontainer ke kluster Service Fabric.

Mulai Visual Studio sebagai "Administrator". Pilih File>Proyek>Baru.

Pilih aplikasi Service Fabric, beri nama "MyFirstContainer", dan klik Buat.

Pilih Kontainer dari templat Kontainer dan Aplikasi yang Dihosting.

Di Nama Gambar, masukkan "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016", gambar dasar IIS dan Windows Server Core Server.

Konfigurasikan pemetaan port port-ke-host kontainer sehingga permintaan masuk ke layanan pada port 80 dipetakan ke port 80 pada kontainer. Atur Port Kontainer ke "80" dan atur Port Host ke "80".

Beri nama layanan Anda "MyContainerService", dan klik OK.

Dialog layanan baru

Tentukan build OS untuk gambar kontainer Anda

Kontainer yang dibangun dengan versi Windows Server tertentu mungkin tidak berjalan pada host yang menjalankan versi Windows Server yang berbeda. Misalnya, kontainer yang dibangun menggunakan Windows Server versi 1709 tidak dapat berjalan pada host yang menjalankan Windows Server 2016. Untuk mempelajari selengkapnya, lihat Kompatibilitas OS dan OS host kontainer Windows Server.

Dengan runtime Service Fabric versi 6,1 dan yang lebih baru, Anda dapat menentukan beberapa gambar OS per kontainer dan menandai masing-masing gambar dengan versi build OS tujuan penyebaran. Hal ini membantu memastikan bahwa aplikasi Anda akan berjalan di seluruh host yang menjalankan versi OS Windows yang berbeda. Untuk mempelajari selengkapnya, lihat Tentukan gambar kontainer spesifik build OS.

Microsoft menerbitkan gambar yang berbeda untuk versi IIS yang dibangun di versi Windows Server yang berbeda. Untuk memastikan bahwa Service Fabric menyebarkan kontainer yang kompatibel dengan versi Windows Server yang berjalan pada node kluster di mana aplikasi Anda disebarkan, tambahkan baris berikut ke file ApplicationManifest.xmli. Versi build untuk Windows Server 2016 adalah 14393 dan versi build untuk Windows Server versi 1709 adalah 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 layanan masih menentukan hanya satu gambar untuk nanoserver, mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016.

Selain itu, dalam file ApplicationManifest.xml, ubah PasswordEncrypted ke false. Akun dan kata sandi untuk gambar kontainer publik yang ada di Docker Hub kosong, jadi kami menonaktifkan enkripsi karena mengenkripsi kata sandi kosong akan menyebabkan kesalahan build.

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

Membuat kluster

Sampel skrip berikut membuat kluster Service Fabric lima node yang diamankan dengan sertifikat X.509. Perintah membuat sertifikat yang ditandatangani sendiri dan mengunggahnya ke brankas kunci baru. Sertifikat juga disalin ke direktori lokal. Anda dapat mempelajari lebih lanjut tentang membuat kluster menggunakan skrip ini di Membuat kluster Service Fabric.

Jika diperlukan, instal Azure PowerShell menggunakan instruksi yang terdapat dalam panduan Azure PowerShell.

Sebelum Anda menjalankan skrip berikut ini, di PowerShell jalankan Connect-AzAccount untuk membuat koneksi dengan Azure.

Salin skrip berikut ke clipboard dan buka Windows PowerShell ISE. Tempelkan konten ke jendela Untitled1.ps1 kosong. Kemudian berikan nilai untuk variabel dalam skrip: subscriptionId, certpwd, certfolder, adminuser, adminpwd, dan seterusnya. Direktori yang Anda tentukan certfolder harus ada sebelum Anda menjalankan skrip.

#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

Setelah Anda memberikan nilai anda untuk variabel, tekan F5 untuk menjalankan skrip.

Setelah skrip berjalan dan kluster dibuat, temukan ClusterEndpoint pada output. Contohnya:

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

Pasang sertifikat untuk kluster

Sekarang kita akan menginstal PFX di CurrentUser\My simpan sertifikat. File PFX akan berada di direktori yang Anda tentukan menggunakan certfolder variabel lingkungan dalam skrip PowerShell di atas.

Ubah ke direktori tersebut, lalu jalankan perintah PowerShell berikut ini, ganti nama file PFX yang ada di certfolder direktori Anda, dan kata sandi yang Anda tentukan dalam variabel certpwd. Dalam contoh ini, direktori saat ini diatur ke direktori yang ditentukan oleh certfoldervariabel dalam skrip PowerShell. Dari sana Import-PfxCertificate perintah dijalankan:

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

Perintah mengembalikan Thumbprint:

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

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

Ingat nilai thumbprint untuk langkah berikut.

Sebarkan aplikasi ke Azure menggunakan Visual Studio

Setelah aplikasi siap, Anda dapat menyebarkannya ke kluster langsung dari Visual Studio.

Klik kanan MyFirstContainer di Penjelajah Solusi dan pilih Terbitkan. Dialog Terbitkan muncul.

Salin konten berikut CN= di jendela PowerShell saat Anda menjalankan perintah Import-PfxCertificate di atas, dan tambahkan port 19000 ke dalamnya. Contohnya:mysfcluster.SouthCentralUS.cloudapp.azure.com:19000 Salin ke bidang Titik Akhir Koneksi. Ingat nilai ini karena Anda akan membutuhkannya di langkah berikutnya.

Klik Parameter Koneksi Tingkat Lanjut dan verifikasi informasi parameter koneksi. NilaiFindValue dan ServerCertThumbprint harus cocok dengan thumbprint sertifikat yang diinstal ketika Anda menjalankan Import-PfxCertificate di langkah sebelumnya.

Menerbitkan Dialog

Klik Terbitkan.

Setiap aplikasi dalam kluster harus memiliki nama yang unik. Jika ada konflik nama, ganti nama proyek Visual Studio dan sebarkan lagi.

Buka browser dan navigasi ke alamat yang Anda masukkan ke dalam bidang Titik Akhir Koneksi di langkah sebelumnya. Anda dapat secara opsional menambahkan pengidentifikasi skema, http://, dan tambahkan port, :80, ke URL. Misalnya, http://mysfcluster.SouthCentralUS.cloudapp.azure.com:80.

Anda akan melihat halaman web default IIS: halaman web default IIS

Pembersihan

Anda terus dikenakan biaya saat kluster sedang berjalan. Pertimbangkan hapus kluster Anda.

Langkah berikutnya

Dalam mulai cepat ini, Anda mempelajari cara:

  • Mengemas kontainer gambar Docker
  • Mengonfigurasi komunikasi
  • Membangun dan mengemas aplikasi Service Fabric
  • Menyebarkan aplikasi kontainer ke Azure

Untuk mempelajari selengkapnya tentang bekerja dengan kontainer Windows di Service Fabric, lanjutkan ke tutorial aplikasi kontainer Windows.