Ironic驱动的VNC控制台支持

https://blueprints.launchpad.net/nova/+spec/ironic-vnc-console

该特性旨在提供来自Ironic的vnc控制台。

问题描述

最终用户经常需要排查他们的实例,因为他们可能破坏了启动配置或使用防火墙把自己锁定了。键盘-视频-鼠标 (KVM) 访问通常是解决这些类型问题的必需条件,因为串口访问并非总是可用或正确配置。此外,与串口控制台相比,KVM 提供了更好的用户体验。

Horizon的VNC控制台不支持Nova配置的Ironic节点。此规范旨在通过novnc代理将其扩展到图形控制台。

用例

最终用户将能够从裸机服务器获取可用的vnc控制台url:在bm侧切换控制台类型为 vnc openstack baremetal node console enable openstack console url show --novnc

应部署nova_novncproxy

提议的变更

  • Ironic virt驱动程序将不得不实现 get_vnc_console 并返回一个 ctype.ConsoleVNC,其中包含所需的连接信息(端口/ip)。如果实例不可用vnc控制台,将引发 ConsoleTypeUnavailable。要获取vnc控制台,将使用ironic API node.get_console(与用于串行控制台相同的API)。

备选方案

接受此限制并仅提供串行控制台。我们可以配置kvm访问,包括通过串行代理和shell in a box访问bios,用于Nova配置的Ironic裸机实例。

使用管理员提供的带外 KVM 访问,无需 Ironic 支持。

数据模型影响

REST API 影响

安全影响

VNC连接到节点通过在Nova中创建控制台时生成的令牌来保护。此bearer令牌是连接到代理所需的唯一内容,因此用户与代理之间的连接应通过ssl进行保护,就像vms一样

通知影响

其他最终用户影响

性能影响

其他部署者影响

大部分更改将在ironic侧进行。在ironic中,我们必须选择要使用的控制台,串行或vnc。此选择不影响nova。Ironic侧还将实现vnc代理,以处理rfb握手

对配置的添加将与串行控制台类似:nova-novncproxy/nova.conf:[vnc] novncproxy_host = … novncproxy_port = … server_listen = … server_proxyclient_address = … auth_schemes = vnc

nova-compute-ironic/nova.conf:[vnc] enabled = true novncproxy_host = … novncproxy_port = … server_listen = … server_proxyclient_address = … novncproxy_base_url = …

nova-conductor/nova.conf [vnc] novncproxy_host = … novncproxy_port = … server_listen = … server_proxyclient_address = …

开发人员影响

升级影响

实现

负责人

主要负责人

kirillgermanov

其他贡献者

功能联络人

工作项

  • nova-compute-ironic:向Ironic virt驱动程序添加新方法 get_vnc_console

依赖项

https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/vnc-graphical-console.html#id2

测试

添加相关的单元测试

文档影响

更新所需

https://docs.openstack.org/nova/latest/admin/remote-console-access.html https://docs.openstack.org/ironic/latest/admin/console.html

参考资料

历史