apisix

package
v0.0.0-...-8e6f2e6 Latest Latest
Warning

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

Go to latest
Published: Jun 2, 2023 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
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

View Source
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

func ComposeRouteName(namespace, name string, rule string) string

ComposeRouteName uses namespace, name and rule name to compose the route name.

func ComposeUpstreamName

func ComposeUpstreamName(namespace, name string, port int32) string

ComposeUpstreamName uses namespace, name and port info to compose the upstream name.

func NewCluster

func NewCluster(o *ClusterOptions) (*cluster, error)

func UpdateSSL

func UpdateSSL()

Types

type ClusterOptions

type ClusterOptions struct {
	Name     string
	AdminKey string
	BaseURL  string
	Timeout  time.Duration
}

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 Plugins

type Plugins map[string]interface{}

func (*Plugins) DeepCopy

func (p *Plugins) DeepCopy() *Plugins

func (*Plugins) DeepCopyInto

func (p *Plugins) DeepCopyInto(out *Plugins)

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.

Jump to

Keyboard shortcuts

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