applyconfigurations包总览
applyconfigurations包
用于构建服务端 Apply requests(类似于kubectl apply 但是kubectl的是客户端),
通过源码来看,其实和kubernetes/api的各种类型的结构体相似(方法不同),
不妨大胆猜测下,估计是想用户apply时的对象和k8s隔离,防腐层的效果。
admissionregistration包
- v1 以mutatingwebhook.go做分析,结构体的功能可以参考kubernetes/api(该专栏解读完后,会开启kubernetes/api的解读) 其他的类似
- mutatingwebhook.go
- 和kubernetes/api中结构体对比 几乎无差别
// client-go MutatingWebhookApplyConfiguration 表示 MutatingWebhook 类型的声明性配置,配合restclient的Apply方法一起使用。 type MutatingWebhookApplyConfiguration struct { // webhook的name Name *string `json:"name,omitempty"` // 和webhook server交互的配置 ClientConfig *WebhookClientConfigApplyConfiguration `json:"clientConfig,omitempty"` // 该webhook的规则,主要是groups versons resources operators Rules []RuleWithOperationsApplyConfiguration `json:"rules,omitempty"` // 失败策略 两种Ignore和Fail FailurePolicy *admissionregistrationv1.FailurePolicyType `json:"failurePolicy,omitempty"` // 匹配策略 两种Exact和Equivalent MatchPolicy *admissionregistrationv1.MatchPolicyType `json:"matchPolicy,omitempty"` // 命名空间选择器 用来选择匹配的命名空间 NamespaceSelector *metav1.LabelSelectorApplyConfiguration `json:"namespaceSelector,omitempty"` // 对象选择器 选择匹配的对象 ObjectSelector *metav1.LabelSelectorApplyConfiguration `json:"objectSelector,omitempty"` // 表示该webhook可能的副作用,四种Unknown None Some NoneOnDryRun SideEffects *admissionregistrationv1.SideEffectClass `json:"sideEffects,omitempty"` // 超时时间 TimeoutSeconds *int32 `json:"timeoutSeconds,omitempty"` // 准入审核版本 用于执行webhook前验证是否在该版本中 AdmissionReviewVersions []string `json:"admissionReviewVersions,omitempty"` // 重新调用策略 两种Never IfNeeded ReinvocationPolicy *admissionregistrationv1.ReinvocationPolicyType `json:"reinvocationPolicy,omitempty"` } // kubernetes/api中 type MutatingWebhook struct { Name string `json:"name" protobuf:"bytes,1,opt,name=name"` ClientConfig WebhookClientConfig `json:"clientConfig" protobuf:"bytes,2,opt,name=clientConfig"` Rules []RuleWithOperations `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"` FailurePolicy *FailurePolicyType `json:"failurePolicy,omitempty" protobuf:"bytes,4,opt,name=failurePolicy,casttype=FailurePolicyType"` MatchPolicy *MatchPolicyType `json:"matchPolicy,omitempty" protobuf:"bytes,9,opt,name=matchPolicy,casttype=MatchPolicyType"` NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,5,opt,name=namespaceSelector"` ObjectSelector *metav1.LabelSelector `json:"objectSelector,omitempty" protobuf:"bytes,11,opt,name=objectSelector"` SideEffects *SideEffectClass `json:"sideEffects" protobuf:"bytes,6,opt,name=sideEffects,casttype=SideEffectClass"` TimeoutSeconds *int32 `json:"timeoutSeconds,omitempty" protobuf:"varint,7,opt,name=timeoutSeconds"` AdmissionReviewVersions []string `json:"admissionReviewVersions" protobuf:"bytes,8,rep,name=admissionReviewVersions"` ReinvocationPolicy *ReinvocationPolicyType `json:"reinvocationPolicy,omitempty" protobuf:"bytes,10,opt,name=reinvocationPolicy,casttype=ReinvocationPolicyType"` }
- 方法
都是设置MutatingWebhookApplyConfiguration中属性的方法
- 和kubernetes/api中结构体对比 几乎无差别
- mutatingwebhook.go
utils.go
目前仅有一个方法ForKind,通过gvk获取对应的Apply对象