Documentation ¶
Index ¶
- Constants
- func ArbitraryJsonPathKeyIndexFunc(keyPath string)
- type GenericK8sClient
- func NewGenericK8sClientInCluster(id string, timeout *time.Duration) (*GenericK8sClient, error)
- func NewGenericK8sClientWithKubeConfigBytes(id string, kubeConfig []byte, overrideSNIServerName string, ...) (*GenericK8sClient, error)
- func NewGenericK8sClientWithSecretDir(id, authSecretDir, apiServerUrl, sni string, timeout *time.Duration) (*GenericK8sClient, error)
- func NewGenericK8sClientWithToken(id, apiServerUrl, token string, caPem []byte, optionalTLSServerName string, ...) (*GenericK8sClient, error)
- func (c *GenericK8sClient) AddScheme(gv *schema.GroupVersion, addSchemeFunc func(s *runtime.Scheme) error)
- func (c *GenericK8sClient) ApplyUnstructuredObj(ctx context.Context, obj *unstructured.Unstructured, filedManager string) (*UnstructuredApplyResult, error)
- func (c *GenericK8sClient) ApplyUnstructuredObjsBatch(ctx context.Context, objs []*unstructured.Unstructured, fieldManager string) (successfulResults []*UnstructuredApplyResult, ...)
- func (c *GenericK8sClient) GetDynamicClient() dynamic.Interface
- func (c *GenericK8sClient) GetMetricsClient() metricsclient.Interface
- func (c *GenericK8sClient) GetRuntimeCluster() cluster.Cluster
- func (c *GenericK8sClient) GetStandardClient() *kubernetes.Clientset
- func (c *GenericK8sClient) GvkToGvr(gvk schema.GroupVersionKind) (schema.GroupVersionResource, error)
- func (c *GenericK8sClient) Start()
- func (c *GenericK8sClient) Stop()
- type K8sResourceWatcher
- func (w *K8sResourceWatcher) AddEventHandler(addHandler, delHandler func(obj interface{}), ...)
- func (w *K8sResourceWatcher) GetObject(namespace, name string) (obj interface{}, exists bool, err error)
- func (w *K8sResourceWatcher) GetObjectsInNamespace(namespace string)
- func (w *K8sResourceWatcher) Start()
- func (w *K8sResourceWatcher) Stop()
- type UnstructuredApplyResult
Constants ¶
const ( AuthTypeToken = "TOKEN" AuthTypeKubeConfigBytes = "KUBECONFIG_BYTES" AuthTypeInCluster = "IN_CLUSTER" )
const ( WatcherTypeDynamic = "Dynamic" WatcherTypeStandard = "Standard" )
Variables ¶
This section is empty.
Functions ¶
func ArbitraryJsonPathKeyIndexFunc ¶
func ArbitraryJsonPathKeyIndexFunc(keyPath string)
Types ¶
type GenericK8sClient ¶
type GenericK8sClient struct { TargetK8sApiServerId string // 创建方式类型: ByToken, ByKubeConfigBytes AuthType string // contains filtered or unexported fields }
GenericK8sClient 用于与一个指定的Kubernetes APIServer通信。 内置基本标准类型客户端和动态类型客户端(支持任意GVK访问)
func NewGenericK8sClientInCluster ¶
func NewGenericK8sClientInCluster(id string, timeout *time.Duration) (*GenericK8sClient, error)
NewGenericK8sClientInCluster 使用当前集群SA创建K8sClient. 仅在Kubernetes集群内部署时可用
func NewGenericK8sClientWithKubeConfigBytes ¶
func NewGenericK8sClientWithKubeConfigBytes(id string, kubeConfig []byte, overrideSNIServerName string, timeout *time.Duration) (*GenericK8sClient, error)
NewGenericK8sClientWithKubeConfigBytes 使用指定的KubeConfig bytes创建K8sClient
param: overrideServerName string 可选的指定APIServer TLS 域名SNI
Kubeconfig中cluster server支持使用IP地址端口方式指定可保证正确访问到的路由,若目标ApiServer在TLS SNI代理服务器之后, 可以通过指定overrideServerName来使代理服务器正常工作。 另外可选的方式是在部署k8s-provisioner时外部环境中解决域名解析问题,则可以直接在kubeconfig中使用域名方式指定APIServer地址。
func NewGenericK8sClientWithSecretDir ¶
func NewGenericK8sClientWithSecretDir(id, authSecretDir, apiServerUrl, sni string, timeout *time.Duration) (*GenericK8sClient, error)
func NewGenericK8sClientWithToken ¶
func NewGenericK8sClientWithToken(id, apiServerUrl, token string, caPem []byte, optionalTLSServerName string, skipTLSVerify bool, timeout *time.Duration) (*GenericK8sClient, error)
NewGenericK8sClientWithToken 使用目标集群的ApiServer url和具有一定访问权限的bearer token来构建一个generic client. token 可以通过创建ServiceAccount并获取对应的Secret来得到(从v1.24开始需要开启相关的特性门控才会自动创建Secret).
apiServerUrl: 目标apiserver的访问地址,如`https://cluster-1.dc1.example.com:6443`, 或`https://10.2.0.121:6443` optionalTLSServerName: 用于校验服务端证书是否与此名称一致,默认同APIServerURL保持一致; 同时也影响TLS SNI, 在client hello 中将传递给server caPem: PEM编码的信任CA,应该设置为目标APIServer的CA证书
func (*GenericK8sClient) AddScheme ¶
func (c *GenericK8sClient) AddScheme(gv *schema.GroupVersion, addSchemeFunc func(s *runtime.Scheme) error)
Add a new api-group scheme to this client `gv` 和 `addSchemeFunc` 必须来自同一API package
func (*GenericK8sClient) ApplyUnstructuredObj ¶
func (c *GenericK8sClient) ApplyUnstructuredObj(ctx context.Context, obj *unstructured.Unstructured, filedManager string) (*UnstructuredApplyResult, error)
func (*GenericK8sClient) ApplyUnstructuredObjsBatch ¶
func (c *GenericK8sClient) ApplyUnstructuredObjsBatch(ctx context.Context, objs []*unstructured.Unstructured, fieldManager string) (successfulResults []*UnstructuredApplyResult, failedResults []*UnstructuredApplyResult)
func (*GenericK8sClient) GetDynamicClient ¶
func (c *GenericK8sClient) GetDynamicClient() dynamic.Interface
func (*GenericK8sClient) GetMetricsClient ¶ added in v0.0.6
func (c *GenericK8sClient) GetMetricsClient() metricsclient.Interface
func (*GenericK8sClient) GetRuntimeCluster ¶
func (c *GenericK8sClient) GetRuntimeCluster() cluster.Cluster
func (*GenericK8sClient) GetStandardClient ¶
func (c *GenericK8sClient) GetStandardClient() *kubernetes.Clientset
func (*GenericK8sClient) GvkToGvr ¶
func (c *GenericK8sClient) GvkToGvr(gvk schema.GroupVersionKind) (schema.GroupVersionResource, error)
func (*GenericK8sClient) Stop ¶
func (c *GenericK8sClient) Stop()
type K8sResourceWatcher ¶
type K8sResourceWatcher struct { Gvr schema.GroupVersionResource Namespace string // contains filtered or unexported fields }
func NewDynamicWatcher ¶
func NewDynamicWatcher(client dynamic.Interface, resource schema.GroupVersionResource, namespace string, resync time.Duration, indexers cache.Indexers, listOptionsFunc dynamicinformer.TweakListOptionsFunc) *K8sResourceWatcher
NewDynamicWatcher 创建一个新的通用资源对象watcher 指定目标对象
func (*K8sResourceWatcher) AddEventHandler ¶
func (w *K8sResourceWatcher) AddEventHandler(addHandler, delHandler func(obj interface{}), updateHandler func(oldObj, newObj interface{}))
func (*K8sResourceWatcher) GetObject ¶
func (w *K8sResourceWatcher) GetObject(namespace, name string) (obj interface{}, exists bool, err error)
GetObject 从informer存储中获取指定namespace/name的对象
func (*K8sResourceWatcher) GetObjectsInNamespace ¶
func (w *K8sResourceWatcher) GetObjectsInNamespace(namespace string)
func (*K8sResourceWatcher) Start ¶
func (w *K8sResourceWatcher) Start()
func (*K8sResourceWatcher) Stop ¶
func (w *K8sResourceWatcher) Stop()
type UnstructuredApplyResult ¶
type UnstructuredApplyResult struct { Gvk schema.GroupVersionKind Success bool Error error ResultObject *unstructured.Unstructured }