3.4 Git - OpenShift

Last modified by Xwiki VePa on 2024/02/07 07:38

Yleistä


Tällä sivulla esitellään, miten yliopiston Gitlab-palvelussa ylläpidetty versionhallinta ja OpenShiftiin asennettu projekti synkataan keskenään. Suurin osa tämän sivun ohjeista soveltuu kuitenkin myös esim. Githubissa ylläpidetylle versionhallinnalle.

Erilaisia tapoja koodin asentamiseen OpenShift-projektiin on monia:

  • Buildconfig. Tämän avulla OpenShift osaa pyydettäessä hakea Dockerfilen sisältävän git-repon, rakentaa imagen ja käynnistää sovelluksesta uuden version.
  • Webhookit, joilla git-versionhallinta komentaa OpenShiftiä käynnistämään buildconfigin, kun uusia committeja ilmestyy esim. johonkin tiettyy git-haaraan.
  • Hienostuneemmat CI/CD-putket kuten Gitlab CI, ArgoCD, FluxCD, Openshift Pipelines, ym.

Buildconfigin luominen

Tämä ohje olettaa, että sinulla on kontitettu sovellus, joka toimii paikallisessa kehitysympäristössäsi, ja jonka lähdekoodi sekä Dockerfile ovat versionallinnassa.

  • Jos versionhallintarepo on salainen:
    • Luo ssh-avain deploymentia varten
       ÄLÄ KÄYTÄ OMIA AVAIMIASI TÄSSÄ – AVAIMEN YKSITYINEN OSA SYÖTETÄÄN KLUSTERIIN PROJEKTIN SALAISUUDEKSI! TEE UUSI AVAIN TÄTÄ JA VAIN TÄTÄ ASIAA VARTEN
      $ ssh-keygen -t rsa -b 4098 -q -N '' -C projekti-deploy -f projekti-deploy
      $ ls projekti-deploy*
      projekti-deploy projekti-deploy.pub
    • Sijoita julkinen avain lukuoikeuksin versionhallintaan deploy keyksi:
      • GitLab: repon sivun sivupalkki → "Settings" →  "Repository" → "Deploy keys" → "Expand" → anna jokin kuvaava nimi, kopioi ja liitä julkisen avaimen sisältö tekstikenttään ja valitse "Add key" 

  • Web-konsoli → Developer perspective → "+Add" → (varmista että olet oikeassa projektissa) → "From Dockerfile" → täytä lomake→ "Create" 
    • "Show advanced git options" -täpän alta löytyy mahdollisuus syöttää SSH-avain salaisuutena ("Source Secret" → "Select Secret Name" → "Create New Secret" → "Auth type" → "SSH Key"). Käytä tätä, jos sovelluksesi versionhallintarepo on salainen.
    • Voit myös määritellä missä kohtaa repoa Dockerfile sijaitsee, mitä git-haaraa käytetään jne.
    • HUOM! Jos käytät ssh-avainta, kopioi git reposi url:n sijaan "clone with ssh" napin alta löytyvä git@<git-tarjoaja> osoite.

Yllä kuvattu ketju luo buildconfigin lisäksi muutakin, esimerkiksi servicen sekä deployment- ja deploymentconfig-olioita. Näitä kaikkia voi muokata jälkeenpäin. Suositeltava tapa on ottaa nyt generoituneet yaml-tekstit talteen ja versionhallintaan. Näitä yamleja kannattaa nyt myös muokata sellaisiksi, että oma sovelluksesi toimii oikein.

Tämän jälkeen voit katsoa web-konsolista tai oc-työkalusta build-prosessin logeja. Jos haluat käynnistää buildin uudestaan (vaikkapa commitoit uuden koodimuutoksen), se onnistuu web-konsolista tai komentoriviltä:

$ oc start-build buildconfiginnimiWebhookitOpenshiftissäWebhookit määritellään Openshiftissä jokaiselle BuildConfig-oliolle. Jos lisäät Web-konsolin kautta sovelluksesi Openshiftiin käyttäen Dockerfilea, on sovellusta lisättäessä automaattisesti täppä tässä kohdassa.

Bc webhook.png


Webhookin tiedot löytyvät: Web-konsoli → Developer perspective -> Topology -> Valitse listasta haluamasi build -> Sivun alalaidassa pitäisi olla Webhook (kuva alla) -> Copy URL with Secret (kopioi tämä itsellesi ylös) Klikkaa myös alaotsikon secret alla olevaa *-generic-webhook-secret (löytyy heti äskeisen kohdan vasemmalta puolelta) ja löydät sivun alalaidasta secretin. (kopioi tämä itsellesi ylös). 


Jos BuildConfig ei sisällä tietoa webhookista, sen voi luoda OC-clientilla:

$ oc describe bc <name> #name on BuildConfigin nimi jolle haluat Webhookin

Buildconfigin käyttämä webhook näkyy myös buildconfig.yaml tiedostossa:

spec: triggers: - type: Generic generic: secretReference: name: api-generic-webhook-secret #kertoo Administrator->Workloads->Secrets tiedoston nimen # jossa on webhook kyseiselle buildille - type: ConfigChange


Gitlabissa

GitLab: repon sivun sivupalkki → "Settings" → "Webhooks"

  • URL Äsken kopiomasi URL with secret
  • Secret token Äsken kopioimasi secret
  • Valitse haluamasi Triggerit (push eventin kohdalla haara, tai jos pipeline on valmis ni sitäki voi käyttää)
  • Laita täppä alalaidan "Enable SSL verification" kohtaan ja add webhook

Alla kuva GitLabin Webhookin lisäämisestä

gitlab_webhook1.png

Webhookkeja voi käyttää myös manuaalisesti saman sivun alalaidasta.

Valitse Test ja dropdown valikosta haluamasi trigger. Oikean webhookin tunnistat katsomalla tummennettuja kohtia:

https://api.ocp-prod-0.k8s.it.helsinki.fi:6443/apis/build.openshift.io/v1/namespaces/projektin_nimi/buildconfigs/buildconfigin_nimi/webhooks/993a44d4125d6482/generic

  • Ensimmäinen tummennettu kohta, test tai prod, kertoo kummasta klusterista on kyse.

Webhookeilla voi tehdä muutakin, tässä Gitlabin oma dokumentaatio asiasta: Webhook events

CI/CD kuten Gitlab CI 


Yhteystietoja

Suositeltu yhteydenottotapa kysymyksiin on:

https://helsinkifi.slack.com #kontit 

Resurssien lisäys/muutospyynnöt kannattaa lähettää sähköpostilla.

grp-openshift-owner@helsinki.fi (alustan ylläpito ja kehitys)

tike-ohjelmistotuotanto@helsinki.fi (sovelluskehitys)