Requirements
Environment and access needed
Configure the deployment
Edit deployment script variables
Configure the database
Packaged or external database
Troubleshooting
Fix deployment problems
Testing environments onlyThe configuration provided with the Kubernetes distribution is intended for development, evaluation, and testing. It is not a production reference architecture. Production deployments require environment-specific sizing, persistent storage, security, availability, backup, monitoring, and disaster-recovery planning.
Architecture
The deployment package generates Kubernetes manifests for three groups of resources:
Apply these groups in that order because GermainUX depends on the configuration and infrastructure resources.
Requirements
Kubernetes cluster
You need:- A functioning Kubernetes cluster
- Administrative or appropriately scoped cluster permissions
kubectlconfigured for the target cluster- A default or explicitly configured StorageClass
- A container registry accessible from every cluster node
- Network connectivity between all required GermainUX components
- External access through an Ingress, LoadBalancer, or another approved method
Example lab capacity
The original test environment used the following cluster settings:
These values reflect a sample lab environment, not guaranteed requirements. Confirm whether CPU, memory, and disk values apply per node in your Kubernetes platform and resize the cluster according to the number of deployed components and expected data volume.
For production sizing, account for:
- Number of monitored users and applications
- Incoming telemetry volume
- Retention period
- Elasticsearch indexing and query workload
- Kafka throughput and retention
- High-availability requirements
Show all 9
Show all 9
- JVM heap requirements
- Replication and backup overhead
- Expected growth
Obtain the deployment package
Download the Kubernetes distribution provided for your licensed GermainUX release:Configure the license
Locate:- Commit the license to a public source-code repository.
- Include it in an unprotected container image.
- Share it in logs or support material.
- Store an unencrypted copy in a ConfigMap.
Configure the deployment
Open:Messaging compatibility
GermainUX 2024.2 and later uses Kafka. Apache ActiveMQ applies only to earlier releases. For GermainUX 2024.2 or later:- Configure the approved Kafka version.
- Do not deploy ActiveMQ unless specifically required by Germain Support for an upgrade or compatibility scenario.
Environment name
Set a unique, descriptive environment name:Configure the database
The deployment can use its packaged database resources or an external database for the GermainUX configuration store.Packaged database
Retain the database deployment settings supplied with the package and verify that:- Persistent storage is configured.
- The database credentials are protected.
- The database pod has sufficient memory and storage.
- Backup and recovery are configured when the environment must be retained.
External database
When using an external configuration database:- Set the packaged MySQL replica count to
0. Older distributions may name this variable:mysqlReplicase=0Use the exact variable name present in yourdeploy-germain.shfile. - Configure the external database hostname:
germainDbHostname="<database-hostname>" - Update
common.propertieswith the correct connection details.
- Kubernetes workloads can resolve and reach the database hostname.
- The database and schema exist.
- The configured user has the required permissions.
- TLS is enabled when required.
- Firewalls permit the connection.
- Credentials are stored using the approved secret-management mechanism.
APMCFG password in a shared or production environment.
Configure email
To enable email alerts and reports, update the SMTP settings in the includedcommon.properties file.
Configure:
- SMTP hostname
- SMTP port
- Authentication method
- Username and password
- Sender address
- TLS or STARTTLS requirements
Verify Kubernetes access
Confirm thatkubectl targets the correct cluster:
Generate the manifests
Run:germainEnvName.
Before applying them, review the generated resources for:
- Namespace
- Image names and tags
- Image-pull secrets
- Resource requests and limits
- Persistent-volume claims
- StorageClass
Show all 14
Show all 14
- Services and ports
- Ingress or LoadBalancer configuration
- ConfigMaps and Secrets
- Health checks
- Replica counts
- Node selectors, tolerations, and affinity
- Security contexts
- Database and messaging settings
Deploy GermainUX
Apply the generated manifests in the required order.1 Configuration
2 Infrastructure
3 GermainUX components
kubectl commands.
Validate the deployment
Check pods
Running or Completed, as appropriate.
Investigate pods reporting:
Check services
Check persistent storage
Review a failing pod
Open the GermainUX Workspace
At the end of a successful deployment, the script displays the URL used to access the GermainUX Workspace. The default path is:Production requirements
Before using Kubernetes-hosted GermainUX in production, implement:- Appropriately sized resource requests and limits
- Multiple replicas for supported stateless components
- Pod anti-affinity and topology-spread constraints
- Pod disruption budgets
- Persistent storage with suitable performance
- Database and datastore backups
Show all 18
Show all 18
- TLS for external and internal connections
- Kubernetes Secrets or an external secret manager
- NetworkPolicies
- Restricted service accounts and RBAC
- Non-root containers where supported
- Image vulnerability scanning
- Controlled image registries and immutable tags
- Readiness, liveness, and startup probes
- Centralized logs and metrics
- Capacity and disk-usage alerts
- Documented upgrade and rollback procedures
- Disaster-recovery testing
Troubleshooting
Pods remain pending
Check:- Insufficient CPU or memory
- Unbound persistent-volume claims
- Node selectors that match no node
- Missing tolerations
- Namespace quotas
- Image-pull secret errors
Image cannot be pulled
Verify:- The image name and tag
- Registry connectivity
- Registry credentials
- Image-pull secrets
- Service-account configuration
- Node access to the registry
GermainUX cannot reach an infrastructure service
Confirm:- The dependent pod is ready.
- The Kubernetes Service exists.
- The configured service hostname is correct.
- The ports match.
- NetworkPolicies allow the connection.
- Authentication and TLS settings match.
- The components are deployed in the expected namespace.
Workspace is inaccessible
Check:- DNS resolution
- Load balancer status
- Ingress controller health
- Firewall rules
- TLS certificate configuration
- Tomcat and Germain Enterprise logs
Configuration changes are not applied
After changing a source configuration file:1
Regenerate or update the relevant manifest
2
Apply it with kubectl apply
3
Confirm that the ConfigMap or Secret changed
4
Restart or roll out the affected deployment if it does not reload configuration dynamically
5
Verify the effective configuration in the application logs
Get Help
Contact GermainUX Support
The Germain Team can help you set this up.
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.

