Documentation
¶
Index ¶
- func GetCRDRestClient(cfg *rest.Config) (*rest.RESTClient, error)
- func RegisterCustomResourceType() error
- type ConfigSource
- type ImageNameTranslator
- type ImageTranslation
- type TLSCertificate
- type TLSConfig
- type TranslationConfig
- type TranslationRule
- type TransportProfile
- type VirtletImageMapping
- type VirtletImageMappingList
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetCRDRestClient ¶
func GetCRDRestClient(cfg *rest.Config) (*rest.RESTClient, error)
GetCRDRestClient returns ReST client that can be used to work with virtlet CRDs
func RegisterCustomResourceType ¶
func RegisterCustomResourceType() error
RegisterCustomResourceType registers custom resource definition for VirtletImageMapping kind in k8s
Types ¶
type ConfigSource ¶
type ConfigSource interface {
// Configs returns list of configs that are available in this data source
Configs(ctx context.Context) ([]TranslationConfig, error)
// Description returns the data-source description to be used in the logs
Description() string
}
ConfigSource is the data-source for translation configs
func NewCRDSource ¶
func NewCRDSource(namespace string) ConfigSource
NewCRDSource is a factory for CRD-based config source
func NewFakeConfigSource ¶
func NewFakeConfigSource(configs map[string]ImageTranslation) ConfigSource
NewFakeConfigSource is a factory for a fake config source
func NewFileConfigSource ¶
func NewFileConfigSource(configsDirectory string) ConfigSource
NewFileConfigSource is a factory for a directory-based config source
type ImageNameTranslator ¶
type ImageNameTranslator interface {
// LoadConfigs initializes translator with configs from supplied data sources. All previous mappings are discarded.
LoadConfigs(ctx context.Context, sources ...ConfigSource)
// Translate translates image name to ins Endpoint. If no suitable mapping was found, the default Endpoint is returned
Translate(name string) image.Endpoint
}
ImageNameTranslator is the main translator interface
func NewImageNameTranslator ¶
func NewImageNameTranslator() ImageNameTranslator
NewImageNameTranslator creates an instance of ImageNameTranslator
type ImageTranslation ¶
type ImageTranslation struct {
// Prefix allows to have several config-sets and distinguish them by using `prefix/imageName` notation. Optional.
Prefix string `yaml:"prefix,omitempty" json:"prefix,omitempty"`
// Rules is a list of translations
Rules []TranslationRule `yaml:"translations" json:"translations"`
// Transports is a map of available transport profiles available for endpoints
Transports map[string]TransportProfile `yaml:"transports" json:"transports"`
}
ImageTranslation is a single translation config with optional prefix name
type TLSCertificate ¶
type TLSCertificate struct {
// Cert certificate (PEM) block
Cert string `yaml:"cert,omitempty" json:"cert,omitempty"`
// Key - keypair (PEM) block
Key string `yaml:"key,omitempty" json:"key,omitempty"`
}
TLSCertificate has the x509 certificate PEM data with optional PEM private key
type TLSConfig ¶
type TLSConfig struct {
// Certificates - TLS certificates to use for connection
Certificates []TLSCertificate `yaml:"certificates,omitempty" json:"certificates,omitempty"`
// ServerName is used to verify the hostname on the returned certificates. Needed when url points to domain that
// differs from CN of certificate
ServerName string `yaml:"serverName,omitempty" json:"serverName,omitempty"`
// Insecure is a flag to bypass server certificate validation
Insecure bool `yaml:"insecure,omitempty" json:"insecure,omitempty"`
}
TLSConfig has the TLS transport parameters
type TranslationConfig ¶
type TranslationConfig interface {
// Name returns the config name (any string identifier)
Name() string
// Payload returns ImageTranslation object associated with the config
Payload() (ImageTranslation, error)
}
TranslationConfig represents a single config (prefix + rule list) in a config-set
type TranslationRule ¶
type TranslationRule struct {
// Name defines a mapping from a fixed name
Name string `yaml:"name,omitempty" json:"name,omitempty"`
// Regex defines a mapping from all names that match this regexp. In this case replacements can be used for Endpoint.Url
Regex string `yaml:"regexp,omitempty" json:"regexp,omitempty"`
// Url is the image URL
Url string `yaml:"url,omitempty" json:"url,omitempty"`
// Transport is the optional transport profile name to be used for the downloading
Transport string `yaml:"transport,omitempty" json:"transport,omitempty"`
}
TranslationRule represents a single translation rule from either name or regexp to Endpoint
type TransportProfile ¶
type TransportProfile struct {
// MaxRedirects is the maximum number of redirects that downloader is allowed to follow. Default is 9 (download fails on request #10)
MaxRedirects *int `yaml:"maxRedirects,omitempty" json:"maxRedirects,omitempty"`
// TLS config
TLS *TLSConfig `yaml:"tls,omitempty" json:"tls,omitempty"`
// TimeoutMilliseconds specifies a time limit in milliseconds for http(s) download request. <= 0 is no timeout (default)
TimeoutMilliseconds int `yaml:"timeout,omitempty" json:"timeout,omitempty"`
// Proxy server to use for downloading
Proxy string `yaml:"proxy,omitempty" json:"proxy,omitempty"`
}
TransportProfile contains all the http transport settings
type VirtletImageMapping ¶
type VirtletImageMapping struct {
meta_v1.TypeMeta `json:",inline"`
meta_v1.ObjectMeta `json:"metadata"`
Spec ImageTranslation `json:"spec"`
}
VirtletImageMapping represents an ImageTranslation wrapped in k8s object
func (VirtletImageMapping) Name ¶
func (vim VirtletImageMapping) Name() string
Name implements TranslationConfig Name
func (VirtletImageMapping) Payload ¶
func (vim VirtletImageMapping) Payload() (ImageTranslation, error)
Payload implements TranslationConfig Payload
type VirtletImageMappingList ¶
type VirtletImageMappingList struct {
meta_v1.TypeMeta `json:",inline"`
meta_v1.ListMeta `json:"metadata"`
Items []VirtletImageMapping `json:"items"`
}
VirtletImageMappingList is a k8s representation of list of translation configs