This guide is for operators who install and run the Dataspace Management of an onboarding service provider (OSP) (TRG 1.06). The installation itself is described in INSTALL.md; all values of the Helm chart are listed in the chart README.
| Component | Image | Port | Health |
|---|---|---|---|
| Dataspace Management Service | tractusx/dataspace-mgm-service |
8000 | GET /health → {"status": "UP", ...} |
| Dataspace Management UI | tractusx/dataspace-mgm-ui |
8080 | GET / |
Both containers run as non-root users with a read-only root file system; /tmp is an emptyDir volume.
With the default values, the chart starts a demo installation: OSP A of the hackathon scenario with the in-memory
Portal IAM, the built-in CSP stand-in and test doubles (backend.testTools=true). Never expose a demo installation to the
internet.
For an operated installation:
portal-core.backend:
testTools: false
baseUrl: https://api.osp.example.org
iam:
url: https://iam.osp.example.org/auth
realm: CX-Central
csp:
url: https://core.csp.example.org
installation:
enabled: true
settings:
ospId: "<ospId from the trust list of the CSP>"
ospName: "OSP Example"
ospCompanyId: "<companyId of the company that owns the OSP>"
dataspace:
memberOf: "Catena-X"
name: "Catena-X"
masterDataFile: "/app/config/master-data.json"
secret:
existingSecret: dataspace-mgm-backend
signingKey:
existingSecret: dataspace-mgm-signing-key
ingress:
enabled: true
hosts:
- host: api.osp.example.org
paths:
- path: /
pathType: Prefix
tls:
- secretName: api-osp-tls
hosts:
- api.osp.example.org
frontend:
config:
environment: prod
ingress:
enabled: true
hosts:
- host: portal.osp.example.org
paths:
- path: /
pathType: Prefix
tls:
- secretName: portal-osp-tls
hosts:
- portal.osp.example.org
UI and API must share the same registrable domain (session cookie SameSite=Lax), and the API must allow the origin of
the UI in CORS with credentials.
Never put secrets into a committed values file. Create them in the namespace before the installation:
kubectl create secret generic dataspace-mgm-backend \
--from-literal=SERVICE_CLIENT_SECRET='<client secret of the service accounts svc-<module>>'
kubectl create secret generic dataspace-mgm-signing-key \
--from-file=osp-signing-key.json=./osp-signing-key.json
| Secret | Key | Used for |
|---|---|---|
backend.secret.existingSecret |
SERVICE_CLIENT_SECRET |
Tokens of the service accounts svc-<module> in the Portal IAM |
backend.signingKey.existingSecret |
backend.signingKey.key |
private_key_jwt towards the CSP (C3-M2), mounted at /app/secrets |
The chart sets the following environment variables of the service; further configuration variables of the modules
(section 4 of each module specification, e.g. ISSUER_MODE, ISSUER_ROUTES, MODULE_URLS) are set with backend.env.
| Variable | Chart value | Meaning |
|---|---|---|
BASE_URL |
backend.baseUrl |
Public address of the installation |
TEST_TOOLS |
backend.testTools |
Starts the test tools (demo only) |
IAM_URL, IAM_REALM, IAM_ISSUER |
backend.iam.* |
Portal IAM of the installation |
CSP_URL |
backend.csp.url |
Core services of the CSP; empty: built-in stand-in |
SETTINGS_FILE |
backend.installation.* |
Installation settings (FRAMEWORK 4.8) |
OSP_SIGNING_KEY_FILE |
backend.signingKey.* |
Signing key of the OSP |
SERVICE_CLIENT_SECRET |
backend.secret.* |
Client secret of the service accounts |
The UI reads its runtime configuration from /config.json (frontend.config.apiBaseUrl, frontend.config.environment),
so the same image runs in every environment.
helm test <release> checks the
backend health endpoint and the configuration of the UI.backend.resources and frontend.resources.helm repo update
helm upgrade dataspace-mgm tractusx-dev/dataspace-mgm --namespace dataspace-mgm -f my-values.yaml
Read the CHANGELOG before an upgrade. The last three minor versions of the chart are supported (TRG 5.10). As long as the data is kept in memory, an upgrade restarts the installation with empty data.
helm uninstall dataspace-mgm --namespace dataspace-mgm
This work is licensed under the CC-BY-4.0.