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 Management through Azure APIM
- Service mesh integration for secure communication
Environments
The platform provides multiple runtime environments:| Environment | Purpose | Access Level |
|---|---|---|
| dev | Development and testing | Read-write for developers |
| stg | Staging and integration testing | Read-write for QA teams |
| test | System testing | Read-write for testers |
| uat | User acceptance testing | Read-write for business users |
Environment access
To access runtime environments, you need appropriate roles assigned inself-service.tfvars:
{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-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
- Navigate to Azure Portal
- Sign in with your Azure AD credentials
- Select your subscription/resource group
- Access resources like:
- Kubernetes clusters
- API Management instances
- Storage accounts
- Key Vaults
Set up kubectl for Azure
Deployment process
Deploy your connectors using the GitOps workflow through theapplications-live repository.
Applications-live repository
Connectors are deployed through theapplications-live repository, which manages runtime configurations.
Access requirements
To deploy connectors, you need:- GitHub team membership:
applications-liveteam - Runtime access: Appropriate Grand Central roles
Deployment workflow
Prepare your connector
Ensure your connector is:- ✅ Built successfully
- ✅ Tested locally
- ✅ Merged to
mainbranch - ✅ Version tagged
Configure runtime settings
In theapplications-live repository, configure your connector:
Create deployment pull request
- Create a branch in
applications-liverepository - Add or update connector configuration
- Follow PR title format:
feat(GC-123): Deploy my-custom-connector to dev - Create Pull Request targeting
mainbranch
Review and approve
- Default reviewers: All
applications-liveteam 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:- Pipeline validates configuration
- Connector is deployed to Kubernetes
- Health checks verify successful deployment
- Connector becomes available in the target environment
Runtime configuration
Environment variables
Configure connector behavior using environment variables:Secrets management
Sensitive data is managed 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)
- Images are automatically built and pushed during CI/CD
- Use the image reference in your deployment configuration
- Format:
<registry>/<image-name>:<tag>
- Access container registry through Azure Portal
- Use Azure CLI:
az acr repository list --name <registry-name> - Azure Container Registry Documentation
API management integration
APIM access
Connectors can be exposed through Azure API Management (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
- Access APIM Portal for your environment
- Create or import API definition
- Configure backend to point to your connector
- Set up policies (rate limiting, authentication, etc.)
- Publish API for consumers
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:- New pods are created with updated image
- Traffic gradually shifts to new pods
- Old pods terminate after traffic migration
- Zero-downtime deployment achieved
Rollback process
If issues occur:- Identify problematic version
- Revert configuration in
applications-live - Create PR to rollback
- 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-rwrole - Deployment: Frequent, often auto-approved
- Configuration: Development API endpoints
Staging environment
- Purpose: Integration testing
- Access: QA teams with
stg-rwrole - Deployment: Before production releases
- Configuration: Staging API endpoints
Test environment
- Purpose: System and performance testing
- Access: Test teams with
test-rwrole - Deployment: For comprehensive testing
- Configuration: Test API endpoints
UAT environment
- Purpose: User acceptance testing
- Access: Business users with
uat-rwrole - 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
- 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
- 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
- Start with dev: Deploy to dev environment first
- Test thoroughly: Validate in staging before production
- Monitor deployments: Watch logs during and after deployment
- Use health checks: Implement proper health endpoints
- Configure resources: Set appropriate resource limits
- Manage secrets: Never hardcode credentials
- Version control: Tag and version all deployments
- Documentation: Document deployment procedures
Accessing runtime resources
Access runtime resources to manage and troubleshoot your connectors.Kubernetes access
With appropriate roles, access Kubernetes clusters: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