Skip to main content
Deploy, run, and manage your custom connectors across different environments in Banking OS Connectivity.

Overview

Connectors run on Kubernetes using Apache Camel K, providing:
  • Automatic scaling based on load
  • High availability with multiple replicas
  • Environment isolation (dev, staging, test, UAT)
  • API gateway through Azure API Management (APIM) to publish, secure, and monitor connector APIs
  • Service mesh integration for secure communication

Environments

The platform provides multiple runtime environments:

Environment access

To access runtime environments, you need appropriate roles assigned in self-service.tfvars:
Available Roles:
  • {env}-rw: Full access (read-write) to the environment
  • {env}-ro: Read-only access to the environment
  • {env}-apim-rw: API Management contributor access
  • {env}-apim-ro: API Management reader access
  • {env}-apim-subs-ro: Reader access to subscriptions, including primary and secondary keys
  • {env}-apim-subs-rw: Subscription management access
  • {env}-apim-cred-manager: Credential manager access

Accessing Azure resources

Access Azure resources to manage and monitor your connector deployments.

Azure portal access

  1. Navigate to Azure Portal
  2. Sign in with your Azure AD credentials
  3. Select your subscription/resource group
  4. Access resources like:
    • Kubernetes clusters
    • API Management instances
    • Storage accounts
    • Key Vaults

Set up kubectl for Azure

Resources:

Deployment process

Deploy your connectors using the GitOps workflow through the applications-live repository.

Applications-live repository

Connectors are deployed through the applications-live repository, which manages runtime configurations.

Access requirements

To deploy connectors, you need:
  • GitHub team membership: applications-live team
  • Runtime access: Appropriate Banking OS roles

Deployment namespace

Every workload you deploy through the applications-live repository runs in a Kubernetes namespace. You set that namespace on the ArgoCD Application, under spec.destination.namespace. The same rule covers connectors, custom APIs, agents, Model Context Protocol (MCP) servers, and scheduled jobs that you build. The documentation for each workload type explains how to set the namespace for that type. This section covers which namespace to use, and how to get a namespace.

Namespaces the platform manages

The platform provisions and manages every namespace you deploy into. Here, managed means the platform provisions the namespace. The Managed track is the separate repository track in GitHub organization and repository structure. A managed namespace includes:
  • Network policy enforcement: On hardened runtimes, the policy isolates the namespace from every other namespace.
  • infra-resources support: You can enable PostgreSQL databases, Redis caches, and blob storage for the namespace.
  • An Azure managed identity and a Kubernetes service account: The platform creates these when you enable one of those shared resources.
  • Sync Hub connectivity: On installations that have Sync Hub enabled, the network policy allows workloads labeled as Sync Hub producers to reach the Sync Hub services. Those services publish to Azure Service Bus. For more information, see Sync Hub.
  • Istio configuration that you manage: You set this in runtimes/{runtime}/istio/values.yaml in applications-live.
Namespaces follow the same two repository tracks, Managed and DevHub. The split is an access boundary and a naming boundary. grandcentral is a separate platform namespace on the cluster. The product name is Banking OS. Managed track: The gc-<domain> namespace holds the productized connectors that Backbase runs for you under a service level agreement (SLA). Only Backbase support teams can deploy into that namespace. DevHub track: The devhub-grandcentral and devh-gc-<domain> namespaces are where you deploy the workloads you build. Backbase services teams, partners, and customers deploy and run their own custom workloads in these namespaces. Each runtime holds namespaces from both tracks. Use the following table to find where your workloads belong: A domain can appear on both tracks. If Backbase runs the productized Finastra connectors for you in gc-finastra, your Finastra workloads still go in devh-gc-finastra. The two namespaces do not share secrets, policies, or identities. Support for each namespace sits with a different party. In dev runtimes you can create namespaces of your own, without a request and without waiting. Use that namespace as a sandbox for a short experiment, a chart you want to try, or a demo you plan to delete. Keep that work out of the shared namespace while that work is still in progress.
A namespace you create this way isn’t a managed namespace. It doesn’t include the platform features listed earlier. You can’t add a network policy to it yourself. It exists only on that dev cluster. From test onward, the platform creates every namespace.
Request a managed namespace before you build anything you intend to promote. Nothing you build in a self-created namespace carries forward to a later runtime.

Choose a namespace

devhub-grandcentral is the default DevHub namespace, and you can deploy into it. For stronger isolation, Backbase recommends a dedicated namespace for the business domain that the workload serves. Name a dedicated namespace devh-gc-<domain>. Here, devh is short for DevHub. Use the same name in every runtime. Each runtime is a separate cluster, so devh-gc-payments is also the namespace your production workloads run in.
Namespaces created before this convention use a dev- prefix, such as dev-gc-payments. That prefix means DevHub. The dev runtime is a separate cluster name. Those namespaces keep their names. Use devh- when you request a dedicated namespace.
A dedicated namespace gives you scope that a shared namespace cannot:
  • Network isolation: From test onward, a NetworkPolicy permits traffic inside each namespace and denies traffic across namespace boundaries. Workloads that share a namespace can reach each other. No other namespace can reach workloads in your namespace. Backbase manages these policies through platform infrastructure as code. You cannot change them from applications-live. To open a boundary between two namespaces, raise a Service Desk request.
  • Policy scope: Istio objects, such as AuthorizationPolicy, PeerAuthentication, and egress ServiceEntry and VirtualService, are namespace-scoped. You configure them in runtimes/{runtime}/istio/values.yaml in applications-live. In a dedicated namespace, the rules you write apply only to your own workloads.
  • Secret scope: Kubernetes secrets are namespace-scoped. A service account can mount secrets only in its own namespace. When a namespace enables a shared platform resource in infra-resources/resources.yaml, the platform creates an Azure managed identity and a Kubernetes service account for it. Workloads in separate namespaces then do not share database or cache credentials.
  • Observability: The namespace is a standard label on platform logs and metrics. You can scope queries, dashboards, and alerts to a single domain when you debug. For more information, see Monitor.
  • Resource names: Kubernetes resource names have to be unique only within a namespace. In a dedicated namespace, your release, service, and ConfigMap names can’t collide with names from another domain.
The namespace is the boundary between domains, and between the teams that own them. Any workload in a namespace can call any other workload in that namespace, unless you add your own Istio authorization rules through applications-live. A shared namespace gives you no separation from the other workloads in it.

Request a namespace

devhub-grandcentral already exists. Request a namespace only when you want a dedicated one. A namespace works on its own. If your workloads need shared platform resources, such as PostgreSQL, Redis, or blob storage, declare the namespace in infra-resources/resources.yaml.
The namespace must exist before the Application syncs. If the namespace is missing, the sync fails. Banking OS provisions namespaces through platform infrastructure as code. ArgoCD does not create them. Request the namespace before you open the pull request that adds the Application.
Namespace creation is not self-service. To request a namespace, raise a ticket with the Service Desk. Include the installation, the runtime (such as dev), and the namespace name you want. Request namespace permissions from the Service Desk. The infra-resources/resources.yaml file in the applications-live repository grants a namespace access to shared platform resources, such as PostgreSQL, Redis, and blob storage. That file doesn’t create namespaces or manage namespace permissions.

Deployment workflow

Prepare your connector

Ensure your connector is:
  • ✅ Built successfully
  • ✅ Tested locally
  • ✅ Merged to main branch
  • ✅ Version tagged

Configure runtime settings

In the applications-live repository, add an ArgoCD Application for your connector and the values for that runtime. For the file layout and a sample Application, see Deploy a custom API and connector and Configure connectors.

Create deployment pull request

  1. Create a branch in applications-live repository
  2. Add or update connector configuration
  3. Follow PR title format: feat(GC-123): Deploy my-custom-connector to dev
  4. Create Pull Request targeting main branch

Review and approve

  • Default reviewers: All applications-live team members are automatically assigned
  • Custom reviewers: Can be configured per runtime in self-service.tfvars
  • Auto-approval: Available for specific runtimes (e.g., dev)

Deployment execution

After PR merge:
  1. Pipeline validates configuration
  2. Connector is deployed to Kubernetes
  3. Health checks verify successful deployment
  4. Connector becomes available in the target environment

Promote to a higher runtime

There’s no separate promotion tool. To move a connector to a higher runtime, open a pull request in the applications-live repository. It repeats the tested configuration in the next runtime folder. The following diagram shows the flow: To promote a connector, follow these steps:
  1. Confirm the version works in the lower runtime.
  2. Open a pull request that sets the same chart targetRevision and values in runtimes/{next-runtime}/apps and runtimes/{next-runtime}/values. If the API changed, add the APIM entries too.
  3. Get review. By default, members of the applications-live team are the reviewers. You can set runtime-specific reviewers with runtime_codeowners_override.
  4. Merge the pull request. ArgoCD syncs the change.
  5. Verify the connector with an API call.
Keep the following in mind:
  • Don’t run a later chart version in a higher runtime than in lower runtimes.
  • Runtimes vary per installation. Common sets are dev, stg, and prd, or dev, stg, test, and uat.
  • If you want a bot to approve pull requests for a runtime such as dev, set auto_approve_runtimes. You can’t combine it with runtime_codeowners_override.
For more information about reviewer settings, see Set applications-live reviewers.

Runtime configuration

Environment variables

Configure connector behavior using environment variables:

Secrets management

Manage sensitive data through:
  • GitHub Secrets: Managed in self-service repository
  • Kubernetes Secrets: Injected at runtime
  • Azure Key Vault: For production secrets

Resource limits

Configure resource allocation:

Container registry

Connector images are stored in:
  • Customer ACR: GC_CUSTOMER_ACR_BASE_URL (available as GitHub secret)
  • Enterprise ACR: GC_ENTERPRISE_ACR_BASE_URL (available as GitHub secret)
Accessing Images:
  • Images are automatically built and pushed during CI/CD
  • Use the image reference in your deployment configuration
  • Format: <registry>/<image-name>:<tag>
Viewing Images:

API management integration

APIM access

Connectors can be exposed through APIM: APIM Roles:
  • {env}-apim-ro: Read API definitions and subscriptions
  • {env}-apim-rw: Create and modify APIs
  • {env}-apim-subs-rw: Manage subscriptions and keys
  • {env}-apim-cred-manager: Manage OAuth credentials

Publish your API

  1. Access APIM Portal for your environment
  2. Create or import API definition
  3. Configure backend to point to your connector
  4. Set up policies (rate limiting, authentication, etc.)
  5. Publish API for consumers
Resources:

Subscription management

  • Create subscriptions for API consumers
  • Manage keys (primary and secondary)
  • Rotate keys for security
  • Monitor usage through APIM analytics

Scaling and performance

Scale your connectors to handle varying workloads.

Horizontal scaling

Connectors automatically scale based on:
  • CPU utilization
  • Memory usage
  • Request queue length
  • Custom metrics

Manual scaling

Adjust replica count in deployment configuration:

Performance tuning

Optimize connector performance:
  • Connection pooling: Configure pool sizes
  • Threading: Adjust thread pool configurations
  • Caching: Implement caching strategies
  • Batch processing: Process messages in batches

Health checks and readiness

Configure health checks to ensure your connector is running correctly.

Health endpoints

Connectors expose health endpoints:
  • Liveness: /health/live - Is the connector running?
  • Readiness: /health/ready - Is the connector ready to serve traffic?

Monitoring health

Kubernetes uses health checks to:
  • Restart unhealthy pods
  • Route traffic only to ready instances
  • Prevent deployment of unhealthy versions

Rolling updates and rollbacks

Deploy updates with zero downtime and roll back if issues occur.

Rolling updates

When deploying new versions:
  1. New pods are created with updated image
  2. Traffic gradually shifts to new pods
  3. Old pods terminate after traffic migration
  4. Zero-downtime deployment achieved

Rollback process

If issues occur:
  1. Identify problematic version
  2. Revert configuration in applications-live
  3. Create PR to rollback
  4. Merge PR to trigger rollback deployment

Environment-specific deployments

Each environment has specific access requirements and deployment processes.

Development environment

  • Purpose: Active development and testing
  • Access: Developers with dev-rw role
  • Deployment: Frequent, often auto-approved
  • Configuration: Development API endpoints

Staging environment

  • Purpose: Integration testing
  • Access: QA teams with stg-rw role
  • Deployment: Before production releases
  • Configuration: Staging API endpoints

Test environment

  • Purpose: System and performance testing
  • Access: Test teams with test-rw role
  • Deployment: For comprehensive testing
  • Configuration: Test API endpoints

UAT environment

  • Purpose: User acceptance testing
  • Access: Business users with uat-rw role
  • Deployment: Pre-production validation
  • Configuration: Production-like settings

Troubleshooting

Resolve common issues that occur during deployment and runtime.

Deployment failures

Issue: Connector fails to deploy
  • Check: Configuration syntax in applications-live
  • Check: Image availability in container registry
  • Check: Resource quotas and limits
  • Check: Health check endpoints
  • Resources: Kubernetes Troubleshooting
Issue: Connector starts but crashes
  • Check: Application logs in DataDog or Grafana
  • Check: Environment variables and secrets
  • Check: External API connectivity
  • Check: Resource limits (memory/CPU)

Runtime issues

Issue: High latency or timeouts
  • Check: External API response times
  • Check: Resource constraints
  • Check: Network connectivity
  • Check: Connection pool settings
Issue: Memory or CPU issues
  • Check: Resource limits and requests
  • Check: Memory leaks in code
  • Check: Thread pool configurations
  • Check: Message queue backlogs

Access issues

Issue: Cannot access Kubernetes cluster
  • Check: Azure login: az login
  • Check: Cluster credentials: az aks get-credentials
  • Check: Role assignments in Azure Portal
  • Check: kubectl configuration: kubectl config view

Best practices

  1. Start with dev: Deploy to dev environment first
  2. Test thoroughly: Validate in staging before production
  3. Monitor deployments: Watch logs during and after deployment
  4. Use health checks: Implement proper health endpoints
  5. Configure resources: Set appropriate resource limits
  6. Manage secrets: Never hardcode credentials
  7. Version control: Tag and version all deployments
  8. Documentation: Document deployment procedures

Accessing runtime resources

Access runtime resources to manage and troubleshoot your connectors.

Kubernetes access

With appropriate roles, access Kubernetes clusters:
Resources:

Service Bus explorer

Access Service Bus for message queue management:
  • Requires appropriate Azure roles
  • Connect via Service Bus Explorer or Azure Portal
  • Monitor queues and topics
  • Manage subscriptions
Resources: