Skip to content

Commit 810569c

Browse files
committed
Graduate image volumes to GA
Signed-off-by: Sascha Grunert <[email protected]>
1 parent 787f515 commit 810569c

File tree

3 files changed

+40
-26
lines changed

3 files changed

+40
-26
lines changed

keps/prod-readiness/sig-node/4639.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@ alpha:
33
approver: "@deads2k"
44
beta:
55
approver: "@deads2k"
6+
stable:
7+
approver: "@deads2k"

keps/sig-node/4639-oci-volume-source/README.md

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,9 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
151151
- [x] (R) KEP approvers have approved the KEP status as `implementable`
152152
- [x] (R) Design details are appropriately documented
153153
- [x] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
154-
- [ ] e2e Tests for all Beta API Operations (endpoints)
155-
- [ ] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
156-
- [ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free
154+
- [x] e2e Tests for all Beta API Operations (endpoints)
155+
- [x] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
156+
- [x] (R) Minimum Two Week Window for GA e2e tests to prove flake free
157157
- [x] (R) Graduation criteria is in place
158158
- [x] (R) [all GA Endpoints](https://github.com/kubernetes/community/pull/1806) must be hit by [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
159159
- [x] (R) Production readiness review completed
@@ -209,7 +209,7 @@ which go beyond running particular images.
209209
artifact, we don't want the runtime to be the entity responsible for
210210
interpreting and correctly processing it to its final consumable state.
211211
That could be delegated to the consumer or perhaps to some hooks and is
212-
out of scope for alpha.
212+
out of scope for this enhancement.
213213
- Manifest list use cases are left out for now and will be restricted to
214214
matching architecture like we do today for images. In the future (if there are
215215
use cases) we will consider support for lists with items separated by
@@ -586,7 +586,8 @@ feature cannot be used. Pods using the new `VolumeSource` combined with a not
586586
supported container runtime version will fail to run on the node, because the
587587
`Mount.host_path` field is not set for those mounts.
588588

589-
For security reasons, `ro` (read-only) options by default.
589+
For security reasons, `ro` (read-only) option is set by default. Having `rw`
590+
(read-write) support will require a follow-up enhancement.
590591

591592
Note: in the process of mounting images into the container's rootfs, there may need to be intermediate mounts created. This is especially relevant if
592593
the CRI implementation wishes to support one image being mounted with multiple different SELinux labels. If that's done, the CRI implementation is responsible
@@ -781,13 +782,11 @@ We expect no non-infra related flakes in the last month as a GA graduation crite
781782
- [sig-node] ImageVolume [NodeFeature:ImageVolume] should succeed with multiple pods and same image on the same node
782783
- [sig-node] ImageVolume [NodeFeature:ImageVolume] should succeed with pod and multiple volumes
783784
- [sig-node] ImageVolume [NodeFeature:ImageVolume] should succeed with pod and pull policy of Always
785+
- [sig-node] ImageVolume [NodeFeature:ImageVolume] subPath should succeed when using a valid subPath
786+
- [sig-node] ImageVolume [NodeFeature:ImageVolume] subPath should fail if subPath in volume is not existing
784787

785788
https://testgrid.k8s.io/sig-node-cri-o#pr-crio-cgrpv2-imagevolume-e2e
786789

787-
When [containerd](https://github.com/containerd/containerd/pull/10579) adds
788-
support for the feature, then the e2e tests will become available for that
789-
runtime as well.
790-
791790
### Graduation Criteria
792791

793792
<!--
@@ -880,10 +879,14 @@ in back-to-back releases.
880879

881880
- Multiple examples of real world uses
882881
- Production support in both CRI-O and containerd
883-
- Allowing time for feedback
884-
- Consider a new `RuntimeConfig` field to indicate to end users if the feature
885-
is supported or not.
886-
- Security Evaluation ensuring robust protection without the `noexec` option
882+
- Removing the separate test lane:
883+
https://testgrid.k8s.io/sig-node-cri-o#pr-crio-cgrpv2-imagevolume-e2e
884+
- Move e2e test to node conformance and remove the
885+
`[NodeFeature:ImageVolume]` flag.
886+
- Create a simple conformance test that creates a pod using an image
887+
volume and verifies the output.
888+
- Allowing time for feedback:
889+
- https://github.com/kubernetes/kubernetes/issues/131557
887890

888891
### Upgrade / Downgrade Strategy
889892

@@ -1075,18 +1078,23 @@ Longer term, we may want to require automated upgrade/rollback tests, but we
10751078
are missing a bunch of machinery and tooling and can't do that now.
10761079
-->
10771080

1078-
Manual testing that will be done:
1081+
Manual testing that has been done:
10791082

1080-
- Upgrade:
1081-
- Enable the feature in the kube-apiserver, kubelet and container runtime
1082-
- Create a workload which uses the feature
1083-
- Verify that the image volume has been mounted.
1083+
- **Upgrade**:
1084+
1. Enable the feature in the kube-apiserver, kubelet and container runtime
1085+
2. Create a workload which uses the feature
1086+
3. Verify that the image volume has been mounted.
10841087

1085-
- Rollback:
1086-
- Disable the feature by rolling back the kube-apiserver, kubelet or
1087-
container runtime
1088-
- Recreate the workload, which will now fail because of either the not
1089-
existing API or the unsupported runtime version.
1088+
- **Rollback**:
1089+
1. Disable the feature by rolling back the kube-apiserver, kubelet or
1090+
container runtime
1091+
2. Recreate the workload
1092+
3. Verify that:
1093+
- Container creation will fail because of using an not existing API
1094+
- Container creation will fail because volume plugin of the kubelet is not
1095+
available.
1096+
- Container creation will succeed but volume won't get mounted if container
1097+
runtime does not support the feature due to lacking CRI support.
10901098

10911099
###### Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.?
10921100

@@ -1105,6 +1113,9 @@ For GA, this section is required: approvers should be able to confirm the
11051113
previous answers based on experience in the field.
11061114
-->
11071115

1116+
The added metrics `image_volume_requested_total` `image_volume_mounted_success`
1117+
`image_volume_mounted_error` can be used for monitoring.
1118+
11081119
###### How can an operator determine if the feature is in use by workloads?
11091120

11101121
<!--
@@ -1375,6 +1386,7 @@ Major milestones might include:
13751386
- 02-10-2024 KEP updated
13761387
- 06-02-2025 KEP targeting beta in v1.33
13771388
- 06-17-2025 KEP retargeting beta in v1.34, dropped noexec requirement
1389+
- 09-03-2025 KEP retargeting GA in v1.35
13781390

13791391
## Drawbacks
13801392

keps/sig-node/4639-oci-volume-source/kep.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,18 @@ approvers:
4141
- "@mrunalp"
4242

4343
# The target maturity stage in the current dev cycle for this KEP.
44-
stage: beta
44+
stage: stable
4545

4646
# The most recent milestone for which work toward delivery of this KEP has been
4747
# done. This can be the current (upcoming) milestone, if it is being actively
4848
# worked on.
49-
latest-milestone: "v1.34"
49+
latest-milestone: "v1.35"
5050

5151
# The milestone at which this feature was, or is targeted to be, at each stage.
5252
milestone:
5353
alpha: "v1.31"
5454
beta: "v1.34"
55-
stable: "TBD"
55+
stable: "v1.35"
5656

5757
# The following PRR answers are required at alpha release
5858
# List the feature gate name and the components for which it must be enabled

0 commit comments

Comments
 (0)