Skip to main content

Set Up a Remote Sandbox

This guide explains how to configure and use the Grand Central sandbox environment for live cluster development and testing.
For local development setup, see Set up a local environment.

Prerequisites

Before you begin, ensure the following requirements are met:

Onboarding Complete

You have completed the onboarding process

VPN Connected

Your Backbase VPN connection is active

Repository Access

Access to a connector repository in the Grand Central organization

Cluster Permissions

Verified permissions to access the target cluster

Required Tools

Install supported versions of the following tools:
ToolDescriptionInstallation Link
Azure CLICommand-line tool for AzureInstall Azure CLI
kubectlKubernetes command-line toolInstall kubectl
kamel CLICamel K command-line toolInstall kamel
Contact your Professional Services team for details on supported versions.

Set Up and Configure Your Sandbox

Step 1: Authenticate with Azure

Connect to your cluster by authenticating with Azure:
az login
Follow the prompts to complete the authentication process.

Step 2: Configure Cluster Proxy

Update kubeconfig with the proxy URL provided by the Grand Central team:
# Replace with your actual proxy URL
export HTTPS_PROXY=<proxy-url>

Step 3: Create Development Namespace

Create a dedicated namespace for your development work:
# Create namespace
kubectl create namespace dev-<your-username>

# Set as default namespace
kubectl config set-context --current --namespace=dev-<your-username>
Using a personal namespace prevents conflicts with other developers and keeps your work isolated.

Step 4: Clone Connector Repository

Clone the connector repository to your local machine:
git clone https://github.com/baas-devops-<INSTALLATION>/<CONNECTOR_REPO_NAME>.git
cd <CONNECTOR_REPO_NAME>

Step 5: Build the Project

Ensure all dependencies are configured by building the project:
mvn clean install

Step 6: Configure Cluster Settings (Optional)

Configure cluster settings by updating the pom.xml file with desired Camel traits.

Add Traits to pom.xml

Include traits from the properties section of the BOM:
<properties>
    <!-- Kamel plugin parameters -->
    <kamel.trait.camel.runtime-version>3.2.3</kamel.trait.camel.runtime-version>
    <kamel.trait.auto>false</kamel.trait.auto>
    
    <!-- Container traits -->
    <kamel.trait.container.enabled>true</kamel.trait.container.enabled>
    <kamel.trait.container.request-cpu>250m</kamel.trait.container.request-cpu>
    <kamel.trait.container.request-memory>256Mi</kamel.trait.container.request-memory>
    <kamel.trait.container.limit-cpu>500m</kamel.trait.container.limit-cpu>
    <kamel.trait.container.limit-memory>512Mi</kamel.trait.container.limit-memory>
    
    <!-- Health traits -->
    <kamel.trait.health.enabled>true</kamel.trait.health.enabled>
    <kamel.trait.health.liveness-probe-enabled>true</kamel.trait.health.liveness-probe-enabled>
    <kamel.trait.health.liveness-scheme>HTTP</kamel.trait.health.liveness-scheme>
    <kamel.trait.health.liveness-initial-delay>35</kamel.trait.health.liveness-initial-delay>
    <kamel.trait.health.liveness-timeout>10</kamel.trait.health.liveness-timeout>
    <kamel.trait.health.liveness-period>15</kamel.trait.health.liveness-period>
    <kamel.trait.health.liveness-success-threshold>1</kamel.trait.health.liveness-success-threshold>
    <kamel.trait.health.liveness-failure-threshold>3</kamel.trait.health.liveness-failure-threshold>
    
    <!-- Readiness probe -->
    <kamel.trait.health.readiness-probe-enabled>true</kamel.trait.health.readiness-probe-enabled>
    <kamel.trait.health.readiness-scheme>HTTP</kamel.trait.health.readiness-scheme>
    <kamel.trait.health.readiness-initial-delay>0</kamel.trait.health.readiness-initial-delay>
    <kamel.trait.health.readiness-timeout>10</kamel.trait.health.readiness-timeout>
    <kamel.trait.health.readiness-period>15</kamel.trait.health.readiness-period>
    <kamel.trait.health.readiness-success-threshold>1</kamel.trait.health.readiness-success-threshold>
    <kamel.trait.health.readiness-failure-threshold>3</kamel.trait.health.readiness-failure-threshold>
    
    <!-- Knative service traits -->
    <kamel.trait.knative-service.enabled>true</kamel.trait.knative-service.enabled>
    <kamel.trait.knative-service.autoscaling-class>kpa.autoscaling.knative.dev</kamel.trait.knative-service.autoscaling-class>
    <kamel.trait.knative-service.autoscaling-metric>rps</kamel.trait.knative-service.autoscaling-metric>
    <kamel.trait.knative-service.autoscaling-target>100</kamel.trait.knative-service.autoscaling-target>
    <kamel.trait.knative-service.min-scale>1</kamel.trait.knative-service.min-scale>
    <kamel.trait.knative-service.max-scale>20</kamel.trait.knative-service.max-scale>
    
    <!-- Prometheus traits -->
    <kamel.trait.prometheus.enabled>true</kamel.trait.prometheus.enabled>
    <kamel.trait.prometheus.pod-monitor>true</kamel.trait.prometheus.pod-monitor>
    <kamel.trait.prometheus.pod-monitor-labels>release=kube-prometheus-stack</kamel.trait.prometheus.pod-monitor-labels>
</properties>

Enable Traits in Plugin Configuration

If you haven’t introduced traits before, enable them in the plugin configuration:
<plugin>
    <groupId>com.backbase.gc</groupId>
    <artifactId>kamel-maven-plugin</artifactId>
    <configuration>
        <traits>
            <telemetry.auto>true</telemetry.auto>
        </traits>
    </configuration>
</plugin>

Step 7: Run in Sandbox Development Mode

Run the project in sandbox development mode using the Grand Central Maven Plugin:
mvn kamel:dev
This command:
  • Builds your connector
  • Deploys it to the remote cluster
  • Streams logs to your terminal
  • Watches for code changes and redeploys automatically

Verify Your Setup

Check Pod Status

Verify that your pods are running:
kubectl get pods
Expected output:
NAME                                    READY   STATUS    RESTARTS   AGE
generic-api-connector-xxxx-xxxxx        1/1     Running   0          2m

Get Service URL

Retrieve the service URL for your integration deployment:
kubectl get ksvc
Example output:
NAME                    URL                                                           READY
generic-api-connector   https://generic-api-connector-dev-username.runtime.gcservices.io   True

Test the Connector

Send a test request to your deployed connector:
curl --location 'https://generic-api-connector-<NAMESPACE>.<RUNTIME>.<INSTALLATION>.gcservices.io/version'
Replace <NAMESPACE>, <RUNTIME>, and <INSTALLATION> with your actual values from the service URL.

Working with the Sandbox

View Logs

Stream logs from your connector:
kubectl logs -f deployment/generic-api-connector

Access Connector Metrics

View connector metrics:
kubectl port-forward svc/generic-api-connector 8080:80
curl http://localhost:8080/q/metrics

Debug Connector

To debug your connector in the sandbox:
  1. Enable debug port in your traits configuration
  2. Port-forward the debug port:
kubectl port-forward pod/<pod-name> 5005:5005
  1. Attach your IDE debugger to localhost:5005

Scale Your Connector

Manually scale your connector:
kubectl scale deployment generic-api-connector --replicas=3

Common Operations

When using mvn kamel:dev, changes are automatically detected and redeployed. For manual updates:
mvn clean package
mvn kamel:run
List all resources in your namespace:
kubectl get all
Remove your connector from the cluster:
kubectl delete integration generic-api-connector
Monitor resource consumption:
kubectl top pods
kubectl top nodes

Troubleshooting

  • Ensure VPN is connected
  • Re-run az login
  • Verify cluster permissions with your admin
  • Check pod logs: kubectl logs <pod-name>
  • Describe pod: kubectl describe pod <pod-name>
  • Verify resource limits in traits configuration
  • Verify service is ready: kubectl get ksvc
  • Check ingress configuration
  • Ensure VPN is active for internal URLs
  • Verify kubectl context is correct
  • Check Maven plugin version
  • Ensure namespace exists and is accessible

Best Practices

Namespace Isolation

Always use personal namespaces to avoid conflicts

Resource Limits

Set appropriate CPU and memory limits

Clean Up

Delete unused resources to free cluster capacity

Monitor Logs

Regularly check logs for errors and warnings

Next Steps

Once your sandbox is set up successfully:
  1. Build and run locally for faster development
  2. Configure your connector with custom settings
  3. Test and validate your connector thoroughly
  4. Deploy to higher environments following your organization’s promotion process