Utworzono aplikację usługi sieciowej składającą się obecnie z dwóch niezawodnych usług i niezawodnego aktora. Do opracowania stworzyłem serwer SQL i bazę danych na Azure i zakodowałem ciąg połączenia w mojej aplikacji, którą uruchomiłem w moim lokalnym klastrze SF. To działało dobrze i mogłem uruchomić moją aplikację lokalnie, manipulując bazą danych w chmurze.Nie można połączyć się z zabezpieczonym klastrem usług Azure Service Fabric za pomocą aplikacji Powershell lub Visual Studio.
Teraz chcę opublikować moją usługę w chmurze i uruchomić ją zdalnie (tak, żebym mógł skonfigurować i przetestować interfejs Web API) i to tam zaczynają się problemy.
Obserwuje Azure docs:
- Create a Service Fabric cluster in Azure using Azure Resource Manager
- Connect to a secure cluster
- Configure secure connections to a Service Fabric cluster from Visual Studio
- Service Fabric cluster security scenarios
- Publish an application to a remote cluster by using Visual Studio
- Add or remove certificates for a Service Fabric cluster in Azure
Brałem następujące kroki:
Używany PowerShell (z
ServiceFabricRPHelpers
cmdlets), aby utworzyć grupę zasobów KeyVault, a w tym wKeyVault
.Używane
New-SelfSignedCertificate
z -DnsName ustawionym na api.mydomain.co.uk, które już kupiłem i utworzyłem rekord CNAME dla api prowadząc do mycluster.northeurope.cloudapp.azure.com:19000 (choć oczywiście to nie istnieje na tym etapie procesu), a następnieExport-PfxCertificate
, aby utworzyć plik.pfx
. Model.pfx
został następnie zaimportowany docert:\CurrentUser\TrustedPeople
icert:\CurrentUser\My
.Zadzwoń pod numer
Invoke-AddCertToKeyVault
, aby dodać nowo wygenerowany certyfikat do mojegoKeyVault
.Wykorzystano skrypt
SetupApplications.ps1
do skonfigurowania AAD.Umieszczono wszystkie łańcuchy wynikowe itp. Na
azuredeploy.json
iazuredeploy.parameters.json
, rozwiązano błędy (niektóre z nich wydawały się być sprzeczne z dokumentacją ..) i pomyślnie wdrożono klaster. Jest teraz widoczny na moim portalu Azure.Przypisane role użytkowników (admin dla siebie) z klasycznego portalu.
Używane
Invoke-AddCertToKeyVault
do (tym razem utworzyć i) dodać drugi, "admin klienta" certyfikat do klastra (w przeciwieństwie do pierwszego, który był certyfikatem klastrowym).
Tak, z wszystko tego zrobić, wierzę powinienem zrobić wszystko, czego potrzeba, aby aby być w stanie połączyć się z klastrem na rozpatrzenie przez VS2015, i uzyskać dostęp do interfejsu zarządzania z api.mydomain.co.uk:19080
. Niestety, tak się nie stało ...
połączenie z bazą danych w obrębie grupy zasobów mój klaster nadal działa z VS poprzez SQL Server Explorer przy użyciu uwierzytelniania SQL, jednak dowolny próba komunikacji z serwerem sama stosując AAD lub wyników uwierzytelniania X509 oparte na jakiś czas oczekiwania próbuje się połączyć, a następnie awarię. Kilka przykładów:
Próbując podłączyć do konsoli zarządzania mówi, że zablokowany, co oznacza dla mnie, że tam jest, ale cała dokumentacja kończy się przed opowiadać, jak do niego dostęp.
Próba połączenia przy użyciu Connect-ServiceFabricCluster
również się nie powiedzie, a szukając wiadomości o błędach nie dał mi żadnych wskazówek, co zrobić.
Po spędzeniu dwóch dni pochłaniające wszystko i próbuje dostać pracy, ja jestem z pomysłów na to, co się spróbować i zmiana. Czy ktoś może znaleźć problem w tym, co zrobiłem, lub zasugerować cokolwiek, co mógłbym wypróbować? Jeśli potrzebujesz więcej informacji ode mnie, proszę zapytaj!
Dzięki za porady!Skończyło się na tym, że udało mi się na tyle sfrustrować, że zdecydowałem się na całe podejście do SF i napisałem backend Pythona, a zamiast tego hostowałem go na własnym serwerze. Nie dostaję całej wspaniałości Azure, ale kiedy jest tak dużo bałaganu, aby go skonfigurować, po prostu nie jest to warte tego, nad czym teraz pracuję. Przyjmuję twoją odpowiedź, ponieważ nie sądzę, żebym wypróbował którąś z rzeczy, które zasugerowałeś, i może w przyszłości dam ci jeszcze raz z twoimi wskazówkami i zobaczę, czy to się uda. –
To bardzo mi pomogło! Dwie rzeczy, które robiłem inaczej, to: 1. bez certyfikatu klastrowania w sekcji vaultCertyfikaty w osProfile 2. Podałem certyfikat klastrowania w clientCertificateCommonNames i pozostawiono puste pole clientCertificateThumbprint. Naprawiłem oba, więc nie jestem pewien, który z nich był winowajcą. Dziwna część była przed naprawieniem powyższego Mogłem połączyć się z Service Fabric Explorer przy użyciu certyfikatu klastrowego, po prostu nie mogłem połączyć się z wdrożeniem – Alex