Documentation ¶
Overview ¶
Package config provides methods for generating the Ceph config for a Ceph cluster and for producing a "ceph.conf" compatible file from the config as well as Ceph command line-compatible flags.
Package config provides a shared way of referring to data storage locations for Ceph Daemons, including both the in-container location and on-host location as well as whether the data is persisted to the host.
Package config provides default configurations which Rook will set in Ceph clusters.
Package config allows a ceph config file to be stored in Kubernetes and mounted as volumes into Ceph daemon containers.
Index ¶
- Constants
- Variables
- func DefaultFlags(fsid, mountedKeyringPath string, cephVersion version.CephVersion) []string
- func NewFlag(key, value string) string
- func StoredFileVolume() v1.Volume
- func StoredFileVolumeMount() v1.VolumeMount
- func StoredMonHostEnvVars() []v1.EnvVar
- type Config
- type DaemonType
- type DataPathMap
- func NewDatalessDaemonDataPathMap(namespace, dataDirHostPath string) *DataPathMap
- func NewStatefulDaemonDataPathMap(dataDirHostPath, daemonDataDirHostRelativePath string, daemonType DaemonType, ...) *DataPathMap
- func NewStatelessDaemonDataPathMap(daemonType DaemonType, daemonID, namespace, dataDirHostPath string) *DataPathMap
- type Section
- type Store
Constants ¶
const (
// Msgr2port is the listening port of the messenger v2 protocol
Msgr2port = 3300
)
Variables ¶
var ( // VarLibCephDir is simply "/var/lib/ceph". It is made overwriteable only for unit tests where it // may be needed to send data intended for /var/lib/ceph to a temporary test dir. VarLibCephDir = "/var/lib/ceph" // EtcCephDir is simply "/etc/ceph". It is made overwriteable only for unit tests where it // may be needed to send data intended for /etc/ceph to a temporary test dir. EtcCephDir = "/etc/ceph" // VarLogCephDir defines Ceph logging directory. It is made overwriteable only for unit tests where it // may be needed to send data intended for /var/log/ceph to a temporary test dir. VarLogCephDir = "/var/log/ceph" )
Functions ¶
func DefaultFlags ¶
func DefaultFlags(fsid, mountedKeyringPath string, cephVersion version.CephVersion) []string
DefaultFlags returns the default configuration flags Rook will set on the command line for all calls to Ceph daemons and tools. Values specified here will not be able to be overridden using the mon's central KV store, and that is (and should be) by intent.
func NewFlag ¶
NewFlag returns the key-value pair in the format of a Ceph command line-compatible flag.
func StoredFileVolume ¶
StoredFileVolume returns a pod volume sourced from the stored config file.
func StoredFileVolumeMount ¶
func StoredFileVolumeMount() v1.VolumeMount
StoredFileVolumeMount returns a container volume mount that mounts the stored config from StoredFileVolume into the container at `/etc/ceph/ceph.conf`.
func StoredMonHostEnvVars ¶
StoredMonHostEnvVars returns a container environment variable defined by the most updated stored "mon_host" and "mon_initial_members" information.
Types ¶
type Config ¶
type Config struct {
// contains filtered or unexported fields
}
Config is a Ceph config struct containing zero or more Ceph config sections.
func DefaultCentralizedConfigs ¶
func DefaultCentralizedConfigs(cephVersion version.CephVersion) *Config
DefaultCentralizedConfigs returns the default configuration options Rook will set in Ceph's centralized config store. If the version of Ceph does not support the centralized config store, these will be set in a shared config file instead.
func DefaultLegacyConfigs ¶
func DefaultLegacyConfigs() *Config
DefaultLegacyConfigs need to be added to the Ceph config file until the integration tests can be made to override these options for the Ceph clusters it creates.
func StoredMonHostEnvVarReferences ¶
func StoredMonHostEnvVarReferences() *Config
StoredMonHostEnvVarReferences returns a small Ceph Config which references "mon_host" and "mon_initial_members" information from the StoredMonHostEnvVars. This config can be used to generate flags referencing the env vars or to generate the string representation of a Config.
func (*Config) GlobalFlags ¶
GlobalFlags converts the Config's 'global' Section to a list of command line flag strings which can be used with Kubernetes container specs for Ceph daemons.
It should never be necessary to get flags for anything but the 'global' config section, otherwise, Rook will have to determine which sections apply for a given Ceph daemon. Does 'mon.a' apply to 'mon.b'? 'mon.aa'? 'osd.0'? The logic would be prone to errors, so only allow the 'global' section to be converted to flags.
type DaemonType ¶
type DaemonType string
DaemonType defines the type of a daemon. e.g., mon, mgr, osd, mds, rgw
const ( // MonType defines the mon DaemonType MonType DaemonType = "mon" // MgrType defines the mgr DaemonType MgrType DaemonType = "mgr" // OsdType defines the osd DaemonType OsdType DaemonType = "osd" // MdsType defines the mds DaemonType MdsType DaemonType = "mds" // RgwType defines the rgw DaemonType RgwType DaemonType = "rgw" // RbdMirrorType defines the rbd-mirror DaemonType RbdMirrorType DaemonType = "rbd-mirror" )
type DataPathMap ¶
type DataPathMap struct { // PersistData is true if the daemon's data should be persisted to the host. PersistData bool // If PersistData is true, HostDataDIr should be set to the path on the host where the specific // daemon's data is stored. HostDataDir string // If NoData is true, the daemon has no data to store. NoData bool // ContainerDataDir should be set to the path in the container where the specific daemon's data // is stored. ContainerDataDir string // HostLogDir represents Ceph's logging directory on the host HostLogDir string // ContainerLogDir represents Ceph's logging directory ContainerLogDir string }
A DataPathMap is a struct which contains information about where Ceph daemon data is stored in containers and whether the data should be persisted to the host. If it is persisted to the host, directory on the host where the specific daemon's data is stored is given.
func NewDatalessDaemonDataPathMap ¶
func NewDatalessDaemonDataPathMap(namespace, dataDirHostPath string) *DataPathMap
NewDatalessDaemonDataPathMap returns a new DataPathMap for a daemon which does not utilize a data dir in the container as the mon, mgr, osd, mds, and rgw daemons do
func NewStatefulDaemonDataPathMap ¶
func NewStatefulDaemonDataPathMap( dataDirHostPath, daemonDataDirHostRelativePath string, daemonType DaemonType, daemonID, namespace string, ) *DataPathMap
NewStatefulDaemonDataPathMap returns a new DataPathMap for a daemon which requires a persistent config (mons, osds). daemonDataDirHostRelativePath is the path relative to the dataDirHostPath where the daemon's data is stored on the host's filesystem. Daemons which use a DataPathMap created by this method will only have access to their own data and not the entire dataDirHostPath which may include data from other daemons.
func NewStatelessDaemonDataPathMap ¶
func NewStatelessDaemonDataPathMap( daemonType DaemonType, daemonID, namespace, dataDirHostPath string, ) *DataPathMap
NewStatelessDaemonDataPathMap returns a new DataPathMap for a daemon which does not persist data to the host (mgrs, mdses, rgws)
type Section ¶
type Section struct {
// contains filtered or unexported fields
}
A Section is a collection of zero or more Ceph config key-value pairs.
func (*Section) Merge ¶
Merge modifies the Section in-place adding values from the overrides Section and overriding existing values with the new value in overrides.
func (*Section) Set ¶
Set sets the Ceph config key to the given value. Set accepts Ceph keys in both space-separated-words and underscore-separated-words formats. Set modifies the section in-place and also returns the same modified-in-place Section to give flexibility of usage.
NOTE that if a config item in a map should have quotes around it, they will have to be added to the string explicitly. e.g., a Value of " test " will be interpreted as as 'Key = test', whereas a Value of "\" test \"" will be interpreted as 'Key = " test "'
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
Store manages storage of the Ceph config file shared by all daemons (if applicable) as well as an updated 'mon_host' which can be mapped to daemon containers and referenced in daemon command line arguments.
func (*Store) CreateOrUpdate ¶
func (s *Store) CreateOrUpdate(clusterInfo *cephconfig.ClusterInfo) error
CreateOrUpdate creates or updates the stored Ceph config based on the cluster info.