Skip to content

Commit 1e7521a

Browse files
committed
Update formatting
1 parent 4ccd834 commit 1e7521a

File tree

1 file changed

+20
-18
lines changed
  • keps/sig-api-machinery/555-server-side-apply

1 file changed

+20
-18
lines changed

keps/sig-api-machinery/555-server-side-apply/README.md

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -322,19 +322,19 @@ _This section must be completed when targeting alpha to a release._
322322

323323
* **Does enabling the feature change any default behavior?**
324324

325-
While this changes how objects are modified and then stored in the database, all the changes should be strictly backward compatible, and shouldn’t break existing automation or users. The increase in size can possibly have adverse, surprising consequences including increased memory usage for controllers, increased bandwidth usage when fetching objects, bigger objects when displaying for users (kubectl get -o yaml). We’re trying to mitigate all of these with the addition of a new header.
325+
While this changes how objects are modified and then stored in the database, all the changes should be strictly backward compatible, and shouldn’t break existing automation or users. The increase in size can possibly have adverse, surprising consequences including increased memory usage for controllers, increased bandwidth usage when fetching objects, bigger objects when displaying for users (kubectl get -o yaml). We’re trying to mitigate all of these with the addition of a new header.
326326

327327
* **Can the feature be disabled once it has been enabled (i.e. can we roll back
328328
the enablement)?**
329329
Also set `disable-supported` to `true` or `false` in `kep.yaml`.
330330
Describe the consequences on existing workloads (e.g., if this is a runtime
331331
feature, can it break the existing applications?).
332332

333-
Yes. Managed fields will be reset for server-side applied objects.
333+
Yes. The consequence is that managed fields will be reset for server-side applied objects (requiring a read/write cycle on the impacted resources).
334334

335335
* **What happens if we reenable the feature if it was previously rolled back?**
336336

337-
The feature will be restored. Server-side applied objects will have lost their “set” which may cause some surprising behavior (fields might not be removed as expected).
337+
The feature will be restored. Server-side applied objects will have lost their “set” which may cause some surprising behavior (fields might not be removed as expected).
338338

339339
* **Are there any tests for feature enablement/disablement?**
340340
The e2e framework does not currently support enabling or disabling feature
@@ -351,15 +351,19 @@ _This section must be completed when targeting beta graduation to a release._
351351
* **How can a rollout fail? Can it impact already running workloads?**
352352
Try to be as paranoid as possible - e.g., what if some components will restart
353353
mid-rollout?
354-
There is no specific way that the rollout can fail. The rollout can't impact existing workload.
354+
There is no specific way that the rollout can fail. The rollout can't impact existing workload.
355355
* **What specific metrics should inform a rollback?**
356356

357-
The feature shouldn't affect any existing behavior. A surprisingly high number of modification rejections could be a sign that something is not working properly.
357+
The feature shouldn't affect any existing behavior. A surprisingly high number of modification rejections could be a sign that something is not working properly.
358358

359359
* **Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?**
360-
Because the feature doesn't affect existing behavior, rollback and upgrades haven't be specifically tested.
361360

362-
The new `managedFields` field is cleared when it is incorrect. That protects us from having invalid data inserted by a potential bad upgrade.
361+
Because the feature doesn't affect existing behavior, rollback and upgrades haven't be specifically tested.
362+
The feature is being used by the cluster role aggregator though. Upgrading/downgrading/upgrading, which
363+
could result in the managedFields being removed, wouldn't cause any problems since the `Rules` field
364+
filled by the controller is `atomic`, and thus doesn't depend on the current state of the managedFields.
365+
366+
The new `managedFields` field is cleared when it is incorrect. That protects us from having invalid data inserted by a potential bad upgrade.
363367

364368
* **Is the rollout accompanied by any deprecations and/or removals of features, APIs,
365369
fields of API types, flags, etc.?** No
@@ -373,9 +377,9 @@ _This section must be completed when targeting beta graduation to a release._
373377
checking if there are objects with field X set) may be a last resort. Avoid
374378
logs or events for this purpose.
375379

376-
Any existing metric split by request verb will record the [APPLY](https://github.com/kubernetes/kubernetes/blob/8f6ffb24df989608b87451f89b8ac9fc338ed71c/staging/src/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go#L507-L509) verb if the feature is in use.
380+
Any existing metric split by request verb will record the [APPLY](https://github.com/kubernetes/kubernetes/blob/8f6ffb24df989608b87451f89b8ac9fc338ed71c/staging/src/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go#L507-L509) verb if the feature is in use.
377381

378-
Additionally, the OpenAPI spec exposes the available media-type for each individual endpoint. The presence of the `apply` type for the PATCH verb of a endpoints indicates whether the feature is enabled for that specific resource, e.g.
382+
Additionally, the OpenAPI spec exposes the available media-type for each individual endpoint. The presence of the `apply` type for the PATCH verb of a endpoints indicates whether the feature is enabled for that specific resource, e.g.
379383
```json
380384
...
381385
"patch": {
@@ -388,14 +392,15 @@ Additionally, the OpenAPI spec exposes the available media-type for each individ
388392
...
389393
}
390394
...
395+
```
391396

392397
* **What are the SLIs (Service Level Indicators) an operator can use to determine
393398
the health of the service?**
394399

395-
There is no specific metric attached to server side apply. All PATCH requests that utilize SSA will use the verb APPLY when logging metrics. API Server metrics that are split by verb automatically include this. They include `apiserver_request_total`, `apiserver_longrunning_gauge`, `apiserver_response_sizes`, `apiserver_request_terminations_total`, `apiserver_selfrequest_total`
400+
There is no specific metric attached to server side apply. All PATCH requests that utilize SSA will use the verb APPLY when logging metrics. API Server metrics that are split by verb automatically include this. They include `apiserver_request_total`, `apiserver_longrunning_gauge`, `apiserver_response_sizes`, `apiserver_request_terminations_total`, `apiserver_selfrequest_total`
396401
- Components exposing the metric: kube-apiserver
397-
398-
Apply requests (`PATCH` with `application/apply-patch+yaml` mime type) have the same level of SLIs as other types of requests.
402+
403+
Apply requests (`PATCH` with `application/apply-patch+yaml` mime type) have the same level of SLIs as other types of requests.
399404

400405
* **What are the reasonable SLOs (Service Level Objectives) for the above SLIs?** n/a
401406
Apply requests (`PATCH` with `application/apply-patch+yaml` mime type) have the same level of SLOs as other types of requests.
@@ -423,7 +428,7 @@ the existing API objects?** Objects applied using server side apply will have th
423428
operations covered by [existing SLIs/SLOs]?** No
424429

425430
* **Will enabling / using this feature result in non-negligible increase of
426-
resource usage (CPU, RAM, disk, IO, ...) in any components?** Since objects are larger with the new `managedFields`, caches as well as network bandwidth requirement will increase.
431+
resource usage (CPU, RAM, disk, IO, ...) in any components?** Since objects are larger with the new `managedFields`, caches as well as network bandwidth requirement will increase.
427432

428433
### Troubleshooting
429434

@@ -435,7 +440,7 @@ _This section must be completed when targeting beta graduation to a release._
435440

436441
* **How does this feature react if the API server and/or etcd is unavailable?**
437442

438-
The feature is part of of the API server and will not function without it
443+
The feature is part of of the API server and will not function without it
439444

440445
* **What are other known failure modes?**
441446
For each of them, fill in the following information by copying the below template:
@@ -451,9 +456,6 @@ The feature is part of of the API server and will not function without it
451456

452457
* **What steps should be taken if SLOs are not being met to determine the problem?** n/a
453458

454-
[supported limits]: https://git.k8s.io/community//sig-scalability/configs-and-limits/thresholds.md
455-
[existing SLIs/SLOs]: https://git.k8s.io/community/sig-scalability/slos/slos.md#kubernetes-slisslos
456-
457459
### Risks and Mitigations
458460

459461
We used a feature branch to ensure that no partial state of this feature would
@@ -529,7 +531,7 @@ updated when we know the concrete things changing for beta.
529531
A GA version of this is targeted for 1.21.
530532

531533
- E2E tests are created and graduate to conformance
532-
- [Apply for client-go's typed client](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/2144-clientgo-apply) is implemented and has an in-tree controller using it
534+
- [Apply for client-go's typed client](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/2144-clientgo-apply) is implemented and at least one kube-controller-manager uses that client
533535
- Outstanding bugs around status wiping and scale subresource are fixed
534536

535537
### Upgrade / Downgrade Strategy

0 commit comments

Comments
 (0)