Aracılığıyla paylaş


Uygulamaları paketleme

Bu makalede, bir Service Fabric uygulamasının nasıl paketlenip dağıtıma hazır hale getirilip hazır hale getirilip hazır hale getirilediği açıklanır.

Paket düzeni

Uygulama bildirimi, bir veya daha fazla hizmet bildirimi ve diğer gerekli paket dosyaları, Service Fabric kümesine dağıtım için 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şlamadan önce yürütülebilir dosya çalıştırmanız veya yükseltilmiş ayrıcalıklarla bir işlem gerçekleştirmeniz gerektiği durumlardır. Örneğin:

  • 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ı dağıtmak için yapılandırılmış bazı ortam değişkenleri gerekir.
  • 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 Paketle 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 çıktı 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. Tüm gerekli dosyaların mevcut olup olmadığını denetlemenin ötesinde kod veya veri paketi içeriğini 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 bulunan 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ız tanımlı uygulama parametrelerine sahipse, 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 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 sayıda dosyası varsa, daha hızlı dağıtım için paketi 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üklemeyle karşılaştırıldığında 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ı olur.

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ılırsa, küme görüntü deposunda bu şekilde 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.

Anahtarla CompressPackage Copy-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. Bayrak 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 gerekli olduğundan 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şlemleri verimsiz hale getirir.

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, paketi tek adımda Copy-ServiceFabricApplicationPackage ile 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 aşımına izin verecek 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 dahil etmeniz 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ümde sıkıştırma kullanılıp kullanılmadığı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 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

Sürüm 6.1'den başlayarak Service Fabric, bir dış depodan sağlama sağlar. 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.

Dosya 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 paketinin sıkıştırması, 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 yolunu temel alan 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.