Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

När du har utvecklat en applikation och är redo att driftsätta denna i sandbox, test eller produktion så beskrivs de nödvändiga stegen du behöver göra här.

Docker-compose

Vi konfigurerar våra applikationer med docker-compose. Dessa filer ska ligga på servern där applikationen körs.

Konto till SAAS728 (test & sandbox) och SAAS021 (produktion) beställs av Mario Mancilla (Unlicensed)

...

Table of Contents

Övergripande beskrivning

Jenkins körs lokalt i en docker-container på SAAS728, nåbar på http://saas728.sundsvall.se:8080 .

I Jenkins finns pipelines som lyssnar varrannan minut efter förändringar i varje repository.

Autentiseringen mot GitHub sker genom en lösenords-credential: “api-support-jenkins-token”.
Autentisering mot GitLab sker med ssh-credential: “gitlab-ssh”.

Har en förändring skett i det repot på den angivna branchen kommer pipelinen starta. Samtliga pipelines bygger koden som en docker image och startar containern med hjälp av docker-compose.
Som det ser ut nu så ligger dockerfile i applikationens repository och docker-compose ligger på servern på sökvägen: /srv/docker/docker-compose/<namn på applikation>

Det är en Jenkins Agent installerad på saas728 i den lägger sig alla git pull som görs när ett jobb triggas. Filerna kan nås i denna mappen under workspaces: /srv/docker/docker-compose/jenkins/jenkins

Jenkins Agenten är en java jar fil som körs som en systemd service
För status kör: sudo systemctl status jenkins

Tanken är att vi kör CI/CD mot testmiljön men mot produktionsmiljön så gör vi ett manuellt steg där vi måste gå in och starta bygget manuellt.

Planerat arbete

  • Lagra våra docker images i ett Nexus-repo istället för lokalt på servern.

  • Använda Jenkinsfiles istället för att bygga pipelines i GUI’t.

    • Detta är beroende av att vi kan uppdatera plugins i Jenkins. Vi väntar på en proxy-beställning.

Docker-compose

VIKTIGT! Tänk på följande när du konfigurerar din docker-compose:

  • Använd en unik port (se vilka som används med kommandot “docker ps”)

  • Använd ett unikt namn på containern (container_name: <namn på applikationen>-<sandbox/test/production>)

  • Använd “network_mode: bridge”

  • Skicka loggar till Graylog. Se exempel nedan.

Exempel på avskalad docker-compose:

Code Block

Jenkins

...

version: '2'
services:
  ms-casemanagementservice-test:
    container_name: ms-casemanagementservice-test
    logging:
      driver: "syslog"
      options:
        syslog-address: "udp://172.16.254.6:5140"
        tag: "ms-casemanagementservice-test"
    restart: always
    network_mode: bridge
    image: ms-casemanagementservice:test
    ports:
      - 8715:9090
    environment:
      SUNDSVALLS_KOMMUN_INTERNAL_ORIGIN: "https://api-i-test.sundsvall.se"
      SUNDSVALLS_KOMMUN_EXTERNAL_ORIGIN: "https://api-test.sundsvall.se"
      SUNDSVALLS_KOMMUN_CONSUMER_KEY: ""
      SUNDSVALLS_KOMMUN_CONSUMER_SECRET: ""
​
      DB_USERNAME: "dbcasemanagement"
      DB_PWD: ""
      DB_URL: "jdbc:mariadb://saas728.sundsvall.se:3306/ms-casemanagement"
      DB_HIBERNATE_GENERATION: "none"

Jenkins

Sätt upp en Jenkins-pipeline för att kunna köra bygget. Idag konfigurerar vi våra pipelines i Jenkins-GUI’t i väntan på att vi ska få till en proxy mot Jenkins update center.

Du kan sätta Sätt upp en pipeline för varje instans (sandbox, test och produktion) av applikationen. Här visas sandbox som exempel.

  1. Logga in i VPN klienten (Cisco AnyConnect) och surfa sedan in på Jenkins: http://saas728.sundsvall.se:8080/

  2. Klicka på “Skapa nytt Item” uppe till vänster

  3. Ange ett namn på pipelinen med formatet <applikationsnamn> - <instans>. T.ex. DemoApplication - Sandbox

  4. Längst ned - Välj att kopiera från en befintlig pipeline:

  5. Verifiera att rätt label används (maskinen det ska byggas på).
    För produktion gäller SAAS021. För test och sandbox gäller SAAS728.

  6. Credentials som ska användas till alla Github-repos är:

    Image RemovedImage Added

  7. Se till så att användaren “api-support-jenkins” har behörighet till ditt Github-repo.

  8. Under “Bygge” behöver du byta ut namn och sökvägar till det som stämmer för din applikation:

  9. När du har kontrollerat att allt stämmer så kan du skrolla längst ned och klicka “Apply” för att spara din pipeline.

  10. Nu kan du antingen starta din pipeline manuellt eller så startas din pipeline automatiskt beroende på om du angett någon “Build trigger”.

Exponera

...

URL

För att det ska gå att komma åt applikationen utifrån så måste applikationen exponeras via en URL. T.ex.

Test: https://microservices-test.sundsvall.se/casemanagementservice/
Sandbox: https://microservices-test.sundsvall.se/sandbox/casemanagementservice/
Produktion: https://microservices.sundsvall.se/casemanagementservice/

För detta krävs konfigurering av HAProxy och det utförs efter en beställning till Mario Mancilla (Unlicensed) .