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:

  1. Ujistěte se, že jste nainstalovali požadavky.
  2. Pak postupujte podle kroků v jedné z těchto částí a nastavte Jenkinse:
  3. 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.
  4. 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:

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.

  1. 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 info příkazu. Pokud není nainstalovaný, nainstalujte ho pomocí následujících příkazů:

    sudo apt-get install wget
    wget -qO- https://get.docker.io/ | sh
    

    Pozná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.

  2. Naklonujte aplikaci pomocí následujících příkazů:

    git clone https://github.com/suhuruli/jenkins-container-application.git
    cd jenkins-container-application
    
  3. Zachovat stav kontejneru Jenkinse ve sdílené složce:

    1. Vytvořte účet úložiště Azure ve stejné oblasti jako cluster s názvem, jako je třeba .

    2. V účtu úložiště vytvořte sdílenou složku s názvem, jako je například .

    3. 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.

  4. Aktualizujte zástupné hodnoty ve setupentrypoint.sh skriptu 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/sfjenkins z výstupu připojení v kroku 2 výše.
    • Nahraďte [FILE_SHARE_CONNECT_OPTIONS_STRING] hodnotou vers=3.0,username=sfjenkinsstorage1,password=GB2NPUCQY9LDGeG9Bci5dJV91T6SrA7OxrYBUsFHyueR62viMrC6NIzyQLCKNz0o7pepGfGY+vTa9gxzEtfZHw==,dir_mode=0777,file_mode=0777 z kroku 2 výše.
  5. 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> 
    
  6. 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.sh
    

    Př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.sh
    

    Tí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.

  7. 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í.

  8. 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]
    
  9. Získejte ID instance kontejneru pomocí příkazu docker ps -a.

  10. 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 shell
    
    cat PATH_TO_INITIAL_ADMIN_PASSWORD # This displays the password value
    
  11. Na 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.

  12. 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.

  1. Ujistěte se, že je na vašem počítači nainstalovaný Docker tím, že je spuštěný docker info v terminálu. Výstup označuje, zda je služba Docker spuštěná.

  2. Pokud Docker není nainstalovaný, spusťte následující příkazy:

    sudo apt-get install wget
    wget -qO- https://get.docker.io/ | sh
    
  3. Stá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.

  4. Spusťte image kontejneru: docker run -itd -p 8080:8080 rapatchi/jenkins:latest

  5. Získejte ID instance image kontejneru. Pomocí příkazu docker ps –a můžete vypsat všechny kontejnery Dockeru.

  6. Přihlaste se na portál Jenkinse pomocí následujících kroků:

    1. 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žijte 2d24 .

      docker exec -it [first-four-digits-of-container-ID] /bin/bash
      
    2. V prostředí Jenkinse Získejte heslo správce pro vaši instanci kontejneru:

      cat /var/jenkins_home/secrets/initialAdminPassword
      
    3. Pokud 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.

    4. (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.

  7. 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í.

  1. Na řídicím panelu Jenkinse klikněte na Nová položka.

  2. Zadejte název položky (třeba MyJob). Vyberte free-style project (volný styl projektu) a klikněte na OK.

  3. 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).

  4. 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).

  5. 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 ).

  6. nakonfigurujte úložiště GitHub tak, aby komunikovalo s jenkinse:

    1. na stránce úložiště GitHub přejít na Nastaveníintegrace a služby.

    2. vyberte přidat službu, zadejte jenkinsea vyberte modul plug-in jenkinse-GitHub.

    3. 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).

    4. 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í.

  7. 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).

  8. 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: .

      Akce sestavení v Jenkinsu pro Service Fabric

    • 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.sh je umístěn soubor. Po změně adresáře se build.sh skript dá spustit, aby se vytvořila aplikace.

      cd /var/jenkins_home/workspace/[Job Name]/[Path to build.sh]  
      ./build.sh
      

      Ná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 .

      Příklad příkazů použitých k sestavení služby

  9. 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_PEM
      
    • Pro Jenkinse spuštěné mimo váš cluster: Pomocí těchto kroků zkopírujte certifikát clusteru do svého kontejneru:

      1. 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 -passin parametru heslo. Například:

        openssl pkcs12 -in clustercert.pfx -out clustercert.pem -nodes -passin pass:MyPassword1234!
        
      2. Pokud chcete získat ID kontejneru pro svůj kontejner Jenkinse, spusťte docker ps z hostitele.

      3. 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:

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í.

  1. V úloze Jenkinse klikněte na kartu akce po sestavení .

  2. V rozevírací nabídce Post-Build Actions (Akce po sestavení) vyberte Deploy Service Fabric Project (Nasazení projektu Service Fabric).

  3. v části Service Fabric konfigurace clusteruzaškrtněte políčko vyplnit přepínač koncového bodu správy Service Fabric .

  4. V části hostitel pro správuZadejte koncový bod připojení pro váš cluster. například .

  5. 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.)

  6. V části Konfigurace aplikacenakonfigurujte název aplikace, Typ aplikacea (relativní) cestu k polím manifestu aplikace .

    Service Fabric jenkinse akce po sestavení konfigurace koncového bodu správy

  7. 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.

  1. 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.
  2. Zpátky v úloze Jenkinse klikněte na kartu akce po sestavení .

  3. V rozevírací nabídce Post-Build Actions (Akce po sestavení) vyberte Deploy Service Fabric Project (Nasazení projektu Service Fabric).

  4. 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.

  5. ve zprostředkovateli pověření jenkinse vyberte v rozevíracím seznamu druhMicrosoft Azure instanční objekt .

  6. 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
  7. 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.

    Service Fabric jenkinse zadat přihlašovací údaje Azure

  8. v části Service Fabric konfigurace clusteruse ujistěte, že je vybrané nové přihlašovací údaje pro přihlašovací údaje Azure.

  9. V rozevíracím seznamu Skupina prostředků vyberte skupinu prostředků clusteru, do kterého chcete aplikaci nasadit.

  10. V Service Fabric vyberte cluster, do kterého chcete aplikaci nasadit.

  11. Jako Klíč klienta a Klientský certifikátzadejte umístění souboru PEM v kontejneru Jenkinse. Příklad: /var/jenkins_home/clustercert.pem.

  12. V části Konfiguraceaplikace nakonfigurujte pole Název aplikace, Typ aplikacea (relativní) cesta k manifestu aplikace. Service Fabric akce po sestavení Jenkinse – Konfigurace přihlašovacích údajů Azure

  13. 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í.

Další kroky