Skip to content
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

KEP-1981: WindowsHostProcessContainers beta major changes #3311

Merged
merged 20 commits into from
Sep 22, 2022

Conversation

marosset
Copy link
Contributor

@marosset marosset commented May 11, 2022

Signed-off-by: Mark Rossetti [email protected]

  • One-line PR description:
  • Other comments:

@k8s-ci-robot k8s-ci-robot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. labels May 11, 2022
@k8s-ci-robot k8s-ci-robot requested a review from jayunit100 May 11, 2022 23:39
@k8s-ci-robot k8s-ci-robot added the kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory label May 11, 2022
@k8s-ci-robot k8s-ci-robot requested a review from jsturtevant May 11, 2022 23:39
@k8s-ci-robot k8s-ci-robot added sig/windows Categorizes an issue or PR as relevant to SIG Windows. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels May 11, 2022
@marosset marosset marked this pull request as draft May 11, 2022 23:40
@marosset marosset changed the title WIP:WindowsHostProcessContainers GA in 1.25 WIP: WindowsHostProcessContainers GA in 1.25 May 11, 2022
@kikisdeliveryservice kikisdeliveryservice changed the title WIP: WindowsHostProcessContainers GA in 1.25 WIP: KEP-1981: WindowsHostProcessContainers GA in 1.25 May 13, 2022
@k8s-ci-robot k8s-ci-robot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels May 16, 2022
Copy link
Contributor

@jsturtevant jsturtevant left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great to see how we learned what worked and what could be improved to make feature better.
Looking forward to these improvements!

Signed-off-by: Mark Rossetti <[email protected]>
@marosset marosset marked this pull request as ready for review May 23, 2022 18:30
@marosset marosset changed the title WIP: KEP-1981: WindowsHostProcessContainers GA in 1.25 KEP-1981: WindowsHostProcessContainers GA in 1.25 May 23, 2022
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 23, 2022
@marosset
Copy link
Contributor Author

/hold
for reviews

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 13, 2022
marosset and others added 2 commits June 13, 2022 13:20
batch committing suggested changes

Co-authored-by: Jordan Liggitt <[email protected]>
Signed-off-by: Mark Rossetti <[email protected]>
@marosset
Copy link
Contributor Author

@msau42 and/or @liggitt do either of you have any more thoughts/concerns here?

- On containerd v1.7 **bind** volume mount behavior will always be used.
- If users are running nodes with Windows Server 2019 with security patches older than July 2022 the volume mounts for HostProcessContainers will fail.

Users who have workloads that depend on the **symlink** mount behavior (ex: are expecting to find mounted volumes under `$CONTAINER_SANDBOX_MOUNT_POINT`) will need to stay on containerd v1.6 releases until their workloads are updated to be compatible with **bind** mount behavior.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

workloads that depend on the symlink mount behavior (ex: are expecting to find mounted volumes under $CONTAINER_SANDBOX_MOUNT_POINT) will need to stay on containerd v1.6 releases until their workloads are updated to be compatible with bind mount behavior

This positioning is questionable for a GA feature. Remaining in beta until bind mount is available, then saying GA only supports bind mount is more what I would have expected

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can keep the feature in beta for one more release and then go to stable after we containerd v1.7 releases and is deemed stable if that makes more sense.

Either way we'll need to document that a breaking change will occur when updating from containerd v1.6 to v1.7 w.r.t. volume mount behavior.

Graduation

- Add e2e tests to validate running `hostProcess` containers as non SYSTEM/admin accounts
- Update e2e tests for new volume mount behavior as desdribed in [Container Mounts](#container-mounts)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Update e2e tests for new volume mount behavior as desdribed in [Container Mounts](#container-mounts)
- Update e2e tests for new volume mount behavior as described in [Container Mounts](#container-mounts)

since bind mount is not yet released in containerd 1.7, do we even have the ability to add tests for this yet?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes we do.

We have a github action that runs every night that builds containerd and hcsshim from main and publishes the package to https://github.com/kubernetes-sigs/sig-windows-tools/releases/tag/windows-containerd-nightly.
This package already has the changes to use the new bind mount behavior (if running on Windows Server 2022 for now, it will work on Windows Server 2019 in a few weeks).

We use this package in https://testgrid.k8s.io/sig-windows-signal#capz-windows-containerd-nightly-master (and a few others).

My plans were to update the e2e tests to check for the contaienrd version being used on the nodes and add skips to the e2e tests that require a different version of containerd.

@@ -952,7 +1075,7 @@ _This section must be completed when targeting beta graduation to a release._
- [ContainerD]
- Usage description:
- `HostProcess` containers support will not be added to dockershim.
- Containerd v1.5.6+ is required.
- Containerd v1.6+ is required.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if 1.7 is when bind mount functionality is targeted, I'd expect this to be 1.7

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, will update thanks!

@marosset
Copy link
Contributor Author

I spoke with a few other people and I think most everyone is in agreement to move the target for graduating to stable to v1.26
We'll use the v1.25 release to have users migrate any workloads that need migration to use the new volume mount behaviors and add all the necessary e2e validation.

I'll make updates to reflect this.
I think it'd still be nice to get this PR merged after these updates so the new volume mount behaviors is more discoverable.

@marosset marosset changed the title KEP-1981: WindowsHostProcessContainers GA in 1.25 KEP-1981: WindowsHostProcessContainers beta major changes Jun 16, 2022
@dchen1107
Copy link
Member

Sync-ed with @marosset and agreed with his plan on moving the target for graduating to stable to v1.26 from SIG Node perspective. Also removed this from SIG Node 1.25 tracking sheet.

But we will continue move forward with this KEP. Thanks!

@marosset
Copy link
Contributor Author

One concern shared by several folks (including myself) is the migration story for deployments that were authored using the existing volume mount behaviors.
I've added a note in the KEP that we'll continue to look for solutions here during v1.25

@jsturtevant
Copy link
Contributor

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 22, 2022
@jsturtevant
Copy link
Contributor

@msau42 @dchen1107 @liggitt any further concerns with the updates? We will be staying in beta for 1.25.
Can we release the hold?

@liggitt
Copy link
Member

liggitt commented Jun 22, 2022

I won't have a chance to sweep it again, but I'm happy with tying stable to the bind mount capability and focusing on giving users guidance about how to bridge from the current symlink behavior to the bind behavior compatibly

@marosset
Copy link
Contributor Author

/hold cancel

I forgot to merge this in v1.25 but we do have e2e up and running validating the bind mount behaviors against pre-release containerd.
I'll create another PR with updates for going a v1.26 stable release

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Sep 22, 2022
@marosset
Copy link
Contributor Author

/label tide/merge-method-squash

@k8s-ci-robot k8s-ci-robot merged commit 0e2bafd into kubernetes:master Sep 22, 2022
@k8s-ci-robot k8s-ci-robot added this to the v1.26 milestone Sep 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory lgtm "Looks good to me", indicates that a PR is ready to be merged. sig/windows Categorizes an issue or PR as relevant to SIG Windows. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges.
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.