
自定义资源进阶
|
301
if err != nil {
responsewriters.InternalError(w, req,
fmt.Errorf("unexpected patch encoding error: %v", err))
return
}
typ := admissionv1beta1.PatchTypeJSONPatch
review.Response.PatchType = &typ
review.Response.Allowed = true
我们使用
JSON-Patch
库(基于
Matt Baird
的实现并修复了一些严重的问题)
来计算出原始的
orig
对象与修改过的
bs
对象之间的差别。我们也可以直接
操作无类型的
JSON
数据来手工创建
JSON-Patch
。选择哪一种方式也是基于
实际的情况。使用
diff
库会更方便一些。
与
Webhook
中的转换逻辑一样,我们通过先前创建的编解码器工厂来把结果
写入
ResponseWriter
对象:
responsewriters.WriteObject(
http.StatusOK, gvk.GroupVersion(), codecs, review, w, req,
)
验证
Webhook
也非常相似,但它使用共享
Informer
中的列表逻辑来检查某种
配料的对象是否存在:
switch pizza := review.Request.Object.Object.(type) {
case *v1alpha1.Pizza:
for ...