kurz: nasazení na cluster Service Fabric
tento kurz se věnuje několika možným způsobům nastavení prostředí jenkinse a různých způsobů, jak nasadit aplikaci do clusteru Service Fabric po sestavení. pomocí těchto obecných kroků úspěšně nakonfigurujete jenkinse, vyžádáte změny z GitHub, sestavíte aplikaci a nasadíte ji do svého clusteru:
- Ujistěte se, že jste nainstalovali požadavky.
- Pak postupujte podle kroků v jedné z těchto částí a nastavte Jenkinse:
- až nastavíte jenkinse, postupujte podle kroků v části vytvoření a konfigurace úlohy jenkinse pro nastavení GitHub pro aktivaci jenkinse při provedení změn v aplikaci a konfiguraci kanálu úlohy jenkinse prostřednictvím kroku sestavení, který načte změny z GitHub a sestaví aplikaci.
- nakonec nakonfigurujte krok po sestavení úlohy jenkinse k nasazení aplikace do clusteru Service Fabric. Existují dva způsoby, jak nakonfigurovat Jenkinse pro nasazení aplikace do clusteru:
- Pro vývojová a testovací prostředí použijte konfiguraci nasazení pomocí koncového bodu správy clusteru. Tato metoda je nejjednodušší metoda nasazení pro nastavení.
- V produkčních prostředích použijte konfiguraci nasazení s použitím přihlašovacích údajů Azure. Microsoft doporučuje tuto metodu pro produkční prostředí, protože s přihlašovacími údaji Azure můžete omezit přístup, který má Jenkinse úloha na vaše prostředky Azure.
Požadavky
- Zajistěte, aby byl Git nainstalovaný místně. Příslušnou verzi Gitu můžete nainstalovat ze stránky pro stažení Git založené na vašem operačním systému. Pokud s Git ještě nezačínáte, přečtěte si další informace v dokumentaci k Gitu.
- v tomto článku se používá ukázka Service Fabric Začínáme na GitHub: pro aplikaci pro sestavování a nasazování. toto úložiště můžete rozvětvit, aby se sledovalo spolu s některými úpravami pokynů, použijte vlastní GitHub projekt.
instalace modulu plug-in Service Fabric v existujícím prostředí jenkinse
pokud přidáváte Service Fabric modul plug-in do stávajícího prostředí jenkinse, musíte provést následující kroky:
- Service Fabric CLI (sfctl). Nainstalujte rozhraní příkazového řádku na úrovni systému, nikoli na úrovni uživatele, takže Jenkinse může spouštět příkazy rozhraní příkazového řádku (CLI).
- Chcete-li nasadit aplikace Java, nainstalujte obě Gradle a Open JDK 8,0.
- Pokud chcete nasadit aplikace .NET Core 2,0, nainstalujte sadu .NET core 2,0 SDK.
po instalaci požadovaných součástí pro vaše prostředí můžete na webu jenkinse marketplace vyhledat modul plug-in Azure Service Fabric a nainstalovat ho.
Po instalaci modulu plug-in přejděte k části Vytvoření a konfigurace úlohy Jenkinse.
Nastavení Jenkinse uvnitř clusteru Service Fabric
Jenkinse můžete nastavit uvnitř clusteru Service Fabric nebo mimo něj. V následujících částech se dozvíte, jak je nastavit v clusteru a přitom pomocí účtu služby Azure Storage uložit stav instance kontejneru.
ujistěte se, že máte cluster s Service Fabric Linux s nainstalovaným docker. clustery Service Fabric běžící v Azure již mají nainstalovaný docker. Pokud cluster spouštíte místně (vývojové prostředí OneBox), ověřte, jestli je Docker nainstalovaný na vašem počítači pomocí
docker infopříkazu. Pokud není nainstalovaný, nainstalujte ho pomocí následujících příkazů:sudo apt-get install wget wget -qO- https://get.docker.io/ | shPoznámka
Ujistěte se, že port 8081 je zadán jako vlastní koncový bod v clusteru. Pokud používáte místní cluster, ujistěte se, že je na hostitelském počítači otevřený port 8081 a že má veřejnou IP adresu.
Naklonujte aplikaci pomocí následujících příkazů:
git clone https://github.com/suhuruli/jenkins-container-application.git cd jenkins-container-applicationZachovat stav kontejneru Jenkinse ve sdílené složce:
Vytvořte účet úložiště Azure ve stejné oblasti jako cluster s názvem, jako je třeba .
V účtu úložiště vytvořte sdílenou složku s názvem, jako je například .
pro sdílenou složku klikněte na Připojení a všimněte si hodnot zobrazených v části připojení ze systému Linux. tato hodnota by měla vypadat podobně jako na následujícím obrázku:
sudo mount -t cifs //sfjenkinsstorage1.file.core.windows.net/sfjenkins [mount point] -o vers=3.0,username=sfjenkinsstorage1,password=<storage_key>,dir_mode=0777,file_mode=0777
Poznámka
Pokud chcete sdílené složky CIFS připojit, je potřeba mít v uzlech clusteru nainstalovaný balíček CIFS-utils.
Aktualizujte zástupné hodnoty ve
setupentrypoint.shskriptu pomocí podrobností o Azure Storage z kroku 2.vi JenkinsSF/JenkinsOnSF/Code/setupentrypoint.sh- Nahraďte
[REMOTE_FILE_SHARE_LOCATION]hodnotou//sfjenkinsstorage1.file.core.windows.net/sfjenkinsz výstupu připojení v kroku 2 výše. - Nahraďte
[FILE_SHARE_CONNECT_OPTIONS_STRING]hodnotouvers=3.0,username=sfjenkinsstorage1,password=GB2NPUCQY9LDGeG9Bci5dJV91T6SrA7OxrYBUsFHyueR62viMrC6NIzyQLCKNz0o7pepGfGY+vTa9gxzEtfZHw==,dir_mode=0777,file_mode=0777z kroku 2 výše.
- Nahraďte
Pouze zabezpečený cluster:
Aby bylo možné nakonfigurovat nasazení aplikací na zabezpečeném clusteru z Jenkinse, musí být certifikát clusteru přístupný v rámci kontejneru Jenkinse. V souboru ApplicationManifest.xml pod značkou ContainerHostPolicies přidejte tento odkaz na certifikát a aktualizujte hodnotu kryptografického otisku pomocí certifikátu clusteru.
<CertificateRef Name="MyCert" X509FindValue="[Thumbprint]"/>Kromě toho přidejte následující řádky pod značku souboru ApplicationManifest (root) v souboru ApplicationManifest.xml a aktualizujte hodnotu kryptografického otisku pomocí certifikátu clusteru.
<Certificates> <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[Thumbprint]" /> </Certificates>Připojení ke clusteru a nainstalujte aplikaci kontejneru.
Zabezpečený cluster
sfctl cluster select --endpoint https://PublicIPorFQDN:19080 --pem [Pem] --no-verify # cluster connect command bash Scripts/install.shPředchozí příkaz získá certifikát ve formátu PEM. Pokud je váš certifikát ve formátu PFX, můžete ho převést pomocí následujícího příkazu. Pokud soubor PFX není chráněný heslem, zadejte parametr Passin jako .
openssl pkcs12 -in cert.pfx -out cert.pem -nodes -passin pass:MyPassword1234!Nezabezpečený cluster
sfctl cluster select --endpoint http://PublicIPorFQDN:19080 # cluster connect command bash Scripts/install.shTím se do clusteru nainstaluje kontejner s Jenkinsem, který můžete monitorovat pomocí Service Fabric Exploreru.
Poznámka
Stažení obrázku Jenkinse do clusteru může trvat několik minut.
V prohlížeči přejděte na
http://PublicIPorFQDN:8081. Najdete tam cestu k počátečnímu heslu správce vyžadovanému k přihlášení.podívejte se na Service Fabric Explorer pro určení uzlu, na kterém je kontejner jenkinse spuštěný. K tomuto uzlu se přihlašuje Secure Shell (SSH).
ssh user@PublicIPorFQDN -p [port]Získejte ID instance kontejneru pomocí příkazu
docker ps -a.Secure Shell (SSH) Přihlaste se ke kontejneru a vložte cestu, která se zobrazila na portálu Jenkinse. Pokud se například na portálu zobrazuje cesta
PATH_TO_INITIAL_ADMIN_PASSWORD, spusťte následující příkazy:docker exec -t -i [first-four-digits-of-container-ID] /bin/bash # This takes you inside Docker shellcat PATH_TO_INITIAL_ADMIN_PASSWORD # This displays the password valueNa stránce Začínáme Jenkinse zvolte možnost vyberte modul plug-in, který chcete nainstalovat, zaškrtněte políčko žádné a klikněte na nainstalovat.
Vytvořte uživatele nebo ho vyberte, chcete-li pokračovat jako správce.
Po nastavení Jenkinse můžete přeskočit k Vytvoření a konfiguraci úlohy Jenkinse.
Nastavení Jenkinse mimo cluster Service Fabric
Jenkinse můžete nastavit uvnitř clusteru Service Fabric nebo mimo něj. Následující části vysvětlují, jak ho nastavit mimo cluster.
Ujistěte se, že je na vašem počítači nainstalovaný Docker tím, že je spuštěný
docker infov terminálu. Výstup označuje, zda je služba Docker spuštěná.Pokud Docker není nainstalovaný, spusťte následující příkazy:
sudo apt-get install wget wget -qO- https://get.docker.io/ | shStáhněte si image kontejneru s Jenkinsem pro Service Fabric:
docker pull rapatchi/jenkins:latest. tato image se dodává s předinstalovaným modulem plug-in Service Fabric jenkinse.Spusťte image kontejneru:
docker run -itd -p 8080:8080 rapatchi/jenkins:latestZískejte ID instance image kontejneru. Pomocí příkazu
docker ps –amůžete vypsat všechny kontejnery Dockeru.Přihlaste se na portál Jenkinse pomocí následujících kroků:
Přihlaste se k prostředí Jenkinse z hostitele. Použijte první čtyři číslice ID kontejneru. Například pokud je ID kontejneru
2d24a73b5964, použijte2d24.docker exec -it [first-four-digits-of-container-ID] /bin/bashV prostředí Jenkinse Získejte heslo správce pro vaši instanci kontejneru:
cat /var/jenkins_home/secrets/initialAdminPasswordPokud se chcete přihlásit k řídicímu panelu Jenkinse, otevřete ve webovém prohlížeči následující adresu URL:
http://<HOST-IP>:8080. K odemknutí Jenkinse použijte heslo z předchozího kroku.(Volitelné.) Po prvním přihlášení můžete vytvořit vlastní uživatelský účet a použít ho pro následující kroky, nebo můžete dál používat účet správce. Pokud vytvoříte uživatele, musíte s tímto uživatelem pokračovat.
nastavte GitHub pro práci s jenkinse pomocí kroků v části generování nového klíče ssh a jeho přidání k agentovi SSH.
Pomocí pokynů z GitHubu vygenerujte klíč SSH a přidejte ho do účtu GitHubu, který je hostitelem úložiště.
Příkazy popsané u předchozího odkazu spusťte v prostředí Jenkins Dockeru (ne na hostiteli).
Pokud se chcete k prostředí Jenkinse přihlásit z hostitele, použijte následující příkaz:
docker exec -t -i [first-four-digits-of-container-ID] /bin/bash
Ujistěte se, že cluster nebo počítač, ve kterém je hostovaná image kontejneru Jenkinse, má veřejnou IP adresu. To umožňuje, aby instance Jenkinse dostávala oznámení z GitHubu.
Až nastavíte Jenkinse, pokračujte k další části a vytvořte a nakonfigurujte úlohu Jenkinse.
Vytvoření a konfigurace úlohy Jenkinse
kroky v této části ukazují, jak nakonfigurovat úlohu jenkinse, která reaguje na změny v úložišti GitHub, načítat změny a sestavuje je. Na konci této části budete přesměrováni na poslední kroky ke konfiguraci úlohy pro nasazení aplikace na základě toho, jestli nasazujete do prostředí pro vývoj/testování nebo do produkčního prostředí.
Na řídicím panelu Jenkinse klikněte na Nová položka.
Zadejte název položky (třeba MyJob). Vyberte free-style project (volný styl projektu) a klikněte na OK.
Otevře se stránka Konfigurace úlohy. (Pokud se chcete dostat na konfiguraci z řídicího panelu Jenkinse, klikněte na úlohu a pak klikněte na Konfigurovat).
na kartě obecné zaškrtněte políčko pro projekt GitHuba zadejte adresu URL projektu GitHub. Tato adresa je hostitelem aplikace Service Fabric v Javě, kterou chcete integrovat s postupy průběžného nasazování a integrace (CI/CD) Jenkinse (např.
https://github.com/{your-github-account}/service-fabric-java-getting-started).Na kartě Správa zdrojového kódu vyberte Git. Zadejte adresu URL úložiště, které je hostitelem aplikace Service Fabric v Javě, kterou chcete integrovat s postupy CI/CD Jenkinse (např.
https://github.com/{your-github-account}/service-fabric-java-getting-started). Můžete také určit, která větev se má sestavit (například/master).nakonfigurujte úložiště GitHub tak, aby komunikovalo s jenkinse:
na stránce úložiště GitHub přejít na Nastaveníintegrace a služby.
vyberte přidat službu, zadejte jenkinsea vyberte modul plug-in jenkinse-GitHub.
Zadejte adresu URL webhooku Jenkinse (ve výchozím nastavení by měla být
http://<PublicIPorFQDN>:8081/github-webhook/). Klikněte na add/update service (Přidat/aktualizovat službu).Do instance Jenkinse se odešle testovací událost. V GitHubu by se měla vedle webhooku zobrazit zelená značka zaškrtnutí a váš projekt se sestaví.
Na kartě aktivační události sestavení v Jenkinse vyberte, kterou možnost sestavení chcete. v tomto příkladu chcete spustit sestavení pokaždé, když dojde k vložení do úložiště, takže vyberte GitHub aktivační událost zavěšení pro cyklické dotazování gitscm polling (. (Dřív se tato možnost nazývala Build when a change is pushed to GitHub (Sestavit při vložení změny metodou Push do GitHubu).
Na kartě sestavení proveďte jednu z následujících akcí v závislosti na tom, zda vytváříte aplikaci Java nebo aplikaci .NET Core:
Pro aplikace Java: V rozevíracím seznamu Přidat krok sestavení vyberte možnost vyvolat skript Gradle. Klikněte na tlačítko Upřesnit. V nabídce Upřesnit zadejte cestu ke skriptu kořenového sestavení pro vaši aplikaci. Sestavení si ze zadané cesty vezme soubor build.gradle a bude pracovat odpovídajícím způsobem. Pro aplikaci ActorCounterje to: .

Pro aplikace .NET Core: V rozevíracím seznamu Přidat krok sestavení vyberte možnost spustit prostředí. V zobrazeném příkazovém řádku musí být adresář nejprve změněn na cestu, kde
build.shje umístěn soubor. Po změně adresáře sebuild.shskript dá spustit, aby se vytvořila aplikace.cd /var/jenkins_home/workspace/[Job Name]/[Path to build.sh] ./build.shNásledující snímek obrazovky ukazuje příklad příkazů, které se používají k vytvoření ukázky služby čítače s názvem úlohy Jenkinse .

pokud chcete nakonfigurovat jenkinse pro nasazení aplikace do clusteru Service Fabric v akcích po sestavení, budete potřebovat umístění certifikátu tohoto clusteru v kontejneru jenkinse. Vyberte jednu z následujících možností v závislosti na tom, jestli je váš kontejner Jenkinse spuštěný uvnitř nebo vně clusteru, a poznamenejte si umístění certifikátu clusteru:
Pro Jenkinse běžící v rámci clusteru: Cestu k certifikátu lze najít pomocí ozvěny hodnoty proměnné prostředí Certificates_JenkinsOnSF_Code_MyCert_PEM v rámci kontejneru.
echo $Certificates_JenkinsOnSF_Code_MyCert_PEMPro Jenkinse spuštěné mimo váš cluster: Pomocí těchto kroků zkopírujte certifikát clusteru do svého kontejneru:
Certifikát musí být ve formátu PEM. Pokud nemáte soubor PEM, můžete ho vytvořit ze souboru PFX certifikátu. Pokud soubor PFX není chráněný heslem, spusťte z hostitele následující příkaz:
openssl pkcs12 -in clustercert.pfx -out clustercert.pem -nodes -passin pass:Pokud je soubor PFX chráněn heslem, zahrňte do
-passinparametru heslo. Například:openssl pkcs12 -in clustercert.pfx -out clustercert.pem -nodes -passin pass:MyPassword1234!Pokud chcete získat ID kontejneru pro svůj kontejner Jenkinse, spusťte
docker psz hostitele.Zkopírujte soubor PEM do svého kontejneru pomocí následujícího příkazu Docker:
docker cp clustercert.pem [first-four-digits-of-container-ID]:/var/jenkins_home
Už skoro jste hotovi! Nechejte úlohu Jenkinse otevřenou. jediným zbývajícím úkolem je nakonfigurovat kroky po sestavení pro nasazení aplikace do clusteru Service Fabric:
- Pokud chcete nasadit prostředí pro vývoj nebo testování, postupujte podle kroků v části Konfigurace nasazení pomocí koncového bodu správy clusteru.
- Při nasazení do produkčního prostředí postupujte podle kroků v části Konfigurace nasazení pomocí přihlašovacích údajů Azure.
Konfigurace nasazení pomocí koncového bodu správy clusterů
Pro vývojová a testovací prostředí můžete aplikaci nasadit pomocí koncového bodu správy clusteru. Konfigurace akce po sestavení pomocí koncového bodu správy clusteru pro nasazení aplikace vyžaduje nejmenší množství nastavení. pokud nasazujete do provozního prostředí, přeskočte před konfigurací nasazení pomocí přihlašovacích údajů Azure ke konfiguraci Azure Active Directory instančního objektu, který se má použít při nasazení.
V úloze Jenkinse klikněte na kartu akce po sestavení .
V rozevírací nabídce Post-Build Actions (Akce po sestavení) vyberte Deploy Service Fabric Project (Nasazení projektu Service Fabric).
v části Service Fabric konfigurace clusteruzaškrtněte políčko vyplnit přepínač koncového bodu správy Service Fabric .
V části hostitel pro správuZadejte koncový bod připojení pro váš cluster. například .
V případě klientského klíče a certifikátu klientazadejte umístění souboru PEM do kontejneru Jenkinse; například . (Zkopírovali jste umístění certifikátu v posledním kroku Vytvoření a konfigurace úlohy Jenkinse.)
V části Konfigurace aplikacenakonfigurujte název aplikace, Typ aplikacea (relativní) cestu k polím manifestu aplikace .

Klikněte na ověřit konfiguraci. Po úspěšném ověření klikněte na Uložit. Váš kanál úlohy Jenkinse je teď plně nakonfigurovaný. Přeskočte dopředu k dalším krokům otestujete nasazení.
Konfigurace nasazení pomocí přihlašovacích údajů Azure
Pro produkční prostředí se doporučuje nakonfigurovat přihlašovací údaje Azure pro nasazení vaší aplikace. v této části se dozvíte, jak nakonfigurovat Azure Active Directory instančního objektu pro použití k nasazení aplikace v akci po sestavení. K rolím v adresáři můžete přiřadit instanční objekty, abyste omezili oprávnění úlohy Jenkinse.
Pro vývojová a testovací prostředí můžete pro nasazení aplikace nakonfigurovat buď přihlašovací údaje Azure, nebo koncový bod správy clusteru. Podrobnosti o tom, jak nakonfigurovat koncový bod pro správu clusteru, najdete v tématu Konfigurace nasazení pomocí koncového bodu správy clusteru.
pokud chcete vytvořit objekt služby Azure Active Directory a přiřadit mu oprávnění k vašemu předplatnému Azure, postupujte podle kroků v části použití portálu k vytvoření Azure Active Directory aplikace a instančního objektu. Věnujte pozornost následujícímu:
- Při provádění kroků v tématu Nezapomeňte zkopírovat a uložit následující hodnoty: ID aplikace, klíč aplikace, ID adresáře (ID tenanta)a ID předplatného. Budete je potřebovat ke konfiguraci přihlašovacích údajů Azure v Jenkinse.
- Pokud ve svém adresáři nemáte požadovaná oprávnění , musíte požádat správce, aby vám udělil oprávnění nebo vytvořil instanční objekt, nebo musíte nakonfigurovat koncový bod správy pro váš cluster v akcích po sestavení pro vaši úlohu v Jenkinse.
- v části vytvoření aplikace Azure Active Directory můžete pro přihlašovací adresu urlzadat libovolnou dobře formátovanou adresu url.
- V části přiřazení aplikace k roli můžete aplikaci přiřadit k roli Čtenář ve skupině prostředků pro váš cluster.
Zpátky v úloze Jenkinse klikněte na kartu akce po sestavení .
V rozevírací nabídce Post-Build Actions (Akce po sestavení) vyberte Deploy Service Fabric Project (Nasazení projektu Service Fabric).
v části Service Fabric konfigurace clusteruklikněte na vybrat cluster Service Fabric. Klikněte na Přidat vedle přihlašovacích údajů Azure. Klikněte na Jenkinse a vyberte poskytovatele přihlašovacích údajů Jenkinse.
ve zprostředkovateli pověření jenkinse vyberte v rozevíracím seznamu druhMicrosoft Azure instanční objekt .
Použijte hodnoty, které jste uložili při nastavování instančního objektu v kroku 1 pro nastavení následujících polí:
- ID klienta: ID aplikace
- Tajný kód klienta: klíč aplikace
- ID tenanta: ID adresáře
- ID předplatného: ID předplatného
Zadejte popisné ID , které použijete k výběru přihlašovacích údajů v Jenkinse a krátkého popisu. Pak klikněte na ověřit instanční objekt. Pokud je ověření úspěšné, klikněte na tlačítko Přidat.

v části Service Fabric konfigurace clusteruse ujistěte, že je vybrané nové přihlašovací údaje pro přihlašovací údaje Azure.
V rozevíracím seznamu Skupina prostředků vyberte skupinu prostředků clusteru, do kterého chcete aplikaci nasadit.
V Service Fabric vyberte cluster, do kterého chcete aplikaci nasadit.
Jako Klíč klienta a Klientský certifikátzadejte umístění souboru PEM v kontejneru Jenkinse. Příklad:
/var/jenkins_home/clustercert.pem.V části Konfiguraceaplikace nakonfigurujte pole Název aplikace, Typ aplikacea (relativní) cesta k manifestu aplikace.

Klikněte na Verify Configuration (Ověřit konfiguraci). Po úspěšném ověření klikněte na Uložit. Kanál úlohy Jenkinse je teď plně nakonfigurovaný. Pokračujte k části Další kroky a otestujte nasazení.
Řešení potíží s plug-inem Jenkinse
Pokud u modulu plug-in Jenkinse narazíte na nějaké chyby, založte problém v jira Jenkinse pro konkrétní komponentu.
Nápady, které si můžete vyzkoušet
GitHub a Jenkins jsou teď nakonfigurované. Zvažte provedení nějaké ukázkové změny reliable-services-actor-sample/Actors/ActorCounter v projektu ve forku úložiště https://github.com/Azure-Samples/service-fabric-java-getting-started . Nasa vašimi změnami do vzdálené master větve (nebo jakékoli větve, kterou jste nakonfigurovali pro práci). Tím se aktivuje nakonfigurovaná úloha Jenkinse MyJob. Načte změny z GitHub, sestaví je a nasadí aplikaci do clusteru, který jste zadali v akcích po sestavení.