forked from aws/amazon-vpc-cni-k8s
-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.go
83 lines (63 loc) · 1.9 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"). You may
// not use this file except in compliance with the License. A copy of the
// License is located at
//
// http://aws.amazon.com/apache2.0/
//
// or in the "license" file accompanying this file. This file 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.
package main
import (
"os"
"github.com/aws/amazon-vpc-cni-k8s/pkg/utils/logger"
"github.com/aws/amazon-vpc-cni-k8s/ipamd"
log "github.com/cihub/seelog"
"github.com/aws/amazon-vpc-cni-k8s/pkg/eniconfig"
"github.com/aws/amazon-vpc-cni-k8s/pkg/k8sapi"
)
const (
defaultLogFilePath = "/host/var/log/aws-routed-eni/ipamd.log"
)
var (
version string
)
func main() {
os.Exit(_main())
}
func _main() int {
defer log.Flush()
logger.SetupLogger(logger.GetLogFileLocation(defaultLogFilePath))
log.Infof("Starting L-IPAMD %s ...", version)
kubeClient, err := k8sapi.CreateKubeClient()
if err != nil {
log.Errorf("Failed to create client: %v", err)
return 1
}
discoverController := k8sapi.NewController(kubeClient)
go discoverController.DiscoverK8SPods()
eniConfigController := eniconfig.NewENIConfigController()
if ipamd.UseCustomNetworkCfg() {
go eniConfigController.Start()
}
awsK8sAgent, err := ipamd.New(discoverController, eniConfigController)
if err != nil {
log.Error("Initialization failure ", err)
return 1
}
// Pool manager
go awsK8sAgent.StartNodeIPPoolManager()
// Prometheus metrics
go awsK8sAgent.ServeMetrics()
// CNI introspection endpoints
go awsK8sAgent.ServeIntrospection()
err = awsK8sAgent.RunRPCHandler()
if err != nil {
log.Error("Failed to set up gRPC handler ", err)
return 1
}
return 0
}