Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
 - func GenerateCertAndKeyFileContent(secret *api_v1.Secret) []byte
 - func GetMapKeyAsBool(m map[string]string, key string, context apiObject) (bool, bool, error)
 - func GetMapKeyAsInt(m map[string]string, key string, context apiObject) (int, bool, error)
 - func GetMapKeyAsInt64(m map[string]string, key string, context apiObject) (int64, bool, error)
 - func GetMapKeyAsStringSlice(m map[string]string, key string, context apiObject, delimiter string) ([]string, bool, error)
 - func GetSecretKind(secret *api_v1.Secret) (int, error)
 - func ParseLBMethod(method string) (string, error)
 - func ParseLBMethodForPlus(method string) (string, error)
 - func ParseSlowStart(s string) (string, error)
 - func ValidateJWKSecret(secret *api_v1.Secret) error
 - func ValidateTLSSecret(secret *api_v1.Secret) error
 - type Config
 - type Configurator
 - func (cnf *Configurator) AddOrUpdateDHParam(content string) (string, error)
 - func (cnf *Configurator) AddOrUpdateDefaultServerTLSSecret(secret *api_v1.Secret) error
 - func (cnf *Configurator) AddOrUpdateIngress(ingEx *IngressEx) error
 - func (cnf *Configurator) AddOrUpdateMergeableIngress(mergeableIngs *MergeableIngresses) error
 - func (cnf *Configurator) AddOrUpdateSecret(secret *api_v1.Secret, ingExes []IngressEx, ...) error
 - func (cnf *Configurator) DeleteIngress(key string) error
 - func (cnf *Configurator) DeleteSecret(key string, ingExes []IngressEx, mergeableIngresses []MergeableIngresses) error
 - func (cnf *Configurator) HasIngress(ing *extensions.Ingress) bool
 - func (cnf *Configurator) HasMinion(master *extensions.Ingress, minion *extensions.Ingress) bool
 - func (cnf *Configurator) UpdateConfig(config *Config, ingExes []*IngressEx, ...) error
 - func (cnf *Configurator) UpdateEndpoints(ingExes []*IngressEx) error
 - func (cnf *Configurator) UpdateEndpointsMergeableIngress(mergableIngressesSlice []*MergeableIngresses) error
 
- type Controller
 - func (nginx *Controller) AddOrUpdateDHParam(dhparam string) (string, error)
 - func (nginx *Controller) AddOrUpdateSecretFile(name string, content []byte, mode os.FileMode) string
 - func (nginx *Controller) DeleteIngress(name string)
 - func (nginx *Controller) DeleteSecretFile(name string)
 - func (nginx *Controller) Quit()
 - func (nginx *Controller) Reload() error
 - func (nginx *Controller) Start(done chan error)
 - func (nginx *Controller) UpdateConfigVersionFile()
 - func (nginx *Controller) UpdateIngressConfigFile(name string, cfg []byte)
 - func (nginx *Controller) UpdateMainConfigFile(cfg []byte)
 
- type HealthCheck
 - type Ingress
 - type IngressEx
 - type IngressNginxConfig
 - type JWTAuth
 - type JWTKey
 - type JWTRedirectLocation
 - type Location
 - type MainConfig
 - type MergeableIngresses
 - type Server
 - type TemplateExecutor
 - func (te *TemplateExecutor) ExecuteIngressConfigTemplate(cfg *IngressNginxConfig) ([]byte, error)
 - func (te *TemplateExecutor) ExecuteMainConfigTemplate(cfg *MainConfig) ([]byte, error)
 - func (te *TemplateExecutor) UpdateIngressTemplate(templateString *string) error
 - func (te *TemplateExecutor) UpdateMainTemplate(templateString *string) error
 
- type Upstream
 - type UpstreamServer
 
Constants ¶
const ( // TLS Secret TLS = iota // JWK Secret JWK )
const DefaultServerSecretName = "default"
    DefaultServerSecretName is the filename of the Secret with a TLS cert and a key for the default server
const JWTKeyAnnotation = "nginx.com/jwt-key"
    JWTKeyAnnotation is the annotation where the Secret with a JWK is specified.
const JWTKeyKey = "jwk"
    JWTKeyKey is the key of the data field of a Secret where the JWK must be stored.
const TLSSecretFileMode = 0600
    TLSSecretFileMode defines the default filemode for files with TLS Secrets
Variables ¶
This section is empty.
Functions ¶
func GenerateCertAndKeyFileContent ¶
GenerateCertAndKeyFileContent generates a pem file content from the secret
func GetMapKeyAsBool ¶
GetMapKeyAsBool searches the map for the given key and parses the key as bool
func GetMapKeyAsInt ¶
GetMapKeyAsInt tries to find and parse a key in a map as int
func GetMapKeyAsInt64 ¶
GetMapKeyAsInt64 tries to find and parse a key in a map as int64
func GetMapKeyAsStringSlice ¶
func GetMapKeyAsStringSlice(m map[string]string, key string, context apiObject, delimiter string) ([]string, bool, error)
GetMapKeyAsStringSlice tries to find and parse a key in the map as string slice splitting it on delimiter
func GetSecretKind ¶
GetSecretKind returns the kind of the Secret.
func ParseLBMethod ¶
ParseLBMethod parses method and matches it to a corresponding load balancing method in NGINX. An error is returned if method is not valid
func ParseLBMethodForPlus ¶
ParseLBMethodForPlus parses method and matches it to a corresponding load balancing method in NGINX Plus. An error is returned if method is not valid
func ParseSlowStart ¶
ParseSlowStart ensures that the slow_start value in the annotation is valid.
func ValidateJWKSecret ¶
ValidateJWKSecret validates the secret. If it is valid, the function returns nil.
func ValidateTLSSecret ¶
ValidateTLSSecret validates the secret. If it is valid, the function returns nil.
Types ¶
type Config ¶
type Config struct {
	LocationSnippets              []string
	ServerSnippets                []string
	ServerTokens                  string
	ProxyConnectTimeout           string
	ProxyReadTimeout              string
	ClientMaxBodySize             string
	HTTP2                         bool
	RedirectToHTTPS               bool
	SSLRedirect                   bool
	MainMainSnippets              []string
	MainHTTPSnippets              []string
	MainStreamSnippets            []string
	MainServerNamesHashBucketSize string
	MainServerNamesHashMaxSize    string
	MainLogFormat                 string
	MainErrorLogLevel             string
	MainStreamLogFormat           string
	ProxyBuffering                bool
	ProxyBuffers                  string
	ProxyBufferSize               string
	ProxyMaxTempFileSize          string
	ProxyProtocol                 bool
	ProxyHideHeaders              []string
	ProxyPassHeaders              []string
	HSTS                          bool
	HSTSMaxAge                    int64
	HSTSIncludeSubdomains         bool
	LBMethod                      string
	MainWorkerProcesses           string
	MainWorkerCPUAffinity         string
	MainWorkerShutdownTimeout     string
	MainWorkerConnections         string
	MainWorkerRlimitNofile        string
	Keepalive                     int64
	MaxFails                      int
	FailTimeout                   string
	HealthCheckEnabled            bool
	HealthCheckMandatory          bool
	HealthCheckMandatoryQueue     int64
	SlowStart                     string
	// http://nginx.org/en/docs/http/ngx_http_realip_module.html
	RealIPHeader    string
	SetRealIPFrom   []string
	RealIPRecursive bool
	// http://nginx.org/en/docs/http/ngx_http_ssl_module.html
	MainServerSSLProtocols           string
	MainServerSSLPreferServerCiphers bool
	MainServerSSLCiphers             string
	MainServerSSLDHParam             string
	MainServerSSLDHParamFileContent  *string
	MainTemplate    *string
	IngressTemplate *string
	JWTRealm    string
	JWTKey      string
	JWTToken    string
	JWTLoginURL string
	Ports    []int
	SSLPorts []int
}
    Config holds NGINX configuration parameters
func NewDefaultConfig ¶
func NewDefaultConfig() *Config
NewDefaultConfig creates a Config with default values
type Configurator ¶
type Configurator struct {
	// contains filtered or unexported fields
}
    Configurator transforms an Ingress resource into NGINX Configuration
func NewConfigurator ¶
func NewConfigurator(nginx *Controller, config *Config, nginxAPI *plus.NginxAPIController, templateExecutor *TemplateExecutor) *Configurator
NewConfigurator creates a new Configurator
func (*Configurator) AddOrUpdateDHParam ¶
func (cnf *Configurator) AddOrUpdateDHParam(content string) (string, error)
AddOrUpdateDHParam creates a dhparam file with the content of the string.
func (*Configurator) AddOrUpdateDefaultServerTLSSecret ¶
func (cnf *Configurator) AddOrUpdateDefaultServerTLSSecret(secret *api_v1.Secret) error
AddOrUpdateDefaultServerTLSSecret creates or updates a file with a TLS cert and a key from the secret for the default server.
func (*Configurator) AddOrUpdateIngress ¶
func (cnf *Configurator) AddOrUpdateIngress(ingEx *IngressEx) error
AddOrUpdateIngress adds or updates NGINX configuration for the Ingress resource
func (*Configurator) AddOrUpdateMergeableIngress ¶
func (cnf *Configurator) AddOrUpdateMergeableIngress(mergeableIngs *MergeableIngresses) error
AddOrUpdateMergeableIngress adds or updates NGINX configuration for the Ingress resources with Mergeable Types
func (*Configurator) AddOrUpdateSecret ¶
func (cnf *Configurator) AddOrUpdateSecret(secret *api_v1.Secret, ingExes []IngressEx, mergeableIngresses []MergeableIngresses) error
AddOrUpdateSecret creates or updates a file with the content of the secret
func (*Configurator) DeleteIngress ¶
func (cnf *Configurator) DeleteIngress(key string) error
DeleteIngress deletes NGINX configuration for the Ingress resource
func (*Configurator) DeleteSecret ¶
func (cnf *Configurator) DeleteSecret(key string, ingExes []IngressEx, mergeableIngresses []MergeableIngresses) error
DeleteSecret deletes the file associated with the secret and the configuration files for the Ingress resources. NGINX is reloaded only when len(ings) > 0
func (*Configurator) HasIngress ¶
func (cnf *Configurator) HasIngress(ing *extensions.Ingress) bool
HasIngress checks if the Ingress resource is present in NGINX configuration
func (*Configurator) HasMinion ¶
func (cnf *Configurator) HasMinion(master *extensions.Ingress, minion *extensions.Ingress) bool
HasMinion checks if the minion Ingress resource of the master is present in NGINX configuration
func (*Configurator) UpdateConfig ¶
func (cnf *Configurator) UpdateConfig(config *Config, ingExes []*IngressEx, mergeableIngs map[string]*MergeableIngresses) error
UpdateConfig updates NGINX Configuration parameters
func (*Configurator) UpdateEndpoints ¶
func (cnf *Configurator) UpdateEndpoints(ingExes []*IngressEx) error
UpdateEndpoints updates endpoints in NGINX configuration for the Ingress resources
func (*Configurator) UpdateEndpointsMergeableIngress ¶
func (cnf *Configurator) UpdateEndpointsMergeableIngress(mergableIngressesSlice []*MergeableIngresses) error
UpdateEndpointsMergeableIngress updates endpoints in NGINX configuration for a mergeable Ingress resource
type Controller ¶
type Controller struct {
	// contains filtered or unexported fields
}
    Controller updates NGINX configuration, starts and reloads NGINX
func NewNginxController ¶
func NewNginxController(nginxConfPath string, nginxBinaryPath string, local bool) *Controller
NewNginxController creates a NGINX controller
func (*Controller) AddOrUpdateDHParam ¶
func (nginx *Controller) AddOrUpdateDHParam(dhparam string) (string, error)
AddOrUpdateDHParam creates the servers dhparam.pem file
func (*Controller) AddOrUpdateSecretFile ¶
func (nginx *Controller) AddOrUpdateSecretFile(name string, content []byte, mode os.FileMode) string
AddOrUpdateSecretFile creates a file with the specified name, content and mode.
func (*Controller) DeleteIngress ¶
func (nginx *Controller) DeleteIngress(name string)
DeleteIngress deletes the configuration file, which corresponds for the specified ingress from NGINX conf directory
func (*Controller) DeleteSecretFile ¶
func (nginx *Controller) DeleteSecretFile(name string)
DeleteSecretFile the file with a Secret
func (*Controller) UpdateConfigVersionFile ¶
func (nginx *Controller) UpdateConfigVersionFile()
UpdateConfigVersionFile writes the config version file.
func (*Controller) UpdateIngressConfigFile ¶
func (nginx *Controller) UpdateIngressConfigFile(name string, cfg []byte)
UpdateIngressConfigFile writes the Ingress configuration file to the filesystem
func (*Controller) UpdateMainConfigFile ¶
func (nginx *Controller) UpdateMainConfigFile(cfg []byte)
UpdateMainConfigFile writes the main NGINX configuration file to the filesystem
type HealthCheck ¶
type HealthCheck struct {
	UpstreamName   string
	URI            string
	Interval       int32
	Fails          int32
	Passes         int32
	Scheme         string
	Mandatory      bool
	Headers        map[string]string
	TimeoutSeconds int64
}
    HealthCheck describes an active HTTP health check
type IngressEx ¶
type IngressEx struct {
	Ingress      *extensions.Ingress
	TLSSecrets   map[string]*api_v1.Secret
	JWTKey       JWTKey
	Endpoints    map[string][]string
	HealthChecks map[string]*api_v1.Probe
}
    IngressEx holds an Ingress along with Secrets and Endpoints of the services that are referenced in this Ingress
type IngressNginxConfig ¶
type IngressNginxConfig struct {
	Upstreams []Upstream
	Servers   []Server
	Keepalive string
	Ingress   Ingress
}
    IngressNginxConfig describes an NGINX configuration
type JWTRedirectLocation ¶
JWTRedirectLocation describes a location for redirecting client requests to a login URL for JWT Authentication
type Location ¶
type Location struct {
	LocationSnippets     []string
	Path                 string
	Upstream             Upstream
	ProxyConnectTimeout  string
	ProxyReadTimeout     string
	ClientMaxBodySize    string
	Websocket            bool
	Rewrite              string
	SSL                  bool
	GRPC                 bool
	ProxyBuffering       bool
	ProxyBuffers         string
	ProxyBufferSize      string
	ProxyMaxTempFileSize string
	JWTAuth              *JWTAuth
	MinionIngress *Ingress
}
    Location describes an NGINX location
type MainConfig ¶
type MainConfig struct {
	ServerNamesHashBucketSize string
	ServerNamesHashMaxSize    string
	LogFormat                 string
	ErrorLogLevel             string
	StreamLogFormat           string
	HealthStatus              bool
	NginxStatus               bool
	NginxStatusAllowCIDRs     []string
	NginxStatusPort           int
	MainSnippets              []string
	HTTPSnippets              []string
	StreamSnippets            []string
	// http://nginx.org/en/docs/http/ngx_http_ssl_module.html
	SSLProtocols           string
	SSLPreferServerCiphers bool
	SSLCiphers             string
	SSLDHParam             string
	HTTP2                  bool
	ServerTokens           string
	ProxyProtocol          bool
	WorkerProcesses        string
	WorkerCPUAffinity      string
	WorkerShutdownTimeout  string
	WorkerConnections      string
	WorkerRlimitNofile     string
}
    MainConfig describe the main NGINX configuration file
func GenerateNginxMainConfig ¶
func GenerateNginxMainConfig(config *Config) *MainConfig
GenerateNginxMainConfig generate NginxMainConfig from Config
type MergeableIngresses ¶
MergeableIngresses is a mergeable ingress of a master and minions
type Server ¶
type Server struct {
	ServerSnippets        []string
	Name                  string
	ServerTokens          string
	Locations             []Location
	SSL                   bool
	SSLCertificate        string
	SSLCertificateKey     string
	SSLCiphers            string
	GRPCOnly              bool
	StatusZone            string
	HTTP2                 bool
	RedirectToHTTPS       bool
	SSLRedirect           bool
	ProxyProtocol         bool
	HSTS                  bool
	HSTSMaxAge            int64
	HSTSIncludeSubdomains bool
	ProxyHideHeaders      []string
	ProxyPassHeaders      []string
	HealthChecks map[string]HealthCheck
	// http://nginx.org/en/docs/http/ngx_http_realip_module.html
	RealIPHeader    string
	SetRealIPFrom   []string
	RealIPRecursive bool
	JWTAuth              *JWTAuth
	JWTRedirectLocations []JWTRedirectLocation
	Ports    []int
	SSLPorts []int
}
    Server describes an NGINX server
type TemplateExecutor ¶
type TemplateExecutor struct {
	HealthStatus          bool
	NginxStatus           bool
	NginxStatusAllowCIDRs []string
	NginxStatusPort       int
	// contains filtered or unexported fields
}
    TemplateExecutor executes NGINX configuration templates
func NewTemplateExecutor ¶
func NewTemplateExecutor(mainTemplatePath string, ingressTemplatePath string, healthStatus bool, nginxStatus bool, nginxStatusAllowCIDRs []string, nginxStatusPort int) (*TemplateExecutor, error)
NewTemplateExecutor creates a TemplateExecutor
func (*TemplateExecutor) ExecuteIngressConfigTemplate ¶
func (te *TemplateExecutor) ExecuteIngressConfigTemplate(cfg *IngressNginxConfig) ([]byte, error)
ExecuteIngressConfigTemplate generates the content of a NGINX configuration file for an Ingress resource
func (*TemplateExecutor) ExecuteMainConfigTemplate ¶
func (te *TemplateExecutor) ExecuteMainConfigTemplate(cfg *MainConfig) ([]byte, error)
ExecuteMainConfigTemplate generates the content of the main NGINX configuration file
func (*TemplateExecutor) UpdateIngressTemplate ¶
func (te *TemplateExecutor) UpdateIngressTemplate(templateString *string) error
UpdateIngressTemplate updates the ingress template
func (*TemplateExecutor) UpdateMainTemplate ¶
func (te *TemplateExecutor) UpdateMainTemplate(templateString *string) error
UpdateMainTemplate updates the main NGINX template
type Upstream ¶
type Upstream struct {
	Name            string
	UpstreamServers []UpstreamServer
	StickyCookie    string
	LBMethod        string
	Queue           int64
	QueueTimeout    int64
}
    Upstream describes an NGINX upstream
func NewUpstreamWithDefaultServer ¶
NewUpstreamWithDefaultServer creates an upstream with the default server. proxy_pass to an upstream with the default server returns 502. We use it for services that have no endpoints