Skip to content

Commit ebedb57

Browse files
authored
add additional prr questions (#6)
Signed-off-by: Anish Ramasekar <[email protected]>
1 parent 6f80e8e commit ebedb57

File tree

1 file changed

+84
-3
lines changed
  • keps/sig-auth/3299-kms-v2-improvements

1 file changed

+84
-3
lines changed

keps/sig-auth/3299-kms-v2-improvements/README.md

+84-3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
- [GA](#ga)
2323
- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire)
2424
- [Feature Enablement and Rollback](#feature-enablement-and-rollback)
25+
- [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning)
2526
- [Monitoring Requirements](#monitoring-requirements)
2627
- [Dependencies](#dependencies)
2728
- [Scalability](#scalability)
@@ -394,18 +395,94 @@ FeatureSpec{
394395

395396
###### Does enabling the feature change any default behavior?
396397

397-
No. The v2 API is new in the v1.25 release.
398+
No. The v2 API is new in the v1.25 release.
398399

399400
###### Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)?
400401

401402
Yes, via the `KMSv2` feature gate. Disabling this gate without first doing a storage migration to use a different encryption at rest mechanism will result in data loss.
402403

404+
###### What happens if we reenable the feature if it was previously rolled back?
405+
406+
After the feature is reenabled, if a v2 KMS provider is still configured in the `EncryptionConfiguration`
407+
- All new data will be encrypted with the external kms provider.
408+
- Existing data can be decrypted if the key used for encryption before feature rollback still exists.
409+
410+
###### Are there any tests for feature enablement/disablement?
411+
412+
<!--
413+
The e2e framework does not currently support enabling or disabling feature
414+
gates. However, unit tests in each component dealing with managing data, created
415+
with and without the feature, are necessary. At the very least, think about
416+
conversion tests if API types are being modified.
417+
418+
Additionally, for features that are introducing a new API field, unit tests that
419+
are exercising the `switch` of feature gate itself (what happens if I disable a
420+
feature gate after having objects written with the new field) are also critical.
421+
You can take a look at one potential example of such test in:
422+
https://github.com/kubernetes/kubernetes/pull/97058/files#diff-7826f7adbc1996a05ab52e3f5f02429e94b68ce6bce0dc534d1be636154fded3R246-R282
423+
-->
424+
425+
N/A. When the feature is disabled, data stored in etcd will no longer be encrypted using the external kms provider with v2 API
426+
427+
### Rollout, Upgrade and Rollback Planning
428+
429+
<!--
430+
This section must be completed when targeting beta to a release.
431+
-->
432+
433+
This section is incomplete and will be updated before the beta milestone.
434+
435+
###### How can a rollout or rollback fail? Can it impact already running workloads?
436+
437+
<!--
438+
Try to be as paranoid as possible - e.g., what if some components will restart
439+
mid-rollout?
440+
441+
Be sure to consider highly-available clusters, where, for example,
442+
feature flags will be enabled on some API servers and not others during the
443+
rollout. Similarly, consider large clusters and how enablement/disablement
444+
will rollout across nodes.
445+
-->
446+
447+
- If a rollback of the feature is done without first doing a storage migration to use a different encryption at rest mechanism will result in data loss.
448+
- Workloads relying on existing data in etcd will no longer be able to access it.
449+
- The data can be retrieved by reenabling the feature gate or deleting and recreating the data.
450+
451+
###### What specific metrics should inform a rollback?
452+
453+
<!--
454+
What signals should users be paying attention to when the feature is young
455+
that might indicate a serious problem?
456+
-->
457+
458+
This section is incomplete and will be updated before the beta milestone.
459+
460+
###### Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?
461+
462+
<!--
463+
Describe manual testing that was done and the outcomes.
464+
Longer term, we may want to require automated upgrade/rollback tests, but we
465+
are missing a bunch of machinery and tooling and can't do that now.
466+
-->
467+
468+
This section is incomplete and will be updated before the beta milestone.
469+
470+
###### Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.?
471+
472+
<!--
473+
Even if applying deprecation policies, they may still surprise some users.
474+
-->
475+
476+
N/A
477+
403478
### Monitoring Requirements
404479

405480
###### How can someone using this feature know that it is working for their instance?
406481

407482
- [x] Other (treat as last resort)
408-
- Details: Logs in kube-apiserver, kms-plugin and KMS will be logged with the corresponding `observed_key_id`, `annotations`, and `UID`.
483+
- Details:
484+
- Logs in kube-apiserver, kms-plugin and KMS will be logged with the corresponding `observed_key_id`, `annotations`, and `UID`.
485+
- count of encryption/decryption requests by resource and version
409486

410487
###### What are the reasonable SLOs (Service Level Objectives) for the enhancement?
411488

@@ -414,7 +491,9 @@ There should be no impact on the SLO with this change.
414491
###### What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service?
415492

416493
- [x] Other (treat as last resort)
417-
- Details: Logs in kube-apiserver, kms-plugin and KMS will be logged with the corresponding `observed_key_id`, `annotations`, and `UID`.
494+
- Details:
495+
- Logs in kube-apiserver, kms-plugin and KMS will be logged with the corresponding `observed_key_id`, `annotations`, and `UID`.
496+
- Metrics for latency of encryption/decryption requests.
418497

419498
### Dependencies
420499

@@ -452,7 +531,9 @@ No.
452531

453532
###### How does this feature react if the API server and/or etcd is unavailable?
454533

534+
- This feature is part of API server. The feature is unavailable if API server is unavailable.
455535
- ETCD data encryption with external kms-plugin is unavailable
536+
- If the API server is unavailable, clients will be unable to create/get data that's stored in etcd. There will be no requests from the API server to the kms-plugin.
456537

457538
## Implementation History
458539

0 commit comments

Comments
 (0)