Author | Andy Mahy

IBM B2Bi + Argo CD + Helm: Fixing Configuration Injection with Customization Containers in 6.2.0.4+

Modernizing Deployments: A Practical Solution

As organizations modernize their IT infrastructure, moving critical systems like IBM B2B Integrator (B2Bi) to cloud-native environments is a key step. This often involves migrating existing applications to run within containers – lightweight, portable packages that bundle software and its dependencies, ensuring it runs consistently across different environments. A leading methodology for managing these modern deployments is GitOps. At its core, GitOps uses Git (a version control system, essentially a sophisticated history tracker for code and configurations) as the single source of truth for defining the desired state of your entire system. Instead of manual configurations, all changes are made by updating these declarative configuration files in Git. To automate the deployment and continuous synchronization of these configurations, tools like Argo CD are employed. Argo CD acts as a continuous delivery tool that constantly monitors your Git repository. If it detects any difference between the desired state defined in Git and the actual state of your running applications on Kubernetes (an open-source platform for automating the deployment, scaling, and management of containerized applications), it automatically reconciles them. Think of Kubernetes as the operating system for your cloud applications, managing where and how your containers run. 

The Challenge During My Migration

This GitOps approach offers immense benefits: speed, reliability, and auditability. However, during a recent migration project involving older versions of IBM B2Bi (specifically 6.2.0.2 and earlier) to a new containerized environment, I encountered a significant hurdle. When I used Argo CD to deploy B2Bi, it would download the application’s core setup instructions via its Helm chart. A Helm chart is essentially a pre-packaged collection of Kubernetes resources, acting as a “recipe” for deploying an application. While convenient for managing standard deployments from a remote Helm repository, this approach presented a critical limitation: Our project required injecting specific custom configurations – such as config/ folders or custom properties – into the B2Bi pods at runtime. These files were part of our Git repository, defining our unique environment’s requirements. However, because Argo CD was pulling the remote Helm chart, there was no straightforward mechanism to include these local custom configuration files within the chart structure during the deployment process. The practical impact was severe: Crucial custom properties were ignored. The deployall phase of B2Bi setup might execute with default values, leading to incomplete initialization or incorrect tuning. My GitOps pipeline, designed for full automation, became incomplete, requiring manual intervention to apply missing configurations. This forced me to consider less ideal solutions, like “vendoring” the Helm chart (copying it directly into my Git repository and modifying it locally). While this could technically resolve the issue, it undermined core GitOps principles of using upstream artifacts cleanly and significantly increased maintenance overhead. 

The IBM Solution: The Customization Container

Fortunately, IBM addressed this limitation in B2Bi version 6.2.0.4 with the introduction of the customization init container. This feature provides an elegant and GitOps-friendly solution. The customization container allows you to: Package Custom Files: Bundle your specific configuration files (e.g., from config/ and properties/ folders) into a dedicated, lightweight container image.

Mount at Runtime: This custom image is then configured to be mounted as an “init container” into the main B2Bi pods when they start up. An init container runs before the main application container and can perform setup tasks. Apply Settings: The files from your customization container are copied or linked into the appropriate directories within the main B2Bi pod, ensuring all custom settings are applied consistently and automatically. This mechanism ensures that all environment-specific configuration is applied declaratively and automatically, without requiring any modifications to the upstream B2Bi Helm chart itself.

Why This Matters for Your Organization

The addition of the customization container in B2Bi 6.2.0.4, while seemingly a minor technical detail, represents a powerful enabler for modern deployment practices: True GitOps Alignment: It allows for configuration to be version-controlled via Git or image tags, ensuring full reproducibility and environment parity across development, testing, and production. 

Reduced Maintenance Overhead: There’s no longer a need to alter or “vendor” upstream Helm charts, simplifying upgrades and maintenance. Enhanced Reproducibility: Every deployment of B2Bi will consistently apply the same custom configurations, reducing “works on my machine” issues and improving reliability. Streamlined CI/CD Pipelines: Configuration injection becomes an automated part of your continuous integration/continuous delivery (CI/CD) pipeline, minimizing manual steps and potential errors. Improved Security & Compliance: With all configurations version-controlled, auditing and demonstrating compliance become significantly easier.

Final Thoughts

The customization container in B2Bi 6.2.0.4 was a quiet but incredibly impactful change. It directly addresses a critical pain point for teams leveraging GitOps with remote Helm charts, particularly during migrations to containerized environments. For anyone deploying IBM B2Bi to Kubernetes using tools like Argo CD, and who has struggled with reliable configuration injection, this feature is the robust and scalable solution you’ve been waiting for. It truly unlocks the full potential of GitOps for B2Bi deployments.

Related Articles

Let's get started

Book a consultation