Configure the deployment
Editing the deploy script
Configure the database
Packaged or external database
Production requirements
Hardening checks before launch
Troubleshooting
Fixing common deployment issues
Testing environments onlyThe configuration supplied with the GermainUX OpenShift distribution is intended for development, evaluation, and testing. It is not a production reference architecture. Production deployments require environment-specific sizing, high availability, persistent storage, security, monitoring, backup, and disaster-recovery planning.
Requirements
Before starting, confirm that you have:- A supported OpenShift cluster
- Access to create resources in the target OpenShift project
- The OpenShift CLI (
oc) kubectl, if required by the supplied scripts- A default or explicitly configured StorageClass
- Access to the GermainUX container images
Show all 9
Show all 9
- A valid GermainUX license
- Network connectivity to any external database, SMTP server, identity provider, or datastore
- Sufficient permissions to create Routes, Services, ConfigMaps, Secrets, workloads, and persistent-volume claims
Example lab capacity
The original GermainUX lab environment used:
These are sample lab values—not production requirements. Confirm whether the CPU, memory, and disk values apply per node in your OpenShift environment.
Production sizing must account for
- Number of monitored users and applications
- Telemetry volume
- Data-retention period
- Elasticsearch indexing and query activity
- Kafka throughput
- Database workload
Show all 9
Show all 9
- Replication and high availability
- JVM heap requirements
- Expected growth
Obtain the GermainUX package
Download the OpenShift deployment package provided for your licensed GermainUX release and extract it:Connect to OpenShift
Sign in using your organization’s approved authentication method:Create or select a project
Create a dedicated project when appropriate:Configure the GermainUX license
Locate the license configuration supplied in the extracted package. In packages following the Kubernetes structure, it may be located under:- Commit the license to a public repository.
- Embed it in an unprotected container image.
- Include it in logs.
- Store an unencrypted copy in a ConfigMap.
Configure the deployment
Open:Messaging compatibility
GermainUX 2024.2 and later uses Kafka. ActiveMQ applies only to earlier releases. For GermainUX 2024.2 or later:- Configure the approved Kafka version.
- Do not deploy ActiveMQ unless Germain Support explicitly requires it for a compatibility or upgrade scenario.
Environment name
Set a unique environment name:Configure image access
If the images are stored in a private registry, create an image-pull secret:Configure the database
The deployment can use its packaged database resources or an external configuration database.Packaged database
If using the database supplied with the deployment:- Confirm that persistent storage is available.
- Set resource requests and limits.
- Protect the database credentials.
- Verify the StorageClass.
- Configure backups when the environment must be retained.
External database
When using an external configuration database:- Set the packaged MySQL replica count to
0. Older deployment packages may use:mysqlReplicase=0Use the exact variable name found in yourdeploy-germain.shfile. - Configure the database host:
germainDbHostname="<database-hostname>" - Update
common.properties:germain.config.url=jdbc:mysql://<database-host>:3306/APMCFG?rewriteBatchedStatements=true germain.config.username=<database-user> germain.config.password=<database-password>
- OpenShift workloads can resolve the database hostname.
- Network policies and firewalls permit the connection.
- The schema exists.
- The account has the required permissions.
- TLS is configured when required.
- Credentials are provided through Secrets where supported.
Configure email
To enable email alerts and reports, update the SMTP settings incommon.properties.
Configure:
- SMTP hostname and port
- Authentication
- Username and password
- Sender address
- TLS or STARTTLS
- Any required certificate trust
Review OpenShift security requirements
OpenShift commonly runs containers with an automatically assigned, non-root user ID. Before deployment, confirm that every GermainUX image can:- Run without a fixed root user
- Write only to approved mounted directories
- Use group-writable files and directories where required
- Operate without privileged mode
- Avoid prohibited Linux capabilities
- Use the default restricted Security Context Constraint when possible
Generate the manifests
Run:germainEnvName.
Review the generated resources before applying them:
- Project or namespace
- Container images and tags
- Image-pull secrets
- Service accounts
- Security contexts
- Resource requests and limits
Show all 14
Show all 14
- Persistent-volume claims
- StorageClass
- ConfigMaps and Secrets
- Services and ports
- Routes
- Health probes
- Replica counts
- Node placement rules
Deploy GermainUX
The generated resources must be applied in this order:1 1. Apply configuration resources
2. Apply infrastructure resources
3. Apply GermainUX resources
kubectl apply instead of oc apply for standard Kubernetes resources, but oc is recommended when working with OpenShift-specific objects such as Routes.
Configure external access
List existing Routes:Access the GermainUX Workspace
The default Workspace path is:Validate the deployment
Check pods
Check services and routes
Check persistent storage
Review pod details and events
Review logs
Production requirements
Before using GermainUX on OpenShift in production, implement:- Resource requests and limits
- Multiple replicas for supported stateless components
- Pod anti-affinity and topology-spread constraints
- Pod disruption budgets
- Suitable persistent storage
- Database and datastore backups
Show all 17
Show all 17
- TLS for external and internal connections
- OpenShift Secrets or an external secret manager
- NetworkPolicies
- Restricted service accounts and RBAC
- Restricted Security Context Constraints
- Image vulnerability scanning
- Approved registries and immutable image tags
- Readiness, liveness, and startup probes
- Centralized logs and metrics
- Capacity and disk-usage alerts
- Upgrade, rollback, and disaster-recovery procedures
Troubleshooting
Pod is rejected by OpenShift security
Review:- Security Context Constraints
- Fixed user IDs
- Privileged containers
- Disallowed capabilities
- Writable-directory permissions
- HostPath volumes
Pod cannot pull its image
Verify:- Image registry and repository
- Image tag
- Image-pull secret
- Service-account secret linkage
- Registry certificates
- Network access from cluster nodes
Persistent-volume claim remains pending
Check:Route is unavailable
Check:- The Route points to the correct Service.
- The Service has ready endpoints.
- The target port is correct.
- The router is healthy.
- DNS resolves the Route hostname.
- TLS settings are valid.
GermainUX cannot reach an external database
Confirm:- DNS resolution from the project
- Egress NetworkPolicies
- External firewall rules
- Database listener availability
- Credentials and permissions
- TLS and certificate trust
- JDBC connection configuration
Get Help
Contact GermainUX Support
The GermainUX team helps you get up and running faster, empower your team, turn data into actionable insights, and optimize performance to deliver measurable business outcomes.
Can't find what you need?
Search all GermainUX docs with Ctrl + K, or use the feedback buttons at the bottom of this page to tell us what is missing.
The content of this document is proprietary to GERMAIN SOFTWARE.

