Windows Containers productization design - #5
Conversation
sdodson
left a comment
There was a problem hiding this comment.
lgtm for 4.3, provides flexibility to adapt in the future
aa75653 to
ae78830
Compare
ae78830 to
2173dda
Compare
| ## Summary | ||
|
|
||
| The intent of this enhancement is to allow a cluster administrator to add a | ||
| Windows worker node with a prescribed configuration to an OpenShift cluster as a |
There was a problem hiding this comment.
nit: s/worker/compute/, e.g. see the old openshift/installer#1330. Overhauling existing wording it hard, but no reason new stuff can't use the new wording :).
There was a problem hiding this comment.
I will make that change in all places. So is it compute Ignition or worker Ignition?
There was a problem hiding this comment.
Unless the machineconfigpool is changing to compute I think we should leave this as is.
There was a problem hiding this comment.
@sdodson is your comment against s/worker/compute/ or just the Ignition case?
| ### Goals | ||
|
|
||
| As part of this enhancement we plan to do the following: | ||
| * Prepare an already provisioned Windows worker node to join the cluster |
There was a problem hiding this comment.
Clarify the boundary between things the end-user does (just create a machine running Windows) and things Red Hat (tooling) does (install a kubelet, etc. etc.)? Currently that's all swept into "provision" and "Prepare". Maybe something like:
As part of this enhancement we plan to provide workflows for installing and upgrading OpenShift compute components (kubelet, OVN, and the Windows Machine Config Bootstrapper) on user-provided Windows machines. It will be up to the cluster administrator to initiate both installs and upgrades.
There was a problem hiding this comment.
I will go with your suggestion.
|
|
||
| The inputs that the WMCB requires are: | ||
| * kubelet location on the local disk | ||
| * Worker ignition location on the local disk |
| We plan to have all the repositories associated with this effort fully | ||
| integrated with Prow CI and run e2e tests for every PR that is opened. These | ||
| e2e tests will involve bringing up a cluster on all supported cloud providers, | ||
| instantiating a Windows node and running workloads on it. We also plan to add |
There was a problem hiding this comment.
This doesn't cover upgrade/downgrade testing. Probably call that out specifically and say whether or not you plan on covering it in CI.
There was a problem hiding this comment.
We are not planning on covering upgrade/downgrade testing using CI in the 4.3 timeframe. I will mention that.
|
|
||
| ### Version Skew Strategy | ||
|
|
||
| We plan to maintain kubelet major version parity with the Linux counterpart. |
There was a problem hiding this comment.
You'll have to have skew during upgrades across the boundary though. Maybe say something about having CI coverage when we get to that point so you can ensure that at least some Windows kubelets will successfully handle lagging by one major version behind the rest of the cluster. Or say that before a major bump folks might have to drain/wipe their Windows compute and re-attach them as fresh compute after the major bump?
There was a problem hiding this comment.
We are planning on advising the customer to exactly what is done in the BYO RHEL scenario i.e. drain the Windows compute nodes using the Ansible playbook. I will add a line about that.
Initial enhancement proposal for productization of Windows Containers that will enable running of Windows workloads on an OpenShift cluster.
2173dda to
ebb0e03
Compare
|
@wking I have addressed your comments. Please take a look. |
|
@crawford - Can you LGTM the PR? |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: aravindhp, crawford, sdodson 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 |
|
|
||
| The actions that the WMCB will perform are: | ||
| * Install / upgrade and configure the kubelet | ||
| * Parse the worker Ignition and extract the bootstrap kubeconfig and the |
There was a problem hiding this comment.
kubelet configuration varies for linux versus windows hosts, this has to be a separate pool.
There was a problem hiding this comment.
It's only used for the cluster coordinates and bootstrapping credentials.
English mistake: sums up => adds up
Updates for master -> main branch renamings
OCPEDGE-1458: Addressing post-architecture review feedback
- Enhance motivation section and shorten summary - Remove downgrade from goals, move day 0 installation to non-goals - Add goal to preserve user-facing Gateway API experience - Clarify upgrade migration, drift, and image sourcing wording - Add Hypershift and OKE notes - Update maintenance/testing burden in drawbacks - Remove "Loss of OLM Benefits" drawback - Move Istio CRD management question from openshift#5 to openshift#2 - Update feature gate and downgrade section wording
* NE-2470: Gateway API without OLM Adds enhancements/ingress/gateway-api-without-olm.md for installing Gateway API support without OLM dependency. This enhancement transitions cluster-ingress-operator from creating an OLM Subscription to installing istiod directly using Helm charts and sail-operator libraries. This eliminates the OLM dependency, avoids conflicts with existing OSSM subscriptions, enables Gateway API on clusters without OLM/Marketplace capabilities, and allows faster Gateway API releases independent of OLM release cycles. * NE-2470: Gateway API without OLM Address code review feedback and update enhancement for consistency. - Add platform feature language and layered product user story - Add goals for simplified testing/releases and lifecycle management - Add Component Versioning section and upgrade workflows - Add CRD mapping/reasoning for layered products - Add Resource Drift risk and webhook questions - Update test scenarios for upgrade validation - Fix wording inconsistencies throughout document * NE-2470: Gateway API without OLM Add pre-release testing details and custom image sources non-goal. - Add subsection on testing pre-releases of OSSM - Clarify custom image sources and mirroring are out of scope * NE-2470: Gateway API without OLM - Clarify workflow titles to be trigger-based on Gateway API installation state - Add Alternative 3: CIO manages sail-operator deployment directly - Update Open Questions with answers for CRD handling and webhook management - Add risk for future sail-operator feature requirements - Add drawback for pre-release testing workflow complexity - Update migration detection to only check for Istio CR - Add migration timeline note * NE-2470: Gateway API without OLM - Add PeerAuthentication to managed Istio CRDs for Kuadrant mTLS - Update CRD descriptions with RHOAI requirements - Add goals: reduce resource overhead and enable OKE support - Add alternative for using existing sail libraries without enhancements - Add risk about sail-operator library dependency coordination * NE-2470: Gateway API without OLM - Clarify CRDs are for north/south ingress use cases that work without service mesh - Remove PeerAuthentication (requires service mesh) - Add note that OSSM team will provide library functions for CRD management * NE-2470: Gateway API without OLM - Move CRD Management to Open Questions - Add Tech Preview feature gate graduation path for 4.22 * NE-2470: Gateway API without OLM - Add support procedures to satisfy markdownlint job - Replace vague "lifecycle management" with "reduce component dependencies" - Add note explaining "Helm-based" vs "OLM-based" terminology * Address Miciah's review comments - Enhance motivation section and shorten summary - Remove downgrade from goals, move day 0 installation to non-goals - Add goal to preserve user-facing Gateway API experience - Clarify upgrade migration, drift, and image sourcing wording - Add Hypershift and OKE notes - Update maintenance/testing burden in drawbacks - Remove "Loss of OLM Benefits" drawback - Move Istio CRD management question from #5 to #2 - Update feature gate and downgrade section wording
Address latest comments
Per Alberto's direction, KMS key validation should live in the storage stack, not in HCCO. The aws-ebs-csi-driver-operator in openshift/csi-operator already uses the AWS SDK v2 for volume tagging with IRSA credentials — a new EBSKMSKeyValidationController follows the same pattern. Changes: - Validation probe moves from HCCO to csi-operator's EBS driver package - Probe runs continuously (not day-1-only), resolving stale-condition concern - Condition chain: ClusterCSIDriver.status -> HCCO reads -> HCP -> HC - IAM permissions updated: add kms:Encrypt for validation (4 total) - Cross-repo dependency documented (openshift/csi-operator + openshift/hypershift) - Remove StorageClassState conflation (adversarial review finding openshift#2) - Fix stale condition issue (adversarial review finding openshift#5)
Per Alberto's direction, KMS key validation should live in the storage stack, not in HCCO. The aws-ebs-csi-driver-operator in openshift/csi-operator already uses the AWS SDK v2 for volume tagging with IRSA credentials — a new EBSKMSKeyValidationController follows the same pattern. Changes: - Validation probe moves from HCCO to csi-operator's EBS driver package - Probe runs continuously (not day-1-only), resolving stale-condition concern - Condition chain: ClusterCSIDriver.status -> HCCO reads -> HCP -> HC - IAM permissions updated: add kms:Encrypt for validation (4 total) - Cross-repo dependency documented (openshift/csi-operator + openshift/hypershift) - Remove StorageClassState conflation (adversarial review finding openshift#2) - Fix stale condition issue (adversarial review finding openshift#5)
- Replace simple root-ownership check with full trusted-path rule: resolve symlinks, check every ancestor, final object, and directory contents for root ownership and no group/other write permission - Add Non-Goal openshift#5: protection against root users is out of scope - Add Non-Goal openshift#3 clarification: MicroShift validates ownership/permissions but not semantic contents - Extend validation section with symlink resolution rationale (ostree/bootc layouts depend on symlinks) - Add risk entry for TOCTOU with mitigation (root-only can modify root-owned) - Add Alternatives: "checking only final directory" and "rejecting symlinks" - Expand unit tests: ancestor checks, contents checks, symlink cases, injected stat function note - Expand integration tests: unsafe binary, unsafe config file, unsafe ancestor - Update Drawbacks to reference trusted-path rule instead of permissions check - Upgrade/Downgrade: explain why lenient fallback is safe for all pre-feature versions and add Y-1 upgrade test reference Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Initial enhancement proposal for productization of Windows Containers that will enable running of Windows workloads on an OpenShift cluster.