Moving a subthread from coreos/fedora-coreos-tracker#98 (comment) (part of openshift/enhancements#201 )here.
Basically let's add https://mirror.openshift.com/dependencies/rhcos/stream-4.8.json
(Note that stream metadata contains multiple architectures by design, so it's not under the existing arch-dependent location).
This could then also be used by coreos-installer download -o rhcos -s rhcos-4.8, and we'd also update all the UPI documentation to refer to it instead of e.g. hardcoding AMIs in the documentation.
Now, we have the option to move this data out of openshift/installer entirely; in connected installs we just download it dynamically, in disconnected installs we require the user to mirror it. I'm on the fence about this; perhaps too big of a change for 4.8.
Proposal: mirror.openshift.com path
- Introduce github.com/openshift/rhel-coreos-bootimage that contains a single
stream.json file with multiple branches.
- Add an initially-manual flow to submit a PR there to bump it, that works just like bumping openshift/installer would - e.g. we have CI hooked up
- Add an ART process that scrapes this JSON from git and syncs it to mirror.openshift.com
- Initially also do a manual PR to update openshift/installer
The major disadvantage of this is that we would have bootimages in two places, and the potential for divergence between IPI and UPI. But, I am hopeful that if we streamline CI for rhel-coreos-bootimage we can just wave through sync PRs to update openshift/installer.
It also slightly breaks the "hermetic" nature of the current (openshift-install, release image) tuple because there's another input which can change over time not versioned with those. Perhaps a middle ground compromise is that we add versioned stream metadata, i.e. https://mirror.openshift.com/dependencies/rhcos/stream-4.8-20200325.json and openshift-install has a pinned copy of it.
Proposal: Embed in release image path
- Introduce github.com/openshift/rhel-coreos-bootimage that contains a single
stream.json file with multiple branches.
- Add a
Dockerfile which puts this JSON in a container image
- Add that container image to the release image
- Change openshift/installer to pull and extract that piece of the release image
Advantages: Makes it more obvious how to get this data "in cluster" for eventual in-cluster updates. Versioned with the release image naturally.
Disadvantages: Nontrivial change to openshift/installer because it has to pull the release image client side (but maybe openshift-installer can just require oc to be present and fork off oc image extract?)
Moving a subthread from coreos/fedora-coreos-tracker#98 (comment) (part of openshift/enhancements#201 )here.
Basically let's add https://mirror.openshift.com/dependencies/rhcos/stream-4.8.json
(Note that stream metadata contains multiple architectures by design, so it's not under the existing arch-dependent location).
This could then also be used by
coreos-installer download -o rhcos -s rhcos-4.8, and we'd also update all the UPI documentation to refer to it instead of e.g. hardcoding AMIs in the documentation.Now, we have the option to move this data out of openshift/installer entirely; in connected installs we just download it dynamically, in disconnected installs we require the user to mirror it. I'm on the fence about this; perhaps too big of a change for 4.8.
Proposal: mirror.openshift.com path
stream.jsonfile with multiple branches.The major disadvantage of this is that we would have bootimages in two places, and the potential for divergence between IPI and UPI. But, I am hopeful that if we streamline CI for rhel-coreos-bootimage we can just wave through sync PRs to update openshift/installer.
It also slightly breaks the "hermetic" nature of the current (
openshift-install, release image) tuple because there's another input which can change over time not versioned with those. Perhaps a middle ground compromise is that we add versioned stream metadata, i.e. https://mirror.openshift.com/dependencies/rhcos/stream-4.8-20200325.json andopenshift-installhas a pinned copy of it.Proposal: Embed in release image path
stream.jsonfile with multiple branches.Dockerfilewhich puts this JSON in a container imageAdvantages: Makes it more obvious how to get this data "in cluster" for eventual in-cluster updates. Versioned with the release image naturally.
Disadvantages: Nontrivial change to openshift/installer because it has to pull the release image client side (but maybe
openshift-installercan just requireocto be present and fork offoc image extract?)