Handle review comments
This commit is contained in:
parent
ff1a6a4fa3
commit
7545707dff
|
@ -80,7 +80,7 @@ which was still in beta at that time. Experimenting with it via
|
||||||
SSA can not be easily leveraged by shelling out to `kubectl`.
|
SSA can not be easily leveraged by shelling out to `kubectl`.
|
||||||
|
|
||||||
The way SSA is implemented in `kubectl` does not allow enough
|
The way SSA is implemented in `kubectl` does not allow enough
|
||||||
control about conflict resolution as it can only switch between
|
control over conflict resolution as it can only switch between
|
||||||
"not force-applying anything and erroring out" and "force-applying everything
|
"not force-applying anything and erroring out" and "force-applying everything
|
||||||
without showing any mercy!".
|
without showing any mercy!".
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ that Kluctl wants to perform a SSA operation. The API server then
|
||||||
responds with an OK response (HTTP status code 200), or with a Conflict response
|
responds with an OK response (HTTP status code 200), or with a Conflict response
|
||||||
(HTTP status 409).
|
(HTTP status 409).
|
||||||
|
|
||||||
In case of a Conflict response, the body of that response includes machine readable
|
In case of a Conflict response, the body of that response includes machine-readable
|
||||||
details about the conflicts. Kluctl can then use these details to figure out
|
details about the conflicts. Kluctl can then use these details to figure out
|
||||||
which fields are in conflict and which actors (field managers) have taken
|
which fields are in conflict and which actors (field managers) have taken
|
||||||
ownership of the conflicted fields.
|
ownership of the conflicted fields.
|
||||||
|
@ -131,10 +131,15 @@ Kluctl has a few simple rules to figure out if a conflict should be ignored
|
||||||
or force-applied.
|
or force-applied.
|
||||||
|
|
||||||
It first checks the field's actor (the field manager) against a list of known
|
It first checks the field's actor (the field manager) against a list of known
|
||||||
tools that are frequently used to perform manual modifications. These
|
field manager strings from tools that are frequently used to perform manual modifications. These
|
||||||
are for example `kubectl` and `k9s`. Any modifications performed with these tools
|
are for example `kubectl` and `k9s`. Any modifications performed with these tools
|
||||||
are considered "temporary" and will be overwritten by Kluctl.
|
are considered "temporary" and will be overwritten by Kluctl.
|
||||||
|
|
||||||
|
If you're using Kluctl along with `kubectl` where you don't want the changes from
|
||||||
|
`kubectl` to be overwritten (for example, using in a script) then you can specify
|
||||||
|
`--field-manager=<manager-name>` on the command line to `kubectl`, and Kluctl
|
||||||
|
doesn't apply its special heuristic.
|
||||||
|
|
||||||
If the field manager is not known by Kluctl, it will check if force-applying is
|
If the field manager is not known by Kluctl, it will check if force-applying is
|
||||||
requested for that field. Force-applying can be requested in different ways:
|
requested for that field. Force-applying can be requested in different ways:
|
||||||
|
|
||||||
|
@ -174,15 +179,15 @@ Server-side apply is a great feature and essential for the future of
|
||||||
controllers and tools in Kubernetes. The amount of controllers involved
|
controllers and tools in Kubernetes. The amount of controllers involved
|
||||||
will only get more and proper modes of working together are a must.
|
will only get more and proper modes of working together are a must.
|
||||||
|
|
||||||
I believe that CI/CD related controllers and tools should leverage
|
I believe that CI/CD-related controllers and tools should leverage
|
||||||
SSA to perform proper conflict resolution. I also believe that
|
SSA to perform proper conflict resolution. I also believe that
|
||||||
other controllers (e.g. Flux and ArgoCD) would benefit from the same kind
|
other controllers (e.g. Flux and ArgoCD) would benefit from the same kind
|
||||||
of conflict resolution control on field-level.
|
of conflict resolution control on field-level.
|
||||||
|
|
||||||
It might even be a good idea to come together and work on a standardized
|
It might even be a good idea to come together and work on a standardized
|
||||||
set of annotations to control conflict resolution for CI/CD related tooling.
|
set of annotations to control conflict resolution for CI/CD-related tooling.
|
||||||
|
|
||||||
On the other side, non CI/CD related controllers should ensure that they don't
|
On the other side, non CI/CD-related controllers should ensure that they don't
|
||||||
cause unnecessary conflicts when modifying objects. As of
|
cause unnecessary conflicts when modifying objects. As of
|
||||||
[the server-side apply documentation](https://kubernetes.io/docs/reference/using-api/server-side-apply/#using-server-side-apply-in-a-controller),
|
[the server-side apply documentation](https://kubernetes.io/docs/reference/using-api/server-side-apply/#using-server-side-apply-in-a-controller),
|
||||||
it is strongly recommended for controllers to always perform force-applying. When
|
it is strongly recommended for controllers to always perform force-applying. When
|
||||||
|
|
Loading…
Reference in New Issue