Bagikan melalui


Memasukkan Service Fabric Reliable Services dan Reliable Actors ke Kontainer di Windows

Service Fabric mendukung kontainer layanan mikro Service Fabric (layanan berbasis Reliable Services dan Reliable Actor). Untuk informasi selengkapnya, lihat kontainer service fabric.

Dokumen ini menyediakan panduan agar layanan Anda berjalan di dalam kontainer Windows.

Catatan

Saat ini fitur ini hanya berfungsi untuk Windows. Untuk menjalankan kontainer, kluster harus berjalan pada Windows Server 2016 dengan Kontainer.

Langkah-langkah untuk memasukkan Aplikasi Service Fabric Anda ke dalam kontainer

  1. Buka aplikasi Service Fabric Anda di Visual Studio.

  2. Tambahkan kelas SFBinaryLoader.cs ke proyek Anda. Kode di kelas ini adalah pembantu untuk memuat biner runtime Service Fabric dengan benar di dalam aplikasi Anda saat berjalan di dalam kontainer.

  3. Untuk setiap paket kode yang ingin Anda kontainer, inisialisasi loader di titik entri program. Tambahkan konstruktor statis yang diperlihatkan dalam cuplikan kode berikut ke file titik entri program Anda.

    namespace MyApplication
    {
       internal static class Program
       {
           static Program()
           {
               SFBinaryLoader.Initialize();
           }
    
           /// <summary>
           /// This is the entry point of the service host process.
           /// </summary>
           private static void Main()
           {
    
  4. Bangun dan kemas proyek Anda. Untuk membuat dan membuat paket, klik kanan proyek aplikasi di Penjelajah Solusi dan pilih perintah Paket.

  5. Untuk setiap paket kode yang Anda perlukan untuk dimasukkan ke dalam kontainer, jalankan skrip PowerShell CreateDockerPackage.ps1. Penggunaannya adalah sebagai berikut:

    Full .NET

      $codePackagePath = 'Path to the code package to containerize.'
      $dockerPackageOutputDirectoryPath = 'Output path for the generated docker folder.'
      $applicationExeName = 'Name of the Code package executable.'
      CreateDockerPackage.ps1 -CodePackageDirectoryPath $codePackagePath -DockerPackageOutputDirectoryPath $dockerPackageOutputDirectoryPath -ApplicationExeName $applicationExeName
    

    .NET Core

      $codePackagePath = 'Path to the code package to containerize.'
      $dockerPackageOutputDirectoryPath = 'Output path for the generated docker folder.'
      $dotnetCoreDllName = 'Name of the Code package dotnet Core Dll.'
      CreateDockerPackage.ps1 -CodePackageDirectoryPath $codePackagePath -DockerPackageOutputDirectoryPath $dockerPackageOutputDirectoryPath -DotnetCoreDllName $dotnetCoreDllName
    

    Skrip membuat folder dengan artefak Docker di $dockerPackageOutputDirectoryPath. Ubah Dockerfile yang dihasilkan ke port expose apa pun, jalankan skrip penyiapan dan sebagainya.

  6. Selanjutnya Anda perlu membangun dan mendorong paket kontainer Docker ke repositori Anda.

  7. Ubah ApplicationManifest.xml dan ServiceManifest.xml untuk menambahkan citra kontainer, informasi repositori, autentikasi registri, dan pemetaan port-to-host Anda. Untuk memodifikasi manifes, lihat Membuat aplikasi kontainer Azure Service Fabric. Definisi paket kode dalam manifes layanan perlu diganti dengan citra kontainer yang sesuai. Pastikan untuk mengubah EntryPoint menjadi jenis ContainerHost.

    <!-- Code package is your service executable. -->
    <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
     <!-- Follow this link for more information about deploying Windows containers to Service Fabric: https://aka.ms/sfguestcontainers -->
     <ContainerHost>
       <ImageName>myregistry.azurecr.io/samples/helloworldapp</ImageName>
     </ContainerHost>
    </EntryPoint>
    <!-- Pass environment variables to your container: -->
    </CodePackage>
    
  8. Tambahkan pemetaan port-to-host untuk replikator dan titik akhir layanan Anda. Karena kedua port ini ditetapkan saat runtime oleh Service Fabric, ContainerPort diatur ke nol untuk menggunakan port yang ditetapkan untuk pemetaan.

    <Policies>
    <ContainerHostPolicies CodePackageRef="Code">
     <PortBinding ContainerPort="0" EndpointRef="ServiceEndpoint"/>
     <PortBinding ContainerPort="0" EndpointRef="ReplicatorEndpoint"/>
    </ContainerHostPolicies>
    </Policies>
    
  9. Untuk mengonfigurasi mode isolasi kontainer, lihat Mengonfigurasi mode isolasi. Windows mendukung dua mode isolasi untuk kontainer: proses dan Hyper-V. Cuplikan berikut menampilkan bagaimana mode isolasi ditentukan dalam file manifes aplikasi.

    <Policies>
    <ContainerHostPolicies CodePackageRef="Code" Isolation="process">
    ...
    </ContainerHostPolicies>
    </Policies>
    
    <Policies>
    <ContainerHostPolicies CodePackageRef="Code" Isolation="hyperv">
    ...
    </ContainerHostPolicies>
    </Policies>
    

Catatan

Kluster Service Fabric adalah penyewa tunggal berdasarkan desain dan aplikasi yang dihosting dianggap tepercaya. Jika Anda mempertimbangkan hosting aplikasi kontainer tidak tepercaya, pertimbangkan untuk menerapkannya sebagai kontainer tamu dan silahkan lihat Hosting aplikasi tidak terpercaya di kluster Service Fabric.

  1. Untuk menguji aplikasi ini, Anda perlu menyebarkannya ke kluster yang menjalankan versi 5.7 atau yang lebih tinggi. Untuk versi runtime 6.1 atau yang lebih rendah, Anda perlu mengedit dan memperbarui pengaturan kluster untuk mengaktifkan fitur pratinjau ini. Ikuti langkah-langkah dalam artikel ini untuk menambahkan pengaturan yang diperlihatkan berikutnya.

      {
        "name": "Hosting",
        "parameters": [
          {
            "name": "FabricContainerAppsEnabled",
            "value": "true"
          }
        ]
      }
    
  2. Selanjutnya menyebarkan paket aplikasi yang diedit ke kluster ini.

Anda sekarang harus memiliki aplikasi Service Fabric dalam kontainer yang menjalankan kluster.

Langkah berikutnya