Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetServiceIP ¶
GetServiceIP returns the valid IP of the microservice container.
Types ¶
type API ¶
type API struct {
ID string `json:"id,omitempty"`
CreatedAt int `json:"created_at,omitempty"`
Hosts []string `json:"hosts,omitempty"`
URIs []string `json:"-"`
Methods []string `json:"-"`
HTTPIfTerminated bool `json:"http_if_terminated,omitempty"`
HTTPSOnly bool `json:"https_only,omitempty"`
Name string `json:"name,omitempty"`
PreserveHost bool `json:"preserve_host,omitempty"`
Retries int `json:"retries,omitempty"`
StripURI bool `json:"strip_uri,omitempty"`
UpstreamConnectTimeout int `json:"upstream_connect_timeout,omitempty"`
UpstreamReadTimeout int `json:"upstream_read_timeout,omitempty"`
UpstreamSendTimeout int `json:"upstream_send_timeout,omitempty"`
UpstreamURL string `json:"upstream_url,omitempty"`
}
API is a structure that represents Kong's API object. See https://getkong.org/docs/0.10.x/admin-api/#api-object
type KongGateway ¶
type KongGateway struct {
// GatewayURL is the admin URL of the kong gateway. This is usually the URL (host plus port) of Kong admin
GatewayURL string
// contains filtered or unexported fields
}
KongGateway holds the configuration and values for a pre-defined Kong API Gateway.
func NewKongGateway ¶
func NewKongGateway(adminURL string, client *http.Client, config *MicroserviceConfig) *KongGateway
NewKongGateway creates a Kong Gateway with the given admin URL of kong, an http.Client and a MicroserviceConfig.
func NewKongGatewayFromConfigFile ¶
func NewKongGatewayFromConfigFile(adminURL string, client *http.Client, configFile string) (*KongGateway, error)
NewKongGatewayFromConfigFile creates a Kong Gateway for a given admin URL of kong, an http.Client and a location of a JSON file with the configuration. The configuration JSON has the following structure:
{
"name": "The name of the service",
"port": 8080, // the local microservice port
"virtual_host": "Microservices upstream virtual host",
"hosts": ["localhost", "example.org"] // valid HTTP Host header values for this microservice
"weight": 10, // microservice instance weight used for load ballancing
"slots": 100 // maximal number of slots to allocate for this microservices group
}
func (*KongGateway) SelfRegister ¶
func (kong *KongGateway) SelfRegister() error
SelfRegister performs a self registration of the microservice with a Kong Gateway. It performs the following tasks: 1. Checks for existence of 'upstream' for the microservices group. If there is no 'upstream' configured, it creates a new one with the given configuration. 2. Checks for the existince of API for the microservices group. If there is no API created on Kong, it creates a new one with the given configuration. 3. Adds new target on kong for the configured 'upstream' and 'API'.
func (*KongGateway) Unregister ¶
func (kong *KongGateway) Unregister() error
Unregister unregisters this instance of the microservice from the Kong Gateway. Basically it updates the upstream target with weight 0, which disables the target.
type MicroserviceConfig ¶
type MicroserviceConfig struct {
// MicroserviceName is the name of the microservice. This microservice will be registered on the Gateway under this name.
// Note that this is not the domain (host) of the microservice, but a human readable name of the microservice.
MicroserviceName string `json:"name,omitempty"`
// MicroservicePort is the local port on which the microservice is exposed.
MicroservicePort int `json:"port,omitempty"`
// VirtualHost is the domain name of the virtual host for all microservices of this name.
// We can have multiple instances (containers) running on a single platform. Every microservice instance must have the same
// virtual host name to be a part of the same cluster. For example, if you are exposing a user microservices, then a
// virtual host might be 'user.services.mydomain.com'. When accessing user microservices you'll call http://user.services.mydomain.com:8000/user
// which will redirect to a specific microservice.
// This is a configuration for 'upstream' in Kong Gateway.
VirtualHost string `json:"virtual_host,omitempty"`
Paths []string `json:"paths,omitempty"`
// Hosts is a list of supported hosts by the microservice.
// When accessing the microservice, you must set the HTTP header 'Host' to a value
// that is listed in this list of hosts.
Hosts []string `json:"hosts,omitempty"`
// Weight is the weight of this particular microservice used for load ballancing by the gateway.
Weight int `json:"weight,omitempty"`
// ServicesMaxSlots is the maximal number of slots which the load ballancer on the gateway will
// allocate for the this VirtualHost.
ServicesMaxSlots int `json:"slots,omitempty"`
}
MicroserviceConfig represents configuration for the microservice itself.
type Registration ¶
type Registration interface {
// SelfRegister performs a self registration of the microservice against an API Gateway.
SelfRegister() error
// Unregister unregisters previously registerd microservice on an API Gateway.
Unregister() error
}
Registration registers and unregisters microservices on the API Gateway.