Documentation
¶
Index ¶
- Constants
- func ApiServerProxyPath(namespace, schema, svcname, port string) string
- func HeadersFrom(kvs map[string]string) http.Header
- func NewRestDecoder(r io.ReadCloser, newitemfunc func() client.Object) *restDecoder
- func QueryFrom(kvs map[string]string) url.Values
- func ResponseBodyRewriter(rewritefunc func(io.Reader, io.Writer) error) func(resp *http.Response) error
- func WrappedResponse(intodata interface{}) *response.Response
- type AuthInfo
- type ChainedProxy
- type Client
- type ClientMeta
- type ClientSet
- func (h *ClientSet) ClientOf(ctx context.Context, name string) (Client, error)
- func (h *ClientSet) ClientOfManager(ctx context.Context) (Client, error)
- func (h *ClientSet) Clusters() []string
- func (h ClientSet) ExecuteInEachCluster(ctx context.Context, f func(ctx context.Context, cli Client) error) error
- func (h *ClientSet) Initialize(db *gorm.DB) error
- func (h *ClientSet) Invalidate(ctx context.Context, name string)
- func (h *ClientSet) Name() string
- type ConnInitResult
- type DelegateClient
- func (c *DelegateClient) APIServerAddr() url.URL
- func (c *DelegateClient) APIServerVersion() string
- func (c *DelegateClient) BaseAddr() url.URL
- func (c DelegateClient) DialWebsocket(ctx context.Context, rpath string, headers http.Header) (*websocket.Conn, *http.Response, error)
- func (c *DelegateClient) Extend() *ExtendClient
- func (c *DelegateClient) Name() string
- type ExtendClient
- func (c *ExtendClient) CheckAlertmanagerConfig(ctx context.Context, data *monitoringv1alpha1.AlertmanagerConfig) error
- func (c *ExtendClient) ClusterResourceStatistics(ctx context.Context, ret interface{}) error
- func (c *ExtendClient) ClusterStatistics(ctx context.Context, ret interface{}) error
- func (c *ExtendClient) ClusterWorkloadStatistics(ctx context.Context, ret interface{}) error
- func (c *ExtendClient) GetLokiAlertRules(ctx context.Context) (map[string]prometheus.RealTimeAlertRule, error)
- func (c *ExtendClient) GetPromeAlertRules(ctx context.Context, name string) (map[string]prometheus.RealTimeAlertRule, error)
- func (c *ExtendClient) GetPrometheusLabelNames(ctx context.Context, matchs []string, start, end string) ([]string, error)
- func (c *ExtendClient) GetPrometheusLabelValues(ctx context.Context, matchs []string, label, start, end string) ([]string, error)
- func (c *ExtendClient) Healthy(ctx context.Context) error
- func (c *ExtendClient) LokiQuery(ctx context.Context, logql string) (loki.QueryResponseData, error)
- func (c *ExtendClient) PrometheusQueryRange(ctx context.Context, query, start, end, step string) (prommodel.Matrix, error)
- func (c *ExtendClient) PrometheusTargets(ctx context.Context) (*promv1.TargetsResult, error)
- func (c *ExtendClient) PrometheusVector(ctx context.Context, query string) (prommodel.Vector, error)
- type PortForwarder
- type Request
- type StatusTypedClient
- type TypedClient
- func (c TypedClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error
- func (c TypedClient) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error
- func (c TypedClient) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error
- func (c TypedClient) DoRawRequest(ctx context.Context, clientreq Request) (*http.Response, error)
- func (c TypedClient) DoRequest(ctx context.Context, req Request) error
- func (c TypedClient) Get(ctx context.Context, key client.ObjectKey, obj client.Object) error
- func (c TypedClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error
- func (c TypedClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, ...) error
- func (c TypedClient) PortForward(ctx context.Context, obj client.Object, port int) (*PortForwarder, error)deprecated
- func (c TypedClient) Proxy(ctx context.Context, obj client.Object, port int, req *http.Request, ...) error
- func (c TypedClient) RESTMapper() meta.RESTMapper
- func (c TypedClient) Scheme() *runtime.Scheme
- func (c TypedClient) Status() client.StatusWriter
- func (c TypedClient) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error
- func (c TypedClient) Watch(ctx context.Context, obj client.ObjectList, opts ...client.ListOption) (watch.Interface, error)
- type WebsocketRoundTripper
Constants ¶
const ( AgentModeApiServer = "apiServerProxy" AgentModeAHTTP = "http" AgentModeHTTPS = "https" )
Variables ¶
This section is empty.
Functions ¶
func ApiServerProxyPath ¶
func NewRestDecoder ¶
func NewRestDecoder(r io.ReadCloser, newitemfunc func() client.Object) *restDecoder
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 ¶
Types ¶
type AuthInfo ¶
type ChainedProxy ¶
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 // 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 ClientSet ¶
type ClientSet struct {
// contains filtered or unexported fields
}
func (*ClientSet) ClientOfManager ¶ added in v1.22.0
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 ¶
Initialize for gorm plugin
func (*ClientSet) Invalidate ¶ added in v1.22.0
Invalidate a client of name cluster and recreate after.
type ConnInitResult ¶
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) DialWebsocket ¶ added in v1.23.0
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 (*ExtendClient) GetPrometheusLabelValues ¶
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 (*ExtendClient) PrometheusTargets ¶ added in v1.22.0
func (c *ExtendClient) PrometheusTargets(ctx context.Context) (*promv1.TargetsResult, error)
func (*ExtendClient) PrometheusVector ¶
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 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 // contains filtered or unexported fields }
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 (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) 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 ¶
func (c TypedClient) Watch(ctx context.Context, obj client.ObjectList, opts ...client.ListOption) (watch.Interface, error)
不知道如何正确使用 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