This adds a config file for containerd configuration. It is hard to have structure data on cli flags and the config file should be used for the majority of fields when configuring containerd. There are still a few flags on the daemon that override config file values but flags should take a back seat going forward and should be kept at a minimum. Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import "github.com/BurntSushi/toml"
 | 
						|
 | 
						|
func defaultConfig() *config {
 | 
						|
	return &config{
 | 
						|
		Root:  "/var/lib/containerd",
 | 
						|
		State: "/run/containerd",
 | 
						|
		GRPC: grpcConfig{
 | 
						|
			Socket: "/run/containerd/containerd.sock",
 | 
						|
		},
 | 
						|
		Debug: debug{
 | 
						|
			Level:  "info",
 | 
						|
			Socket: "/run/containerd/debug.sock",
 | 
						|
		},
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// loadConfig loads the config from the provided path
 | 
						|
func loadConfig(path string) error {
 | 
						|
	_, err := toml.DecodeFile(path, conf)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
// config specifies the containerd configuration file in the TOML format.
 | 
						|
// It contains fields to configure various subsystems and containerd as a whole.
 | 
						|
type config struct {
 | 
						|
	// State is the path to a directory where containerd will store runtime state
 | 
						|
	State string `toml:"state"`
 | 
						|
	// Root is the path to a directory where containerd will store persistent data
 | 
						|
	Root string `toml:"root"`
 | 
						|
	// GRPC configuration settings
 | 
						|
	GRPC grpcConfig `toml:"grpc"`
 | 
						|
	// Debug and profiling settings
 | 
						|
	Debug debug `toml:"debug"`
 | 
						|
	// Metrics and monitoring settings
 | 
						|
	Metrics metricsConfig `toml:"metrics"`
 | 
						|
}
 | 
						|
 | 
						|
type grpcConfig struct {
 | 
						|
	Socket string `toml:"socket"`
 | 
						|
}
 | 
						|
 | 
						|
type debug struct {
 | 
						|
	Socket string `toml:"socket"`
 | 
						|
	Level  string `toml:"level"`
 | 
						|
}
 | 
						|
 | 
						|
type metricsConfig struct {
 | 
						|
	Address string `toml:"address"`
 | 
						|
}
 |