From 461d1b7909bfaa674275fe1b455bfbcc9fd50c4e Mon Sep 17 00:00:00 2001 From: Prashanth Balasubramanian Date: Wed, 5 Aug 2015 14:32:53 -0700 Subject: [PATCH] Add a script to help convert kubeconfig to a secret to share clusters. --- contrib/service-loadbalancer/make_secret.go | 62 +++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 contrib/service-loadbalancer/make_secret.go diff --git a/contrib/service-loadbalancer/make_secret.go b/contrib/service-loadbalancer/make_secret.go new file mode 100644 index 00000000000..735bca39f62 --- /dev/null +++ b/contrib/service-loadbalancer/make_secret.go @@ -0,0 +1,62 @@ +/* +Copyright 2015 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// A tiny script to help conver a given kubeconfig into a secret. +package main + +import ( + "flag" + "fmt" + "github.com/GoogleCloudPlatform/kubernetes/pkg/api" + "github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest" + "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" + "io/ioutil" + "log" +) + +// TODO: +// Add a -o flag that writes to the specified destination file. +var ( + kubeconfig = flag.String("kubeconfig", "", "path to kubeconfig file.") + name = flag.String("name", "kubeconfig", "name to use in the metadata of the secret.") + ns = flag.String("ns", "default", "namespace of the secret.") +) + +func read(file string) []byte { + b, err := ioutil.ReadFile(file) + if err != nil { + log.Fatalf("Cannot read file %v, %v", file, err) + } + return b +} + +func main() { + flag.Parse() + if *kubeconfig == "" { + log.Fatalf("Need to specify --kubeconfig") + } + cfg := read(*kubeconfig) + secret := &api.Secret{ + ObjectMeta: api.ObjectMeta{ + Name: *name, + Namespace: *ns, + }, + Data: map[string][]byte{ + "config": cfg, + }, + } + fmt.Printf(runtime.EncodeOrDie(latest.Codec, secret)) +}