Uygulamaları paketleme
bu makalede bir Service Fabric uygulamasının nasıl paketleneceğini ve dağıtıma nasıl hazırlanılacağını açıklamaktadır.
Paket düzeni
uygulama bildirimi, bir veya daha fazla hizmet bildirimi ve diğer gerekli paket dosyaları Service Fabric bir kümeye dağıtım için belirli bir düzen halinde düzenlenmelidir. Bu makaledeki örnek bildirimlerin aşağıdaki dizin yapısında organize olması 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 ad öznitelikleriyle eşleşecek şekilde adlandırılır. Örneğin, hizmet bildirimi Mycodea ve mycodeb adlarıyla iki kod paketi içeriyorsa, aynı ada sahip iki klasör her kod paketi için gereken ikili dosyaları içerir.
SetupEntryPoint kullanma
Setupentrypoint kullanmanın tipik senaryoları, hizmet başlamadan önce bir yürütülebilir dosya çalıştırmanız veya yükseltilmiş ayrıcalıklarla bir işlem gerçekleştirmeniz gerekir. Örnek:
- Hizmet yürütülebilir dosyasının ihtiyaç duyacağı ortam değişkenlerini ayarlama ve başlatma. yalnızca Service Fabric programlama modelleriyle yazılmış yürütülebilir dosyalar ile sınırlı değildir. Örneğin npm.exe, bir node.js uygulamasının dağıtımı için yapılandırılmış bazı ortam değişkenlerine ihtiyaç duyuyor.
- Güvenlik sertifikaları yükleyerek erişim denetimini ayarlama.
Setupentrypoint yapılandırma hakkında daha fazla bilgi için bkz . bir hizmet kurulumu 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 paket otomatik olarak oluşturmak için package komutunu kullanabilirsiniz.
Bir paket oluşturmak için Çözüm Gezgini ' de uygulama projesine sağ tıklayın ve paket komutunu seçin:

Paketleme tamamlandığında, paketin konumunu Çıkış penceresinde bulabilirsiniz. Visual Studio ' de uygulamanızı dağıtırken veya hata ayıkladığınızda paketleme adımı otomatik olarak gerçekleşir.
Komut satırı ile paket oluşturma
Kullanarak uygulamanızı programlı bir şekilde paketlemek da mümkündür msbuild.exe . benzer şekilde, çıktının aynı olması için Visual Studio çalışmaktadır.
D:\Temp> msbuild HelloWorld.sfproj /t:Package
Paketi test etme
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ı kontrol eden hiçbir 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, kod paketinde Setupentrypoint hizmet bildiriminde başvurulan MySetup.bat dosyasının eksik olduğunu gösterir. Eksik dosya eklendikten sonra, uygulama doğrulaması geçirilir:
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ımlanmış uygulama parametreleri varsa, doğru doğrulama Için bunları Test-ServiceFabricApplicationPackage içinde geçirebilirsiniz.
Uygulamanın dağıtılacağı kümeyi biliyorsanız, parametresinde geçiş yapmanız önerilir ImageStoreConnectionString . Bu durumda, paket, zaten kümede çalışmakta olan uygulamanın önceki sürümleriyle da onaylanı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 paketlendikten ve doğrulamayı geçtiğinde, daha hızlı dağıtım işlemleri için paketi sıkıştırmayı göz önünde bulundurun.
Bir paketi sıkıştır
Bir paket büyükse veya çok sayıda dosya olduğunda daha hızlı dağıtım için sıkıştırabilmeniz gerekir. Sıkıştırma, dosya sayısını ve paket boyutunu azaltır. Sıkıştırılmış bir uygulama paketi için, özellikle de bir kopyanın parçası olarak sıkıştırma yapıldığında, 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ü kaydetme ve kaydını kaldırma daha hızlıdır.
Dağıtım mekanizması, sıkıştırılmış ve sıkıştırılmamış paketler için 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üğüm üzerinde sıkıştırılmamış olur. sıkıştırma geçerli Service Fabric paketinin sıkıştırılmış sürümle yerini almıştır. Klasör yazma izinlerine izin vermelidir. Zaten sıkıştırılmış bir pakette sıkıştırma çalıştırmak hiçbir değişiklik vermez.
Anahtar ile Copy-ServiceFabricApplicationPackage PowerShell komutunu çalıştırarak bir paketi sıkıştırabilirsiniz CompressPackage . Anahtarı kullanarak paketin sıkıştırmasını aynı komutla açabilirsiniz UncompressPackage .
Aşağıdaki komut, paketi görüntü deposuna kopyalamadan sıkıştırır. bir veya daha fazla Service Fabric kümesine, bayrak olmadan copy-servicefabricapplicationpackage kullanarak, bir veya daha fazla kümeye kopyalayabilirsiniz SkipCopy .
Paket artık,, ve paketleri için daraltılmış dosyalar içeriyor code config data . Birçok iç işlem için gerekli olduklarından, uygulama bildirimi ve hizmet bildirimleri sıkıştırıldı. Örneğin, belirli doğrulamaları için paket paylaşımı, uygulama türü adı ve sürüm ayıklama tüm bildirimlere erişmesi gerekir. Bildirimleri sıkıştırma işlemi 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, Copy-ServiceFabricApplicationPackage ile paketi tek bir adımda sıkıştırabilir ve kopyalayabilirsiniz. Paket büyükse, hem Paket sıkıştırması hem de kümeye yükleme için zamana izin vermek üzere yeterince yüksek bir zaman aşımı sağlayın.
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\MyApplicationType -ApplicationPackagePathInImageStore MyApplicationType -ImageStoreConnectionString fabric:ImageStore -CompressPackage -TimeoutSec 5400
dahili olarak, Service Fabric doğrulama için uygulama paketleri için sağlama toplamlarını hesaplar. Sıkıştırma kullanılırken, sağlama toplamı her bir paketin daraltılmış sürümlerinde hesaplanır. Aynı uygulama paketinden yeni bir ZIP oluşturulması farklı sağlama toplamı oluşturur. Doğrulama hatalarını engellemek için, fark sağlamayıkullanın. Bu seçenekle, değiştirilmemiş paketleri yeni sürüme eklemeyin. Bunun yerine, doğrudan yeni hizmet bildiriminden başvuru yapın.
Fark sağlama bir seçenek değilse ve paketleri dahil etmeniz gerekiyorsa, code config data sağlama toplamı uyuşmazlığından kaçınmak için,, ve paketleri için yeni sürümler oluşturun. Önceki sürümün sıkıştırma kullanıp kullanmadığını bağımsız olarak, sıkıştırılmış bir paket kullanıldığında, değiştirilmemiş paketler için yeni sürümler oluşturulması gerekir.
paket artık doğru bir şekilde paketlendi, doğruladı ve sıkıştırılmış (gerekliyse), 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ır
CopyPackageParametersyayımlama profilinize öğe ekleyerek ve özniteliğini olarak ayarlayarak, dağıtımdaki paketleri sıkıştırmak için Visual Studio bildirebilirsiniz CompressPackage true .
<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>
Bir sfpkg oluşturma
sürüm 6,1 ' den başlayarak, Service Fabric bir dış depodan sağlama yapılmasına izin verir.
Bu seçenekle, uygulama paketinin görüntü deposuna kopyalanması gerekmez. bunun yerine, bir dosya oluşturup bir sfpkg dış depoya yükleyebilir ve sonra sağlama sırasında Service Fabric için indirme urı 'sini sağlayabilirsiniz. Aynı paket birden çok kümeye sağlanabilir. Dış depodan sağlama, paketi her kümeye kopyalamak için gereken süreyi kaydeder.
sfpkgDosya, ilk uygulama paketini içeren ve uzantısına sahip bir zip dosyasıdır .sfpkg . ZIP içinde, uygulama paketi sıkıştırılabilir veya sıkıştırılmamış olabilir. ZIP içindeki uygulama paketinin sıkıştırması, daha önce belirtildiğigibi kod, yapılandırma ve veri paketi düzeylerinde yapılır.
Bir dosya oluşturmak için sfpkg , sıkıştırılmış veya olmayan özgün uygulama paketini içeren bir klasör ile başlayın. Sonra, ". sfpkg" uzantısına sahip klasörü ZIP için herhangi bir yardımcı programı kullanın. Örneğin, ZipFile. CreateFromDirectorykullanın.
ZipFile.CreateFromDirectory(appPackageDirectoryPath, sfpkgFilePath);
sfpkgService Fabric dışında, bant dışı dış depoya yüklenmelidir. Dış depo, REST http veya HTTPS uç noktası sunan herhangi bir mağaza olabilir. sağlama sırasında, Service Fabric uygulama paketini indirmek için bir GET işlemi yürütür sfpkg , bu nedenle mağaza paket için okuma erişimine izin vermelidir.
Paketi sağlamak için, indirme URI 'SI ve uygulama türü bilgilerini gerektiren harici sağlama kullanın.
Not
Görüntü deposu göreli yolu temelinde sağlama Şu anda dosyaları desteklemiyor 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 ortamda uygulama parametrelerinin yönetilmesi , farklı uygulama örnekleri için parametrelerin ve ortam değişkenlerinin nasıl yapılandırılacağını açıklar.
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ılacağını açıklar.