Documentation
¶
Index ¶
- Constants
- func BuildConfigManagerContainerParams(cli client.Client, ctx context.Context, managerParams *CfgManagerBuildParams, ...) error
- func FindVolumeMount(volumeDirs []corev1.VolumeMount, volumeName string) *corev1.VolumeMount
- func FromReloadTypeConfig(reloadAction *parametersv1alpha1.ReloadAction) parametersv1alpha1.DynamicReloadType
- func GetScriptsMountPoint(configSpec appsv1.ComponentFileTemplate) string
- func GetScriptsVolumeName(configSpec appsv1.ComponentFileTemplate) string
- func IsAutoReload(reload *parametersv1alpha1.ReloadAction) bool
- func IsSupportReload(reload *parametersv1alpha1.ReloadAction) bool
- func IsValidUnixSignal(sig parametersv1alpha1.SignalType) bool
- func NeedRestart(paramsDefs map[string]*parametersv1alpha1.ParametersDefinition, ...) bool
- func NeedSharedProcessNamespace(configSpecs []ConfigSpecMeta) bool
- func ScanConfigVolume(mountPoint string) ([]string, error)
- func SetLogger(zapLogger *zap.Logger)
- func ValidateReloadOptions(reloadAction *parametersv1alpha1.ReloadAction, cli client.Client, ...) error
- type ActionCallback
- type CfgManagerBuildParams
- type ConfigHandler
- func CreateCombinedHandler(config string, backupPath string) (ConfigHandler, error)
- func CreateExecHandler(command []string, mountPoint string, configMeta *ConfigSpecInfo, ...) (ConfigHandler, error)
- func CreateSignalHandler(sig parametersv1alpha1.SignalType, processName string, mountPoint string) (ConfigHandler, error)
- func CreateTPLScriptHandler(name, configPath string, dirs []string, backupPath string) (ConfigHandler, error)
- type ConfigMapVolumeWatcher
- func (w *ConfigMapVolumeWatcher) AddFilter(filter NotifyEventFilter) *ConfigMapVolumeWatcher
- func (w *ConfigMapVolumeWatcher) AddHandler(handler WatchEventHandler) *ConfigMapVolumeWatcher
- func (w *ConfigMapVolumeWatcher) Close() error
- func (w *ConfigMapVolumeWatcher) Run() error
- func (w *ConfigMapVolumeWatcher) SetRetryCount(count int) *ConfigMapVolumeWatcher
- type ConfigSpecInfo
- type ConfigSpecMeta
- type DynamicParamUpdater
- type DynamicUpdater
- type NotifyEventFilter
- type PID
- type TPLScriptConfig
- type WatchEventHandler
Constants ¶
const ( KBScriptVolumePath = "/opt/kb-tools/reload" KBConfigVolumePath = "/opt/kb-tools/config" KBTOOLSScriptsPathEnv = "TOOLS_SCRIPTS_PATH" KBConfigManagerPathEnv = "TOOLS_PATH" )
const ( DefaultRetryCount = 3 DefaultSleepRetryTime = 10 )
Variables ¶
This section is empty.
Functions ¶
func BuildConfigManagerContainerParams ¶
func BuildConfigManagerContainerParams(cli client.Client, ctx context.Context, managerParams *CfgManagerBuildParams, volumeDirs []corev1.VolumeMount) error
func FindVolumeMount ¶
func FindVolumeMount(volumeDirs []corev1.VolumeMount, volumeName string) *corev1.VolumeMount
func FromReloadTypeConfig ¶
func FromReloadTypeConfig(reloadAction *parametersv1alpha1.ReloadAction) parametersv1alpha1.DynamicReloadType
func GetScriptsMountPoint ¶
func GetScriptsMountPoint(configSpec appsv1.ComponentFileTemplate) string
func GetScriptsVolumeName ¶
func GetScriptsVolumeName(configSpec appsv1.ComponentFileTemplate) string
func IsAutoReload ¶ added in v0.8.0
func IsAutoReload(reload *parametersv1alpha1.ReloadAction) bool
func IsSupportReload ¶
func IsSupportReload(reload *parametersv1alpha1.ReloadAction) bool
func IsValidUnixSignal ¶
func IsValidUnixSignal(sig parametersv1alpha1.SignalType) bool
func NeedRestart ¶ added in v1.0.0
func NeedRestart(paramsDefs map[string]*parametersv1alpha1.ParametersDefinition, patch *core.ConfigPatchInfo) bool
func NeedSharedProcessNamespace ¶
func NeedSharedProcessNamespace(configSpecs []ConfigSpecMeta) bool
func ScanConfigVolume ¶
func ValidateReloadOptions ¶
func ValidateReloadOptions(reloadAction *parametersv1alpha1.ReloadAction, cli client.Client, ctx context.Context) error
Types ¶
type ActionCallback ¶ added in v0.9.0
ActionCallback is a callback function for testcase.
type CfgManagerBuildParams ¶
type CfgManagerBuildParams struct { ManagerName string `json:"name"` Image string `json:"sidecarImage"` Args []string `json:"args"` Envs []corev1.EnvVar `json:"envs"` Volumes []corev1.VolumeMount `json:"volumes"` ComponentName string `json:"componentName"` SecreteName string `json:"secreteName"` // TODO(v1.0): conn-credential // add volume to pod ScriptVolume []corev1.Volume Cluster *appsv1.Cluster ConfigSpecsBuildParams []ConfigSpecMeta // init tools container ToolsContainers []corev1.Container DownwardAPIVolumes []corev1.VolumeMount CMConfigVolumes []corev1.Volume // support custom config manager sidecar ConfigManagerReloadPath string `json:"configManagerReloadPath"` // support host network ContainerPort int32 `json:"containerPort"` }
CfgManagerBuildParams is the params for building config manager sidecar
type ConfigHandler ¶
type ConfigHandler interface { OnlineUpdate(ctx context.Context, name string, updatedParams map[string]string) error VolumeHandle(ctx context.Context, event fsnotify.Event) error MountPoint() []string }
func CreateCombinedHandler ¶
func CreateCombinedHandler(config string, backupPath string) (ConfigHandler, error)
func CreateExecHandler ¶
func CreateExecHandler(command []string, mountPoint string, configMeta *ConfigSpecInfo, backupPath string) (ConfigHandler, error)
func CreateSignalHandler ¶
func CreateSignalHandler(sig parametersv1alpha1.SignalType, processName string, mountPoint string) (ConfigHandler, error)
func CreateTPLScriptHandler ¶
func CreateTPLScriptHandler(name, configPath string, dirs []string, backupPath string) (ConfigHandler, error)
type ConfigMapVolumeWatcher ¶
type ConfigMapVolumeWatcher struct {
// contains filtered or unexported fields
}
func NewVolumeWatcher ¶
func NewVolumeWatcher(volume []string, ctx context.Context, logger *zap.SugaredLogger) *ConfigMapVolumeWatcher
func (*ConfigMapVolumeWatcher) AddFilter ¶
func (w *ConfigMapVolumeWatcher) AddFilter(filter NotifyEventFilter) *ConfigMapVolumeWatcher
func (*ConfigMapVolumeWatcher) AddHandler ¶
func (w *ConfigMapVolumeWatcher) AddHandler(handler WatchEventHandler) *ConfigMapVolumeWatcher
func (*ConfigMapVolumeWatcher) Close ¶
func (w *ConfigMapVolumeWatcher) Close() error
func (*ConfigMapVolumeWatcher) Run ¶
func (w *ConfigMapVolumeWatcher) Run() error
func (*ConfigMapVolumeWatcher) SetRetryCount ¶
func (w *ConfigMapVolumeWatcher) SetRetryCount(count int) *ConfigMapVolumeWatcher
type ConfigSpecInfo ¶
type ConfigSpecInfo struct { *parametersv1alpha1.ReloadAction `json:",inline"` ReloadType parametersv1alpha1.DynamicReloadType `json:"reloadType"` ConfigSpec appsv1.ComponentFileTemplate `json:"configSpec"` FormatterConfig parametersv1alpha1.FileFormatConfig `json:"formatterConfig"` ConfigFile string `json:"configFile"` DownwardAPIOptions []parametersv1alpha1.DownwardAPIChangeTriggeredAction `json:"downwardAPIOptions"` // config volume mount path MountPoint string `json:"mountPoint"` TPLConfig string `json:"tplConfig"` }
type ConfigSpecMeta ¶
type ConfigSpecMeta struct { ConfigSpecInfo `json:",inline"` ScriptConfig []parametersv1alpha1.ScriptConfig ToolsImageSpec *parametersv1alpha1.ToolsSetup }
func FilterSupportReloadActionConfigSpecs ¶ added in v0.8.4
func FilterSupportReloadActionConfigSpecs(metas []ConfigSpecMeta, volumes []corev1.VolumeMount) []ConfigSpecMeta
FilterSupportReloadActionConfigSpecs filters the provided ConfigSpecMeta slices based on the reload action type and volume mount configuration. It handles two types of updates to ConfigMaps:
1. Async mode: KubeBlocks controller is responsible for updating the ConfigMap, while kubelet synchronizes the ConfigMap to volumes. The config-manager detects configuration changes using fsnotify and executes the reload action. This requires volume mounting the ConfigMap. However, in async mode, if the volume mount is a subpath, kubelet does not synchronize the ConfigMap content to the container (see kubernetes/kubernetes#50345). As a result, the config-manager cannot detect configuration changes and does not support dynamic parameter updates for such configurations. Therefore, async-type ConfigSpecs with subpath volume mounts need to be removed.
2. Sync mode: For sync mode (regardless of the reload action type - TPLScriptType trigger or ShellType trigger), the controller directly watches the ConfigMap changes and actively invokes the reload action.
Both async and sync types need to pass the ConfigSpecs to the config-manager.
The check logic is an OR condition: either it is the first type (sync mode) or the second type (async) with a non-subpath volume mount configuration.
func GetSupportReloadConfigSpecs ¶
func GetSupportReloadConfigSpecs(configSpecs []appsv1.ComponentFileTemplate, configDescs []parametersv1alpha1.ComponentConfigDescription, paramsDefs []*parametersv1alpha1.ParametersDefinition) ([]ConfigSpecMeta, error)
type DynamicParamUpdater ¶
type DynamicParamUpdater interface { ExecCommand(ctx context.Context, command string, args ...string) (string, error) Close() }
DynamicParamUpdater is designed to adapt to the dapper implementation.
func NewCommandChannel ¶
func NewCommandChannel(ctx context.Context, dataType, dsn string) (DynamicParamUpdater, error)
type DynamicUpdater ¶
type DynamicUpdater = func(ctx context.Context, configSpec string, updatedParams map[string]string) error
func OnlineUpdateParamsHandle ¶
func OnlineUpdateParamsHandle(tplScriptPath string, formatConfig *parametersv1alpha1.FileFormatConfig, dataType, dsn string) (DynamicUpdater, error)
type NotifyEventFilter ¶
func CreateCfgRegexFilter ¶
func CreateCfgRegexFilter(regexString string) (NotifyEventFilter, error)
func CreateValidConfigMapFilter ¶
func CreateValidConfigMapFilter() NotifyEventFilter
CreateValidConfigMapFilter processes configmap volume https://github.com/ossrs/srs/issues/1635
type TPLScriptConfig ¶
type TPLScriptConfig struct { Scripts string `json:"scripts"` FileRegex string `json:"fileRegex"` DataType string `json:"dataType"` DSN string `json:"dsn"` FormatterConfig parametersv1alpha1.FileFormatConfig `json:"formatterConfig"` }