Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Beskrivning för att skapa en ny pipeline för en spring boot mikrotjänst som deployas i openshift, genom att nyttja den gemensama pipeline som finns för utvecklingsfabriken.

Skapa nytt repo

  1. Lägg till en nytt repository med tjänsten namn här https://gitlab.sundsvall.se/argocd/api-services

  2. Lägg till två brancher, test (default) och prod. Dessa kommer användas för att separera vad som ska deployas i test och vad som ska deployas i produktion

  3. Lägg till en .gitignore:

    /charts
    *.tgz
    *.lock
  4. Skapa två kataloger i roten, deployment och pipeline. pipeline kommer innehålla definitionen för mikrotjänstens pipeline. deployment kommer innehålla definitionen för hur mikrotjänsten ska deployas.

Lägg till pipeline chart

För att lägga till en pipeline behövs en ny chart i pipeline katalogen. I sin enklaste form behövs två filer Chart.yaml och values.yaml

Exempel Chart.yaml:

apiVersion: v2
name: <service>-pipeline
description: A Tekton Helm chart for <service>

type: application
version: 0.1.0

dependencies:
  - name: spring-boot-pipeline
    version: ^0.2.*
    repository: http://nexus.sundsvall.se/repository/sundsvall-helm/

Denna service pipeline chart tar som dependency in den gemensamma charten spring-boot-pipeline som innehåller definitionen av pipelinen. För senaste version kolla i nexus.

Exempel values.yaml:

spring-boot-pipeline: 
  applicationName: <service>
  imageRepository: evil.sundsvall.se/utvecklingsfabriken
  namespace: pipelines-utvecklingsfabriken

  github:
    url: git@github.com:Sundsvallskommun/<path to service>.git
  gitlab:
    url: git@gitlab.sundsvall.se:argocd/api-services/<path to service>.git

Verifiering kan göras med hjälp av Helm. Detta kräver Helm CLI och att https://nexus.sundsvall.se/repository/sundsvall-helm/ läggs till som repo (Se Helm Repo Add).

user@computer ~/repos/argocd/api-services/service/pipeline $ helm template --dependency-update .

Lägg till deployment chart

Skapa en ny chart i deployment katalogen. I sin enklaste form behövs två filer Chart.yaml och values.yaml.

Exempel Chart.yaml:

apiVersion: v2
name: api-<service>
description: A Helm chart for simulator service

type: application
version: 0.1.0

dependencies:
  - name: spring-boot-chart
    version: ^0.1.*
    repository: http://nexus.sundsvall.se/repository/sundsvall-helm/

Exempel values.yaml:

spring-boot-chart:
  appName: <service>
  appVersion: "1.0"
  namespace: unmasked-test

  replicaCount: 1

  image:
    repository: "evil.sundsvall.se/utvecklingsfabriken"
    tag: "none"

Note: appName bör matcha spring-boot-pipeline.applicationName som sattes i pipeline charten. Alternativt sätt image.nameOverride till att matcha spring-boot-pipeline.applicationName.

Verifiering kan göras med hjälp av Helm. Detta kräver Helm CLI och att https://nexus.sundsvall.se/repository/sundsvall-helm/ läggs till som repo (Se Helm Repo Add).

user@computer ~/repos/argocd/api-services/service/deployment $ helm template --dependency-update .

Lägg till bevakning av repo i Argo CD

  1. Logga in i Argo CD på test klustret (länk till sub page för Argo) och gå till Repositories

  2. Klicka på “CONNECT REPO USING SSH”. Fyll i “Name” och “Repository URL” och klicka på “CONNECT”

  3. Klicka på “Create application”. (Detta kommer göras två gånger. En för pipeline och en för deployment)

  4. Sätt “Application Name” (pipeline suffixas med “-pipeline”)

  5. Sätt “Project Name” (TODO, skapa fler projekt, sätt default tillsvidare)

  6. Sätt “Revision” till test (kan sättas till annat, men det är default i spring-boot-pipeline chart)

  7. Sätt “Path” till pipeline för pipeline applikationen eller deployment för deployment av mikrotjänst

  8. Sätt “Cluster URL” till https://kubernetes.default.svc (deployment samma kluster som Argo CD kör i)

  9. Kryssa i “DIRECTORY RECURSE”

  10. Klicka “CREATE”

När detta är gjort för både pipeline och deployment kan respektive manifest synkas.

Nu bevakar Argo CD två applikationer. En för pipeline och en för deployment. Hamnar något i osynk mellan klustret och gitlab repot kommer syns detta i Argo CD. Man kan också välja att låta Argo CD synka automatiskt och på så vis slippa synka manuellt.

För produktions klustret sätts endast en applikation upp i Argo CD. Denna applikation ska peka på deployment med branch prod. Bygge av image sker alltså bara en gång per commit och promotas sedan till varje miljö.

Lägg till webhook i github.com

Gå till tjänsten repository → Settings → Webhooks → Add webhook

TODO: Lägg till info när proxy för webooks är klar.

  • No labels