configmanager

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2024 License: AGPL-3.0 Imports: 39 Imported by: 1

Documentation

Index

Constants

View Source
const (
	KBScriptVolumePath = "/opt/kb-tools/reload"
	KBConfigVolumePath = "/opt/kb-tools/config"

	KBTOOLSScriptsPathEnv  = "TOOLS_SCRIPTS_PATH"
	KBConfigManagerPathEnv = "TOOLS_PATH"
)
View Source
const (
	DefaultRetryCount     = 3
	DefaultSleepRetryTime = 10
)
View Source
const KBConfigSpecLazyRenderedYamlFile = "lazy-rendered-config.yaml"

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 *appsv1beta1.ReloadAction) appsv1beta1.DynamicReloadType

func GetConfigMountPoint

func GetConfigMountPoint(configSpec appsv1alpha1.ComponentConfigSpec) string

func GetConfigVolumeName

func GetConfigVolumeName(configSpec appsv1alpha1.ComponentConfigSpec) string

func GetScriptsMountPoint

func GetScriptsMountPoint(configSpec appsv1alpha1.ComponentConfigSpec) string

func GetScriptsVolumeName

func GetScriptsVolumeName(configSpec appsv1alpha1.ComponentConfigSpec) string

func IsAutoReload added in v0.8.0

func IsAutoReload(reload *appsv1beta1.ReloadAction) bool

func IsSupportReload

func IsSupportReload(reload *appsv1beta1.ReloadAction) bool

func IsValidUnixSignal

func IsValidUnixSignal(sig appsv1beta1.SignalType) bool

func NeedSharedProcessNamespace

func NeedSharedProcessNamespace(configSpecs []ConfigSpecMeta) bool

func ScanConfigVolume

func ScanConfigVolume(mountPoint string) ([]string, error)

func SetLogger

func SetLogger(zapLogger *zap.Logger)

func ValidateReloadOptions

func ValidateReloadOptions(reloadAction *appsv1beta1.ReloadAction, cli client.Client, ctx context.Context) error

Types

type ActionCallback added in v0.9.0

type ActionCallback func(output string, err error)

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"`

	ShareProcessNamespace bool `json:"shareProcessNamespace"`

	Volumes       []corev1.VolumeMount `json:"volumes"`
	ComponentName string               `json:"componentName"`
	CharacterType string               `json:"characterType"`
	SecreteName   string               `json:"secreteName"`

	// add volume to pod
	ScriptVolume           []corev1.Volume
	Cluster                *appsv1alpha1.Cluster
	ConfigSpecsBuildParams []ConfigSpecMeta

	// init tools container
	ToolsContainers           []corev1.Container
	DownwardAPIVolumes        []corev1.VolumeMount
	CMConfigVolumes           []corev1.Volume
	ConfigLazyRenderedVolumes map[string]corev1.VolumeMount

	// 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 appsv1beta1.SignalType, processName string, mountPoint string) (ConfigHandler, error)

func CreateTPLScriptHandler

func CreateTPLScriptHandler(name, configPath string, dirs []string, backupPath string) (ConfigHandler, error)

type ConfigLazyRenderedMeta

type ConfigLazyRenderedMeta struct {
	*appsv1alpha1.ComponentConfigSpec `json:",inline"`

	// secondary template path
	Templates       []string                     `json:"templates"`
	FormatterConfig appsv1beta1.FileFormatConfig `json:"formatterConfig"`
}

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 (*ConfigMapVolumeWatcher) AddHandler

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 {
	*appsv1beta1.ReloadAction `json:",inline"`

	ReloadType      appsv1beta1.DynamicReloadType    `json:"reloadType"`
	ConfigSpec      appsv1alpha1.ComponentConfigSpec `json:"configSpec"`
	FormatterConfig appsv1beta1.FileFormatConfig     `json:"formatterConfig"`

	DownwardAPIOptions []appsv1beta1.DownwardAPIChangeTriggeredAction `json:"downwardAPIOptions"`

	// config volume mount path
	MountPoint string `json:"mountPoint"`
	TPLConfig  string `json:"tplConfig"`
}

type ConfigSpecMeta

type ConfigSpecMeta struct {
	ConfigSpecInfo `json:",inline"`

	ScriptConfig   []appsv1beta1.ScriptConfig
	ToolsImageSpec *appsv1beta1.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 []appsv1alpha1.ComponentConfigSpec, cli client.Client, ctx context.Context) ([]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 *appsv1beta1.FileFormatConfig, dataType, dsn string) (DynamicUpdater, error)

type NotifyEventFilter

type NotifyEventFilter func(event fsnotify.Event) (bool, error)

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 PID

type PID int32
const (
	InvalidPID PID = 0
)

type TPLScriptConfig

type TPLScriptConfig struct {
	Scripts   string `json:"scripts"`
	FileRegex string `json:"fileRegex"`
	DataType  string `json:"dataType"`
	DSN       string `json:"dsn"`

	FormatterConfig appsv1beta1.FileFormatConfig `json:"formatterConfig"`
}

type WatchEventHandler

type WatchEventHandler func(ctx context.Context, event fsnotify.Event) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL