func()

in pkg/mesh/istio.go [520:580]


func (kr *KRun) runIptablesSetup(env []string) error {
	/*
	Injected default:
	  - -p
	    - "15001"
	    - -z
	    - "15006"
	    - -u
	    - "1337"
	    - -m
	    - REDIRECT
	    - -i
	    - '*'
	    - -x
	    - ""
	    - -b
	    - '*'
	    - -d
	    - 15090,15021,15020

	*/
	outRange := kr.Config("OUTBOUND_IP_RANGES_INCLUDE", "10.0.0.0/8")
	// Exclude ports from Envoy capture - hbone-h2, hbone-h2c
	excludePorts := kr.Config("OUTBOUND_PORTS_EXCLUDE", "15008,15009")
	if excludePorts != "15008,15009" {
		excludePorts = excludePorts + ",15008,15009"
	}

	cmd := exec.Command("/usr/local/bin/pilot-agent",
		"istio-iptables",
		// "-p", "15001", // outbound capture port, default value
		//"-z", "15006", - no inbound interception, default value
		"-u", "1337", // REQUIRED - code default is 128
		//"-m", "REDIRECT", // default value
		//"-i", "*", // OUTBOUND_IP_RANGES_INCLUDE
		"-i", outRange, // Alternative - only mesh traffic
		// "-b", "", // disable all inbound redirection, default
		// "-d", "15090,15021,15020", // exclude specific ports from inbound capture, if -b '*'
		"-o", excludePorts,
		//"-x", "", // exclude CIDR, default
	)
	cmd.Env = env
	cmd.Dir = "/"
	so := &bytes.Buffer{}
	se := &bytes.Buffer{}
	cmd.Stdout = so
	cmd.Stderr = se
	err := cmd.Start()
	if err != nil {
		log.Println("Error starting iptables", err, so.String(), "stderr:", se.String())
		return err
	} else {
		err = cmd.Wait()
		if err != nil {
			log.Println("Error starting iptables", err, so.String(), "stderr:", se.String())
			return err
		}
	}
	// TODO: make the stdout/stderr available in a debug endpoint
	return nil
}