/
run.go
49 lines (42 loc) · 1.11 KB
/
run.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
package k8s
import (
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"k8s.io/client-go/kubernetes"
"sync"
"time"
)
func RunPlecoKubernetes(cmd *cobra.Command, interval int64, dryRun bool, wg *sync.WaitGroup) {
wg.Add(1)
go runPlecoOnKube(cmd, interval, dryRun, wg)
}
func runPlecoOnKube(cmd *cobra.Command, interval int64, dryRun bool, wg *sync.WaitGroup) {
defer wg.Done()
// Kubernetes connection
var k8sClientSet *kubernetes.Clientset
var err error
kubernetesEnabled := true
KubernetesConn, _ := cmd.Flags().GetString("kube-conn")
tagName, _ := cmd.Flags().GetString("tag-name")
switch KubernetesConn {
case "in":
k8sClientSet, err = AuthenticateInCluster()
case "out":
k8sClientSet, err = AuthenticateOutOfCluster()
default:
kubernetesEnabled = false
}
if err != nil {
logrus.Errorf("failed to authenticate on kubernetes with %s connection: %v", KubernetesConn, err)
}
// check Kubernetes
for {
if kubernetesEnabled {
err := DeleteExpiredNamespaces(k8sClientSet, tagName, dryRun)
if err != nil {
logrus.Error(err)
}
}
time.Sleep(time.Duration(interval) * time.Second)
}
}