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 git@ssh.gitlab.puzzle.ch: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'
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
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)"
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
Bei der DNS Verwaltung müssen die Einträge angepasst/erstellt werden.