k8s: Add controller manager information collection 47/96347/1
authorPawel Wieczorek <p.wieczorek2@samsung.com>
Fri, 27 Sep 2019 16:26:13 +0000 (18:26 +0200)
committerPawel Wieczorek <p.wieczorek2@samsung.com>
Fri, 27 Sep 2019 16:54:30 +0000 (18:54 +0200)
Issue-ID: SECCOM-235
Change-Id: Ieceb6337f935e6a5a6b94248ccf072229116510a
Signed-off-by: Pawel Wieczorek <p.wieczorek2@samsung.com>
test/security/k8s/src/check/check.go
test/security/k8s/src/check/cmd/check/check.go
test/security/k8s/src/check/rancher/rancher.go
test/security/k8s/src/check/raw/raw.go

index b981482..cf412c1 100644 (file)
@@ -6,6 +6,8 @@ type Informer interface {
        GetAPIParams() ([]string, error)
        // GetSchedulerParams returns scheduler parameters.
        GetSchedulerParams() ([]string, error)
+       // GetControllerManagerParams returns controller manager parameters.
+       GetControllerManagerParams() ([]string, error)
 }
 
 // Command represents commands run on cluster.
@@ -16,15 +18,18 @@ const (
        APIProcess Command = iota
        // SchedulerProcess represents scheduler command ("kube-scheduler").
        SchedulerProcess
+       // ControllerManagerProcess represents controller manager command ("kube-controller-manager").
+       ControllerManagerProcess
 )
 
 func (c Command) String() string {
        names := [...]string{
                "kube-apiserver",
                "kube-scheduler",
+               "kube-controller-manager",
        }
 
-       if c < APIProcess || c > SchedulerProcess {
+       if c < APIProcess || c > ControllerManagerProcess {
                return "exit"
        }
        return names[c]
@@ -38,15 +43,18 @@ const (
        APIService Service = iota
        // SchedulerService represents scheduler service ("kubernetes/scheduler").
        SchedulerService
+       // ControllerManagerService represents controller manager service ("kubernetes/controller-manager").
+       ControllerManagerService
 )
 
 func (s Service) String() string {
        names := [...]string{
                "kubernetes/kubernetes",
                "kubernetes/scheduler",
+               "kubernetes/controller-manager",
        }
 
-       if s < APIService || s > SchedulerService {
+       if s < APIService || s > ControllerManagerService {
                return ""
        }
        return names[s]
index 2d25100..dd089b1 100644 (file)
@@ -48,4 +48,9 @@ func main() {
                log.Fatal(err)
        }
        master.CheckScheduler(schedulerParams)
+
+       _, err = info.GetControllerManagerParams()
+       if err != nil {
+               log.Fatal(err)
+       }
 }
index 41f3c38..842fd3f 100644 (file)
@@ -40,6 +40,12 @@ func (r *Rancher) GetSchedulerParams() ([]string, error) {
        return getProcessParams(check.SchedulerProcess, check.SchedulerService)
 }
 
+// GetControllerManagerParams returns parameters of running Kubernetes scheduler.
+// It queries default environment set in configuration file.
+func (r *Rancher) GetControllerManagerParams() ([]string, error) {
+       return getProcessParams(check.ControllerManagerProcess, check.ControllerManagerService)
+}
+
 func getProcessParams(process check.Command, service check.Service) ([]string, error) {
        hosts, err := listHosts()
        if err != nil {
index 3c5409a..04a6fa5 100644 (file)
@@ -40,6 +40,12 @@ func (r *Raw) GetSchedulerParams() ([]string, error) {
        return getProcessParams(check.SchedulerProcess)
 }
 
+// GetControllerManagerParams returns parameters of running Kubernetes scheduler.
+// It queries only cluster nodes with "controlplane" role.
+func (r *Raw) GetControllerManagerParams() ([]string, error) {
+       return getProcessParams(check.ControllerManagerProcess)
+}
+
 func getProcessParams(process check.Command) ([]string, error) {
        nodes, err := config.GetNodesInfo()
        if err != nil {