@@ -3,6 +3,7 @@ package main
33import (
44 "context"
55 "encoding/json"
6+ "errors"
67 "flag"
78 "fmt"
89 "log"
@@ -20,30 +21,31 @@ import (
2021)
2122
2223var (
23- logLevel string
24- logTimeEncoder string
25- logDev bool
26-
27- configDir string
28- stateDir string
29-
24+ logLevel string
25+ logTimeEncoder string
26+ logDev bool
27+ configDir string
28+ stateDir string
3029 mariadbName string
3130 mariadbNamespace string
3231)
3332
33+ type Env struct {
34+ podName string
35+ podNamespace string
36+ mariadbRootPassword string
37+ }
38+
3439func main () {
3540 flag .StringVar (& logLevel , "log-level" , "info" , "Log level to use, one of: " +
3641 "debug, info, warn, error, dpanic, panic, fatal." )
3742 flag .StringVar (& logTimeEncoder , "log-time-encoder" , "epoch" , "Log time encoder to use, one of: " +
3843 "epoch, millis, nano, iso8601, rfc3339 or rfc3339nano" )
3944 flag .BoolVar (& logDev , "log-dev" , false , "Enable development logs" )
40-
4145 flag .StringVar (& configDir , "config-dir" , "/etc/mysql/mariadb.conf.d" , "The directory that contains MariaDB configuration files" )
4246 flag .StringVar (& stateDir , "state-dir" , "/var/lib/mysql" , "The directory that contains MariaDB state files" )
43-
4447 flag .StringVar (& mariadbName , "mariadb-name" , "" , "The name of the MariaDB to be initialized" )
4548 flag .StringVar (& mariadbNamespace , "mariadb-namespace" , "" , "The namespace of the MariaDB to be initialized" )
46-
4749 flag .Parse ()
4850
4951 ctx , cancel := signal .NotifyContext (context .Background (), []os.Signal {
@@ -61,10 +63,16 @@ func main() {
6163 logger .WithDevelopment (logDev ),
6264 )
6365 if err != nil {
64- log .Fatalf ("error creating logger: %v" , err )
66+ log .Fatalf ("Error creating logger: %v" , err )
6567 }
6668 logger .Info ("Staring init" )
6769
70+ env , err := env ()
71+ if err != nil {
72+ logger .Error (err , "Missing environment variables" )
73+ os .Exit (1 )
74+ }
75+
6876 restConfig , err := restConfig ()
6977 if err != nil {
7078 logger .Error (err , "Error getting Kubernetes config" )
@@ -86,14 +94,14 @@ func main() {
8694 logger .Error (err , "Error creating file manager" )
8795 os .Exit (1 )
8896 }
89- configBytes , err := config .NewConfigFile (mdb ).Marshal ()
97+ configBytes , err := config .NewConfigFile (mdb ).Marshal (env . podName , env . mariadbRootPassword )
9098 if err != nil {
91- logger .Error (err , "Error getting galera config" )
99+ logger .Error (err , "Error getting Galera config" )
92100 os .Exit (1 )
93101 }
94102 logger .Info ("Configuring Galera" )
95103 if err := fileManager .WriteConfigFile (config .ConfigFileName , configBytes ); err != nil {
96- logger .Error (err , "Error writing galera config" )
104+ logger .Error (err , "Error writing Galera config" )
97105 os .Exit (1 )
98106 }
99107 logger .Info ("Configuring bootstrap" )
@@ -104,6 +112,26 @@ func main() {
104112 logger .Info ("Init done" )
105113}
106114
115+ func env () (* Env , error ) {
116+ podName := os .Getenv ("POD_NAME" )
117+ if podName == "" {
118+ return nil , errors .New ("environment variable 'POD_NAME' is required" )
119+ }
120+ podNamespace := os .Getenv ("POD_NAMESPACE" )
121+ if podNamespace == "" {
122+ return nil , errors .New ("environment variable 'POD_NAMESPACE' is required" )
123+ }
124+ mariadbRootPassword := os .Getenv ("MARIADB_ROOT_PASSWORD" )
125+ if mariadbRootPassword == "" {
126+ return nil , errors .New ("environment variable 'MARIADB_ROOT_PASSWORD' is required" )
127+ }
128+ return & Env {
129+ podName : podName ,
130+ podNamespace : podNamespace ,
131+ mariadbRootPassword : mariadbRootPassword ,
132+ }, nil
133+ }
134+
107135func restConfig () (* rest.Config , error ) {
108136 if kubeconfig := os .Getenv ("KUBECONFIG" ); kubeconfig != "" {
109137 return clientcmd .BuildConfigFromFlags ("" , kubeconfig )
0 commit comments