1
0
mirror of https://github.com/aquasecurity/kube-bench.git synced 2025-02-16 17:42:05 +00:00

Add version logging (#817)

* Add more logging

issue #816  add more logging for better debug and information about version auto-detection and fix typo

* Fix typo

* Add more logging

issue #816  add more logging for better debug and information about version auto-detection and fix typo

* tidy logging output

Co-authored-by: Liz Rice <liz@lizrice.com>

* tidy logging output

Co-authored-by: Liz Rice <liz@lizrice.com>

* tidy logging output

Co-authored-by: Liz Rice <liz@lizrice.com>

* tidy logging output

Co-authored-by: Liz Rice <liz@lizrice.com>

* tidy logging output

Co-authored-by: Liz Rice <liz@lizrice.com>

* tidy logging output

Co-authored-by: Liz Rice <liz@lizrice.com>

* tidy logging output

Co-authored-by: Liz Rice <liz@lizrice.com>

* Remove extra logging

Co-authored-by: Liz Rice <liz@lizrice.com>
This commit is contained in:
Yoav Rotem 2021-02-23 16:24:14 +02:00 committed by GitHub
parent b2d481812f
commit e308bc1eba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 7 deletions

View File

@ -33,24 +33,28 @@ func (k *KubeVersion) BaseVersion() string {
} }
func getKubeVersionFromRESTAPI() (*KubeVersion, error) { func getKubeVersionFromRESTAPI() (*KubeVersion, error) {
glog.V(2).Info("Try to get version from Rest API")
k8sVersionURL := getKubernetesURL() k8sVersionURL := getKubernetesURL()
serviceaccount := "/var/run/secrets/kubernetes.io/serviceaccount" serviceaccount := "/var/run/secrets/kubernetes.io/serviceaccount"
cacertfile := fmt.Sprintf("%s/ca.crt", serviceaccount) cacertfile := fmt.Sprintf("%s/ca.crt", serviceaccount)
tokenfile := fmt.Sprintf("%s/token", serviceaccount) tokenfile := fmt.Sprintf("%s/token", serviceaccount)
tlsCert, err := loadCertficate(cacertfile) tlsCert, err := loadCertificate(cacertfile)
if err != nil { if err != nil {
glog.V(2).Infof("Failed loading certificate Error: %s", err)
return nil, err return nil, err
} }
tb, err := ioutil.ReadFile(tokenfile) tb, err := ioutil.ReadFile(tokenfile)
if err != nil { if err != nil {
glog.V(2).Infof("Failed reading token file Error: %s", err)
return nil, err return nil, err
} }
token := strings.TrimSpace(string(tb)) token := strings.TrimSpace(string(tb))
data, err := getWebDataWithRetry(k8sVersionURL, token, tlsCert) data, err := getWebDataWithRetry(k8sVersionURL, token, tlsCert)
if err != nil { if err != nil {
glog.V(2).Infof("Failed to get data Error: %s", err)
return nil, err return nil, err
} }
@ -143,7 +147,7 @@ func getWebData(srvURL, token string, cacert *tls.Certificate) ([]byte, error) {
return ioutil.ReadAll(resp.Body) return ioutil.ReadAll(resp.Body)
} }
func loadCertficate(certFile string) (*tls.Certificate, error) { func loadCertificate(certFile string) (*tls.Certificate, error) {
cacert, err := ioutil.ReadFile(certFile) cacert, err := ioutil.ReadFile(certFile)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -11,8 +11,8 @@ import (
"testing" "testing"
) )
func TestLoadCertficate(t *testing.T) { func TestLoadCertificate(t *testing.T) {
tmp, err := ioutil.TempDir("", "TestFakeLoadCertficate") tmp, err := ioutil.TempDir("", "TestFakeLoadCertificate")
if err != nil { if err != nil {
t.Fatalf("unable to create temp directory: %v", err) t.Fatalf("unable to create temp directory: %v", err)
} }
@ -58,7 +58,7 @@ FAjB57z2NcIgJuVpQnGRYtr/JcH2Qdsq8bLtXaojUIWOOqoTDRLYozdMOOQ=
for id, c := range cases { for id, c := range cases {
t.Run(strconv.Itoa(id), func(t *testing.T) { t.Run(strconv.Itoa(id), func(t *testing.T) {
tlsCert, err := loadCertficate(c.file) tlsCert, err := loadCertificate(c.file)
if !c.fail { if !c.fail {
if err != nil { if err != nil {
t.Errorf("unexpected error: %v", err) t.Errorf("unexpected error: %v", err)

View File

@ -291,12 +291,15 @@ func getKubeVersion() (*KubeVersion, error) {
_, err := exec.LookPath("kubectl") _, err := exec.LookPath("kubectl")
if err != nil { if err != nil {
glog.V(3).Infof("Error locating kubectl: %s", err)
_, err = exec.LookPath("kubelet") _, err = exec.LookPath("kubelet")
if err != nil { if err != nil {
glog.V(3).Infof("Error locating kubelet: %s", err)
// Search for the kubelet binary all over the filesystem and run the first match to get the kubernetes version // Search for the kubelet binary all over the filesystem and run the first match to get the kubernetes version
cmd := exec.Command("/bin/sh", "-c", "`find / -type f -executable -name kubelet 2>/dev/null | grep -m1 .` --version") cmd := exec.Command("/bin/sh", "-c", "`find / -type f -executable -name kubelet 2>/dev/null | grep -m1 .` --version")
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err == nil { if err == nil {
glog.V(3).Infof("Found kubelet and query kubernetes version is: %s", string(out))
return getVersionFromKubeletOutput(string(out)), nil return getVersionFromKubeletOutput(string(out)), nil
} }
@ -313,6 +316,7 @@ func getKubeVersionFromKubectl() *KubeVersion {
cmd := exec.Command("kubectl", "version", "-o", "json") cmd := exec.Command("kubectl", "version", "-o", "json")
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
glog.V(2).Infof("Failed to query kubectl: %s", err)
glog.V(2).Info(err) glog.V(2).Info(err)
} }
@ -324,6 +328,7 @@ func getKubeVersionFromKubelet() *KubeVersion {
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
glog.V(2).Infof("Failed to query kubelet: %s", err)
glog.V(2).Info(err) glog.V(2).Info(err)
} }
@ -331,7 +336,7 @@ func getKubeVersionFromKubelet() *KubeVersion {
} }
func getVersionFromKubectlOutput(s string) *KubeVersion { func getVersionFromKubectlOutput(s string) *KubeVersion {
glog.V(2).Info(s) glog.V(2).Infof("Kubectl output: %s", s)
type versionResult struct { type versionResult struct {
ServerVersion VersionResponse ServerVersion VersionResponse
} }
@ -354,7 +359,7 @@ func getVersionFromKubectlOutput(s string) *KubeVersion {
} }
func getVersionFromKubeletOutput(s string) *KubeVersion { func getVersionFromKubeletOutput(s string) *KubeVersion {
glog.V(2).Info(s) glog.V(2).Infof("Kubelet output: %s", s)
serverVersionRe := regexp.MustCompile(`Kubernetes v(\d+.\d+)`) serverVersionRe := regexp.MustCompile(`Kubernetes v(\d+.\d+)`)
subs := serverVersionRe.FindStringSubmatch(s) subs := serverVersionRe.FindStringSubmatch(s)
if len(subs) < 2 { if len(subs) < 2 {