Skip to content

Support separate network for HTTP service #490

@lentzi90

Description

@lentzi90

It is quite common that a separate out of band (OOB) network is used for BMCs. This can make it tricky to use virtualmedia with Ironic when deployed by IrSO. I want to support the following configuration:

  • Provisioning network: 192.168.0.0/24 - no VLAN. Provisioning IP belongs here, dnsmasq provides DHCP here.
  • OOB network: 192.168.1.0/24 - VLAN 2. No DHCP. BMCs live here. Ironic needs access to this network to communicate with them. IRONIC_HTTP_URL belongs here since the BMCs need to access virtualmedia through it.

Before IrSO, I have been using IRONIC_HTTP_URL to achieve this. I am not sure if it is the "correct" way, but it works. I simply make sure that the node where Ironic runs has an IP assigned that I can use and set the variable to it. Our keepalived image only supports a single IP currently so I have been doing it in other ways. However, I am hoping that we could add this also as a feature there.

I do not have a complete design ready in my head, but here is something as a discussion starter:

apiVersion: ironic.metal3.io/v1alpha1
kind: Ironic
metadata:
  name: ironic
  namespace: baremetal-operator-system
spec:
  networking:
    dhcp:
      rangeBegin: "192.168.0.200"
      rangeEnd: "192.168.0.220"
      networkCIDR: "192.168.0.0/24"
    interface: "eth0"
    ipAddress: "192.168.0.100"
    ipAddressManager: "keepalived"
    imageServerIpAddress: "192.168.1.50" # new field
    # imageServerPort: 80 # already implemented
    # imageServerTLSPort: 443 # already implemented
    keepalived: # new struct, requires support in keepalived scripts
      - ipAddress: 192.168.0.100
        interface: "eth0"
      - ipAddress: 192.168.1.50
        interface: "eth1"
    # keepalivedOverrideConfig: | # alternative escape hatch
      # vrrp_instance V_1 {
      #   state MASTER
      # ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageIndicates an issue lacks a `triage/foo` label and requires one.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions