-
Notifications
You must be signed in to change notification settings - Fork 475
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
single-node deployment with bootstrap-in-place #565
Conversation
c250c32
to
3345034
Compare
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
There's a lot to like here - the motivations/drawbacks/alternatives/etc are all well-captured, and the UX makes sense to me. I think I'd need a POC to poke at the bootkube/cluster-bootstrap/static pods interactions intelligently. Can you link to the POC? (I see Eran's iBIP branches of openshift/installer and openshift/cluster-bootstrap, but I'd appreciate more hand-holding) The fact that this doesn't address cloud use cases to begin with might be fine, but I think it would be worth describing whether we believe we can never address cloud with a model like this, or that we have a reasonable idea of how it can work and believe it should be done in a later iteration. |
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
Relevant POC PRs: |
/retitle single-node deployment with bootstrap-in-place |
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
Signed-off-by: Doug Hellmann <dhellmann@redhat.com>
/approve |
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
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.
/approve
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: eparis, staebler The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
enhancements/installer/single-node-installation-bootstrap-in-place.md
Outdated
Show resolved
Hide resolved
I thought the goal of this work was to bring the assisted install workflow and "regular" workflow closer together, but after discussing some implementation details with Rom today it became clear that the assisted installer would not be using the new openshift-install command described by this enhancement in any way. There are too many extra behaviors being managed by the agent on the host for it to be replaced by a simple bootstrap ignition, and both the bootstrap and master ignition artifacts are modified by the assisted service or agent before use. If that's all correct, and CI and developer workflows would be significantly different, I'm no longer sure we need to do this work at all. Do we need to rethink how we solve the CI and developer use cases? Or is this more useful than I've come to understand? |
I think it would be great to have this enhancement and everybody will gain from it being merged and implemented. |
In order for this feature to be meaningful to direct openshift-install users, there needs to be an automated way for the installation to be completed. It looks like we're close to consensus in the long comment thread on how to model the coreos-installer args. However, what has emerged in that discussion is that the assisted installation workflow requires some way to generate the "enriched" master Ignition, but not execute coreos-installer. This is seen as objectionable because there is a reluctance to add a "don't run coreos-installer" interface. I think many of us (me included) lack a detailed understanding of the assisted installer workflow and, in particular, the coupling of the assisted installer workflow to what are arguably implementation details of the openshift installer. I spent some time on this and captured some notes here: https://hackmd.io/@markmc/B1xPBZ_xu I'm not sure whether we need to expand those notes further, and include them in this enhancement. Or perhaps a separate enhancement where we agree and track which of these openshift installer implementation details are valid for the assisted install workflow to depend on. In any case, now that I understand the workflow, here's a pragmatic proposal ... If |
I also thought part of the point of this work was to start converging the assisted installer with the openshift installer, so that we only had 1 code path in production, even if different interfaces used different parts of that code path. So it's not just that we don't want to disable running the coreos-installer sometimes, it's that we want it run the same way all the time. Is that not a goal?
I left a couple of questions there before remembering that hackmd doesn't send notifications.
That adds another implementation detail to the dependency list, which may be necessary depending on the answers to the questions above. |
I dunno, it seems clear (based on how the POC implementation was integrated into the assisted workflow) that there was no intention as part of this work to move away from the model of assisted-installer using a workflow of "download and extract the bootstrap ignition, run bootkube, and then pivot by writing the master ignition and rebooting" I'd be hard pressed to say that "strive to reuse existing code and should not affect existing deployment flows" was intended to mean broader convergence of assisted vs openshift installers
It sounds plausible, but quite a challenging change to make - splitting out the log uploading and status updating code into a new binary, passing it credentials, etc. And I would guess I'm oversimplifying what this separate service would need to do
Yeah, I haven't investigated yet exactly coreos-installer args the assisted service is sending to assisted-installer, and why
Right, the new dependency is that running |
Also that the |
I agree that for the single-node use case we should have single way of doing things.
Yes, this seems like a good option, the assisted-installer will use the same code by starting the relevant services once it's ready (same as it does for bootkube, approve-csr, etc today)
All options are available before starting the installation so that shouldn't be an issue. |
The assisted-service has an explicit list of services it will start, so it doesn't need to know to disable this new service:
(Not disagreeing with the general point that dependencies like this are not ideal, just clarifying the precise implications of this one) |
We forgot about the "merge enriched ignition with host ignition" step, which has to happen before coreos-installer runs. Can you help us understand what sort of edits the assisted installer needs to make to the enriched ignition? I found set requested hostname but that doesn't help with the bigger picture |
What types of items need to be in the enriched ignition instead of being handled by a MachineConfig? |
@matthewcarleton it is used by BM customers for various adjustments - file system customization, advanced networking, other changed that should happen before the ingnition is being applied.
Hope it provides more information. |
I almost forgot - there is also minimal iso as MUST requirement for 4.8 |
…temd Signed-off-by: Doug Hellmann <dhellmann@redhat.com>
in the `install-config.yaml`, using a schema like | ||
|
||
```yaml | ||
coreOSInstallation: |
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 approve of these changes. I would like to reserve the right to adjust the name of this field to bring it out of the implementation domain and into the user domain. I do not want to hold up merging this PR while we debate this name, however. We can work on this name as we work on adding additional fields, with the understanding that the name needs to be finalized soon (certainly before we ship 4.8).
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.
Thanks for noting.
IMO, I think that makes sense in general for all enhancements - we should bias towards merging and iterating on the details, once the fundamentals have been worked through. The fundamental here was the need for an API and its requirements, not the details of its design.
agreed. Thanks
…On Thu, Feb 4, 2021, 00:49 Matthew Staebler ***@***.***> wrote:
***@***.**** commented on this pull request.
------------------------------
In enhancements/installer/single-node-installation-bootstrap-in-place.md
<#565 (comment)>
:
> +addition to the standard rendering logic, the modified script will:
+
+1. Start `cluster-bootstrap` without required pods by setting `--required-pods=''`
+2. Run `cluster-bootstrap` with the `--bootstrap-in-place` option.
+3. Fetch the master Ignition and combine it with the original Ignition
+ config, the control plane static pod manifests, the required
+ kubernetes resources, and the bootstrap etcd database snapshot to
+ create a new Ignition config for the host.
+
+In order to successfully complete the installation, we must know
+where to write the operating system image on the host's local
+storage. Initially this information will be passed as a single value
+in the `install-config.yaml`, using a schema like
+
+```yaml
+coreOSInstallation:
I approve of these changes. I would like to reserve the right to adjust
the name of this field to bring it out of the implementation domain and
into the user domain. I do not want to hold up merging this PR while we
debate this name, however. We can work on this name as we work on adding
additional fields, with the understanding that the name needs to be
finalized soon (certainly before we ship 4.8).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#565 (review)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABLPP435H6EQZMR7D6VMQC3S5HHIDANCNFSM4UZVGIEA>
.
|
Thanks all, I think this approach of adding an install-config section for coreos-install config and adding a new systemd unit for running coreos install, is a pragmatic and important solution. The note on "Tight coupling of assisted installer and OpenShift installer implementation" is an important observation too - I think we should discuss how to follow up on this in the near future /lgtm |
As we add the new single-node production deployment we need a way to install such cluster without an extra node dependency for bootstrap.
This enhancement describes the flow for installing Single Node OpenShift using liveCD that perform the bootstrap logic and reboots to become the single node.