feat(tiller): allow specifying namespace on cli

pull/660/head
Matt Butcher 9 years ago
parent 9e7000fc6d
commit 9d78c33b69

@ -15,10 +15,13 @@ import (
ctx "golang.org/x/net/context" ctx "golang.org/x/net/context"
) )
var srv *releaseServer
func init() { func init() {
srv := &releaseServer{ srv = &releaseServer{
env: env, env: env,
} }
srv.env.Namespace = namespace
services.RegisterReleaseServiceServer(rootServer, srv) services.RegisterReleaseServiceServer(rootServer, srv)
} }

@ -21,6 +21,7 @@ var rootServer = grpc.NewServer()
var env = environment.New() var env = environment.New()
var addr = ":44134" var addr = ":44134"
var namespace = ""
const globalUsage = `The Kubernetes Helm server. const globalUsage = `The Kubernetes Helm server.
@ -37,11 +38,14 @@ var rootCommand = &cobra.Command{
} }
func main() { func main() {
rootCommand.PersistentFlags().StringVarP(&addr, "listen", "l", ":44134", "The address:port to listen on") pf := rootCommand.PersistentFlags()
pf.StringVarP(&addr, "listen", "l", ":44134", "The address:port to listen on")
pf.StringVarP(&namespace, "namespace", "n", "", "The namespace Tiller calls home")
rootCommand.Execute() rootCommand.Execute()
} }
func start(c *cobra.Command, args []string) { func start(c *cobra.Command, args []string) {
setNamespace()
lstn, err := net.Listen("tcp", addr) lstn, err := net.Listen("tcp", addr)
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "Server died: %s\n", err) fmt.Fprintf(os.Stderr, "Server died: %s\n", err)
@ -55,3 +59,20 @@ func start(c *cobra.Command, args []string) {
os.Exit(1) os.Exit(1)
} }
} }
// setNamespace sets the namespace.
//
// It checks for the --namespace flag first, then checks the environment
// (set by Downward API), then goes to default.
func setNamespace() {
if len(namespace) != 0 {
fmt.Printf("Setting namespace to %q\n", namespace)
srv.env.Namespace = namespace
} else if ns := os.Getenv("DEFAULT_NAMESPACE"); len(ns) != 0 {
fmt.Printf("Inhereting namespace %q from Downward API\n", ns)
srv.env.Namespace = ns
} else {
fmt.Printf("Using default namespace %q", environment.DefaultNamespace)
srv.env.Namespace = environment.DefaultNamespace
}
}

@ -77,7 +77,11 @@ spec:
name: tiller name: tiller
spec: spec:
containers: containers:
- env: [] - env:
- name: DEFAULT_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: {{default "gcr.io/kubernetes-helm/tiller:canary" .Tiller.Image}} image: {{default "gcr.io/kubernetes-helm/tiller:canary" .Tiller.Image}}
name: tiller name: tiller
ports: ports:

Loading…
Cancel
Save