Skip to content

Conversation

@sadasu
Copy link
Contributor

@sadasu sadasu commented Oct 17, 2019

Adding config items required for a Baremetal IPI deployment to
the BareMetalPlatformStatus CR. Based on enhancement request:
openshift/enhancements#90

@openshift-ci-robot openshift-ci-robot added the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Oct 17, 2019
@openshift-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: sadasu
To complete the pull request process, please assign deads2k
You can assign the PR to them by writing /assign @deads2k in a comment when ready.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@sadasu sadasu changed the title Add Metal3 specific config items to Baremetal Infrastructure status WIP: Add Metal3 specific config items to Baremetal Infrastructure status Oct 17, 2019
@openshift-ci-robot openshift-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Oct 17, 2019
@openshift-ci-robot openshift-ci-robot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Oct 17, 2019
@sadasu sadasu force-pushed the metal3-config branch 3 times, most recently from 03594a1 to 3e220c2 Compare October 23, 2019 15:34
@openshift-ci-robot openshift-ci-robot added size/S Denotes a PR that changes 10-29 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Oct 23, 2019
Copy link

@dhellmann dhellmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've suggested some wording updates to add/clarify some details. Let me know what you think.

// to the nodes in the cluster.
NodeDNSIP string `json:"nodeDNSIP,omitempty"`

// Interface on a Baremetal server where the provisioning network is connected.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about:

Suggested change
// Interface on a Baremetal server where the provisioning network is connected.
// The name of the network interface on a Baremetal server connected to the provisioning network.

// Interface on a Baremetal server where the provisioning network is connected.
ProvisioningInterface string `json:"provisioningInterface"`

// IP address of the Provisioning interface.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn 't the IP of the interface. It's a VIP that moves with the provisioning service.

Suggested change
// IP address of the Provisioning interface.
// The VIP to be used by the provisioning service. This must be on the provisioning subnet, and outside of the DHCP range.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's not strictly true, it's an IP which we use to configure the IP on whatever node runs the provisioning service, to me VIP implies loadbalancing/keepalived which is not the case here?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's my misunderstanding, then. I thought that it was the IP that moved with the service if it was rescheduled. Maybe that's not the same thing as a VIP.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah it's not actually a VIP, we the IP moves only because https://github.com/openshift/ironic-static-ip-manager gets moved as start of the pod reschedule, so we bring up the same IP on the new node, and the short lifetime means the previous node no longer uses it, assuming it's still running.

// IP address of the Provisioning interface.
ProvisioningIp string `json:"provisioningIp"`

// IP address range from which Baremetal hosts can be assigned an IP.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// IP address range from which Baremetal hosts can be assigned an IP.
// IP address range on the provisioning subnet from which Baremetal hosts can be assigned an IP.

// for faster downloads.
CacheUrl string `json:"cacheUrl"`

// Metal3 deployment specific config.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// Metal3 deployment specific config.
// URL for the RHCOS image for deploying new nodes in the cluster.

@sadasu sadasu force-pushed the metal3-config branch 3 times, most recently from 10ddfd8 to dc13360 Compare October 23, 2019 18:28
@openshift-ci-robot openshift-ci-robot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Oct 23, 2019
@sadasu sadasu changed the title WIP: Add Metal3 specific config items to Baremetal Infrastructure status Add Metal3 specific config items to Baremetal Infrastructure status Oct 23, 2019
@openshift-ci-robot openshift-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Oct 23, 2019

// provisioningIp is the VIP to be used by the provisioning service. This must be on the provisioning
// subnet, and outside of the DHCP range.
ProvisioningIp string `json:"provisioningIp"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IP

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the related Installer PR we have two install-config entries, ProvisioniningIP and ProvisioningNetworkCIDR

openshift/installer#2449

Is there a preference in terms of API conventions with whether we pass both ProvisioniningIP and ProvisioningNetworkCIDR here, or just ProvisioningIP and make that CIDR format, e.g append the subnet?

ProvisioningInterface string `json:"provisioningInterface"`

// provisioningIp is the VIP to be used by the provisioning service. This must be on the provisioning
// subnet, and outside of the DHCP range.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

required or optional?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should say just "IP" not VIP, it's used to bring up a NIC for provisioning.

The provisioning interface is probably required in this API I think, as although there are defaults specified in the underlying containers, it's likely the MAO will require these values to set up the ConfigMap @sadasu ?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I thought this was the IP that floated around with the metal3 pod if it was rescheduled. Is that not the case?

Copy link
Contributor Author

@sadasu sadasu Oct 24, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@deads2k All the config that is being added here with the exception of CacheURL are required for a Baremetal IPI deployment.

Copy link
Contributor Author

@sadasu sadasu Oct 24, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hardys ProvisioningInterface is a required parameter. We cannot makes any good assumptions about which interface on the physical server would be connected to the provisioning interface.

// subnet, and outside of the DHCP range.
ProvisioningIp string `json:"provisioningIp"`

// dhcpRange is the IP address range on the provisioning subnet from which Baremetal hosts
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indicate format. I'm assuming CIDR, but I'm not sure.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be "ProvisioningDHCPRange" given the Provisioning prefix for the Interface/IP values above?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re the format, the underlying container expects a comma-separated pair of IPs, not a CIDR:

https://github.com/openshift/ironic-image/blob/master/rundnsmasq.sh#L6

We could however convert from a CIDR, either in the container or the MAO if needed?


// dhcpRange is the IP address range on the provisioning subnet from which Baremetal hosts
// can be assigned an IP address.
DhcpRange string `json:"dhcpRange"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sttts I can't remember, did we default optional or required?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


// cacheUrl is the location where images have been previously downloaded and available
// for faster image downloads within the cluster.
CacheUrl string `json:"cacheUrl,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

URL be consistent with the API in the same file


// dhcpRange is the IP address range on the provisioning subnet from which Baremetal hosts
// can be assigned an IP address.
DhcpRange string `json:"dhcpRange"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if this is a CIDR, we use CIDR in the network API to describe this.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DHCP

Copy link
Contributor Author

@sadasu sadasu Oct 28, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@deads2k Currently, it is comma separated pair of IP addresses where the 1st IP is the start of the range and the 2nd IP represents the end of the range. I can update the description to make this clear.


// cacheUrl is the location where images have been previously downloaded and available
// for faster image downloads within the cluster.
CacheUrl string `json:"cacheUrl,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

describe what happens if this is missing.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this configuration is missing, the image will be downloaded directly from the RHCOSImageURL.

@deads2k
Copy link
Contributor

deads2k commented Oct 23, 2019

/hold

This needs an enhancement (https://github.com/openshift/enhancements) that includes descriptions of what you're replacing and how you plan to handle the migration and upgrade of existing data.

@openshift-ci-robot openshift-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Oct 23, 2019
CacheUrl string `json:"cacheUrl,omitempty"`

// rhcosImageUrl is the URL for RHCOS Image for deploying new nodes in the cluster.
RhcosImageUrl string `json:"rhcosImageUrl"`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on other comments, I assume this should be RHCOSImageURL? Do we need the "RHCOS" prefix in the name?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have updated the name to be RHCOSImageURL. Having RHCOS as a prefix would make it clear what that URL points to but I am open to other naming options.

@hardys
Copy link

hardys commented Oct 24, 2019

that includes descriptions of what you're replacing and how you plan to handle the migration and upgrade of existing data.

Can you expand on that requirement please @deads2k - this is a net-new integration for the currently experimental/unsupported baremetal IPI platform

@sadasu sadasu changed the title Add Metal3 specific config items to Baremetal Infrastructure status Add Metal3 specific config items to BareMetalPlatformStatus Oct 24, 2019
Adding config items required for a Baremetal IPI deployment to
the BareMetalPlatformStatus CR. Based on enhancement request:
openshift/enhancements#90

// dhcpRange is the IP address range on the provisioning subnet from which baremetal hosts
// can be assigned an IP address.
DHCPRange string `json:"dhcpRange"`
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To make it clear what this is for should we call this ProvisioningDHCPRange?

Also I think a previous reviewer asked for clarification on the format here - currently we expect a comma-separated list of two IPs, so we should mention that in the comment.

Alternatively we could instead have two parameters (ProvisioningDHCPStart and ProvisioningDHCPEnd), or a CIDR to express the range, I don't really have a strong opinion on which although it would be nice to decide soon so we can align the related installer PR with the same interface.

hardys pushed a commit to imain/installer that referenced this pull request Oct 28, 2019
Extend the baremetal platform fields to include provisioning information
for the pod started by the Machine API Operator.  Now includes defaults
and the ability to set defaults based on just the network CIDR.

Note this depends on openshift/api#480

Co-Authored-By: Steven Hardy <[email protected]>
@sadasu
Copy link
Contributor Author

sadasu commented Dec 9, 2019

/close
These config items are being added to a new CR. Pull request for that effort : #540.

@soltysh
Copy link
Contributor

soltysh commented Dec 12, 2019

Based on previous comment, looks like the bot didn't catch the command.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants