-
Notifications
You must be signed in to change notification settings - Fork 0
Phase 9 Multi Cloud Support
StackCendra relates services across local Docker, Kubernetes, and cloud resources while using narrow provider identities and retaining provider-specific behavior instead of flattening every cloud into an inaccurate common denominator.
- Capability phase: 9
- Initial provider work may support releases 0.8–1.0; broader coverage is marketed in release 1.2
- Provider order: AWS, GCP, then Azure
- Primary owner: Go control plane
- Protected-network access: organization-controlled runner
Capability phase and public release are intentionally separate here: AWS depth supports incident workflows before “multi-cloud” is marketed as complete.
- Phase 8 has a normalized runtime-resource and topology model.
- Projects, environments, services, deployments, and cloud-resource relationships are stable.
- Credential references support role assumption, workload identity, and short-lived tokens.
- Provider synchronization is observable and reconciled.
- EC2;
- ECS and EKS;
- CloudWatch;
- RDS;
- Secrets Manager and Systems Manager Parameter Store metadata;
- IAM role assumption;
- Lambda;
- load balancers;
- deployment events.
- Compute Engine;
- GKE and Cloud Run;
- Cloud Logging and Cloud Monitoring;
- Secret Manager metadata;
- Cloud SQL;
- IAM service accounts and workload identity.
- Virtual Machines;
- AKS and Container Apps;
- Azure Monitor and Log Analytics;
- Key Vault metadata;
- Azure Database services;
- managed identities.
The common contract covers capabilities such as:
- list compute and managed runtime resources;
- list clusters;
- query logs and metrics;
- resolve secret metadata or an authorized secret reference;
- request constrained resource operations;
- describe permissions, regions, accounts, and identities.
Each adapter also exposes typed provider-specific capabilities. Unsupported features return explicit capability results; they are not emulated or hidden behind a misleading universal model.
- Choose provider, account, subscription, or project.
- Select a documented least-privilege onboarding method.
- Validate identity and enumerate effective permissions.
- Choose regions and resource categories.
- Preview discovered metadata before associating it with a StackCendra project.
- Resolve relationships to environments, services, clusters, and deployments.
- Continuously reconcile inventory and selected telemetry.
flowchart LR
Provider["Cloud provider APIs"] --> Adapter["Provider adapter"]
Adapter --> Raw["Provider-specific snapshot"]
Raw --> Normalize["Common resource identity"]
Normalize --> Relate["Relationship resolver"]
Relate --> Graph["Project and service graph"]
Raw --> Detail["Provider-specific detail"]
Graph --> Detail
- Prefer workload identity, managed identity, and role assumption.
- Avoid long-lived access keys.
- Request read-only inventory first and separate operational roles later.
- Bind tokens to organization, provider account, environment, and runner.
- Display effective permissions and inaccessible resource categories.
- Rotate and revoke provider connections independently.
- Use customer-hosted runners for private endpoints and restricted networks.
Cloud secret integrations expose references, version metadata, age, and policy state. Secret values are resolved only by an authorized runner for an approved execution.
Relationship rules use:
- account, region, project, subscription, and cluster identity;
- tags and labels;
- Kubernetes cloud-provider metadata;
- image digests and deployment identifiers;
- load-balancer target groups and service endpoints;
- infrastructure-as-code evidence;
- OpenTelemetry resource attributes;
- user-confirmed corrections.
Ambiguous relationships remain proposals with evidence and confidence.
Phase 9 adds:
-
CloudConnection,CloudIdentity, andEffectivePermission; - provider-specific
CloudResourceSnapshot; - normalized
CloudResourceandCloudCapability; -
CloudResourceRelationshipandSyncCursor; -
ProviderOperationRequest.
Important events:
-
cloud.connection.verified; -
cloud.resource.discovered; -
cloud.permission.changed; -
cloud.relationship.proposed; -
cloud.relationship.confirmed; -
cloud.inventory.reconciled; -
cloud.operation.requested.
- Define provider capability, identity, inventory, and pagination contracts.
- Implement AWS onboarding and least-privilege validation.
- Add AWS compute, container, database, secret-metadata, and telemetry adapters.
- Build resource relationship resolution and correction workflows.
- Route constrained cloud operations through Actions and policies.
- Harden reconciliation, quotas, backoff, and cost visibility.
- Implement GCP adapters using the validated contracts.
- Implement Azure adapters and publish a cross-provider capability matrix.
- provider SDK contract and pagination fixtures;
- permission-denied, expired-token, rate-limit, and regional-failure injection;
- read-only versus operational-role boundary tests;
- inventory reconciliation and deletion/tombstone tests;
- relationship-resolution golden scenarios;
- account and tenant isolation tests;
- cost and query-budget guards;
- sandbox-account integration tests for each supported provider.
- provider SDK and capability registry;
- AWS connection and resource adapters;
- unified service-to-cloud graph;
- provider-specific detail views;
- effective-permission and synchronization health pages;
- customer-runner access pattern;
- GCP and Azure adapter roadmap and compatibility matrix.
The AWS depth milestone is complete when StackCendra connects a local Docker service, its AWS deployment, and its Kubernetes workload as evidence-backed related entities using least-privilege identity. Phase 9 is fully complete when equivalent supported workflows exist across AWS, GCP, and Azure with explicit provider capability differences.
| Risk | Control |
|---|---|
| Common model hides critical differences | Common core plus typed provider extensions |
| Cloud permissions are overly broad | Read-only onboarding, effective-permission checks, separate roles |
| API costs and quotas grow unexpectedly | Scoped sync, caching, budgets, and backoff |
| Cross-account data leaks | Tenant-bound credentials, storage keys, and authorization tests |
| Resource links are wrong | Evidence, confidence, correction, and reconciliation |
- feature parity across all providers on day one;
- becoming a cloud provisioning replacement;
- storing unrestricted long-lived cloud keys;
- retrieving secret values during inventory;
- abstracting away provider-specific security and operational behavior.
Phase 10 consumes the cross-environment resource graph, telemetry adapters, deployment events, configuration versions, and Git relationships to create evidence-driven incidents.
StackCendra is currently in Phase 0. The complete Phase 0–13 plan is versioned in the main repository under docs/wiki; later-phase pages describe intended behavior, not current implementation.
- Phase 0 foundation
- Phase 0 backlog
- Release 0.1 discovery
- Phase delivery framework
- Roadmap
- Wiki review guide
- Risks and decisions