k8sclientkit

package module
v0.0.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2024 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AuthTypeToken           = "TOKEN"
	AuthTypeKubeConfigBytes = "KUBECONFIG_BYTES"
	AuthTypeInCluster       = "IN_CLUSTER"
)
View Source
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 (*GenericK8sClient) Start

func (c *GenericK8sClient) Start()

启动内置manager watcher

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
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL