agents

package
v1.23.0-rc.1 Latest Latest
Warning

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

Go to latest
Published: Jan 30, 2023 License: Apache-2.0 Imports: 53 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AgentModeApiServer = "apiServerProxy"
	AgentModeAHTTP     = "http"
	AgentModeHTTPS     = "https"
)

Variables

This section is empty.

Functions

func ApiServerProxyPath

func ApiServerProxyPath(namespace, schema, svcname, port string) string

func HeadersFrom

func HeadersFrom(kvs map[string]string) http.Header

func NewRestDecoder

func NewRestDecoder(r io.ReadCloser, newitemfunc func() client.Object) *restDecoder

func QueryFrom

func QueryFrom(kvs map[string]string) url.Values

func ResponseBodyRewriter

func ResponseBodyRewriter(rewritefunc func(io.Reader, io.Writer) error) func(resp *http.Response) error

ResponseBodyRewriter 会正确处理 gzip 以及 deflate 的content-encodeing 以及response 的content-length 用于需要修改代理的响应体是非常有用

func WrappedResponse

func WrappedResponse(intodata interface{}) *response.Response

Types

type AuthInfo

type AuthInfo struct {
	ClientCertificate []byte `json:"clientCertificate,omitempty"`
	ClientKey         []byte `json:"clientKey,omitempty"`
	Token             string `json:"token,omitempty"`
	Username          string `json:"username,omitempty"`
	Password          string `json:"password,omitempty"`
}

func (*AuthInfo) IsEmpty

func (auth *AuthInfo) IsEmpty() bool

func (*AuthInfo) Proxy

func (auth *AuthInfo) Proxy(req *http.Request) (*url.URL, error)

type ChainedProxy

type ChainedProxy []func(*http.Request) (*url.URL, error)

func (ChainedProxy) Proxy

func (pc ChainedProxy) Proxy(req *http.Request) (*url.URL, error)

type Client

type Client interface {
	client.WithWatch
	DoRequest(ctx context.Context, req Request) error
	DoRawRequest(ctx context.Context, clientreq Request) (*http.Response, error)
	DialWebsocket(ctx context.Context, path string, headers http.Header) (*websocket.Conn, *http.Response, error)
	Extend() *ExtendClient
	Name() string
	BaseAddr() url.URL
	APIServerAddr() url.URL
	APIServerVersion() string
	ClientCertExpireAt() *time.Time
	// Deprecated: remove
	Proxy(ctx context.Context, obj client.Object, port int, req *http.Request, writer http.ResponseWriter, rewritefunc func(r *http.Response) error) error
}

type ClientMeta

type ClientMeta struct {
	Name      string
	BaseAddr  *url.URL
	TLSConfig *tls.Config
	Proxy     func(req *http.Request) (*url.URL, error)

	ServerInfo    serverInfo
	APIServerAddr *url.URL
}

type ClientSet

type ClientSet struct {
	// contains filtered or unexported fields
}

func NewClientSet

func NewClientSet(database *database.Database) (*ClientSet, error)

func (*ClientSet) ClientOf

func (h *ClientSet) ClientOf(ctx context.Context, name string) (Client, error)

func (*ClientSet) ClientOfManager added in v1.22.0

func (h *ClientSet) ClientOfManager(ctx context.Context) (Client, error)

func (*ClientSet) Clusters

func (h *ClientSet) Clusters() []string

func (ClientSet) ExecuteInEachCluster

func (h ClientSet) ExecuteInEachCluster(ctx context.Context, f func(ctx context.Context, cli Client) error) error

ExecuteInEachCluster Execute in each cluster concurrently

func (*ClientSet) Initialize

func (h *ClientSet) Initialize(db *gorm.DB) error

Initialize for gorm plugin

func (*ClientSet) Invalidate added in v1.22.0

func (h *ClientSet) Invalidate(ctx context.Context, name string)

Invalidate a client of name cluster and recreate after.

func (*ClientSet) Name

func (h *ClientSet) Name() string

Name for gorm plugin

type ConnInitResult

type ConnInitResult struct {
	Conn *websocket.Conn
	Resp *http.Response
	Err  error
}

type DelegateClient

type DelegateClient struct {
	*ExtendClient
	// contains filtered or unexported fields
}

func (*DelegateClient) APIServerAddr

func (c *DelegateClient) APIServerAddr() url.URL

func (*DelegateClient) APIServerVersion

func (c *DelegateClient) APIServerVersion() string

func (*DelegateClient) BaseAddr

func (c *DelegateClient) BaseAddr() url.URL

func (DelegateClient) ClientCertExpireAt added in v1.22.0

func (c DelegateClient) ClientCertExpireAt() *time.Time

func (DelegateClient) DialWebsocket added in v1.23.0

func (c DelegateClient) DialWebsocket(ctx context.Context, rpath string, headers http.Header) (*websocket.Conn, *http.Response, error)

func (*DelegateClient) Extend

func (c *DelegateClient) Extend() *ExtendClient

func (*DelegateClient) Name

func (c *DelegateClient) Name() string

type ExtendClient

type ExtendClient struct {
	Name string
	*TypedClient
}

func (*ExtendClient) CheckAlertmanagerConfig

func (c *ExtendClient) CheckAlertmanagerConfig(ctx context.Context, data *monitoringv1alpha1.AlertmanagerConfig) error

func (*ExtendClient) ClusterResourceStatistics

func (c *ExtendClient) ClusterResourceStatistics(ctx context.Context, ret interface{}) error

func (*ExtendClient) ClusterStatistics added in v1.23.0

func (c *ExtendClient) ClusterStatistics(ctx context.Context, ret interface{}) error

func (*ExtendClient) ClusterWorkloadStatistics

func (c *ExtendClient) ClusterWorkloadStatistics(ctx context.Context, ret interface{}) error

statistics.system/v1

func (*ExtendClient) GetLokiAlertRules

func (c *ExtendClient) GetLokiAlertRules(ctx context.Context) (map[string]prometheus.RealTimeAlertRule, error)

func (*ExtendClient) GetPromeAlertRules

func (c *ExtendClient) GetPromeAlertRules(ctx context.Context, name string) (map[string]prometheus.RealTimeAlertRule, error)

func (*ExtendClient) GetPrometheusLabelNames

func (c *ExtendClient) GetPrometheusLabelNames(ctx context.Context, matchs []string, start, end string) ([]string, error)

func (*ExtendClient) GetPrometheusLabelValues

func (c *ExtendClient) GetPrometheusLabelValues(ctx context.Context, matchs []string, label, start, end string) ([]string, error)

func (*ExtendClient) Healthy

func (c *ExtendClient) Healthy(ctx context.Context) error

health.system/v1

func (*ExtendClient) LokiQuery

func (c *ExtendClient) LokiQuery(ctx context.Context, logql string) (loki.QueryResponseData, error)

func (*ExtendClient) PrometheusQueryRange

func (c *ExtendClient) PrometheusQueryRange(ctx context.Context, query, start, end, step string) (prommodel.Matrix, error)

func (*ExtendClient) PrometheusTargets added in v1.22.0

func (c *ExtendClient) PrometheusTargets(ctx context.Context) (*promv1.TargetsResult, error)

func (*ExtendClient) PrometheusVector

func (c *ExtendClient) PrometheusVector(ctx context.Context, query string) (prommodel.Vector, error)

type PortForwarder

type PortForwarder struct {
	// contains filtered or unexported fields
}

func (*PortForwarder) ListenAddr

func (p *PortForwarder) ListenAddr() net.Addr

func (*PortForwarder) Stop

func (p *PortForwarder) Stop()

type Request

type Request struct {
	Method  string
	Path    string // queries 可以放在 path 中
	Query   url.Values
	Headers http.Header
	Body    interface{}
	Into    interface{}
}

type StatusTypedClient

type StatusTypedClient struct {
	// contains filtered or unexported fields
}

func (*StatusTypedClient) Patch

func (c *StatusTypedClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error

func (*StatusTypedClient) Update

func (c *StatusTypedClient) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error

type TypedClient

type TypedClient struct {
	BaseAddr      *url.URL
	RuntimeScheme *runtime.Scheme
	HTTPClient    *http.Client
}

func NewSimpleTypedClient added in v1.23.0

func NewSimpleTypedClient(baseaddr string) (*TypedClient, error)

func (TypedClient) Create

func (c TypedClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error

Create saves the object obj in the Kubernetes cluster.

func (TypedClient) Delete

func (c TypedClient) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error

Delete deletes the given obj from Kubernetes cluster.

func (TypedClient) DeleteAllOf

func (c TypedClient) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error

DeleteAllOf deletes all objects of the given type matching the given options.

func (TypedClient) DoRawRequest

func (c TypedClient) DoRawRequest(ctx context.Context, clientreq Request) (*http.Response, error)

func (TypedClient) DoRequest

func (c TypedClient) DoRequest(ctx context.Context, req Request) error

func (TypedClient) Get

Get retrieves an obj for the given object key from the Kubernetes Cluster. obj must be a struct pointer so that obj can be updated with the response returned by the Server.

func (TypedClient) List

func (c TypedClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error

List retrieves list of objects for a given namespace and list options. On a successful call, Items field in the list will be populated with the result returned from the server.

func (TypedClient) Patch

func (c TypedClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error

Patch patches the given obj in the Kubernetes cluster. obj must be a struct pointer so that obj can be updated with the content returned by the Server.

func (TypedClient) PortForward deprecated

func (c TypedClient) PortForward(ctx context.Context, obj client.Object, port int) (*PortForwarder, error)
PortForward

Deprecated: 无法使用,因 service 与 agent 中间还有一层 http proxy(apiserver). 无法直接使用 tcp 。

func (TypedClient) Proxy

func (c TypedClient) Proxy(ctx context.Context, obj client.Object, port int, req *http.Request, writer http.ResponseWriter, rewritefunc func(r *http.Response) error) error

func (TypedClient) RESTMapper

func (c TypedClient) RESTMapper() meta.RESTMapper

func (TypedClient) Scheme

func (c TypedClient) Scheme() *runtime.Scheme

func (TypedClient) Status

func (c TypedClient) Status() client.StatusWriter

func (TypedClient) Update

func (c TypedClient) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error

Update updates the given obj in the Kubernetes cluster. obj must be a struct pointer so that obj can be updated with the content returned by the Server.

func (TypedClient) Watch

不知道如何正确使用 watch.Interface,参考k8s源码:

https://github.com/kubernetes/kubernetes/blob/release-1.20/pkg/volume/csi/csi_attacher.go#L444-L487

或者:

watcher, err := cli.Watch(ctx, objctList)
if err != nil {
	return fmt.Errorf("watch error:%v", err)
}
defer watcher.Stop()

for {
	select {
	case event, ok := <-watcher.ResultChan():
		if !ok {
			log.Warningf("watch channel had been closed")
			break
		}

		switch event.Type {
		case watch.Added, watch.Modified:
			...
		case watch.Deleted:
			...
		case watch.Error:
			log.Warningf("received watch error: %v", event)
		}

	case <-ctx.Done():
		log.Warningf("watch channel closed")
		break
	}
}

type WebsocketRoundTripper

type WebsocketRoundTripper struct {
	Dialer *websocket.Dialer
	Result chan ConnInitResult
}

func NewWebsocketRoundTripper

func NewWebsocketRoundTripper(dialer *websocket.Dialer) *WebsocketRoundTripper

func (*WebsocketRoundTripper) RoundTrip

func (d *WebsocketRoundTripper) RoundTrip(r *http.Request) (*http.Response, error)

Jump to

Keyboard shortcuts

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