Skip to content

Commit 3909e7c

Browse files
authored
Merge pull request #280 from intelops/pvc
Pvc
2 parents c84116d + 0ae4bba commit 3909e7c

File tree

5 files changed

+39
-32
lines changed

5 files changed

+39
-32
lines changed

agent/kubviz/kubePreUpgrade.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,19 +79,21 @@ func publishK8sDepricated_Deleted_Api(result *model.Result, js nats.JetStreamCon
7979
}
8080

8181
func KubePreUpgradeDetector(config *rest.Config, js nats.JetStreamContext) error {
82-
swaggerdir, err := os.MkdirTemp("", "kubepug")
82+
pvcMountPath := "/mnt/agent/kbz"
83+
uniqueDir := fmt.Sprintf("%s/kubepug", pvcMountPath)
84+
err := os.Mkdir(uniqueDir, 0755)
8385
if err != nil {
8486
return err
8587
}
86-
filename := fmt.Sprintf("%s/swagger-%s.json", swaggerdir, k8sVersion)
88+
89+
filename := fmt.Sprintf("%s/swagger-%s.json", uniqueDir, k8sVersion)
8790
url := fmt.Sprintf("%s/%s/%s", baseURL, k8sVersion, fileURL)
8891
err = downloadFile(filename, url)
8992
if err != nil {
9093
return err
9194
}
92-
defer os.RemoveAll(swaggerdir)
93-
swaggerfile := filename
94-
kubernetesAPIs, err := PopulateKubeAPIMap(swaggerfile)
95+
defer os.RemoveAll(filename)
96+
kubernetesAPIs, err := PopulateKubeAPIMap(filename)
9597
if err != nil {
9698
return err
9799
}
@@ -102,7 +104,6 @@ func KubePreUpgradeDetector(config *rest.Config, js nats.JetStreamContext) error
102104

103105
func PopulateKubeAPIMap(swagfile string) (model.KubernetesAPIs, error) {
104106
var kubeAPIs = make(model.KubernetesAPIs)
105-
// log.Infof("Populating the PopulateKubeAPIMap")
106107
jsonFile, err := os.Open(swagfile)
107108
if err != nil {
108109
log.Error(err)

agent/kubviz/outdated.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -447,13 +447,6 @@ func splitOutlierSemvers(allSemverTags []*semver.Version) ([]*semver.Version, []
447447
return outliers, remaining, nil
448448
}
449449

450-
// func homeDir() string {
451-
// if h := os.Getenv("HOME"); h != "" {
452-
// return h
453-
// }
454-
// return os.Getenv("USERPROFILE")
455-
// }
456-
457450
type VersionTag struct {
458451
Sort int `json:"sort"`
459452
Version string `json:"version"`

agent/kubviz/trivy.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package main
33
import (
44
"bytes"
55
"encoding/json"
6+
"fmt"
67
"log"
8+
"os"
79
exec "os/exec"
810
"strings"
911

@@ -29,8 +31,15 @@ func executeCommandTrivy(command string) ([]byte, error) {
2931
return outc.Bytes(), err
3032
}
3133
func RunTrivyK8sClusterScan(js nats.JetStreamContext) error {
34+
pvcMountPath := "/mnt/agent/kbz"
35+
trivyCacheDir := fmt.Sprintf("%s/trivy-cache", pvcMountPath)
36+
err := os.MkdirAll(trivyCacheDir, 0755)
37+
if err != nil {
38+
log.Printf("Error creating Trivy cache directory: %v\n", err)
39+
return err
40+
}
3241
var report report.ConsolidatedReport
33-
cmdString := "trivy k8s --report summary cluster --exclude-nodes kubernetes.io/arch:amd64 --timeout 60m -f json --cache-dir /tmp/.cache --debug"
42+
cmdString := fmt.Sprintf("trivy k8s --report summary cluster --exclude-nodes kubernetes.io/arch:amd64 --timeout 60m -f json --cache-dir %s --debug", trivyCacheDir)
3443
clearCacheCmd := "trivy k8s --clear-cache"
3544
out, err := executeCommandTrivy(cmdString)
3645
if err != nil {

agent/kubviz/trivy_image.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"encoding/json"
5+
"fmt"
56
"log"
67
"os"
78
"strings"
@@ -15,6 +16,15 @@ import (
1516
)
1617

1718
func RunTrivyImageScans(config *rest.Config, js nats.JetStreamContext) error {
19+
20+
pvcMountPath := "/mnt/agent/kbz"
21+
trivyImageCacheDir := fmt.Sprintf("%s/trivy-imagecache", pvcMountPath)
22+
err := os.MkdirAll(trivyImageCacheDir, 0755)
23+
if err != nil {
24+
log.Printf("Error creating Trivy Image cache directory: %v\n", err)
25+
return err
26+
}
27+
1828
clearCacheCmd := "trivy image --clear-cache"
1929

2030
images, err := ListImages(config)
@@ -25,7 +35,8 @@ func RunTrivyImageScans(config *rest.Config, js nats.JetStreamContext) error {
2535

2636
for _, image := range images {
2737
var report types.Report
28-
out, err := executeCommand("trivy image " + image.PullableImage + " --timeout 60m -f json -q --cache-dir /tmp/.cache")
38+
scanCmd := fmt.Sprintf("trivy image %s --timeout 60m -f json -q --cache-dir %s", image.PullableImage, trivyImageCacheDir)
39+
out, err := executeCommand(scanCmd)
2940
if err != nil {
3041
log.Printf("Error scanning image %s: %v", image.PullableImage, err)
3142
continue // Move on to the next image in case of an error
@@ -74,12 +85,3 @@ func publishImageScanReports(report types.Report, js nats.JetStreamContext) erro
7485
log.Printf("Trivy image report with ID:%s has been published\n", metrics.ID)
7586
return nil
7687
}
77-
78-
func cleanupCache(cacheDir string) {
79-
err := os.RemoveAll(cacheDir)
80-
if err != nil {
81-
log.Printf("Failed to clean up cache directory %s: %v", cacheDir, err)
82-
} else {
83-
log.Printf("Cache directory %s cleaned up successfully", cacheDir)
84-
}
85-
}

agent/kubviz/trivy_sbom.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77
"log"
8+
"os"
89
"os/exec"
910

1011
"github.com/aquasecurity/trivy/pkg/sbom/cyclonedx"
@@ -47,18 +48,20 @@ func executeCommandSbom(command string) ([]byte, error) {
4748

4849
func RunTrivySbomScan(config *rest.Config, js nats.JetStreamContext) error {
4950
clearCacheCmd := "trivy image --clear-cache"
50-
51-
log.Println("trivy sbom run started")
51+
pvcMountPath := "/mnt/agent/kbz"
52+
trivySbomCacheDir := fmt.Sprintf("%s/trivy-sbomcache", pvcMountPath)
53+
err := os.MkdirAll(trivySbomCacheDir, 0755)
54+
if err != nil {
55+
log.Printf("Error creating Trivy cache directory: %v\n", err)
56+
return err
57+
}
5258
images, err := ListImages(config)
53-
5459
if err != nil {
5560
log.Printf("failed to list images: %v", err)
5661
}
5762
for _, image := range images {
58-
59-
command := fmt.Sprintf("trivy image --format cyclonedx %s %s", image.PullableImage, "--cache-dir /tmp/.cache")
60-
out, err := executeCommandSbom(command)
61-
63+
sbomcmd := fmt.Sprintf("trivy image --format cyclonedx %s --cache-dir %s", image.PullableImage, trivySbomCacheDir)
64+
out, err := executeCommandSbom(sbomcmd)
6265
if err != nil {
6366
log.Printf("Error executing Trivy for image sbom %s: %v", image.PullableImage, err)
6467
continue // Move on to the next image in case of an error
@@ -69,7 +72,6 @@ func RunTrivySbomScan(config *rest.Config, js nats.JetStreamContext) error {
6972
log.Printf("Trivy output is empty for image sbom %s", image.PullableImage)
7073
continue // Move on to the next image
7174
}
72-
7375
var report cyclonedx.BOM
7476
err = json.Unmarshal(out, &report)
7577
if err != nil {

0 commit comments

Comments
 (0)