Kubernetes API调用是秘密更新和configmap更新原子调用吗?

Kubernetes API调用是秘密更新和configmap更新原子调用吗?,kubernetes,kubernetes-apiserver,kubernetes-go-client,Kubernetes,Kubernetes Apiserver,Kubernetes Go Client,client.Secrets(namespace).Update(secret)是原子调用吗?如果此调用以某种方式失败,那么存储在Kubernetes API服务器中的原始机密是否会损坏 类似地,core.ConfigMaps(命名空间).Update(configmap)是一个原子调用吗?如果此调用失败,现有的configmap是否会损坏?根据关于服务器端应用一节中的Kubernetes,您可以找到以下内容: 对对象字段的更改通过“机制。当字段的值更改时,所有权从其当前管理器转移到进行更改的

client.Secrets(namespace).Update(secret)是原子调用吗?如果此调用以某种方式失败,那么存储在Kubernetes API服务器中的原始机密是否会损坏

类似地,core.ConfigMaps(命名空间).Update(configmap)是一个原子调用吗?如果此调用失败,现有的configmap是否会损坏?

根据关于服务器端应用一节中的Kubernetes,您可以找到以下内容:

对对象字段的更改通过“机制。当字段的值更改时,所有权从其当前管理器转移到进行更改的管理器。当尝试应用对象时,具有不同值且由另一个管理器拥有的字段将导致错误。这样做是为了发出操作可能撤消另一个协作者的更改的信号。冲突can将被强制,在这种情况下,值将被覆盖,所有权将被转移


还有一些关于

合并策略 使用服务器端应用程序实现的合并策略提供了一个通常更稳定的对象生命周期。服务器端应用程序尝试根据管理字段的事实合并字段,而不是仅根据值进行否决。这种方式旨在使多个参与者更容易、更稳定地更新同一对象,从而减少意外的干扰

当用户发送“完全指定的意图”时对象到服务器端应用终结点,如果在两个位置都指定了应用配置中的值,则服务器会将其与支持该值的活动对象合并。如果应用配置中的项集不是上次由同一用户应用的项的超集,则会删除未由任何其他应用程序管理的每个缺少的项。对于more有关在合并时如何使用对象的模式进行决策的信息,请参阅

希望这有帮助


编辑: 是的,请使用此功能

应用和更新 此功能考虑的两种操作类型是
Apply
PATCH
,内容类型为
application/apply PATCH+yaml
)和
更新
(修改对象的所有其他操作)。两者 操作会更新
managedFields
,但会有一些行为 不一样

例如,只有应用操作在更新时发生冲突时失败 不。此外,应用操作需要标识自己 通过提供一个
fieldManager
query参数 参数对于更新操作是可选的 应用操作您不能在要应用的对象中有
managedFields
正在应用

根据关于服务器端应用部分中的Kubernetes,您可以找到以下内容:

对对象字段的更改通过“机制。当字段的值更改时,所有权从其当前管理器转移到进行更改的管理器。当尝试应用对象时,具有不同值且由另一个管理器拥有的字段将导致错误。这样做是为了发出操作可能撤消另一个协作者的更改的信号。冲突can将被强制,在这种情况下,值将被覆盖,所有权将被转移


还有一些关于

合并策略 使用服务器端应用程序实现的合并策略提供了一个通常更稳定的对象生命周期。服务器端应用程序尝试根据管理字段的事实合并字段,而不是仅根据值进行否决。这种方式旨在使多个参与者更容易、更稳定地更新同一对象,从而减少意外的干扰

当用户发送“完全指定的意图”时对象到服务器端应用终结点,如果在两个位置都指定了应用配置中的值,则服务器会将其与支持该值的活动对象合并。如果应用配置中的项集不是上次由同一用户应用的项的超集,则会删除未由任何其他应用程序管理的每个缺少的项。对于more有关在合并时如何使用对象的模式进行决策的信息,请参阅

希望这有帮助


编辑: 是的,请使用此功能

应用和更新 此功能考虑的两种操作类型是
Apply
PATCH
,内容类型为
application/apply PATCH+yaml
)和
更新
(修改对象的所有其他操作)。两者 操作会更新
managedFields
,但会有一些行为 不一样

例如,只有应用操作在更新时发生冲突时失败 不。此外,应用操作需要标识自己 通过提供一个
fieldManager
query参数 参数对于更新操作是可选的 应用操作您不能在要应用的对象中有
managedFields
正在应用


客户端go更新是一个HTTP PUT,因此它将替换对象,并且是一个原子操作。但是在执行此操作时,需要考虑一些情况,例如,如果有多个客户端在同一对象上操作…您应该在这个链接的客户端go示例中查看其他解决方案:


客户端go更新是一个HTTP PUT,因此它将替换对象,并且是一个原子操作。但是在执行此操作时,需要考虑一些情况,例如,如果有多个客户端在同一个对象上运行……您应该在这个链接的客户端go示例中查看其他解决方案:


谢谢你,Piotr。这是否意味着机密更新和配置地图更新使用合并策略?如果合并失败,新域