Merge pull request #233 from fluxcd/storage-addr
Allow overwrite of advertised storage addr
This commit is contained in:
commit
b335878a16
|
@ -41,6 +41,7 @@ spec:
|
||||||
- --log-json
|
- --log-json
|
||||||
- --enable-leader-election
|
- --enable-leader-election
|
||||||
- --storage-path=/data
|
- --storage-path=/data
|
||||||
|
- --storage-adv-addr=source-controller.$(RUNTIME_NAMESPACE).svc.cluster.local.
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
port: http
|
port: http
|
||||||
|
|
60
main.go
60
main.go
|
@ -68,19 +68,26 @@ func main() {
|
||||||
enableLeaderElection bool
|
enableLeaderElection bool
|
||||||
storagePath string
|
storagePath string
|
||||||
storageAddr string
|
storageAddr string
|
||||||
|
storageAdvAddr string
|
||||||
concurrent int
|
concurrent int
|
||||||
logLevel string
|
logLevel string
|
||||||
logJSON bool
|
logJSON bool
|
||||||
watchAllNamespaces bool
|
watchAllNamespaces bool
|
||||||
)
|
)
|
||||||
|
|
||||||
flag.StringVar(&metricsAddr, "metrics-addr", envOrDefault("METRICS_ADDR", ":8080"), "The address the metric endpoint binds to.")
|
flag.StringVar(&metricsAddr, "metrics-addr", envOrDefault("METRICS_ADDR", ":8080"),
|
||||||
flag.StringVar(&eventsAddr, "events-addr", envOrDefault("EVENTS_ADDR", ""), "The address of the events receiver.")
|
"The address the metric endpoint binds to.")
|
||||||
|
flag.StringVar(&eventsAddr, "events-addr", envOrDefault("EVENTS_ADDR", ""),
|
||||||
|
"The address of the events receiver.")
|
||||||
flag.BoolVar(&enableLeaderElection, "enable-leader-election", false,
|
flag.BoolVar(&enableLeaderElection, "enable-leader-election", false,
|
||||||
"Enable leader election for controller manager. "+
|
"Enable leader election for controller manager. "+
|
||||||
"Enabling this will ensure there is only one active controller manager.")
|
"Enabling this will ensure there is only one active controller manager.")
|
||||||
flag.StringVar(&storagePath, "storage-path", envOrDefault("STORAGE_PATH", ""), "The local storage path.")
|
flag.StringVar(&storagePath, "storage-path", envOrDefault("STORAGE_PATH", ""),
|
||||||
flag.StringVar(&storageAddr, "storage-addr", envOrDefault("STORAGE_ADDR", ":9090"), "The address the static file server binds to.")
|
"The local storage path.")
|
||||||
|
flag.StringVar(&storageAddr, "storage-addr", envOrDefault("STORAGE_ADDR", ":9090"),
|
||||||
|
"The address the static file server binds to.")
|
||||||
|
flag.StringVar(&storageAdvAddr, "storage-adv-addr", envOrDefault("STORAGE_ADV_ADDR", ""),
|
||||||
|
"The advertised address of the static file server.")
|
||||||
flag.IntVar(&concurrent, "concurrent", 2, "The number of concurrent reconciles per controller.")
|
flag.IntVar(&concurrent, "concurrent", 2, "The number of concurrent reconciles per controller.")
|
||||||
flag.StringVar(&logLevel, "log-level", "info", "Set logging level. Can be debug, info or error.")
|
flag.StringVar(&logLevel, "log-level", "info", "Set logging level. Can be debug, info or error.")
|
||||||
flag.BoolVar(&logJSON, "log-json", false, "Set logging to JSON format.")
|
flag.BoolVar(&logJSON, "log-json", false, "Set logging to JSON format.")
|
||||||
|
@ -122,8 +129,10 @@ func main() {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
storage := mustInitStorage(storagePath, storageAddr, setupLog)
|
if storageAdvAddr == "" {
|
||||||
|
storageAdvAddr = determineAdvStorageAddr(storageAddr, setupLog)
|
||||||
|
}
|
||||||
|
storage := mustInitStorage(storagePath, storageAdvAddr, setupLog)
|
||||||
go startFileServer(storage.BasePath, storageAddr, setupLog)
|
go startFileServer(storage.BasePath, storageAddr, setupLog)
|
||||||
|
|
||||||
if err = (&controllers.GitRepositoryReconciler{
|
if err = (&controllers.GitRepositoryReconciler{
|
||||||
|
@ -202,19 +211,36 @@ func startFileServer(path string, address string, l logr.Logger) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func mustInitStorage(path string, storageAddr string, l logr.Logger) *controllers.Storage {
|
func mustInitStorage(path string, storageAdvAddr string, l logr.Logger) *controllers.Storage {
|
||||||
if path == "" {
|
if path == "" {
|
||||||
p, _ := os.Getwd()
|
p, _ := os.Getwd()
|
||||||
path = filepath.Join(p, "bin")
|
path = filepath.Join(p, "bin")
|
||||||
os.MkdirAll(path, 0777)
|
os.MkdirAll(path, 0777)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
storage, err := controllers.NewStorage(path, storageAdvAddr, 5*time.Minute)
|
||||||
|
if err != nil {
|
||||||
|
l.Error(err, "unable to initialise storage")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return storage
|
||||||
|
}
|
||||||
|
|
||||||
|
func determineAdvStorageAddr(storageAddr string, l logr.Logger) string {
|
||||||
|
// TODO(hidde): remove next MINOR prerelease as it can be passed in using
|
||||||
|
// Kubernetes' substitution.
|
||||||
|
if os.Getenv("RUNTIME_NAMESPACE") != "" {
|
||||||
|
svcParts := strings.Split(os.Getenv("HOSTNAME"), "-")
|
||||||
|
return fmt.Sprintf("%s.%s",
|
||||||
|
strings.Join(svcParts[:len(svcParts)-2], "-"), os.Getenv("RUNTIME_NAMESPACE"))
|
||||||
|
}
|
||||||
|
|
||||||
host, port, err := net.SplitHostPort(storageAddr)
|
host, port, err := net.SplitHostPort(storageAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.Error(err, "unable to parse storage address")
|
l.Error(err, "unable to parse storage address")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch host {
|
switch host {
|
||||||
case "":
|
case "":
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
|
@ -226,26 +252,10 @@ func mustInitStorage(path string, storageAddr string, l logr.Logger) *controller
|
||||||
l.Error(err, "0.0.0.0 specified in storage addr but hostname is invalid")
|
l.Error(err, "0.0.0.0 specified in storage addr but hostname is invalid")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
host = hn
|
host = hn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return net.JoinHostPort(host, port)
|
||||||
hostname := net.JoinHostPort(host, port)
|
|
||||||
|
|
||||||
if os.Getenv("RUNTIME_NAMESPACE") != "" {
|
|
||||||
svcParts := strings.Split(os.Getenv("HOSTNAME"), "-")
|
|
||||||
hostname = fmt.Sprintf("%s.%s",
|
|
||||||
strings.Join(svcParts[:len(svcParts)-2], "-"), os.Getenv("RUNTIME_NAMESPACE"))
|
|
||||||
}
|
|
||||||
|
|
||||||
storage, err := controllers.NewStorage(path, hostname, 5*time.Minute)
|
|
||||||
if err != nil {
|
|
||||||
l.Error(err, "unable to initialise storage")
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
return storage
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func envOrDefault(envName, defaultValue string) string {
|
func envOrDefault(envName, defaultValue string) string {
|
||||||
|
|
Loading…
Reference in New Issue