3.4 Git - OpenShift
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"
- Luo ssh-avain deploymentia varten
- 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.
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:
Buildconfigin käyttämä webhook näkyy myös buildconfig.yaml tiedostossa:
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ä
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
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)