Documentation
¶
Index ¶
- Constants
- Variables
- func BootstrapBuiltInEntryFromYAML(raw []byte)
- func BootstrapPluginEntryFromYAML(raw []byte)
- func BootstrapUserEntryFromYAML(raw []byte)
- func BootstrapWebFrameEntryFromYAML(raw []byte)
- func IsValidDomain(domain string) bool
- func RegisterAsymmetricJwtSigner(entryName, algo string, privPEM, pubPEM []byte) *asymmetricJwtSigner
- func RegisterCertEntryYAML(raw []byte) map[string]Entry
- func RegisterConfigEntryYAML(raw []byte) map[string]Entry
- func RegisterEventEntryYAML(raw []byte) map[string]Entry
- func RegisterLoggerEntryYAML(raw []byte) map[string]Entry
- func RegisterPluginRegFunc(regFunc RegFunc)
- func RegisterSymmetricJwtSigner(entryName, algo string, rawKey []byte) *symmetricJwtSigner
- func RegisterUserEntryRegFunc(regFunc RegFunc)
- func RegisterWebFrameRegFunc(regFunc RegFunc)
- func ShutdownWithError(err error)
- func UnmarshalBootYAML(raw []byte, config interface{})
- type BootCert
- type BootCertE
- type BootCommonService
- type BootConfig
- type BootConfigE
- type BootDocs
- type BootEvent
- type BootEventE
- type BootLogger
- type BootLoggerE
- type BootLoki
- type BootPProf
- type BootProm
- type BootSW
- type BootStaticFileHandler
- type CertEntry
- func (entry *CertEntry) Bootstrap(ctx context.Context)
- func (entry *CertEntry) GetDescription() string
- func (entry *CertEntry) GetName() string
- func (entry *CertEntry) GetType() string
- func (entry *CertEntry) Interrupt(context.Context)
- func (entry *CertEntry) MarshalJSON() ([]byte, error)
- func (entry *CertEntry) String() string
- func (entry *CertEntry) UnmarshalJSON([]byte) error
- type CommonServiceEntry
- func (entry *CommonServiceEntry) Alive(writer http.ResponseWriter, request *http.Request)
- func (entry *CommonServiceEntry) Bootstrap(context.Context)
- func (entry *CommonServiceEntry) Gc(writer http.ResponseWriter, request *http.Request)
- func (entry *CommonServiceEntry) GetDescription() string
- func (entry *CommonServiceEntry) GetName() string
- func (entry *CommonServiceEntry) GetType() string
- func (entry *CommonServiceEntry) Info(writer http.ResponseWriter, request *http.Request)
- func (entry *CommonServiceEntry) Interrupt(context.Context)
- func (entry *CommonServiceEntry) MarshalJSON() ([]byte, error)
- func (entry *CommonServiceEntry) Ready(writer http.ResponseWriter, request *http.Request)
- func (entry *CommonServiceEntry) String() string
- func (entry *CommonServiceEntry) UnmarshalJSON([]byte) error
- type CommonServiceEntryOption
- type ConfigEntry
- func (entry *ConfigEntry) Bootstrap(context.Context)
- func (entry *ConfigEntry) GetDescription() string
- func (entry *ConfigEntry) GetName() string
- func (entry *ConfigEntry) GetType() string
- func (entry *ConfigEntry) Interrupt(context.Context)
- func (entry *ConfigEntry) MarshalJSON() ([]byte, error)
- func (entry *ConfigEntry) String() string
- func (entry *ConfigEntry) UnmarshalJSON([]byte) error
- type Crypto
- type CryptoAESEntry
- func (s *CryptoAESEntry) Bootstrap(ctx context.Context)
- func (s *CryptoAESEntry) Decrypt(ciphertext []byte) ([]byte, error)
- func (s *CryptoAESEntry) Encrypt(plaintext []byte) ([]byte, error)
- func (s *CryptoAESEntry) GetDescription() string
- func (s *CryptoAESEntry) GetName() string
- func (s *CryptoAESEntry) GetType() string
- func (s *CryptoAESEntry) Interrupt(ctx context.Context)
- func (s *CryptoAESEntry) String() string
- type DocsEntry
- func (entry *DocsEntry) Bootstrap(ctx context.Context)
- func (entry *DocsEntry) ConfigFileHandler() http.HandlerFunc
- func (entry *DocsEntry) GetDescription() string
- func (entry *DocsEntry) GetName() string
- func (entry *DocsEntry) GetType() string
- func (entry *DocsEntry) Interrupt(ctx context.Context)
- func (entry *DocsEntry) MarshalJSON() ([]byte, error)
- func (entry *DocsEntry) String() string
- func (entry *DocsEntry) UnmarshalJSON([]byte) error
- type DocsEntryOption
- type Entry
- type EventEntry
- func (entry *EventEntry) AddEntryLabelToLokiSyncer(e Entry)
- func (entry *EventEntry) AddLabelToLokiSyncer(k, v string)
- func (entry *EventEntry) Bootstrap(ctx context.Context)
- func (entry *EventEntry) GetDescription() string
- func (entry *EventEntry) GetName() string
- func (entry *EventEntry) GetType() string
- func (entry *EventEntry) Interrupt(ctx context.Context)
- func (entry *EventEntry) MarshalJSON() ([]byte, error)
- func (entry *EventEntry) String() string
- func (entry *EventEntry) Sync()
- func (entry *EventEntry) UnmarshalJSON([]byte) error
- type LivenessCheck
- type LoggerEntry
- func (entry *LoggerEntry) AddEntryLabelToLokiSyncer(e Entry)
- func (entry *LoggerEntry) AddLabelToLokiSyncer(k, v string)
- func (entry *LoggerEntry) Bootstrap(ctx context.Context)
- func (entry *LoggerEntry) GetDescription() string
- func (entry *LoggerEntry) GetName() string
- func (entry *LoggerEntry) GetType() string
- func (entry *LoggerEntry) Interrupt(ctx context.Context)
- func (entry *LoggerEntry) MarshalJSON() ([]byte, error)
- func (entry *LoggerEntry) String() string
- func (entry *LoggerEntry) Sync()
- func (entry *LoggerEntry) UnmarshalJSON([]byte) error
- type PProfEntry
- func (entry *PProfEntry) Bootstrap(ctx context.Context)
- func (entry *PProfEntry) GetDescription() string
- func (entry *PProfEntry) GetName() string
- func (entry *PProfEntry) GetType() string
- func (entry *PProfEntry) Interrupt(ctx context.Context)
- func (entry *PProfEntry) MarshalJSON() ([]byte, error)
- func (entry *PProfEntry) String() string
- func (entry *PProfEntry) UnmarshalJSON([]byte) error
- type PProfEntryOption
- type ProcessInfo
- type PromEntry
- func (entry *PromEntry) Bootstrap(ctx context.Context)
- func (entry *PromEntry) GetDescription() string
- func (entry *PromEntry) GetName() string
- func (entry *PromEntry) GetType() string
- func (entry *PromEntry) Interrupt(ctx context.Context)
- func (entry *PromEntry) MarshalJSON() ([]byte, error)
- func (entry *PromEntry) RegisterCollectors(collectors ...prometheus.Collector)
- func (entry *PromEntry) String() string
- func (entry *PromEntry) UnmarshalJSON([]byte) error
- type PromEntryOption
- type PushGatewayPusher
- type ReadinessCheck
- type RegFunc
- type SWEntry
- func (entry *SWEntry) Bootstrap(ctx context.Context)
- func (entry *SWEntry) ConfigFileHandler() http.HandlerFunc
- func (entry *SWEntry) GetDescription() string
- func (entry *SWEntry) GetName() string
- func (entry *SWEntry) GetType() string
- func (entry *SWEntry) Interrupt(ctx context.Context)
- func (entry *SWEntry) MarshalJSON() ([]byte, error)
- func (entry *SWEntry) String() string
- func (entry *SWEntry) UnmarshalJSON([]byte) error
- type SWEntryOption
- type ShutdownHook
- type SignerJwt
- type StaticFileHandlerEntry
- func (entry *StaticFileHandlerEntry) Bootstrap(context.Context)
- func (entry *StaticFileHandlerEntry) GetDescription() string
- func (entry *StaticFileHandlerEntry) GetFileHandler() http.HandlerFunc
- func (entry *StaticFileHandlerEntry) GetName() string
- func (entry *StaticFileHandlerEntry) GetType() string
- func (entry *StaticFileHandlerEntry) Interrupt(context.Context)
- func (entry *StaticFileHandlerEntry) MarshalJSON() ([]byte, error)
- func (entry *StaticFileHandlerEntry) String() string
- func (entry *StaticFileHandlerEntry) UnmarshalJSON([]byte) error
- type StaticFileHandlerEntryOption
Constants ¶
const ( // CertEntryType public access CertEntryType = "CertEntry" // ConfigEntryType public access ConfigEntryType = "ConfigEntry" // EventEntryType public access EventEntryType = "EventEntry" // LoggerEntryType public access LoggerEntryType = "LoggerEntry" // CommonServiceEntryType public access CommonServiceEntryType = "CommonServiceEntry" // SWEntryType public access SWEntryType = "SWEntry" // StaticFileHandlerEntryType public access StaticFileHandlerEntryType = "StaticFileHandlerEntry" // PromEntryType public access PromEntryType = "PromEntry" // DocsEntryType public access DocsEntryType = "DocsEntry" SignerJwtEntryType = "SignerJwtEntry" CryptoEntryType = "CryptoEntry" PProfEntryType = "PProfEntry" )
Variables ¶
var ( // GlobalAppCtx global application context GlobalAppCtx = &appContext{ startTime: time.Now(), entries: map[string]map[string]Entry{ appInfoEntryType: { appInfoEntryName: appInfoEntryDefault(), }, }, embedFS: map[string]map[string]*embed.FS{}, appInfoEntry: appInfoEntryDefault(), shutdownSig: make(chan os.Signal), shutdownHooks: make(map[string]ShutdownHook), userValues: make(map[string]interface{}), } LoggerEntryNoop = NewLoggerEntryNoop() LoggerEntryStdout = NewLoggerEntryStdout() EventEntryNoop = NewEventEntryNoop() EventEntryStdout = NewEventEntryStdout() )
Functions ¶
func BootstrapBuiltInEntryFromYAML ¶ added in v2.2.0
func BootstrapBuiltInEntryFromYAML(raw []byte)
BootstrapBuiltInEntryFromYAML register and bootstrap builtin entries first
func BootstrapPluginEntryFromYAML ¶ added in v2.2.0
func BootstrapPluginEntryFromYAML(raw []byte)
BootstrapPluginEntryFromYAML register and bootstrap plugin entries first
func BootstrapUserEntryFromYAML ¶ added in v2.2.0
func BootstrapUserEntryFromYAML(raw []byte)
BootstrapUserEntryFromYAML register and bootstrap builtin entries first
func BootstrapWebFrameEntryFromYAML ¶ added in v2.2.0
func BootstrapWebFrameEntryFromYAML(raw []byte)
BootstrapWebFrameEntryFromYAML register and bootstrap web framework entries first
func IsValidDomain ¶ added in v2.1.0
IsValidDomain mainly used in entry config.
func RegisterAsymmetricJwtSigner ¶ added in v2.0.5
func RegisterAsymmetricJwtSigner(entryName, algo string, privPEM, pubPEM []byte) *asymmetricJwtSigner
RegisterAsymmetricJwtSigner create asymmetricJwtSigner
func RegisterCertEntryYAML ¶
RegisterCertEntryYAML register function
func RegisterConfigEntryYAML ¶
RegisterConfigEntryYAML register function
func RegisterEventEntryYAML ¶
RegisterEventEntryYAML register function
func RegisterLoggerEntryYAML ¶
RegisterLoggerEntryYAML register function
func RegisterPluginRegFunc ¶ added in v2.2.0
func RegisterPluginRegFunc(regFunc RegFunc)
RegisterPluginRegFunc register rk plugins registration function. Call this while you need provided Entry needs to be registered and bootstrapped before user defined Entries.
func RegisterSymmetricJwtSigner ¶ added in v2.0.5
RegisterSymmetricJwtSigner create symmetricJwtSigner
func RegisterUserEntryRegFunc ¶ added in v2.2.0
func RegisterUserEntryRegFunc(regFunc RegFunc)
RegisterUserEntryRegFunc register user defined registration function. Call this while you need provided Entry needs to be registered and bootstrapped before user defined Entries.
func RegisterWebFrameRegFunc ¶ added in v2.2.0
func RegisterWebFrameRegFunc(regFunc RegFunc)
RegisterWebFrameRegFunc register rk web framework registration function. Call this while you need provided Entry needs to be registered and bootstrapped before user defined Entries.
func UnmarshalBootYAML ¶
func UnmarshalBootYAML(raw []byte, config interface{})
UnmarshalBootYAML this function will parse boot config file with ENV and pflag overrides.
User who want to implement his/her own entry, may use this function to parse YAML config into struct. This function would also parse --rkset flags.
This function would do the following: 1: Read config file and unmarshal content into a map. 2: Read --rkset flags and override values in map unmarshalled at above step. 3: Unmarshal map into user provided struct.
[Flag]: Override boot config value with flag of rkset:
pflag.FlagSet which contains rkset as key.
Receives flattened boot config file(YAML) keys and override them in provided boot config. We follow the way of HELM does while overriding keys, refer to https://helm.sh/docs/intro/using_helm/ example:
Lets assuming we have boot config YAML file as bellow:
example-boot.yaml: gin:
- port: 1949 commonService: enabled: true
We can override values in example-boot.yaml file as bellow:
./your_compiled_binary --rkset "gin[0].port=2008,gin[0].commonService.enabled=false"
Basic rules: 1: Using comma(,) to separate different k/v section. 2: Using [index] to access arrays in YAML file. 3: Using equal sign(=) to distinguish key and value. 4: Using dot(.) to access map in YAML file.
[Environment variable]: Override boot config value
Prefix of "RK" will be used as environment variable key. The schema follows above.
example-boot.yaml: gin:
- port: 1949 commonService: enabled: true
We can override values in example-boot.yaml file as bellow:
os.Setenv("RK_GIN_0_PORT", "2008") os.Setenv("RK_GIN_0_COMMONSERVICE_ENABLED", "false")
./your_compiled_binary
Important! Please make sure the type of value keeps the same, otherwise, it won't override. For example, os.Setenv("RK_GIN_0_PORT", "invalid-port") won't success, but keep original value.
Types ¶
type BootCert ¶
type BootCert struct {
Cert []*BootCertE `yaml:"cert" json:"cert"`
}
BootCert is bootstrap config of CertEntry.
type BootCertE ¶
type BootCertE struct { Name string `yaml:"name" json:"name"` Description string `yaml:"description" json:"description"` Domain string `yaml:"domain" json:"domain"` CAPath string `yaml:"caPath" json:"caPath"` CertPemPath string `yaml:"certPemPath" json:"certPemPath"` KeyPemPath string `yaml:"keyPemPath" json:"keyPemPath"` }
BootCertE element of CertEntry
type BootCommonService ¶
type BootCommonService struct { Enabled bool `yaml:"enabled" json:"enabled"` PathPrefix string `yaml:"pathPrefix" json:"pathPrefix"` }
BootCommonService Bootstrap config of common service.
type BootConfig ¶
type BootConfig struct {
Config []*BootConfigE `yaml:"config" json:"config"`
}
BootConfig is bootstrap config of ConfigEntry information.
type BootConfigE ¶
type BootConfigE struct { Name string `yaml:"name" json:"name"` Description string `yaml:"description" json:"description"` Domain string `yaml:"domain" json:"domain"` Path string `yaml:"path" json:"name"` EnvPrefix string `yaml:"envPrefix" json:"envPrefix"` Content map[string]interface{} `yaml:"content" json:"content"` }
BootConfigE element of ConfigEntry
type BootDocs ¶
type BootDocs struct { Enabled bool `yaml:"enabled" json:"enabled"` Path string `yaml:"path" json:"path"` SpecPath string `yaml:"specPath" json:"specPath"` Headers []string `yaml:"headers" json:"headers"` Style struct { Theme string `yaml:"theme" json:"theme"` } `yaml:"style" json:"style"` Debug bool `yaml:"debug" json:"debug"` }
BootDocs Bootstrap config of swagger. 1: Enabled: Enable swagger. 2: Path: Swagger path accessible from restful API. 3: SpecPath: The path of where swagger or open API spec file was located. 4: Headers: The headers that would be added into each API response.
type BootEvent ¶
type BootEvent struct {
Event []*BootEventE `yaml:"event" json:"event"`
}
BootEvent bootstrap config of Event Logger information.
type BootEventE ¶
type BootEventE struct { Name string `yaml:"name" json:"name"` Description string `yaml:"description" json:"description"` Domain string `yaml:"domain" json:"domain"` Default bool `yaml:"default" json:"default"` Encoding string `yaml:"encoding" json:"encoding"` OutputPaths []string `yaml:"outputPaths" json:"outputPaths"` Lumberjack *lumberjack.Logger `yaml:"lumberjack" json:"lumberjack"` Loki BootLoki `yaml:"loki" json:"loki"` }
BootEventE bootstrap element of EventEntry
type BootLogger ¶
type BootLogger struct {
Logger []*BootLoggerE `json:"logger" yaml:"logger"`
}
BootLogger bootstrap config of Zap Logger information.
type BootLoggerE ¶
type BootLoggerE struct { Name string `yaml:"name" json:"name"` Description string `yaml:"description" json:"description"` Domain string `yaml:"domain" json:"domain"` Default bool `yaml:"default" json:"default"` Zap *rklogger.ZapConfigWrap `yaml:"zap" json:"zap"` Lumberjack *lumberjack.Logger `yaml:"lumberjack" json:"lumberjack"` Loki BootLoki `yaml:"loki" json:"loki"` }
BootLoggerE bootstrap element of LoggerEntry
type BootLoki ¶
type BootLoki struct { Enabled bool `yaml:"enabled" json:"enabled"` Addr string `yaml:"addr" json:"addr"` Path string `yaml:"path" json:"path"` Username string `yaml:"username" json:"username"` Password string `yaml:"password" json:"password"` InsecureSkipVerify bool `yaml:"insecureSkipVerify" json:"insecureSkipVerify"` Labels map[string]string `yaml:"labels" json:"labels"` MaxBatchWaitMs int `yaml:"maxBatchWaitMs" json:"maxBatchWaitMs"` MaxBatchSize int `yaml:"maxBatchSize" json:"maxBatchSize"` }
BootLoki bootstrap config of Loki
type BootProm ¶
type BootProm struct { Enabled bool `yaml:"enabled" json:"enabled"` Path string `yaml:"path" json:"path"` Pusher struct { Enabled bool `yaml:"enabled" json:"enabled"` IntervalMs int64 `yaml:"IntervalMs" json:"IntervalMs"` JobName string `yaml:"jobName" json:"jobName"` RemoteAddress string `yaml:"remoteAddress" json:"remoteAddress"` BasicAuth string `yaml:"basicAuth" json:"basicAuth"` CertEntry string `yaml:"certEntry" json:"certEntry"` LoggerEntry string `yaml:"loggerEntry" json:"loggerEntry"` } `yaml:"pusher" json:"pusher"` }
BootProm Boot config which is for prom entry.
type BootSW ¶
type BootSW struct { Enabled bool `yaml:"enabled" json:"enabled"` Path string `yaml:"path" json:"path"` JsonPath string `yaml:"jsonPath" json:"jsonPath"` Headers []string `yaml:"headers" json:"headers"` }
BootSW Bootstrap config of swagger. 1: Enabled: Enable swagger. 2: Path: Swagger path accessible from restful API. 3: JsonPath: The path of where swagger JSON file was located. 4: Headers: The headers that would added into each API response.
type BootStaticFileHandler ¶
type BootStaticFileHandler struct { Enabled bool `yaml:"enabled" json:"enabled"` Path string `yaml:"path" json:"path"` SourceType string `yaml:"sourceType" json:"sourceType"` SourcePath string `yaml:"sourcePath" json:"sourcePath"` }
BootStaticFileHandler bootstrap config of StaticHandler.
type CertEntry ¶
type CertEntry struct { RootCA *x509.Certificate `json:"-" json:"-"` Certificate *tls.Certificate `json:"-" yaml:"-"` // contains filtered or unexported fields }
CertEntry contains bellow fields.
func RegisterCertEntry ¶
RegisterCertEntry create cert entry with options.
func (*CertEntry) GetDescription ¶
GetDescription return description of entry
func (*CertEntry) MarshalJSON ¶
MarshalJSON marshal entry
func (*CertEntry) UnmarshalJSON ¶
UnmarshalJSON unmarshal entry
type CommonServiceEntry ¶
type CommonServiceEntry struct { ReadyPath string `json:"-" yaml:"-"` AlivePath string `json:"-" yaml:"-"` GcPath string `json:"-" yaml:"-"` InfoPath string `json:"-" yaml:"-"` // contains filtered or unexported fields }
CommonServiceEntry RK common service which contains commonly used APIs
func RegisterCommonServiceEntry ¶
func RegisterCommonServiceEntry(boot *BootCommonService, opts ...CommonServiceEntryOption) *CommonServiceEntry
RegisterCommonServiceEntry Create new common service entry with options.
func (*CommonServiceEntry) Alive ¶
func (entry *CommonServiceEntry) Alive(writer http.ResponseWriter, request *http.Request)
Alive handler @Summary Get application liveness status @Id 8002 @version 1.0 @Security ApiKeyAuth @Security BasicAuth @Security JWT @produce application/json @Success 200 {object} aliveResp @Router /rk/v1/alive [get]
func (*CommonServiceEntry) Bootstrap ¶
func (entry *CommonServiceEntry) Bootstrap(context.Context)
Bootstrap common service entry.
func (*CommonServiceEntry) Gc ¶
func (entry *CommonServiceEntry) Gc(writer http.ResponseWriter, request *http.Request)
Gc handler @Summary Trigger Gc @Id 8003 @version 1.0 @Security ApiKeyAuth @Security BasicAuth @Security JWT @produce application/json @Success 200 {object} gcResp @Router /rk/v1/gc [get]
func (*CommonServiceEntry) GetDescription ¶
func (entry *CommonServiceEntry) GetDescription() string
GetDescription Get description of entry.
func (*CommonServiceEntry) GetName ¶
func (entry *CommonServiceEntry) GetName() string
GetName Get name of entry.
func (*CommonServiceEntry) GetType ¶
func (entry *CommonServiceEntry) GetType() string
GetType Get entry type.
func (*CommonServiceEntry) Info ¶
func (entry *CommonServiceEntry) Info(writer http.ResponseWriter, request *http.Request)
Info handler @Summary Get application and process info @Id 8004 @version 1.0 @Security ApiKeyAuth @Security BasicAuth @Security JWT @produce application/json @Success 200 {object} ProcessInfo @Router /rk/v1/info [get]
func (*CommonServiceEntry) Interrupt ¶
func (entry *CommonServiceEntry) Interrupt(context.Context)
Interrupt common service entry.
func (*CommonServiceEntry) MarshalJSON ¶
func (entry *CommonServiceEntry) MarshalJSON() ([]byte, error)
MarshalJSON Marshal entry.
func (*CommonServiceEntry) Ready ¶
func (entry *CommonServiceEntry) Ready(writer http.ResponseWriter, request *http.Request)
Ready handler @Summary Get application readiness status @Id 8001 @version 1.0 @Security ApiKeyAuth @Security BasicAuth @Security JWT @produce application/json @Success 200 {object} readyResp @Failure 500 {object} rkerror.ErrorInterface @Router /rk/v1/ready [get]
func (*CommonServiceEntry) String ¶
func (entry *CommonServiceEntry) String() string
String Stringfy entry.
func (*CommonServiceEntry) UnmarshalJSON ¶
func (entry *CommonServiceEntry) UnmarshalJSON([]byte) error
UnmarshalJSON Not supported.
type CommonServiceEntryOption ¶
type CommonServiceEntryOption func(entry *CommonServiceEntry)
CommonServiceEntryOption option for CommonServiceEntry
func WithNameCommonServiceEntry ¶
func WithNameCommonServiceEntry(name string) CommonServiceEntryOption
WithNameCommonServiceEntry provide entry name
type ConfigEntry ¶
type ConfigEntry struct { *viper.Viper Locale string `yaml:"-" json:"-"` Path string `yaml:"-" json:"-"` EnvPrefix string `yaml:"-" json:"-"` // contains filtered or unexported fields }
ConfigEntry contains bellow fields.
func RegisterConfigEntry ¶
func RegisterConfigEntry(boot *BootConfig) []*ConfigEntry
RegisterConfigEntry create ConfigEntry with BootConfigConfig.
func (*ConfigEntry) Bootstrap ¶
func (entry *ConfigEntry) Bootstrap(context.Context)
Bootstrap entry.
func (*ConfigEntry) GetDescription ¶
func (entry *ConfigEntry) GetDescription() string
GetDescription return description of entry.
func (*ConfigEntry) GetName ¶
func (entry *ConfigEntry) GetName() string
GetName returns name of entry.
func (*ConfigEntry) GetType ¶
func (entry *ConfigEntry) GetType() string
GetType returns type of entry.
func (*ConfigEntry) Interrupt ¶
func (entry *ConfigEntry) Interrupt(context.Context)
Interrupt entry.
func (*ConfigEntry) MarshalJSON ¶
func (entry *ConfigEntry) MarshalJSON() ([]byte, error)
MarshalJSON marshal entry.
func (*ConfigEntry) String ¶
func (entry *ConfigEntry) String() string
String convert entry into JSON style string.
func (*ConfigEntry) UnmarshalJSON ¶
func (entry *ConfigEntry) UnmarshalJSON([]byte) error
UnmarshalJSON is not supported.
type CryptoAESEntry ¶ added in v2.0.6
type CryptoAESEntry struct {
// contains filtered or unexported fields
}
func NewCryptoAES ¶ added in v2.0.6
func NewCryptoAES(entryName string, key []byte) (*CryptoAESEntry, error)
func (*CryptoAESEntry) Bootstrap ¶ added in v2.0.6
func (s *CryptoAESEntry) Bootstrap(ctx context.Context)
func (*CryptoAESEntry) Decrypt ¶ added in v2.0.6
func (s *CryptoAESEntry) Decrypt(ciphertext []byte) ([]byte, error)
func (*CryptoAESEntry) Encrypt ¶ added in v2.0.6
func (s *CryptoAESEntry) Encrypt(plaintext []byte) ([]byte, error)
func (*CryptoAESEntry) GetDescription ¶ added in v2.0.6
func (s *CryptoAESEntry) GetDescription() string
func (*CryptoAESEntry) GetName ¶ added in v2.0.6
func (s *CryptoAESEntry) GetName() string
func (*CryptoAESEntry) GetType ¶ added in v2.0.6
func (s *CryptoAESEntry) GetType() string
func (*CryptoAESEntry) Interrupt ¶ added in v2.0.6
func (s *CryptoAESEntry) Interrupt(ctx context.Context)
func (*CryptoAESEntry) String ¶ added in v2.0.6
func (s *CryptoAESEntry) String() string
type DocsEntry ¶
type DocsEntry struct { SpecPath string `json:"-" yaml:"-"` Path string `json:"-" yaml:"-"` Headers map[string]string `json:"-" yaml:"-"` Debug bool `yaml:"-" json:"-"` Style struct { Theme string `yaml:"-" json:"-"` } `yaml:"-" json:"-"` // contains filtered or unexported fields }
DocsEntry implements rkentry.Entry interface.
func RegisterDocsEntry ¶
func RegisterDocsEntry(boot *BootDocs, opts ...DocsEntryOption) *DocsEntry
RegisterDocsEntry register DocsEntry
func (*DocsEntry) ConfigFileHandler ¶
func (entry *DocsEntry) ConfigFileHandler() http.HandlerFunc
ConfigFileHandler handler for swagger config files.
func (*DocsEntry) GetDescription ¶
GetDescription get description of Entry
func (*DocsEntry) MarshalJSON ¶
MarshalJSON Marshal entry
func (*DocsEntry) UnmarshalJSON ¶
UnmarshalJSON Unmarshal entry
type DocsEntryOption ¶
type DocsEntryOption func(entry *DocsEntry)
DocsEntryOption option of DocsEntry
func WithNameDocsEntry ¶
func WithNameDocsEntry(name string) DocsEntryOption
WithNameDocsEntry provide name of DocsEntry
type Entry ¶
type Entry interface { // Bootstrap entry Bootstrap(context.Context) // Interrupt entry // Wait for shutdown signal and wait for draining incomplete procedure Interrupt(context.Context) // GetName returns name of entry GetName() string // GetType returns type of entry GetType() string // GetDescription returns description of entry GetDescription() string // String print entry as string String() string }
Entry interface which must be implemented for bootstrapper to bootstrap
type EventEntry ¶
type EventEntry struct { *rkquery.EventFactory *rkquery.EventHelper IsDefault bool `yaml:"-" json:"-"` LoggerConfig *zap.Config `yaml:"-" json:"-"` LumberjackConfig *lumberjack.Logger `yaml:"-" json:"-"` // contains filtered or unexported fields }
EventEntry contains bellow fields.
func NewEventEntryNoop ¶
func NewEventEntryNoop() *EventEntry
NewEventEntryNoop create event logger entry with noop event factory. Event factory and event helper will be created with noop zap logger. Since we don't need any log rotation in case of noop, lumberjack config will be nil.
func NewEventEntryStdout ¶
func NewEventEntryStdout() *EventEntry
NewEventEntryStdout create event logger entry with stdout event factory.
func RegisterEventEntry ¶
func RegisterEventEntry(boot *BootEvent) []*EventEntry
RegisterEventEntry create event logger entry with options.
func (*EventEntry) AddEntryLabelToLokiSyncer ¶
func (entry *EventEntry) AddEntryLabelToLokiSyncer(e Entry)
AddEntryLabelToLokiSyncer add entry name entry type into loki syncer
func (*EventEntry) AddLabelToLokiSyncer ¶
func (entry *EventEntry) AddLabelToLokiSyncer(k, v string)
AddLabelToLokiSyncer add key value pair as label into loki syncer
func (*EventEntry) Bootstrap ¶
func (entry *EventEntry) Bootstrap(ctx context.Context)
Bootstrap entry.
func (*EventEntry) GetDescription ¶
func (entry *EventEntry) GetDescription() string
GetDescription return description of entry.
func (*EventEntry) GetName ¶
func (entry *EventEntry) GetName() string
GetName returns name of entry.
func (*EventEntry) GetType ¶
func (entry *EventEntry) GetType() string
GetType returns type of entry.
func (*EventEntry) Interrupt ¶
func (entry *EventEntry) Interrupt(ctx context.Context)
Interrupt entry.
func (*EventEntry) MarshalJSON ¶
func (entry *EventEntry) MarshalJSON() ([]byte, error)
MarshalJSON marshal entry.
func (*EventEntry) String ¶
func (entry *EventEntry) String() string
String convert entry into JSON style string.
func (*EventEntry) UnmarshalJSON ¶
func (entry *EventEntry) UnmarshalJSON([]byte) error
UnmarshalJSON not supported.
type LivenessCheck ¶
type LivenessCheck func(req *http.Request, resp http.ResponseWriter) bool
type LoggerEntry ¶
type LoggerEntry struct { *zap.Logger IsDefault bool `yaml:"-" json:"-"` LoggerConfig *zap.Config `yaml:"-" json:"-"` LumberjackConfig *lumberjack.Logger `yaml:"-" json:"-"` // contains filtered or unexported fields }
LoggerEntry contains bellow fields.
func NewLoggerEntryNoop ¶
func NewLoggerEntryNoop() *LoggerEntry
NewLoggerEntryNoop create zap logger entry with noop.
func NewLoggerEntryStdout ¶
func NewLoggerEntryStdout() *LoggerEntry
NewLoggerEntryStdout create zap logger entry with STDOUT.
func RegisterLoggerEntry ¶
func RegisterLoggerEntry(boot *BootLogger) []*LoggerEntry
RegisterLoggerEntry create event logger entry with options.
func (*LoggerEntry) AddEntryLabelToLokiSyncer ¶
func (entry *LoggerEntry) AddEntryLabelToLokiSyncer(e Entry)
AddEntryLabelToLokiSyncer add entry name entry type into loki syncer
func (*LoggerEntry) AddLabelToLokiSyncer ¶
func (entry *LoggerEntry) AddLabelToLokiSyncer(k, v string)
AddLabelToLokiSyncer add key value pair as label into loki syncer
func (*LoggerEntry) Bootstrap ¶
func (entry *LoggerEntry) Bootstrap(ctx context.Context)
Bootstrap entry.
func (*LoggerEntry) GetDescription ¶
func (entry *LoggerEntry) GetDescription() string
GetDescription returns description of entry.
func (*LoggerEntry) GetName ¶
func (entry *LoggerEntry) GetName() string
GetName returns name of entry.
func (*LoggerEntry) GetType ¶
func (entry *LoggerEntry) GetType() string
GetType returns type of entry.
func (*LoggerEntry) Interrupt ¶
func (entry *LoggerEntry) Interrupt(ctx context.Context)
Interrupt entry.
func (*LoggerEntry) MarshalJSON ¶
func (entry *LoggerEntry) MarshalJSON() ([]byte, error)
MarshalJSON marshal entry.
func (*LoggerEntry) String ¶
func (entry *LoggerEntry) String() string
String convert entry into JSON style string.
func (*LoggerEntry) UnmarshalJSON ¶
func (entry *LoggerEntry) UnmarshalJSON([]byte) error
UnmarshalJSON not supported.
type PProfEntry ¶ added in v2.1.2
type PProfEntry struct { Path string `json:"-" yaml:"-"` // contains filtered or unexported fields }
func RegisterPProfEntry ¶ added in v2.1.2
func RegisterPProfEntry(boot *BootPProf, opts ...PProfEntryOption) *PProfEntry
RegisterPProfEntry Create new pprof entry with config
func (*PProfEntry) Bootstrap ¶ added in v2.1.2
func (entry *PProfEntry) Bootstrap(ctx context.Context)
func (*PProfEntry) GetDescription ¶ added in v2.1.2
func (entry *PProfEntry) GetDescription() string
func (*PProfEntry) GetName ¶ added in v2.1.2
func (entry *PProfEntry) GetName() string
func (*PProfEntry) GetType ¶ added in v2.1.2
func (entry *PProfEntry) GetType() string
func (*PProfEntry) Interrupt ¶ added in v2.1.2
func (entry *PProfEntry) Interrupt(ctx context.Context)
func (*PProfEntry) MarshalJSON ¶ added in v2.1.2
func (entry *PProfEntry) MarshalJSON() ([]byte, error)
MarshalJSON Marshal entry
func (*PProfEntry) String ¶ added in v2.1.2
func (entry *PProfEntry) String() string
func (*PProfEntry) UnmarshalJSON ¶ added in v2.1.2
func (entry *PProfEntry) UnmarshalJSON([]byte) error
UnmarshalJSON Unmarshal entry
type PProfEntryOption ¶ added in v2.1.2
type PProfEntryOption func(entry *PProfEntry)
func WithNamePProfEntry ¶ added in v2.1.2
func WithNamePProfEntry(name string) PProfEntryOption
type ProcessInfo ¶
type ProcessInfo struct { AppName string `json:"appName" yaml:"appName" example:"rk-app"` Version string `json:"version" yaml:"version" example:"dev"` Description string `json:"description" yaml:"description" example:"RK application"` Keywords []string `json:"keywords" yaml:"keywords" example:""` HomeUrl string `json:"homeUrl" yaml:"homeUrl" example:"https://example.com"` DocsUrl []string `json:"docsUrl" yaml:"docsUrl" example:""` Maintainers []string `json:"maintainers" yaml:"maintainers" example:"rk-dev"` UID string `json:"uid" yaml:"uid" example:"501"` GID string `json:"gid" yaml:"gid" example:"20"` Username string `json:"username" yaml:"username" example:"lark"` StartTime string `json:"startTime" yaml:"startTime" example:"2022-03-15T20:43:05+08:00"` UpTimeSec int64 `json:"upTimeSec" yaml:"upTimeSec" example:"13"` Region string `json:"region" yaml:"region" example:"us-east-1"` AZ string `json:"az" yaml:"az" example:"us-east-1c"` Realm string `json:"realm" yaml:"realm" example:"rookie-ninja"` Domain string `json:"domain" yaml:"domain" example:"dev"` CpuInfo *rkos.CpuInfo `json:"cpuInfo" yaml:"cpuInfo"` MemInfo *rkos.MemInfo `json:"memInfo" yaml:"memInfo"` NetInfo *rkos.NetInfo `json:"netInfo" yaml:"netInfo"` OsInfo *rkos.OsInfo `json:"osInfo" yaml:"osInfo"` GoEnvInfo *rkos.GoEnvInfo `json:"goEnvInfo" yaml:"goEnvInfo"` }
ProcessInfo process information for a running application.
func NewProcessInfo ¶
func NewProcessInfo() *ProcessInfo
NewProcessInfo creates a new ProcessInfo instance
type PromEntry ¶
type PromEntry struct { *prometheus.Registry Registerer prometheus.Registerer Gatherer prometheus.Gatherer Path string `json:"-" yaml:"-"` Pusher *PushGatewayPusher `json:"-" yaml:"-"` // contains filtered or unexported fields }
PromEntry Prometheus entry which implements rkentry.Entry.
func RegisterPromEntry ¶
func RegisterPromEntry(boot *BootProm, opts ...PromEntryOption) *PromEntry
RegisterPromEntry Create a prom entry with options and add prom entry to rkentry.GlobalAppCtx
func (*PromEntry) GetDescription ¶
GetDescription Get description of entry
func (*PromEntry) MarshalJSON ¶
MarshalJSON Marshal entry
func (*PromEntry) RegisterCollectors ¶
func (entry *PromEntry) RegisterCollectors(collectors ...prometheus.Collector)
RegisterCollectors Register collectors in default registry
func (*PromEntry) UnmarshalJSON ¶
UnmarshalJSON Unmarshal entry
type PromEntryOption ¶
type PromEntryOption func(entry *PromEntry)
func WithRegistryPromEntry ¶
func WithRegistryPromEntry(registry *prometheus.Registry) PromEntryOption
WithRegistryPromEntry provide prometheus.Registry
type PushGatewayPusher ¶
type PushGatewayPusher struct { Pusher *push.Pusher `json:"-" yaml:"-"` IntervalMs time.Duration `json:"-" yaml:"-"` RemoteAddress string `json:"-" yaml:"-"` JobName string `json:"-" yaml:"-"` // contains filtered or unexported fields }
PushGatewayPusher is a pusher which contains bellow instances
func (*PushGatewayPusher) Bootstrap ¶
func (pub *PushGatewayPusher) Bootstrap(ctx context.Context)
Bootstrap starts a periodic job
func (*PushGatewayPusher) Interrupt ¶
func (pub *PushGatewayPusher) Interrupt(ctx context.Context)
Interrupt stops periodic job
type ReadinessCheck ¶
type ReadinessCheck func(req *http.Request, resp http.ResponseWriter) bool
type RegFunc ¶
RegFunc can be used to create an entry could be any kinds of services or pieces of codes which needs to be bootstrap/initialized while application starts.
A third party entry could be implemented and inject to rk-boot via rk-boot.yaml file ¶
How to create a new custom entry? Please see example/ for details Step 1: Construct your own entry YAML struct as needed example: --- myEntry:
enabled: true key: value
Step 2: Create a struct which implements Entry interface
Step 3: Implements EntryRegFunc
Step 4: Register your reg function in init() in order to register your entry while application starts
How entry interact with rk-boot.Bootstrapper? 1: Entry will be created and registered into rkentry.GlobalAppCtx 2: Bootstrap will be called from Bootstrapper.Bootstrap() function 3: Application will wait for shutdown signal 4: Interrupt will be called from Bootstrapper.Interrupt() function
func ListPluginEntryRegFunc ¶ added in v2.2.0
func ListPluginEntryRegFunc() []RegFunc
ListPluginEntryRegFunc list plugin registration functions.
func ListUserEntryRegFunc ¶ added in v2.2.0
func ListUserEntryRegFunc() []RegFunc
ListUserEntryRegFunc list web framework registration functions.
func ListWebFrameEntryRegFunc ¶ added in v2.2.0
func ListWebFrameEntryRegFunc() []RegFunc
ListWebFrameEntryRegFunc list web framework registration functions.
type SWEntry ¶
type SWEntry struct { JsonPath string `json:"-" yaml:"-"` Path string `json:"-" yaml:"-"` Headers map[string]string `json:"-" yaml:"-"` // contains filtered or unexported fields }
SWEntry implements rke.Entry interface.
func RegisterSWEntry ¶
func RegisterSWEntry(boot *BootSW, opts ...SWEntryOption) *SWEntry
func (*SWEntry) ConfigFileHandler ¶
func (entry *SWEntry) ConfigFileHandler() http.HandlerFunc
ConfigFileHandler handler for swagger config files.
func (*SWEntry) GetDescription ¶
func (*SWEntry) MarshalJSON ¶
MarshalJSON Marshal entry
func (*SWEntry) UnmarshalJSON ¶
UnmarshalJSON Unmarshal entry
type SWEntryOption ¶
type SWEntryOption func(entry *SWEntry)
func WithNameSWEntry ¶
func WithNameSWEntry(name string) SWEntryOption
type SignerJwt ¶ added in v2.0.5
type SignerJwt interface { Entry // SignJwt sign jwt.Token SignJwt(claim jwt.Claims) (string, error) // VerifyJwt verify jwt.Token VerifyJwt(token string) (*jwt.Token, error) // PubKey get public key PubKey() []byte // Algorithms supported algorithms Algorithms() []string }
SignerJwt interface which must be implemented for JWT signer
type StaticFileHandlerEntry ¶
type StaticFileHandlerEntry struct { Path string `yaml:"-" json:"-"` Template *template.Template `json:"-" yaml:"-"` // contains filtered or unexported fields }
StaticFileHandlerEntry Static file handler entry supports web UI for downloading static files.
func RegisterStaticFileHandlerEntry ¶
func RegisterStaticFileHandlerEntry(boot *BootStaticFileHandler, opts ...StaticFileHandlerEntryOption) *StaticFileHandlerEntry
RegisterStaticFileHandlerEntry Create new static file handler entry with config
func (*StaticFileHandlerEntry) Bootstrap ¶
func (entry *StaticFileHandlerEntry) Bootstrap(context.Context)
Bootstrap entry.
func (*StaticFileHandlerEntry) GetDescription ¶
func (entry *StaticFileHandlerEntry) GetDescription() string
GetDescription Get description of entry.
func (*StaticFileHandlerEntry) GetFileHandler ¶
func (entry *StaticFileHandlerEntry) GetFileHandler() http.HandlerFunc
GetFileHandler handles requests sent from user.
func (*StaticFileHandlerEntry) GetName ¶
func (entry *StaticFileHandlerEntry) GetName() string
GetName Get name of entry.
func (*StaticFileHandlerEntry) GetType ¶
func (entry *StaticFileHandlerEntry) GetType() string
GetType Get entry type.
func (*StaticFileHandlerEntry) Interrupt ¶
func (entry *StaticFileHandlerEntry) Interrupt(context.Context)
Interrupt entry.
func (*StaticFileHandlerEntry) MarshalJSON ¶
func (entry *StaticFileHandlerEntry) MarshalJSON() ([]byte, error)
MarshalJSON Marshal entry.
func (*StaticFileHandlerEntry) String ¶
func (entry *StaticFileHandlerEntry) String() string
String Stringfy entry.
func (*StaticFileHandlerEntry) UnmarshalJSON ¶
func (entry *StaticFileHandlerEntry) UnmarshalJSON([]byte) error
UnmarshalJSON Not supported.
type StaticFileHandlerEntryOption ¶
type StaticFileHandlerEntryOption func(entry *StaticFileHandlerEntry)
StaticFileHandlerEntryOption options for StaticFileHandlerEntry
func WithNameStaticFileHandlerEntry ¶
func WithNameStaticFileHandlerEntry(name string) StaticFileHandlerEntryOption
WithNameStaticFileHandlerEntry provide entry name