client-go之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中属性的方法

utils.go

目前仅有一个方法ForKind,通过gvk获取对应的Apply对象

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值