2016-10-08 00:39:21 +00:00
/ *
Copyright 2016 The Kubernetes Authors .
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
// The external controller manager is responsible for running controller loops that
2016-12-17 17:27:48 +00:00
// are cloud provider dependent. It uses the API to listen to new events on resources.
2016-10-08 00:39:21 +00:00
package main
import (
"fmt"
"os"
2017-01-17 10:38:25 +00:00
"k8s.io/apiserver/pkg/server/healthz"
2017-01-23 14:46:05 +00:00
"k8s.io/apiserver/pkg/util/flag"
2017-02-13 15:35:12 +00:00
"k8s.io/apiserver/pkg/util/logs"
2016-10-08 00:39:21 +00:00
"k8s.io/kubernetes/cmd/cloud-controller-manager/app"
"k8s.io/kubernetes/cmd/cloud-controller-manager/app/options"
_ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration
"k8s.io/kubernetes/pkg/cloudprovider"
_ "k8s.io/kubernetes/pkg/cloudprovider/providers"
_ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration
"k8s.io/kubernetes/pkg/version/verflag"
"github.com/golang/glog"
"github.com/spf13/pflag"
)
func init ( ) {
healthz . DefaultHealthz ( )
}
func main ( ) {
2016-12-17 17:27:48 +00:00
s := options . NewCloudControllerManagerServer ( )
2016-10-08 00:39:21 +00:00
s . AddFlags ( pflag . CommandLine )
flag . InitFlags ( )
logs . InitLogs ( )
defer logs . FlushLogs ( )
verflag . PrintAndExitIfRequested ( )
2017-05-02 00:57:42 +00:00
if s . CloudProvider == "" {
glog . Errorf ( "--cloud-provider cannot be empty" )
}
2016-10-08 00:39:21 +00:00
cloud , err := cloudprovider . InitCloudProvider ( s . CloudProvider , s . CloudConfigFile )
if err != nil {
glog . Fatalf ( "Cloud provider could not be initialized: %v" , err )
}
2017-07-17 04:28:57 +00:00
if cloud . HasClusterID ( ) == false {
if s . AllowUntaggedCloud == true {
glog . Warning ( "detected a cluster without a ClusterID. A ClusterID will be required in the future. Please tag your cluster to avoid any future issues" )
} else {
glog . Fatalf ( "no ClusterID Found. A ClusterID is required for the cloud provider to function properly. This check can be bypassed by setting the allow-untagged-cloud option" )
}
}
2016-10-08 00:39:21 +00:00
if err := app . Run ( s , cloud ) ; err != nil {
fmt . Fprintf ( os . Stderr , "%v\n" , err )
os . Exit ( 1 )
}
}