-
Notifications
You must be signed in to change notification settings - Fork 582
Add Metal3 specific config items to BareMetalPlatformStatus #480
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: sadasu 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 |
03594a1 to
3e220c2
Compare
dhellmann
left a comment
There was a problem hiding this 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.
config/v1/types_infrastructure.go
Outdated
| // to the nodes in the cluster. | ||
| NodeDNSIP string `json:"nodeDNSIP,omitempty"` | ||
|
|
||
| // Interface on a Baremetal server where the provisioning network is connected. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about:
| // 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. |
config/v1/types_infrastructure.go
Outdated
| // Interface on a Baremetal server where the provisioning network is connected. | ||
| ProvisioningInterface string `json:"provisioningInterface"` | ||
|
|
||
| // IP address of the Provisioning interface. |
There was a problem hiding this comment.
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.
| // 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. |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
config/v1/types_infrastructure.go
Outdated
| // IP address of the Provisioning interface. | ||
| ProvisioningIp string `json:"provisioningIp"` | ||
|
|
||
| // IP address range from which Baremetal hosts can be assigned an IP. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| // 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. |
config/v1/types_infrastructure.go
Outdated
| // for faster downloads. | ||
| CacheUrl string `json:"cacheUrl"` | ||
|
|
||
| // Metal3 deployment specific config. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| // Metal3 deployment specific config. | |
| // URL for the RHCOS image for deploying new nodes in the cluster. |
10ddfd8 to
dc13360
Compare
config/v1/types_infrastructure.go
Outdated
|
|
||
| // 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"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IP
There was a problem hiding this comment.
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
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?
config/v1/types_infrastructure.go
Outdated
| 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
required or optional?
There was a problem hiding this comment.
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 ?
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
config/v1/types_infrastructure.go
Outdated
| // 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 |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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?
config/v1/types_infrastructure.go
Outdated
|
|
||
| // dhcpRange is the IP address range on the provisioning subnet from which Baremetal hosts | ||
| // can be assigned an IP address. | ||
| DhcpRange string `json:"dhcpRange"` |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
config/v1/types_infrastructure.go
Outdated
|
|
||
| // cacheUrl is the location where images have been previously downloaded and available | ||
| // for faster image downloads within the cluster. | ||
| CacheUrl string `json:"cacheUrl,omitempty"` |
There was a problem hiding this comment.
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
config/v1/types_infrastructure.go
Outdated
|
|
||
| // dhcpRange is the IP address range on the provisioning subnet from which Baremetal hosts | ||
| // can be assigned an IP address. | ||
| DhcpRange string `json:"dhcpRange"` |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DHCP
There was a problem hiding this comment.
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.
config/v1/types_infrastructure.go
Outdated
|
|
||
| // cacheUrl is the location where images have been previously downloaded and available | ||
| // for faster image downloads within the cluster. | ||
| CacheUrl string `json:"cacheUrl,omitempty"` |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
|
/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. |
config/v1/types_infrastructure.go
Outdated
| CacheUrl string `json:"cacheUrl,omitempty"` | ||
|
|
||
| // rhcosImageUrl is the URL for RHCOS Image for deploying new nodes in the cluster. | ||
| RhcosImageUrl string `json:"rhcosImageUrl"` |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
Can you expand on that requirement please @deads2k - this is a net-new integration for the currently experimental/unsupported baremetal IPI platform |
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"` |
There was a problem hiding this comment.
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.
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]>
|
/close |
|
Based on previous comment, looks like the bot didn't catch the command. |
Adding config items required for a Baremetal IPI deployment to
the BareMetalPlatformStatus CR. Based on enhancement request:
openshift/enhancements#90