infra-docs-fpo/modules/sysadmin_guide/pages/fpdc.adoc
2021-07-26 10:39:47 +02:00

100 lines
2.9 KiB
Text

= FPDC SOP
Fedora Product Definition Center is a service that aims to replace
https://pdc.fedoraproject.org/[PDC] in Fedora. It is meant to be a
database with REST API access used to store data needed by other
services.
== Contact Information
Owner::
Infrastructure Team
Contact::
#fedora-apps, #fedora-admin
Persons::
cverna, abompard
Location::
Phoenix (Openshift)
Public addresses::
* fpdc.fedoraproject.org
* fpdc.stg.fedoraproject.org
Servers::
* os.fedoraproject.org
* os.stg.fedoraproject.org
Purpose::
Centralize metadata and facilitate access.
== Systems
FPDC is built using the DJANGO REST FRAMEWORK and uses a POSTGRESQL
database to store the metadata. The application is run on Openshift and
uses the Source-to-image technology to build the container directly from
the https://github.com/fedora-infra/fpdc[git repository].
In the staging and production environments, the application is
automatically rebuilt for every new commit in the [.title-ref]#staging#
or [.title-ref]#production# branch, this is achieved by configuring a
github webhook's to trigger an openshift deployment.
For example a new deployment to staging would look like that:
____
git clone git@github.com:fedora-infra/fpdc.git cd fpdc git checkout
staging git rebase master git push origin staging
____
The initial Openshift project deployment is manual and is done using the
following ansible playbook :
....
sudo rbac-playbook openshift-apps/fpdc.yml
....
This will create a new fpdc project in Openshift with all the needed
configuration.
== Logs
Logs can be retrive using the openshift command line:
....
$ oc login os-master01.phx2.fedoraproject.org
You must obtain an API token by visiting https://os.fedoraproject.org/oauth/token/request
$ oc login os-master01.phx2.fedoraproject.org --token=<Your token here>
$ oc -n fpdc get pods
fpdc-28-bfj52 1/1 Running 522 28d
$ oc logs fpdc-28-bfj52
....
== Database migrations
FPDC uses the [.title-ref]#recreate# deployment configuration of
openshift, which means that openshift will bring down the pods currently
running and recreate new ones with the new version of the application.
In the phase between the pods being down and the new pods being up, the
database migrations are run in an independent pod.
== Things that could go wrong
Hopefully not much. If something goes wrong is it currently advised to
kill the pods to trigger a fresh deployment. :
....
$ oc login os-master01.phx2.fedoraproject.org
You must obtain an API token by visiting https://os.fedoraproject.org/oauth/token/request
$ oc login os-master01.phx2.fedoraproject.org --token=<Your token here>
$ oc -n fpdc get pods
fpdc-28-bfj52 1/1 Running 522 28d
$ oc delete pod fpdc-28-bfj52
....
It is also possible to rollback to a previous version :
....
$ oc -n fpdc get dc
NAME REVISION DESIRED CURRENT TRIGGERED BY
fpdc 39 1 1 config,image(fpdc:latest)
$ oc -n fpdc rollback fpdc
....