Uygulamaları paketleme

Bu makalede bir Service Fabric uygulamasını paketleme ve dağıtıma hazır hale getirme işlemleri açıklanır.

Paket düzeni

Bir Service Fabric kümesine dağıtım için uygulama bildirimi, bir veya daha fazla hizmet bildirimi ve diğer gerekli paket dosyaları belirli bir düzende düzenlenmelidir. Bu makaledeki örnek bildirimlerin aşağıdaki dizin yapısında düzenlenmesi gerekir:

tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│   ApplicationManifest.xml
│
└───MyServiceManifest
    │   ServiceManifest.xml
    │
    ├───MyCode
    │       MyServiceHost.exe
    │
    ├───MyConfig
    │       Settings.xml
    │
    └───MyData
            init.dat

Klasörler, karşılık gelen her öğenin Name öznitelikleriyle eşleşecek şekilde adlandırılır. Örneğin, hizmet bildirimi MyCodeA ve MyCodeB adlarına sahip iki kod paketi içeriyorsa, aynı adlara sahip iki klasör her kod paketi için gerekli ikili dosyaları içerir.

SetupEntryPoint kullanma

SetupEntryPoint'i kullanmaya yönelik tipik senaryolar, hizmet başlatılmadan önce bir yürütülebilir dosya çalıştırmanız veya yükseltilmiş ayrıcalıklarla bir işlem gerçekleştirmeniz gerektiği senaryolardır. Örnek:

  • Hizmet yürütülebilir dosyasının ihtiyaç duyduğu ortam değişkenlerini ayarlama ve başlatma. Yalnızca Service Fabric programlama modelleri aracılığıyla yazılan yürütülebilir dosyalarla sınırlı değildir. Örneğin, npm.exe bir Node.js uygulamasını dağıtmak için yapılandırılmış bazı ortam değişkenlerine ihtiyaç duyar.
  • Güvenlik sertifikalarını yükleyerek erişim denetimini ayarlama.

SetupEntryPoint'i yapılandırma hakkında daha fazla bilgi için bkz. Hizmet kurulum giriş noktası için ilkeyi yapılandırma

Yapılandırma

Visual Studio kullanarak paket oluşturma

Uygulamanızı oluşturmak için Visual Studio kullandıysanız, yukarıda açıklanan düzen ile eşleşen bir paketi otomatik olarak oluşturmak için Paket komutunu kullanabilirsiniz.

Paket oluşturmak için, Çözüm Gezgini'da uygulama projesine sağ tıklayın ve Paket komutunu seçin:

Visual Studio ile uygulama paketleme

Paketleme tamamlandığında, paketin konumunu Çıkış penceresinde bulabilirsiniz. Visual Studio'da uygulamanızı dağıttığınızda veya hatalarını ayıkladığınızda paketleme adımı otomatik olarak gerçekleşir.

Komut satırına göre paket oluşturma

Kullanarak uygulamanızı msbuild.exeprogram aracılığıyla paketlemek de mümkündür. Arka planda Visual Studio bunu çalıştırdığından çıkış aynı olur.

D:\Temp> msbuild HelloWorld.sfproj /t:Package

Paketi test edin

Test-ServiceFabricApplicationPackage komutunu kullanarak PowerShell aracılığıyla paket yapısını yerel olarak doğrulayabilirsiniz. Bu komut bildirim ayrıştırma sorunlarını denetler ve tüm başvuruları doğrular. Bu komut yalnızca paketteki dizinlerin ve dosyaların yapısal doğruluğunu doğrular. Gerekli tüm dosyaların mevcut olup olmadığını denetlemenin ötesinde kod veya veri paketi içeriklerinden hiçbirini doğrulamaz.

Test-ServiceFabricApplicationPackage .\MyApplicationType
False
Test-ServiceFabricApplicationPackage : The EntryPoint MySetup.bat is not found.
FileName: C:\Users\servicefabric\AppData\Local\Temp\TestApplicationPackage_7195781181\nrri205a.e2h\MyApplicationType\MyServiceManifest\ServiceManifest.xml

Bu hata, SetupEntryPoint hizmet bildiriminde başvuruda bulunılan MySetup.bat dosyasının kod paketinde eksik olduğunu gösterir. Eksik dosya eklendikten sonra uygulama doğrulaması şunları geçirir:

tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│   ApplicationManifest.xml
│
└───MyServiceManifest
    │   ServiceManifest.xml
    │
    ├───MyCode
    │       MyServiceHost.exe
    │       MySetup.bat
    │
    ├───MyConfig
    │       Settings.xml
    │
    └───MyData
            init.dat
Test-ServiceFabricApplicationPackage .\MyApplicationType
True

Uygulamanızda tanımlı uygulama parametreleri varsa, bunları doğru doğrulama için Test-ServiceFabricApplicationPackage'da geçirebilirsiniz.

Uygulamanın dağıtılacağı kümeyi biliyorsanız parametresini ImageStoreConnectionString geçirmeniz önerilir. Bu durumda paket, kümede zaten çalışmakta olan uygulamanın önceki sürümlerine göre de doğrulanır. Örneğin doğrulama, aynı sürüme sahip ancak farklı içeriğe sahip bir paketin zaten dağıtılıp dağıtılmadığını algılayabilir.

Uygulama doğru şekilde paketlenip doğrulamayı geçtikten sonra, daha hızlı dağıtım işlemleri için paketi sıkıştırmayı göz önünde bulundurun.

Paketi sıkıştırma

Bir paket büyükse veya çok fazla dosyası varsa, daha hızlı dağıtım için sıkıştırabilirsiniz. Sıkıştırma, dosya sayısını ve paket boyutunu azaltır. Sıkıştırılmış bir uygulama paketi için, özellikle sıkıştırma kopyalamanın bir parçası olarak yapılıyorsa , uygulama paketini karşıya yüklemek sıkıştırılmamış paketi karşıya yüklemeye kıyasla daha uzun sürebilir. Sıkıştırma ile uygulama türünün kaydedilmesi ve kaydının kaldırılması daha hızlıdır.

Sıkıştırılmış ve sıkıştırılmamış paketler için dağıtım mekanizması aynıdır. Paket sıkıştırılmışsa, küme görüntü deposunda olduğu gibi depolanır ve uygulama çalıştırılmadan önce düğümde sıkıştırılmaz. Sıkıştırma, geçerli Service Fabric paketini sıkıştırılmış sürümle değiştirir. Klasör yazma izinlerine izin vermelidir. Zaten sıkıştırılmış bir pakette sıkıştırma çalıştırıldığında hiçbir değişiklik yapılmaz.

Anahtar ile CompressPackageCopy-ServiceFabricApplicationPackage PowerShell komutunu çalıştırarak bir paketi sıkıştırabilirsiniz. Anahtarı kullanarak UncompressPackage paketin sıkıştırmasını aynı komutla açabilirsiniz.

Aşağıdaki komut, paketi görüntü deposuna kopyalamadan sıkıştırır. Bayrağı olmadan Copy-ServiceFabricApplicationPackage komutunu kullanarak sıkıştırılmış bir paketi gerektiği gibi bir veya daha fazla Service Fabric kümesine SkipCopy kopyalayabilirsiniz. Paket artık , configve data paketleri için codesıkıştırılmış dosyalar içerir. Uygulama bildirimi ve hizmet bildirimleri, birçok iç işlem için gerektiğinden sıkıştırmaz. Örneğin, paket paylaşımı, uygulama türü adı ve belirli doğrulamalar için sürüm ayıklamanın tümü bildirimlere erişmesi gerekir. Bildirimlerin zipping yapılması bu işlemlerin verimli olmasını sağlar.

tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│   ApplicationManifest.xml
│
└───MyServiceManifest
    │   ServiceManifest.xml
    │
    ├───MyCode
    │       MyServiceHost.exe
    │       MySetup.bat
    │
    ├───MyConfig
    │       Settings.xml
    │
    └───MyData
            init.dat
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\MyApplicationType -CompressPackage -SkipCopy
tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│   ApplicationManifest.xml
│
└───MyServiceManifest
       ServiceManifest.xml
       MyCode.zip
       MyConfig.zip
       MyData.zip

Alternatif olarak, bir adımda Copy-ServiceFabricApplicationPackage ile paketi sıkıştırabilir ve kopyalayabilirsiniz. Paket büyükse, hem paket sıkıştırma hem de kümeye yükleme için zaman tanıyacak kadar yüksek bir zaman aşımı sağlayın.

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\MyApplicationType -ApplicationPackagePathInImageStore MyApplicationType -ImageStoreConnectionString fabric:ImageStore -CompressPackage -TimeoutSec 5400

Service Fabric, doğrulama için uygulama paketleri için sağlama toplamlarını dahili olarak hesaplar. Sıkıştırma kullanılırken sağlama toplamları her paketin sıkıştırılmış sürümlerinde hesaplanır. Aynı uygulama paketinden yeni bir zip oluşturmak farklı sağlama toplamları oluşturur. Doğrulama hatalarını önlemek için fark sağlamayı kullanın. Bu seçenekle, değiştirilmemiş paketleri yeni sürüme eklemeyin. Bunun yerine, bunlara doğrudan yeni hizmet bildiriminden başvurun.

Fark sağlama bir seçenek değilse ve paketleri eklemeniz gerekiyorsa sağlama toplamı uyuşmazlığından kaçınmak için , configve data paketleri için codeyeni sürümler oluşturun. Önceki sürümün sıkıştırma kullanıp kullanmadığına bakılmaksızın, sıkıştırılmış bir paket kullanıldığında, değişmeyen paketler için yeni sürümler oluşturmak gerekir.

Paket artık doğru şekilde paketlenmiş, doğrulanmış ve sıkıştırılmıştır (gerekirse), bu nedenle bir veya daha fazla Service Fabric kümesine dağıtım için hazırdır.

Visual Studio kullanarak dağıtım yaparken paketleri sıkıştırma

Öğesini yayımlama profilinize ekleyerek CopyPackageParameters ve özniteliğini trueolarak ayarlayarak Visual Studio'ya dağıtımdaki paketleri sıkıştırmasını CompressPackage sağlayabilirsiniz.

    <PublishProfile xmlns="http://schemas.microsoft.com/2015/05/fabrictools">
        <ClusterConnectionParameters ConnectionEndpoint="mycluster.westus.cloudapp.azure.com" />
        <ApplicationParameterFile Path="..\ApplicationParameters\Cloud.xml" />
        <CopyPackageParameters CompressPackage="true"/>
    </PublishProfile>

Sfpkg oluşturma

Service Fabric, sürüm 6.1'den başlayarak bir dış depodan sağlamaya izin verir. Bu seçenekle, uygulama paketinin görüntü deposuna kopyalanması gerekmez. Bunun yerine, bir sfpkg dosya oluşturup bir dış depoya yükleyebilir, ardından sağlama sırasında indirme URI'sini Service Fabric'e sağlayabilirsiniz. Aynı paket birden çok kümeye sağlanabilir. Dış depodan sağlama, paketi her kümeye kopyalamak için gereken süreden tasarruf sağlar.

dosyası sfpkg , ilk uygulama paketini içeren ve uzantısına .sfpkgsahip bir zip dosyasıdır. Zip içinde uygulama paketi sıkıştırılabilir veya sıkıştırılamaz. Zip içindeki uygulama paketini sıkıştırma işlemi daha önce belirtildiği gibi kod, yapılandırma ve veri paketi düzeylerinde gerçekleştirilir.

Dosya oluşturmak sfpkg için, sıkıştırılmış veya değil özgün uygulama paketini içeren bir klasörle başlayın. Ardından, ".sfpkg" uzantısına sahip klasörü sıkıştırmak için herhangi bir yardımcı programı kullanın. Örneğin, ZipFile.CreateFromDirectory kullanın.

ZipFile.CreateFromDirectory(appPackageDirectoryPath, sfpkgFilePath);

, sfpkg Service Fabric'in dışında bant dışında dış depoya yüklenmelidir. Dış depo, REST http veya https uç noktasını kullanıma sunan herhangi bir depo olabilir. Sağlama sırasında Service Fabric uygulama paketini indirmek sfpkg için bir GET işlemi yürütür, bu nedenle deponun paket için OKUMA erişimine izin vermesi gerekir.

Paketi sağlamak için, indirme URI'sini ve uygulama türü bilgilerini gerektiren dış sağlamayı kullanın.

Not

Görüntü deposu göreli yoluna dayalı sağlama şu anda dosyaları desteklemez sfpkg . Bu nedenle, sfpkg görüntü deposuna kopyalanmamalıdır.

Sonraki adımlar

Uygulamaları dağıtma ve kaldırma , uygulama örneklerini yönetmek için PowerShell'in nasıl kullanılacağını açıklar

Birden çok ortam için uygulama parametrelerinin yönetilmesi , farklı uygulama örnekleri için parametrelerin ve ortam değişkenlerinin nasıl yapılandırıldığı açıklanmaktadır.

Uygulamanız için güvenlik ilkelerini yapılandırma , erişimi kısıtlamak için güvenlik ilkeleri altında hizmetlerin nasıl çalıştırıldığı açıklanmaktadır.