Configurations
The instructions here are related to configuration of base settings for PBMS using the Odoo UI
Once all the pods are in Running state we can start interacting with the Odoo UI and configure some base settings.
Prerequisites
Configure Minio Object Store
Navigate to the minio hostname specified during installation. You can find this in your Rancher namespace by navigating to Istio -> Virtual Services, and searching for
minioLogin using credentials from Rancher Storage -> Secrets, search for
minioNavigate to the Buckets section in the Minio UI and click Create Bucket
Choose an appropriate bucket name (example:
documents) and click on Create Bucket
Configure PBMS Document Settings
Navigate to the pbms hostname specified during installation. You can find this in your Rancher namespace by navigating to Istio -> Virtual Services, and searching for
pbms. Login using credentials from Rancher.From the top-left Apps icon, go to Settings -> Technical -> Storage Backend
Create a new storage backend or update existing ones.
Give the record a name (example: Default S3 Document Store)
Select Backend type as Amazon S3
Check the
Is Publicboolean field.Fill the Amazon S3 section using credentials from Rancher and the bucket name created while configuring minio (it is recomended to use internal url on port 9000, example:
http://minio-pbms:9000).Save the record using the top-left odoo save icon.
Configure Keycloak
PBMS delegates all staff (operator) authentication to Keycloak. Keycloak is deployed as part of the commons layer in the same namespace as PBMS, and staff log in through the staff realm.
The chart derives the Keycloak connection from these global keys in values.yaml:
global.keycloakBaseUrl
https://keycloak.<namespace>.openg2p.org
Base URL of the per-namespace Keycloak. The <namespace> segment is resolved from global.namespace (falling back to the install namespace .Release.Namespace). Surfaced in the Rancher form as Keycloak Base URL under General Settings.
global.keycloakRealm
staff
Realm used for staff login. Do not change unless your Keycloak provisions a differently named realm for PBMS operators.
global.keycloakIssuerUrl
<keycloakBaseUrl>/realms/<keycloakRealm>
OIDC issuer URL, templated from the two keys above. Rarely overridden directly.
Steps:
Ensure a Keycloak instance is reachable at
global.keycloakBaseUrland contains a realm named perglobal.keycloakRealm(staffby default).In that realm, provision the staff/operator users (or federate them from your identity provider) and the OIDC client(s) PBMS uses.
If your Keycloak is not on the default
keycloak.<namespace>.openg2p.orghostname, override Keycloak Base URL in the Rancher form during installation.
Configure PBMS Base Settings
Navigate to the pbms hostname specified during installation. You can find this in your Rancher namespace by navigating to Istio -> Virtual Services, and searching for
pbms. Login using credentials from Rancher.From the top-left Apps icon, go to Settings and click on G2P PBMS Settings tab from the left sidebar.
Update the URLs for Background Task API and Bridge API from Rancher -> Istio -> Virtual Services.
Select the pre-configured Document Store from the dropdown.
Configure Keymanager if required (by default Keymanager is toggled off).
External Commons Prerequisites and Install Order
The openg2p-pbms chart does not deploy the shared commons infrastructure. It assumes the following services already exist in the target namespace (typically installed as part of the OpenG2P commons/base layer) and only bundles three dependencies of its own — postgres-init, odoo, and redis (see Chart.yaml).
External prerequisites the chart connects to:
Service
Default installation name (values.yaml key)
Used for
PostgreSQL
commons-postgresql (global.postgresqlHost)
Hosts the PBMS, background-task and registry databases. Its postgres-password is read from the commons-postgresql secret.
Keycloak
keycloak.<namespace>.openg2p.org (global.keycloakBaseUrl)
Staff authentication (staff realm).
MinIO
commons-minio (global.minioInstallationName)
S3 document store, reached in-cluster at http://<minioInstallationName>:9000.
Keymanager
commons-keymanager (global.keymanagerInstallationName / global.keymanagerBaseUrl)
Digital signing of disbursement requests.
commons-mail (global.mailInstallationName)
Outbound email. Surfaced in the Rancher form as Email Service Name.
Social Registry (NSR)
release name registry (global.registryDB etc.)
Beneficiary/registry data read by PBMS.
Install order: deploy the commons layer (PostgreSQL, Keycloak, MinIO, Keymanager, Mail) and the Social Registry (NSR) release before installing openg2p-pbms. The chart's postgres-init init step needs the PostgreSQL server and its commons-postgresql secret to already exist, and the background-task and portal components expect the registry NSR database to be present.
Overriding installation names: the defaults above assume the standard commons release names. When a dependency was installed under a different release name, override the corresponding *InstallationName key (e.g. global.postgresqlHost, global.minioInstallationName, global.keymanagerInstallationName, global.mailInstallationName, global.redisInstallationName) so the derived in-cluster service names resolve correctly. See the Two-Database Model and Social Registry (NSR) Connection sections for overriding the NSR release name.
Namespace-Derived Hostnames
All ingress hostnames are derived from a single environment segment controlled by global.namespace:
global.namespace
"" (empty)
Hostname segment shared by every derived host. When left empty (the usual case) it falls back to the install namespace .Release.Namespace, so it is not asked in the Rancher form. Set it only when the hostname segment must differ from the Kubernetes namespace.
Hostnames that are templated from this segment:
Admin / Odoo UI
hostname
admin-pbms.<namespace>.openg2p.org
Background-task base host
global.g2pPbmsBgTaskHostname
<release>-bg-task.<namespace>.openg2p.org
Staff Portal API
staffPortalApi.hostname
staff-<release>-bg-task.<namespace>.openg2p.org
Bene Portal API
benePortalApi.hostname
bene-<release>-bg-task.<namespace>.openg2p.org
Keycloak
global.keycloakBaseUrl
keycloak.<namespace>.openg2p.org
<release> is the Helm release name (.Release.Name) and <namespace> resolves as described above. The admin hostname can be overridden directly in the Rancher form (Hostname under General Settings); the rest are normally left to derive automatically.
Two-Database Model
PBMS uses two PostgreSQL databases, each provisioned with its own user and secret by the bundled postgres-init dependency (see the postgres-init.databases list in values.yaml):
the PBMS / Odoo database — the main application database, and
the background-task database (
<release>_bgtask) — used by the Celery beat producers, workers and the portal APIs.
Both databases live on the same PostgreSQL server (global.postgresqlHost, default commons-postgresql) but have separate user credentials. The database user secrets are distinct from the PostgreSQL server secret (commons-postgresql / key postgres-password).
PBMS (Odoo) database:
global.pbmsDB
<release>
Database name.
global.pbmsDBUser
<release>_user
Database user.
global.pbmsDBSecret
<release>
Kubernetes secret holding the user password.
global.pbmsDBUserPasswordKey
<release>-db-user
Key within that secret.
Background-task database:
global.pbmsBgTaskDB
<release>_bgtask
Database name.
global.pbmsBgTaskDBUser
<release>_bgtask_user
Database user.
global.pbmsBgTaskDBSecret
<release>-bgtask
Kubernetes secret holding the user password. Note the hyphen — underscores are not valid in Kubernetes secret names.
global.pbmsBgTaskDBUserPasswordKey
<release>-bgtask-db-user
Key within that secret.
<release> is the Helm release name. These defaults are shared consistently across postgres-init, odoo.externalDatabase, and the background-task/portal components, so change them only if you must reuse pre-existing databases — and change all references together.
Social Registry (NSR) Connection
The background-task workers, beat producers, and the Staff Portal API read beneficiary data from the Social Registry (NSR) database. The connection is described by these global keys:
global.registryDB
registry
NSR database name.
global.registryDBUser
registry_user
NSR database user.
global.registryDBSecret
registry
Kubernetes secret holding the NSR user password.
global.registryDBUserPasswordKey
registry-db-user
Key within that secret.
The defaults match what the openg2p-nsr chart provisions when it is installed with the release name registry (its DB, user and secret are all derived from that release name). If NSR was installed under a different release name, override all four keys — they are surfaced in the Rancher form under the Registry group (Registry DB, Registry DB User, Registry DB Secret with User Password, Registry DB Secret Key with User Password).
Portal APIs
PBMS ships two optional API components, toggled independently:
staffPortalApi.enabled
true
Staff-facing portal API. Backed by the background-task and registry databases. Exposed at staff-<release>-bg-task.<namespace>.openg2p.org.
benePortalApi.enabled
false
Beneficiary self-service portal API. Disabled by default. Backed by the PBMS and background-task databases. Exposed at bene-<release>-bg-task.<namespace>.openg2p.org.
Both toggles appear in the Rancher form under the Portal API Settings group.
The Bene Portal API authenticates beneficiaries via eSignet OIDC (rather than the staff Keycloak realm). Its issuer and JWKS defaults point at the per-namespace eSignet instance:
benePortalApi.envVars.COMMON_AUTH_DEFAULT_ISSUERS
["https://esignet.<namespace>.openg2p.org"]
JSON array of accepted OIDC issuers for beneficiary self-service.
benePortalApi.envVars.COMMON_AUTH_DEFAULT_JWKS_URLS
["https://esignet.<namespace>.openg2p.org/v1/esignet/oauth/.well-known/jwks.json"]
JSON array of JWKS URLs used to validate tokens.
Both are editable in the Rancher form (Bene Portal API Default Issuers / Bene Portal API Default JWKS URLs) when benePortalApi.enabled=true. Override them if your eSignet is on a non-standard hostname.
The background-task host also has an OIDC client used for machine-to-machine calls:
global.g2pPbmsBgTaskClientId
openg2p-pbms-bg-task-<namespace>
OIDC client ID for the background-task/portal host.
global.g2pPbmsBgTaskClientSecret
"" (empty)
Client secret — supply it at install time (leave empty only in environments where the client is public/unconfigured).
Background-Task Tuning
The beatProducers and celeryWorkers components drive PBMS background processing (building and dispatching disbursement requests via the G2P Bridge). Their throughput is tuned via envVars:
Beat producers (beatProducers.envVars):
BG_TASK_CELERY_BEAT_PRODUCER_FREQUENCY
20
How often (seconds) the beat producer scans for work.
BG_TASK_CELERY_BEAT_BATCH_SIZE
500
Number of records fetched per batch.
BG_TASK_CELERY_BEAT_NO_OF_TASKS_TO_PROCESS
4
Number of tasks enqueued per run.
Celery workers (celeryWorkers.envVars):
BG_TASK_CELERY_WORKERS_BATCH_SIZE
500
Number of records a worker processes per batch.
BG_TASK_CELERY_WORKERS_G2P_BRIDGE_BASE_URL
http://g2p-bridge-api
In-cluster URL of the G2P Bridge API. Assumes the bridge was installed with release name g2p-bridge in the same namespace (service g2p-bridge-api:80, serving /create_disbursement_envelopes and /create_disbursements at root). Override if the bridge service name or namespace differs.
The frequency and batch-size knobs are exposed in the Rancher form under the Background Task Settings group. Increase batch sizes / task counts for higher throughput on large disbursement runs; lower them to reduce load on PostgreSQL and the Bridge. BG_TASK_CELERY_WORKERS_G2P_BRIDGE_BASE_URL must be corrected whenever the Bridge is not reachable at the default in-cluster address.
Keymanager (Disbursement Signing)
The Celery workers digitally sign disbursement requests through Keymanager. The connection is configured via these global keys (consumed by celeryWorkers and the portal APIs, which reference global.keymanagerInstallationName):
global.keymanagerInstallationName
commons-keymanager
In-cluster service (release) name of Keymanager. Override when installed under a different name.
global.keymanagerBaseUrl
http://commons-keymanager
Base URL the workers call.
global.keymanagerAuthEnabled
'false'
Whether Keymanager requires authentication. Left off by default; set to 'true' and supply the auth URL/client credentials (BG_TASK_CELERY_WORKERS_KEYMANAGER_AUTH_*) when Keymanager is secured.
global.keymanagerG2pPbmsBgTaskAppId
OPENG2P_G2P_PBMS_BG_TASK
Keymanager application ID under which PBMS background-task signing keys are registered.
By default Keymanager auth is disabled and the workers reach it in-cluster over plain HTTP. Point keymanagerBaseUrl / keymanagerInstallationName at your Keymanager release, and enable auth in secured environments.
Odoo Extra Addons
The Odoo core image can pull additional custom addons at container startup:
odoo.extraAddonsUrlsToPull
'' (empty)
Comma-separated git URLs of extra Odoo addons to fetch when the container starts, in the form git://<branch>//<https-repo-url>. Passed through to the container as EXTRA_ADDONS_URLS_TO_PULL. Leave empty for none.
This is surfaced in the Rancher form as Odoo Extra Addons URLs to Pull under Odoo Settings (shown when odoo.enabled=true). Use it to layer site-specific or additional PBMS modules on top of the base openg2p-pbms-core image without rebuilding it.
Last updated
Was this helpful?