Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które...

33
Tech Space #1 DevOps

Transcript of Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które...

Page 1: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Tech  Space  #1DevOps

Page 2: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

2004 1200 1  000  000

Start  projektu Liczba pluginów Użytkowników naświecie

Tech  Space  #1 01/12/2016 2

Page 3: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins  najważniejsze narzędzie w  projekcie,  które

ewoluuje razem z  nimArtur  Senk

Senior  WebOps Engineer  /  Kainos Evolve14/11/2016

Page 4: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• Java  -­‐>  cross-­‐platform

• Automation  server  (budowanie,  testowanie,  CI/CD)

• Open  source  (MIT  License)

• Fork  Hudsona

Ogólne informacje

Tech  Space  #1 01/12/2016 4

Page 5: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsLiczba instalacji (ponad 130k  miesięcznie)

01/12/2016 5Tech  Space  #1

Page 6: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• SSL  (np.  nginx z  przodu jako reverse  proxy)

Podstawy konfiguracji i zabezpieczeń

Tech  Space  #1 01/12/2016 6

Page 7: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsRole  Strategy  Plugin  #1

Tech  Space  #1 01/12/2016 7

Page 8: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsRole  Strategy  Plugin  #2

Tech  Space  #1 01/12/2016 8

Page 9: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• Role  globalne nadpisują projektowe!

• https://wiki.jenkins-­‐ci.org/display/JENKINS/Role+Strategy+Plugin

Role  Strategy  Plugin  #3

Tech  Space  #1 01/12/2016 9

Page 10: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• IP/CIDR  dla odziału firmy• IP/CIDR  dla dostępu przez VPN• CIDR  dla integracji z  GitHubem:  192.30.252.0/22

• Port  443  albo 80  i 443  +  wymuszenie przekierowania na nginx

Firewall  (Security  Groups)  whitelisting

Tech  Space  #1 01/12/2016 10

Page 11: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsChecking  the  firewall  logs  

Tech  Space  #1 01/12/2016 11

http://devopsreactions.tumblr.com

Page 12: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• Warto (Pipeline  as  Code,  Pipeline  Stage  View)

• Kompatybilność wsteczna (naprawdę działa)

• Najpierw backup  lub obraz

Migracja 1.X  -­‐>  2.X

Tech  Space  #1 01/12/2016 12

Page 13: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsProces #1

01/12/2016 13Tech  Space  #1

Page 14: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsProces #2

01/12/2016 14Tech  Space  #1

Page 15: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• https://wiki.jenkins-­‐ci.org/display/JENKINS/GitHub+pull+request+builder+plugin

• Użytkownik GitHub  z  dostępem typu write  do  każdego repo,  podany w  głównejkonfiguracji Jenkinsa

• Projekt w  Jenkinsie,  mogący pobierać kod z  GitHuba

• Refspec:  +refs/pull/*:refs/remotes/origin/pr/*

• Branch  specifier:  ${sha1}

• Webhooki po stronie GitHuba

Integracja z  GitHubem

Tech  Space  #1 01/12/2016 15

Page 16: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• Pozwolenie na kopiowanie artefaktów

• Wskazanie skąd pobrać artefakt

• Joby parametryzowane

• Warunkowe wyzwalanie kolejnych jobów

Integracja pomiędzy jobami

Tech  Space  #1 01/12/2016 16

Page 17: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• Skrypty Gradle

• JUnit

• Docker

Uruchamianie budowania,  testów i innych tasków

Tech  Space  #1 01/12/2016 17

Page 18: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• Repozytorium YUM  i Maven

• Skrypt Gradle podpisuje i wysyła zbudowane RPMki

• Na  docelowych maszynach dodanie kolejnego repozytorium YUM  oraz yum  install

Sonatype Nexus

Tech  Space  #1 01/12/2016 18

Page 19: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• Narzędzie do  zarządzania konfiguracją napisane w  Pythonie,  2011

• Używa ZeroMQ do  komunikacji mastera z  agentami (TCP,  C++,  AES)

• Bardzo elastyczne:  – Master  +  agenty– Tylko agent  (masterless)– Tylko serwer (Salt  SSH)– Podejście imperatywne i deklaratywne

Saltstack

Tech  Space  #1 01/12/2016 19

Page 20: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• SaltMaster:  salt-­‐master  +  salt-­‐api +  kilka linijek w  configu +  użytkownik na maszynie

• Miniony (agenty zainstalowane na docelowych serwerach)

• https://wiki.jenkins-­‐ci.org/display/JENKINS/saltstack-­‐plugin

Integracja z  SaltMasterem

Tech  Space  #1 01/12/2016 20

Page 21: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• Joby mogące tworzyć i usuwać tenanty na konkretnych środowiskach

• Kontrola dostępu

• Wszystko jest  w  jednym miejscu

• Jeszcze więcej pipelinów (profit!)

Testowanie aplikacji multi-­‐tenant

Tech  Space  #1 01/12/2016 21

Page 22: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• Sprawdzenie stanu aplikacji po deploy’u jednego komponentu

• Formuła Saltstack/skrypt bash

• Każdy zespół pracuje nad własnym smoke-­‐testem:– Utwórz tenanta z  odpowiednią konfiguracją– Zrób testy– Usuń tenanta

Smoke  tests

Tech  Space  #1 01/12/2016 22

Page 23: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsEwolucja projektu

Tech  Space  #1 01/12/2016 23

• Od  jednego Opsa do  dziesięciu

• Wybrany dostawca chmury -­‐ AWS

• Kilkukrotny wzrost liczby devów

• Nowe podejście do  zarządzania serwerami – immutable

• Kod Saltstacka przepisany w  nowej konwencji (podział na role)

• W  trakcie pełnej adopcji Jenkinsa 2.0  (DSL,  Groovy,  użycie nowych pipeline’ów)

• Kilka Jenkinsów zamiast jednego

Page 24: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsEwolucja pipeline’ów

Tech  Space  #1 01/12/2016 24

• Znika Saltmaster

• Kod Saltowy używany tylko w  czasie budowania obrazów (AMI)  Packerem

• Terraform  zarządzający całą infrastrukturą

• Blue/green  deployment

Page 25: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsTip  #1  – H  jak Hash

Tech  Space  #1 01/12/2016 25

• */15  *  *  *  *   (co  15  minut:  :00,  :15,  :30,  :45)

• H/15  *  *  *  *    (co  15  minut,  np:  :07,  :22,  :37,  :52)

Page 26: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

• https://wiki.jenkins-­‐ci.org/display/JENKINS/Parameterized+Remote+Trigger+Plugin

Tip  #2  – Jenkins  do  Jenkinsa

Tech  Space  #1 01/12/2016 26

Page 27: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsTip  #2  – Jenkins  do  Jenkinsa cd.

Tech  Space  #1 01/12/2016 27

Page 28: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsTip  #3  – podgląd zmian w  konfiguracjach

Tech  Space  #1 01/12/2016 28

• https://wiki.jenkins-­‐ci.org/display/JENKINS/JobConfigHistory+Plugin

Page 29: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsTip  #4  – Monitor  na monitorze

Tech  Space  #1 01/12/2016 29

• https://wiki.jenkins-­‐ci.org/display/JENKINS/Build+Monitor+Plugin

Page 30: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

JenkinsTip  #5  – Bruce  i Chuck

Tech  Space  #1 01/12/2016 30

Page 31: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Jenkins

Tech  Space  #1 01/12/2016 31

CI  running  the  automated  tests

http://devopsreactions.tumblr.com

Page 32: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

Pytania?

Page 33: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim

DZIĘKI!

Tech  Space  #1DevOps