Documentation ¶
Index ¶
- Constants
- Variables
- func ComposeRouteName(namespace, name string, rule string) string
- func ComposeUpstreamName(namespace, name string, port int32) string
- func NewCluster(o *ClusterOptions) (*cluster, error)
- func UpdateSSL()
- type ClusterOptions
- type Metadata
- type Plugins
- type Route
- type SSL
- type Service
- type Ssl
- type Upstream
- type UpstreamActiveHealthCheck
- type UpstreamActiveHealthCheckHealthy
- type UpstreamActiveHealthCheckUnhealthy
- type UpstreamHealthCheck
- type UpstreamNode
- type UpstreamPassiveHealthCheck
- type UpstreamPassiveHealthCheckHealthy
- type UpstreamPassiveHealthCheckUnhealthy
- type UpstreamTimeout
Constants ¶
const ( // HashOnVars means the hash scope is variable. HashOnVars = "vars" // HashVarsCombination means the hash scope is the // variable combination. HashOnVarsCombination = "vars_combinations" // HashOnHeader means the hash scope is HTTP request // headers. HashOnHeader = "header" // HashOnCookie means the hash scope is HTTP Cookie. HashOnCookie = "cookie" // HashOnConsumer means the hash scope is APISIX consumer. HashOnConsumer = "consumer" // LbRoundRobin is the round robin load balancer. LbRoundRobin = "roundrobin" // LbConsistentHash is the consistent hash load balancer. LbConsistentHash = "chash" // LbEwma is the ewma load balancer. LbEwma = "ewma" // LbLeaseConn is the least connection load balancer. LbLeastConn = "least_conn" // SchemeHTTP represents the HTTP protocol. SchemeHTTP = "http" // SchemeGRPC represents the GRPC protocol. SchemeGRPC = "grpc" // HealthCheckHTTP represents the HTTP kind health check. HealthCheckHTTP = "http" // HealthCheckHTTPS represents the HTTPS kind health check. HealthCheckHTTPS = "https" // HealthCheckTCP represents the TCP kind health check. HealthCheckTCP = "tcp" // HealthCheckMaxConsecutiveNumber is the max number for // the consecutive success/failure in upstream health check. HealthCheckMaxConsecutiveNumber = 254 // ActiveHealthCheckMinInterval is the minimum interval for // the active health check. ActiveHealthCheckMinInterval = time.Second // Default connect, read and send timeout (in seconds) with upstreams. DefaultUpstreamTimeout = 60 )
Variables ¶
var ( // ErrClusterNotExist means a cluster doesn't exist. ErrClusterNotExist = errors.New("client not exist") // ErrDuplicatedCluster means the cluster adding request was // rejected since the cluster was already created. ErrDuplicatedCluster = errors.New("duplicated cluster") )
Functions ¶
func ComposeRouteName ¶
ComposeRouteName uses namespace, name and rule name to compose the route name.
func ComposeUpstreamName ¶
ComposeUpstreamName uses namespace, name and port info to compose the upstream name.
func NewCluster ¶
func NewCluster(o *ClusterOptions) (*cluster, error)
Types ¶
type ClusterOptions ¶
type Metadata ¶
type Metadata struct { ID string `json:"id,omitempty" yaml:"id,omitempty"` FullName string `json:"full_name,omitempty" yaml:"full_name,omitempty"` Name string `json:"name,omitempty" yaml:"name,omitempty"` ResourceVersion string `json:"resource_version,omitempty" yaml:"resource_version,omitempty"` Group string `json:"group,omitempty" yaml:"group,omitempty"` }
Metadata contains all meta information about resources.
type Route ¶
type Route struct { Metadata `json:",inline" yaml:",inline"` Host string `json:"host,omitempty" yaml:"host,omitempty"` Hosts []string `json:"hosts,omitempty" yaml:"hosts,omitempty"` Path string `json:"path,omitempty" yaml:"path,omitempty"` Priority int `json:"priority,omitempty" yaml:"priority,omitempty"` Uris []string `json:"uris,omitempty" yaml:"uris,omitempty"` Methods []string `json:"methods,omitempty" yaml:"methods,omitempty"` ServiceId string `json:"service_id,omitempty" yaml:"service_id,omitempty"` ServiceName string `json:"service_name,omitempty" yaml:"service_name,omitempty"` UpstreamId string `json:"upstream_id,omitempty" yaml:"upstream_id,omitempty"` UpstreamName string `json:"upstream_name,omitempty" yaml:"upstream_name,omitempty"` Plugins Plugins `json:"plugins,omitempty" yaml:"plugins,omitempty"` }
Route apisix route object +k8s:deepcopy-gen=true
type SSL ¶
type SSL interface { Get(context.Context, string) (*Ssl, error) List(context.Context) ([]*Ssl, error) Create(context.Context, *Ssl) (*Ssl, error) Delete(context.Context, *Ssl) error Update(context.Context, *Ssl) (*Ssl, error) }
SSL is the specific client interface to take over the create, update, list and delete for APISIX's SSL resource.
func NewSslClient ¶
func NewSslClient(c *cluster) SSL
type Service ¶
type Service struct { ID string `json:"id,omitempty" yaml:"id,omitempty"` FullName string `json:"full_name,omitempty" yaml:"full_name,omitempty"` Group string `json:"group,omitempty" yaml:"group,omitempty"` ResourceVersion string `json:"resource_version,omitempty" yaml:"resource_version,omitempty"` Name string `json:"name,omitempty" yaml:"name,omitempty"` UpstreamId string `json:"upstream_id,omitempty" yaml:"upstream_id,omitempty"` UpstreamName string `json:"upstream_name,omitempty" yaml:"upstream_name,omitempty"` Plugins Plugins `json:"plugins,omitempty" yaml:"plugins,omitempty"` FromKind string `json:"from_kind,omitempty" yaml:"from_kind,omitempty"` }
Service apisix service +k8s:deepcopy-gen=true
type Ssl ¶
type Ssl struct { ID string `json:"id,omitempty" yaml:"id,omitempty"` // FullName string `json:"full_name,omitempty" yaml:"full_name,omitempty"` Sni string `json:"sni,omitempty" yaml:"sni,omitempty"` Cert string `json:"cert,omitempty" yaml:"cert,omitempty"` Key string `json:"key,omitempty" yaml:"key,omitempty"` Status int `json:"status,omitempty" yaml:"status,omitempty"` }
Ssl apisix ssl object +k8s:deepcopy-gen=true
type Upstream ¶
type Upstream struct { Metadata `json:",inline" yaml:",inline"` Type string `json:"type,omitempty" yaml:"type,omitempty"` HashOn string `json:"hash_on,omitemtpy" yaml:"hash_on,omitempty"` Key string `json:"key,omitempty" yaml:"key,omitempty"` Checks *UpstreamHealthCheck `json:"checks,omitempty" yaml:"checks,omitempty"` Nodes []UpstreamNode `json:"nodes,omitempty" yaml:"nodes,omitempty"` FromKind string `json:"from_kind,omitempty" yaml:"from_kind,omitempty"` Scheme string `json:"scheme,omitempty" yaml:"scheme,omitempty"` Retries int `json:"retries,omitempty" yaml:"retries,omitempty"` Timeout *UpstreamTimeout `json:"timeout,omitempty" yaml:"timeout,omitempty"` }
Upstream is the apisix upstream definition. +k8s:deepcopy-gen=true
func NewDefaultUpstream ¶
func NewDefaultUpstream() *Upstream
NewDefaultUpstream returns an empty Upstream with default values.
type UpstreamActiveHealthCheck ¶
type UpstreamActiveHealthCheck struct { Type string `json:"type,omitempty" yaml:"type,omitempty"` Timeout int `json:"timeout,omitempty" yaml:"timeout,omitempty"` Concurrency int `json:"concurrency,omitempty" yaml:"concurrency,omitempty"` Host string `json:"host,omitempty" yaml:"host,omitempty"` Port int32 `json:"port,omitempty" yaml:"port,omitempty"` HTTPPath string `json:"http_path,omitempty" yaml:"http_path,omitempty"` HTTPSVerifyCert bool `json:"https_verify_certificate,omitempty" yaml:"https_verify_certificate,omitempty"` HTTPRequestHeaders []string `json:"req_headers,omitempty" yaml:"req_headers,omitempty"` Healthy UpstreamActiveHealthCheckHealthy `json:"healthy,omitempty" yaml:"healthy,omitempty"` Unhealthy UpstreamActiveHealthCheckUnhealthy `json:"unhealthy,omitempty" yaml:"unhealthy,omitempty"` }
UpstreamActiveHealthCheck defines the active kind of upstream health check. +k8s:deepcopy-gen=true
type UpstreamActiveHealthCheckHealthy ¶
type UpstreamActiveHealthCheckHealthy struct { UpstreamPassiveHealthCheckHealthy `json:",inline" yaml:",inline"` Interval int `json:"interval,omitempty" yaml:"interval,omitempty"` }
UpstreamActiveHealthCheckHealthy defines the conditions to judge whether an upstream node is healthy with the active manner. +k8s:deepcopy-gen=true
type UpstreamActiveHealthCheckUnhealthy ¶
type UpstreamActiveHealthCheckUnhealthy struct { UpstreamPassiveHealthCheckUnhealthy `json:",inline" yaml:",inline"` Interval int `json:"interval,omitempty" yaml:"interval,omitempty"` }
UpstreamActiveHealthCheckUnhealthy defines the conditions to judge whether an upstream node is unhealthy with the active manager. +k8s:deepcopy-gen=true
type UpstreamHealthCheck ¶
type UpstreamHealthCheck struct { Active *UpstreamActiveHealthCheck `json:"active" yaml:"active"` Passive *UpstreamPassiveHealthCheck `json:"passive,omitempty" yaml:"passive,omitempty"` }
UpstreamHealthCheck defines the active and/or passive health check for an Upstream, with the upstream health check feature, pods can be kicked out or joined in quickly, if the feedback of Kubernetes liveness/readiness probe is long. +k8s:deepcopy-gen=true
type UpstreamNode ¶
type UpstreamNode struct { IP string `json:"ip,omitempty" yaml:"ip,omitempty"` Port int `json:"port,omitempty" yaml:"port,omitempty"` Weight int `json:"weight,omitempty" yaml:"weight,omitempty"` }
Node the node in upstream +k8s:deepcopy-gen=true
type UpstreamPassiveHealthCheck ¶
type UpstreamPassiveHealthCheck struct { Type string `json:"type,omitempty" yaml:"type,omitempty"` Healthy UpstreamPassiveHealthCheckHealthy `json:"healthy,omitempty" yaml:"healthy,omitempty"` Unhealthy UpstreamPassiveHealthCheckUnhealthy `json:"unhealthy,omitempty" yaml:"unhealthy,omitempty"` }
UpstreamPassiveHealthCheck defines the passive kind of upstream health check. +k8s:deepcopy-gen=true
type UpstreamPassiveHealthCheckHealthy ¶
type UpstreamPassiveHealthCheckHealthy struct { HTTPStatuses []int `json:"http_statuses,omitempty" yaml:"http_statuses,omitempty"` Successes int `json:"successes,omitempty" yaml:"successes,omitempty"` }
UpstreamPassiveHealthCheckHealthy defines the conditions to judge whether an upstream node is healthy with the passive manner. +k8s:deepcopy-gen=true
type UpstreamPassiveHealthCheckUnhealthy ¶
type UpstreamPassiveHealthCheckUnhealthy struct { HTTPStatuses []int `json:"http_statuses,omitempty" yaml:"http_statuses,omitempty"` HTTPFailures int `json:"http_failures,omitempty" yaml:"http_failures,omitempty"` TCPFailures int `json:"tcp_failures,omitempty" yaml:"tcp_failures,omitempty"` Timeouts float64 `json:"timeouts,omitempty" yaml:"timeouts,omitempty"` }
UpstreamPassiveHealthCheckUnhealthy defines the conditions to judge whether an upstream node is unhealthy with the passive manager. +k8s:deepcopy-gen=true
type UpstreamTimeout ¶
type UpstreamTimeout struct { // Connect is the connect timeout Connect int `json:"connect" yaml:"connect"` // Send is the send timeout Send int `json:"send" yaml:"send"` // Read is the read timeout Read int `json:"read" yaml:"read"` }
UpstreamTimeout represents the timeout settings on Upstream.