Ironic Graphical Console guide
This guide explains how the Graphical Console feature is implemented for
baremetal nodes.
Overview
The overall goal of this is to provide the Undercloud users
with an out-of-band, graphical console access to their provisioned nodes. At
the same time, we do not want to give them full access to DRAC / iLo
interfaces, nor do we want to share the access credentials.
Graphical console access feature is realised using several different components
stitched together.
You can see how they all fit together on a diagram in components section.
Here is brief explanation of what each component is responsible for:
- User is typically interacting with Ironic API through the Openstack
CLI and uses web browser to access the console - Ironic Conductor is responsible for starting the console containers
upon user request - Ironic Conductor is also responsible for creating a Kubernetes secret
with the credentials to access the console - Console VNC Containers are like a mini jump host desktops that can run
only one application - a browser with a HTML5 console exposed by the
baremetal nodes BMC. These containers are accessible (internally) through
VNC. - ironic-novncproxy is launched alongside the Ironic Conductor and as
the name implies, it proxies users HTTPS traffic. It does that by serving
noVNC web application to the user's
browser. The browser then opens websocket connection to the
ironic-novncproxy which in turn opens VNC connection to the relevant
container.
Sequence diagram
Below diagram shows the sequence of events that occur during typical session
when the user or operator opens the console.
Components
A typical deployment will have several components running to provide console functionality.
Please note:
- Each baremetal node console session gets it's own VNC container
- There is a 1:1 coupling between the Ironic conductor and the Ironic NOVNCProxy
Environment requirements and configuration
Following per-environment configurations must be made to enable graphical
console feature:
- The baremetal nodes' console_interface must be set to a graphical driver
such asredfish-graphical. - Ironic must have the relevant drivers enabled in
enabled_console_interfaces ironic-novncproxymust be launched for each of the ironic conductors. At
the time of writing, this is achieved throughextraContainersbecause
OpenStack Helm does not have direct support for launching that component. We
plan to contribute that feature to OSH soon.- Each instance of the
ironic-novncproxymust be exposed to the external
world. This means, we have to create relevant KubernetesServiceand
HTTPRoutedefinitions. Thecert-managerwill take care of TLS certificates
andexternal-dnswill register the DNS domain. - (Optional) The RBAC policy may need to be adjusted as the baremetal console,
by default is only accessible to admins.
Docs
- ironic VNC config documentation
- ironic - Graphical Console support