Revise KubeVirt platform for hypershift usage#3084
Revise KubeVirt platform for hypershift usage#3084openshift-merge-robot merged 1 commit intoopenshift:masterfrom
Conversation
Signed-off-by: David Vossel <davidvossel@gmail.com>
|
@davidvossel is there someone from your team who can also review this? |
|
/retest |
Seems like this could use a hyperlink. But anyways |
I added a link to the kubevirt hypershift documentation in the PR description. That's about the best thing we have that's publicly accessible. |
|
@davidvossel please assign a kubevirt/hypershift approver for the final lgtm |
@nirarg would you be able to do the final lgtm here? What I've done is revert the majority of the logic in #2098 while leaving the |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: cgwalters, davidvossel, nirarg The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
@davidvossel: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
Discussion in [1] has some details, but trying to unpack "all on-prem IPI except baremetal IPI" into specifics, [2] is in an on-prem directory configuring keepalived, and it switches on onPremPlatformAPIServerInternalIP for enabled vs. disabled. onPremPlatformAPIServerInternalIP is true (enabling the keepalived configuration) for: * BareMetal (4.10 [3] and 4.11 [4]) * oVirt (4.10 [3] and 4.11 [4]) * OpenStack (4.10 [3] and 4.11 [4]) * VSphere (4.10 [3] and 4.11 [4]), * KubeVirt (4.10 [3], dropped in 4.11 [4,5]) * Nutanix (new in 4.11 [4,6,7]). Before 4.11, ENABLE_UNICAST was conditional on onPremPlatformKeepalivedEnableUnicast [8], but since 4.11, it has always been 'yes' [9]. The platforms that were unicast on 4.10's onPremPlatformKeepalivedEnableUnicast were BareMetal and KubeVirt [10]. Putting this all together, AWS and other platforms that don't match the onPremPlatformAPIServerInternalIP logic aren't impacted, because they don't enable the keepalived configuration. BareMetal is not impacted by 4.10-to-4.11 updates, because any to-unicast transition issues will already have been resolved by 4.10. Remaining onPremPlatformAPIServerInternalIP platforms which occur in both 4.10 and 4.11 are interested, and I match them here. Generated by writing the 4.11.0 declaration by hand, and then copying out to other 4.11 releases with: $ curl -s 'https://api.openshift.com/api/upgrades_info/graph?channel=candidate-4.11' | jq -r '.nodes[].version' | grep '^4[.]11[.]' | grep -v '^4[.]11[.]0$' | while read V; do sed "s/4[.]11[.]0/${V}/g" blocked-edges/4.11.0-KeepalivedMulticastSkew.yaml > "blocked-edges/${V}-KeepalivedMulticastSkew.yaml"; done $ git add blocked-edges/4.11.*KeepalivedMulticastSkew.yaml [1]: https://issues.redhat.com/browse/OPNET-296 [2]: https://github.com/openshift/machine-config-operator/blame/8fa0b7e8903226b3cfb76e6c6f49409cfc0dd0e7/templates/common/on-prem/files/keepalived.yaml#L2 [3]: https://github.com/openshift/machine-config-operator/blob/afb47c916680dd5870e48e5c9cf819f59e12ff4d/pkg/operator/render.go#L282-L294 [4]: https://github.com/openshift/machine-config-operator/blob/8fa0b7e8903226b3cfb76e6c6f49409cfc0dd0e7/pkg/operator/render.go#L282-L294 [5]: openshift/machine-config-operator#3084 [6]: openshift/machine-config-operator#2942 [7]: https://docs.openshift.com/container-platform/4.11/release_notes/ocp-4-11-release-notes.html#ocp-4-11-nutanix [8]: https://github.com/openshift/machine-config-operator/blob/afb47c916680dd5870e48e5c9cf819f59e12ff4d/templates/common/on-prem/files/keepalived.yaml#L155-L156 [9]: openshift/machine-config-operator@84d0bae#diff-c4a27bc4c14847dd581f495e992f67cf49b430644e8f113aabfa879de076564dL156 [10]: https://github.com/openshift/machine-config-operator/blob/afb47c916680dd5870e48e5c9cf819f59e12ff4d/pkg/operator/render.go#L249-L250
Discussion in [1] has some details, but trying to unpack "all on-prem IPI except baremetal IPI" into specifics, [2] is in an on-prem directory configuring keepalived, and it switches on onPremPlatformAPIServerInternalIP for enabled vs. disabled. onPremPlatformAPIServerInternalIP is true (enabling the keepalived configuration) for: * BareMetal (4.10 [3] and 4.11 [4]) * oVirt (4.10 [3] and 4.11 [4]) * OpenStack (4.10 [3] and 4.11 [4]) * VSphere (4.10 [3] and 4.11 [4]), * KubeVirt (4.10 [3], dropped in 4.11 [4,5]) * Nutanix (new in 4.11 [4,6,7]). Before 4.11, ENABLE_UNICAST was conditional on onPremPlatformKeepalivedEnableUnicast [8], but since 4.11, it has always been 'yes' [9]. The platforms that were unicast on 4.10's onPremPlatformKeepalivedEnableUnicast were BareMetal and KubeVirt [10]. Putting this all together, AWS and other platforms that don't match the onPremPlatformAPIServerInternalIP logic aren't impacted, because they don't enable the keepalived configuration. BareMetal is not impacted by 4.10-to-4.11 updates, because any to-unicast transition issues will already have been resolved by 4.10. Remaining onPremPlatformAPIServerInternalIP platforms which occur in both 4.10 and 4.11 are interested, and I match them here. Generated by writing the 4.11.0 declaration by hand, and then copying out to other 4.11 releases with: $ curl -s 'https://api.openshift.com/api/upgrades_info/graph?channel=candidate-4.11' | jq -r '.nodes[].version' | grep '^4[.]11[.]' | grep -v '^4[.]11[.]0$' | while read V; do sed "s/4[.]11[.]0/${V}/g" blocked-edges/4.11.0-KeepalivedMulticastSkew.yaml > "blocked-edges/${V}-KeepalivedMulticastSkew.yaml"; done $ git add blocked-edges/4.11.*KeepalivedMulticastSkew.yaml [1]: https://issues.redhat.com/browse/OPNET-296 [2]: https://github.com/openshift/machine-config-operator/blame/8fa0b7e8903226b3cfb76e6c6f49409cfc0dd0e7/templates/common/on-prem/files/keepalived.yaml#L2 [3]: https://github.com/openshift/machine-config-operator/blob/afb47c916680dd5870e48e5c9cf819f59e12ff4d/pkg/operator/render.go#L282-L294 [4]: https://github.com/openshift/machine-config-operator/blob/8fa0b7e8903226b3cfb76e6c6f49409cfc0dd0e7/pkg/operator/render.go#L282-L294 [5]: openshift/machine-config-operator#3084 [6]: openshift/machine-config-operator#2942 [7]: https://docs.openshift.com/container-platform/4.11/release_notes/ocp-4-11-release-notes.html#ocp-4-11-nutanix [8]: https://github.com/openshift/machine-config-operator/blob/afb47c916680dd5870e48e5c9cf819f59e12ff4d/templates/common/on-prem/files/keepalived.yaml#L155-L156 [9]: openshift/machine-config-operator@84d0bae#diff-c4a27bc4c14847dd581f495e992f67cf49b430644e8f113aabfa879de076564dL156 [10]: https://github.com/openshift/machine-config-operator/blob/afb47c916680dd5870e48e5c9cf819f59e12ff4d/pkg/operator/render.go#L249-L250
Originally the KubeVirt platform was being developed as an ipi installed platform. It was being treated very similar to other on-prem provides. This KubeVirt ipi effort has been abandoned.
In its place, we are working on a KubeVirt Hypershift platform, which has different requirements than the IPI installation. To account for this, we need to strip out all the left over IPI configuration bits. We do however want to keep the KubeVirt platform as a separate infrastructure platform because we will begin leveraging this platform in unique ways in the future.