Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@mofelee
Forked from ffledgling/k8s-create-deployment.go
Created November 9, 2017 06:31
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mofelee/36b996d5c161dc60d551b52f3848a464 to your computer and use it in GitHub Desktop.
Save mofelee/36b996d5c161dc60d551b52f3848a464 to your computer and use it in GitHub Desktop.
kubernetes client-go example: Create a Deployment based on json
package main
import (
"encoding/json"
"log"
"os"
// We use pretty instead of the common go-spew or pretty-printing because,
// go-spew is vendored in client-go and causes problems
"github.com/kr/pretty"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
extensionsv1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1"
)
var (
kubeconfig = "/home/ffledgling/.kube/config"
dbjson = "/tmp/deployment.json"
)
func ListDeployments() {
// Read the Deplolyment's json.
file, err := os.Open(dbjson)
if err != nil {
panic(err.Error())
}
dec := json.NewDecoder(file)
// Parse it into the internal k8s structs
var dep extensionsv1beta1.Deployment
dec.Decode(&dep)
// Dump the struct in case you want to see what it looks like
pretty.Println(dep)
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
if err != nil {
panic(err.Error())
}
// creates the clientset
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
deploymentsClient := clientset.ExtensionsV1beta1().Deployments("namespace-ffledgling")
// List existing deployments in namespace
deployments, err := deploymentsClient.List(metav1.ListOptions{})
if err != nil {
log.Println(err)
} else {
for i, e := range deployments.Items {
log.Printf("Deployment #%d\n", i)
log.Printf("%s", e.ObjectMeta.SelfLink)
}
}
// Create a new deployment based on our template.
if result, err := deploymentsClient.Create(&dep); err != nil {
log.Println("ERROR:", err.Error())
} else {
pretty.Println(result)
}
}
func main() {
ListDeployments()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment