Added ability to limit Kubedoom to a specific namespace

This commit is contained in:
Chris Pressland
2021-08-19 17:23:00 +01:00
parent 759d3edd4e
commit bb91f2a1bc
2 changed files with 13 additions and 6 deletions

View File

@ -30,6 +30,8 @@ $ docker run -p5901:5900 \
storaxdev/kubedoom:0.5.0
```
Optionally, if you set `-e NAMESPACE={your namespace}` you can limit Kubedoom to deleting pods in a single namespace
### With Podman
Run `storaxdev/kubedoom:0.5.0` with podman locally:
@ -97,7 +99,7 @@ the worker node. Then run kubedoom inside the cluster by applying the manifest
provided in this repository:
```console
$ kubectl apply -f manifest/
$ kubectl apply -k manifest/
namespace/kubedoom created
deployment.apps/kubedoom created
serviceaccount/kubedoom created

View File

@ -25,7 +25,7 @@ func hash(input string) int32 {
func runCmd(cmdstring string) {
parts := strings.Split(cmdstring, " ")
cmd := exec.Command(parts[0], parts[1:len(parts)]...)
cmd := exec.Command(parts[0], parts[1:]...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err := cmd.Run()
@ -35,7 +35,7 @@ func runCmd(cmdstring string) {
}
func outputCmd(argv []string) string {
cmd := exec.Command(argv[0], argv[1:len(argv)]...)
cmd := exec.Command(argv[0], argv[1:]...)
cmd.Stderr = os.Stderr
output, err := cmd.Output()
if err != nil {
@ -46,7 +46,7 @@ func outputCmd(argv []string) string {
func startCmd(cmdstring string) {
parts := strings.Split(cmdstring, " ")
cmd := exec.Command(parts[0], parts[1:len(parts)]...)
cmd := exec.Command(parts[0], parts[1:]...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
@ -65,7 +65,12 @@ type podmode struct {
}
func (m podmode) getEntities() []string {
args := []string{"kubectl", "get", "pods", "-A", "-o", "go-template", "--template={{range .items}}{{.metadata.namespace}}/{{.metadata.name}} {{end}}"}
var args []string
if namespace, exists := os.LookupEnv("NAMESPACE"); exists {
args = []string{"kubectl", "get", "pods", "--namespace", namespace, "-o", "go-template", "--template={{range .items}}{{.metadata.namespace}}/{{.metadata.name}} {{end}}"}
} else {
args = []string{"kubectl", "get", "pods", "-A", "-o", "go-template", "--template={{range .items}}{{.metadata.namespace}}/{{.metadata.name}} {{end}}"}
}
output := outputCmd(args)
outputstr := strings.TrimSpace(output)
pods := strings.Split(outputstr, " ")
@ -97,7 +102,7 @@ func (m nsmode) deleteEntity(entity string) {
}
func socketLoop(listener net.Listener, mode Mode) {
for true {
for {
conn, err := listener.Accept()
if err != nil {
panic(err)