Apache CloudStack continues to evolve its Extensions Framework to better support diverse virtualization platforms and external orchestrators. A recent enhancement introduces console access support for instances deployed via Orchestrator Extensions, enabling a more seamless and integrated user experience.
This update is particularly useful for environments using the in-built Proxmox extension or any extension that integrates with an external console provider.
What’s New?
With this enhancement, CloudStack now supports instance console access via extensions using two approaches:
- VNC-based console access (via CPVM)
- Direct URL-based console access (external console endpoints)
This is enabled through a new extension capability where CloudStack invokes the getconsole action to retrieve console connection details.
How It Works
When a user requests console access for an instance:
- CloudStack invokes the getconsole action on the orchestrator extension.
- The extension returns console connection details in a defined format.
- Based on the protocol returned:
- VNC (protocol: vnc)
CloudStack forwards the connection details (host, port, ticket/password) to the Console Proxy VM (CPVM), which proxies the console session to the user. - Direct (protocol: direct)
CloudStack provides the console URL directly to the user, bypassing CPVM.
- VNC (protocol: vnc)
This design allows extensions to either integrate with CloudStack’s existing console proxy mechanism or expose their own console endpoints.
Proxmox Extension Support
The in-built Proxmox orchestrator extension now supports console access using VNC.
- The extension internally calls the Proxmox API to generate VNC console tickets.
- These details are returned via the getconsole action.
- CloudStack then proxies the session via CPVM to provide a familiar console experience in the UI.
Important Note on Proxmox VNC
Proxmox VNC connections have a short initial connection timeout (~10 seconds).
- This limitation applies even when accessing the console from the CloudStack UI.
- If there is a delay (e.g., noVNC loading time or user interaction delay), the first attempt may fail.
- In such cases, simply retrying the console access will establish the session successfully.
Direct URL-Based Console Access
In addition to VNC, extensions can now provide direct console URLs.
This is particularly useful for platforms that:
- Provide their own web-based consoles
- Require direct access without proxying through CPVM
- Use protocols other than VNC (e.g., HTML5 consoles, SPICE gateways, proprietary endpoints)
Key Characteristics
- The extension returns a console URL with protocol set to direct.
- CloudStack passes this URL directly to the user.
- No CPVM involvement in this flow.
Security Considerations
When using direct console access:
- CloudStack does not track or enforce client access (e.g., client IP, session control).
- Authentication, authorization, and session security must be handled by the external console provider.
Why This Matters
This enhancement significantly improves the flexibility of the Extensions Framework:
1. Better Integration with External Platforms
Extensions can now integrate deeply with platforms like Proxmox or others that expose their own console mechanisms.
2. Multiple Console Access Models
Operators can choose between:
- Proxy-based access (CloudStack-managed via CPVM)
- Direct access (external, extension-managed)
3. Improved User Experience
- Seamless console access from CloudStack UI
- Support for modern web-based consoles
- Reduced need for custom tooling or manual access workflows
4. Extensibility for Future Platforms
Any orchestrator extension can now implement getconsole and provide console access without requiring changes in CloudStack core.
For Extension Developers
To enable console access in your extension:
- Implement the getconsole action
- Return console details in one of the supported formats:
- VNC (host, port, password)
- Direct URL
This makes it straightforward to integrate console access regardless of the underlying platform.
More details about the integration can be found in the Extensions documentation.
Conclusion
With this update in 4.22.0.0, CloudStack’s Extensions Framework takes a significant step forward in making external orchestrators first-class citizens.
Whether you are:
- Using the in-built Proxmox extension, or
- Developing your own extension with external console support,
you can now provide native, integrated console access to users directly from CloudStack.
Abhishek Kumar is a software engineer by profession. His personal interests and hobbies are technology, politics and sports. Abhishek is experienced in development and management of a variety of desktop and mobile applications. He has a particular interest in mobile application development, designing and developing highly interactive and intuitive mobile, desktop applications GUI.
Abhishek became part of ShapeBlue in 2019 and is currently an active Apache CloudStack Committer.
You can learn more about Abhishek and his background by reading his Meet The Team blog.