forked from LaconicNetwork/kompose
support kompose up
This commit is contained in:
parent
c4d62c99ee
commit
8a8a063703
149
cli/app/app.go
149
cli/app/app.go
@ -43,8 +43,8 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
//client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
//cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
@ -908,7 +908,7 @@ type convertOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Convert komposeObject to K8S controllers
|
// Convert komposeObject to K8S controllers
|
||||||
func komposeConvert(komposeObject KomposeObject, opt convertOptions) {
|
func komposeConvert(komposeObject KomposeObject, opt convertOptions) (map[string][]byte, map[string][]byte, map[string][]byte, map[string][]byte, map[string][]byte, []string) {
|
||||||
mServices := make(map[string][]byte)
|
mServices := make(map[string][]byte)
|
||||||
mReplicationControllers := make(map[string][]byte)
|
mReplicationControllers := make(map[string][]byte)
|
||||||
mDeployments := make(map[string][]byte)
|
mDeployments := make(map[string][]byte)
|
||||||
@ -916,9 +916,6 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) {
|
|||||||
// OpenShift DeploymentConfigs
|
// OpenShift DeploymentConfigs
|
||||||
mDeploymentConfigs := make(map[string][]byte)
|
mDeploymentConfigs := make(map[string][]byte)
|
||||||
|
|
||||||
f := createOutFile(opt.outFile)
|
|
||||||
defer f.Close()
|
|
||||||
|
|
||||||
var svcnames []string
|
var svcnames []string
|
||||||
|
|
||||||
for name, service := range komposeObject.ServiceConfigs {
|
for name, service := range komposeObject.ServiceConfigs {
|
||||||
@ -1041,6 +1038,10 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) {
|
|||||||
mDeploymentConfigs[name] = dataDeploymentConfig
|
mDeploymentConfigs[name] = dataDeploymentConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return mServices, mDeployments, mDaemonSets, mReplicationControllers, mDeploymentConfigs, svcnames
|
||||||
|
}
|
||||||
|
|
||||||
|
func printControllers(mServices, mDeployments, mDaemonSets, mReplicationControllers, mDeploymentConfigs map[string][]byte, svcnames []string, opt convertOptions, f *os.File) {
|
||||||
for k, v := range mServices {
|
for k, v := range mServices {
|
||||||
if v != nil {
|
if v != nil {
|
||||||
print(k, "svc", v, opt.toStdout, opt.generateYaml, f)
|
print(k, "svc", v, opt.toStdout, opt.generateYaml, f)
|
||||||
@ -1138,7 +1139,6 @@ func Convert(c *cli.Context) {
|
|||||||
|
|
||||||
komposeObject := KomposeObject{}
|
komposeObject := KomposeObject{}
|
||||||
file := inputFile
|
file := inputFile
|
||||||
// Convert komposeObject to K8S controllers
|
|
||||||
opt := convertOptions{
|
opt := convertOptions{
|
||||||
toStdout: toStdout,
|
toStdout: toStdout,
|
||||||
createD: createD,
|
createD: createD,
|
||||||
@ -1159,7 +1159,14 @@ func Convert(c *cli.Context) {
|
|||||||
komposeObject = loadComposeFile(inputFile, opt)
|
komposeObject = loadComposeFile(inputFile, opt)
|
||||||
}
|
}
|
||||||
|
|
||||||
komposeConvert(komposeObject, opt)
|
// Convert komposeObject to K8S controllers
|
||||||
|
mServices, mDeployments, mDaemonSets, mReplicationControllers, mDeploymentConfigs, svcnames := komposeConvert(komposeObject, opt)
|
||||||
|
|
||||||
|
f := createOutFile(opt.outFile)
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
// Print output
|
||||||
|
printControllers(mServices, mDeployments, mDaemonSets, mReplicationControllers, mDeploymentConfigs, svcnames, opt, f)
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkUnsupportedKey(service interface{}) {
|
func checkUnsupportedKey(service interface{}) {
|
||||||
@ -1202,80 +1209,60 @@ func print(name, trailing string, data []byte, toStdout, generateYaml bool, f *o
|
|||||||
|
|
||||||
// Up brings up rc, svc.
|
// Up brings up rc, svc.
|
||||||
func Up(c *cli.Context) {
|
func Up(c *cli.Context) {
|
||||||
//factory := cmdutil.NewFactory(nil)
|
logrus.Infof("We are going to create deployment controller and service for your dockerized application. \n" +
|
||||||
//clientConfig, err := factory.ClientConfig()
|
"If you need more kind of controllers, consider to use kompose convert and kubectl")
|
||||||
//if err != nil {
|
|
||||||
// logrus.Fatalf("Failed to get Kubernetes client config: %v", err)
|
|
||||||
//}
|
|
||||||
//client := client.NewOrDie(clientConfig)
|
|
||||||
//
|
|
||||||
//files, err := ioutil.ReadDir(".")
|
|
||||||
//if err != nil {
|
|
||||||
// logrus.Fatalf("Failed to load rc, svc manifest files: %s\n", err)
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//// submit svc first
|
|
||||||
//sc := &api.Service{}
|
|
||||||
//for _, file := range files {
|
|
||||||
// if strings.Contains(file.Name(), "svc") {
|
|
||||||
// datasvc, err := ioutil.ReadFile(file.Name())
|
|
||||||
//
|
|
||||||
// if err != nil {
|
|
||||||
// logrus.Fatalf("Failed to load %s: %s\n", file.Name(), err)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if strings.Contains(file.Name(), "json") {
|
|
||||||
// err := json.Unmarshal(datasvc, &sc)
|
|
||||||
// if err != nil {
|
|
||||||
// logrus.Fatalf("Failed to unmarshal file %s to svc object: %s\n", file.Name(), err)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if strings.Contains(file.Name(), "yaml") {
|
|
||||||
// err := yaml.Unmarshal(datasvc, &sc)
|
|
||||||
// if err != nil {
|
|
||||||
// logrus.Fatalf("Failed to unmarshal file %s to svc object: %s\n", file.Name(), err)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// // submit sc to k8s
|
|
||||||
// scCreated, err := client.Services(api.NamespaceDefault).Create(sc)
|
|
||||||
// if err != nil {
|
|
||||||
// fmt.Println(err)
|
|
||||||
// }
|
|
||||||
// logrus.Debugf("%s\n", scCreated)
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//// then submit rc
|
|
||||||
//rc := &api.ReplicationController{}
|
|
||||||
//for _, file := range files {
|
|
||||||
// if strings.Contains(file.Name(), "rc") {
|
|
||||||
// datarc, err := ioutil.ReadFile(file.Name())
|
|
||||||
//
|
|
||||||
// if err != nil {
|
|
||||||
// logrus.Fatalf("Failed to load %s: %s\n", file.Name(), err)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if strings.Contains(file.Name(), "json") {
|
|
||||||
// err := json.Unmarshal(datarc, &rc)
|
|
||||||
// if err != nil {
|
|
||||||
// logrus.Fatalf("Failed to unmarshal file %s to rc object: %s\n", file.Name(), err)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if strings.Contains(file.Name(), "yaml") {
|
|
||||||
// err := yaml.Unmarshal(datarc, &rc)
|
|
||||||
// if err != nil {
|
|
||||||
// logrus.Fatalf("Failed to unmarshal file %s to rc object: %s\n", file.Name(), err)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// // submit rc to k8s
|
|
||||||
// rcCreated, err := client.ReplicationControllers(api.NamespaceDefault).Create(rc)
|
|
||||||
// if err != nil {
|
|
||||||
// fmt.Println(err)
|
|
||||||
// }
|
|
||||||
// logrus.Debugf("%s\n", rcCreated)
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
inputFile := c.String("file")
|
||||||
|
dabFile := c.String("bundle")
|
||||||
|
|
||||||
|
komposeObject := KomposeObject{}
|
||||||
|
opt := convertOptions{}
|
||||||
|
|
||||||
|
if len(dabFile) > 0 {
|
||||||
|
komposeObject = loadBundlesFile(dabFile, opt)
|
||||||
|
} else {
|
||||||
|
komposeObject = loadComposeFile(inputFile, opt)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert komposeObject to K8S controllers
|
||||||
|
mServices, mDeployments, _, _, _, _ := komposeConvert(komposeObject, opt)
|
||||||
|
|
||||||
|
factory := cmdutil.NewFactory(nil)
|
||||||
|
clientConfig, err := factory.ClientConfig()
|
||||||
|
if err != nil {
|
||||||
|
logrus.Fatalf("Failed to get Kubernetes client config: %v", err)
|
||||||
|
}
|
||||||
|
client := client.NewOrDie(clientConfig)
|
||||||
|
|
||||||
|
// submit svc first
|
||||||
|
sc := &api.Service{}
|
||||||
|
for k, v := range mServices {
|
||||||
|
err := json.Unmarshal(v, &sc)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Fatalf("Failed to unmarshal %s to service object: %s\n", k, err)
|
||||||
|
}
|
||||||
|
//submit sc to k8s
|
||||||
|
scCreated, err := client.Services(api.NamespaceDefault).Create(sc)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Fatalf("Failed to create service %s: ", k, err)
|
||||||
|
}
|
||||||
|
logrus.Debugf("%s\n", scCreated)
|
||||||
|
}
|
||||||
|
|
||||||
|
// then submit dc
|
||||||
|
dc := &extensions.Deployment{}
|
||||||
|
for k, v := range mDeployments {
|
||||||
|
err := json.Unmarshal(v, &dc)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Fatalf("Failed to unmarshal %s to deployment controller object: %s\n", k, err)
|
||||||
|
}
|
||||||
|
//submit sc to k8s
|
||||||
|
dcCreated, err := client.Deployments(api.NamespaceDefault).Create(dc)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Fatalf("Failed to create deployment controller %s: ", k, err)
|
||||||
|
}
|
||||||
|
logrus.Debugf("%s\n", dcCreated)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// updateController updates the given object with the given pod template update function and ObjectMeta update function
|
// updateController updates the given object with the given pod template update function and ObjectMeta update function
|
||||||
|
|||||||
@ -89,10 +89,23 @@ func ConvertCommand() cli.Command {
|
|||||||
func UpCommand() cli.Command {
|
func UpCommand() cli.Command {
|
||||||
return cli.Command{
|
return cli.Command{
|
||||||
Name: "up",
|
Name: "up",
|
||||||
Usage: "Submit rc, svc objects to kubernetes API endpoint",
|
Usage: "Deploy your Dockerized application to Kubernetes (by default create dc and svc)",
|
||||||
Action: func(c *cli.Context) {
|
Action: func(c *cli.Context) {
|
||||||
app.Up(c)
|
app.Up(c)
|
||||||
},
|
},
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "file,f",
|
||||||
|
Usage: fmt.Sprintf("Specify an alternate compose file (default: %s)", app.DefaultComposeFile),
|
||||||
|
Value: app.DefaultComposeFile,
|
||||||
|
EnvVar: "COMPOSE_FILE",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "bundle,dab",
|
||||||
|
Usage: "Specify a Distributed Application Bundle (DAB) file",
|
||||||
|
EnvVar: "DAB_FILE",
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user