Skip to content

Latest commit

 

History

History
199 lines (142 loc) · 3.89 KB

installation_openshift.md

File metadata and controls

199 lines (142 loc) · 3.89 KB

Installation auf Openshift

Vorgehen

Projekt aufsetzen

Projekt festlegen

openshift_user=<user>
project=pitc-decidim-zuerich-int
cluster=<openshift cluster>

In Cluster einloggen

oc login $cluster -u $openshift_user

Projekt anlegen

oc new-project $project

Benötigte User berechtigen

oc policy add-role-to-user admin <user>
...

Decidim-Zuerich-Configmanagement clonen

git clone [email protected]:pitc_ruby/decidim-zuerich-configmanagement.git
cd decidim-zuerich-configmanagement
cm_path=${pwd}

Wenn nötig im Projektoverlay persistence.yaml anpassen (Standardmässig sind alle PVs 1 GiB gross).

Dann overlay testen

kustomize build overlays/$project | tail # Failt bei Problemen

Und committen:

git add overlays/$project
git status
git commit -m "Add overlay $project"
git push

Im Binkli-Repo

binkli_path=$(pwd)
git pull

Umgebungs-YAML im Ordner projects gemäss der Ausgabe der folgenden Anweisung anpassen:

cat projects/puzzletime/puzzle/integration.yml |\
  sed "s/pitc-puzzletime-int/$project/g; /^#/d" |\
  sed '1d'

Projekt aufsetzen

bin/cli stages | grep decidim-zuerich # Richtige umgebung kopieren (ganze Zeile)
stage='<stage>' # <stage> mit Umgebung ersetzen

oc login https://ose3-master.puzzle.ch:8443 -u $openshift_user
bin/cli pull_secrets $stage

oc login https://openshift.puzzle.ch -u $openshift_user
bin/cli create $stage
 
git add projects
git commit -m "Make $project a light project"
git push

Wieder ins Konfigmanagement-Repo wechseln. Dort die OpenShift-Konfiguration einspielen

cd $cm_path
bin/apply_config $project

Im ingress.yml das Zertifikat mit folgendem ersetzen.

oc get secrets certificate-ca -o json | jq -r '.data["tls.crt"]' | base64 -d 

Dann nochmals prüfen und anwenden

kustomize build overlays/$project | tail # Failt bei Problemen
git add overlays/$project
git status
git commit -m "Modify ingress certificate"
git push
bin/apply_config $project

Warten, bis die Images importiert werden (Tags sind sichtbar)

watch 'oc get is; oc get pods'

DB

Image taggen, damit DBs raufkommen

oc get is -o name -l used-in-deployment=true |\
    cut -d '/' -f 2 |\
    grep postgresql |\
    xargs -n 1 -I % oc tag %:latest %:release

Warten bis DB pod läuft

Auf neuem Cluster

pod=$(oc get pod -o name | grep -P 'postgresql-(?!backup)' | cut -d / -f 2)
oc rsh $pod
psql
CREATE database "decidim_zuerich_production";
\c decidim_zuerich_production
CREATE EXTENSION IF NOT EXISTS "ltree";
CREATE EXTENSION IF NOT EXISTS "pg_trgm";
\q
exit

Umgebung starten

Images taggen, damit Rails raufkommt

oc get is -o name -l used-in-deployment=true |\
    cut -d '/' -f 2 |\
    xargs -n 1 -I % oc tag %:latest %:release

Auf Pods warten:

oc get pod -w

URL ausgeben, ansurfen und profitieren:

echo "https://$(oc get route rails -o json | jq -r .spec.host)"

Jenkins Zugriff auf das OpenShift-Projekt geben

Damit Jenkins OpenShift steuern kann, muss ein entsprechendes Token in den Credentials hinterlegt werden.

Nach dem Aufsetzen des Projekts findet man das Token mittels

oc get secret | grep jenkins-token | tail -n 1 | cut -f 1 -d' ' |\
  xargs oc get secret -o json  |\
  jq -r .data.token |\
  base64 -d |\
  xargs echo

Den ausgegebenen Wert kopieren.

Danach in Jenkins ein neues Secret erstellen (siehe unten) oder das bestehende editieren.

  • Add Credentials klicken
  • Ausfüllen
    • Kind: Username with password
    • Username: leer
    • Password: Kopiertes Token von oben
    • Id: <Openshift-Projektname>_ose_token
    • Description: Wie Id

DNS-Einträge anpassen

Bei der DNS Verwaltung müssen die Einträge angepasst/erstellt werden.