Add label 'kompose.controller.type' set service convert controller type

This commit is contained in:
xianlubird
2018-05-12 11:52:23 +08:00
parent b0debf7f03
commit a4efdd6cca
9 changed files with 786 additions and 3 deletions
+2
View File
@@ -33,6 +33,8 @@ const (
LabelServiceExpose = "kompose.service.expose"
// LabelServiceExposeTLSSecret provides the name of the TLS secret to use with the Kubernetes ingress controller
LabelServiceExposeTLSSecret = "kompose.service.expose.tls-secret"
// LabelControllerType defines the type of controller to be created
LabelControllerType = "kompose.controller.type"
// ServiceTypeHeadless ...
ServiceTypeHeadless = "Headless"
+22 -3
View File
@@ -48,6 +48,7 @@ import (
"sort"
"strings"
"github.com/kubernetes/kompose/pkg/loader/compose"
"github.com/pkg/errors"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/labels"
@@ -67,6 +68,12 @@ const TIMEOUT = 300
// PVCRequestSize (Persistent Volume Claim) has default size
const PVCRequestSize = "100Mi"
const (
DeploymentController = "deployment"
DaemonSetController = "daemonset"
ReplicationController = "replicationcontroller"
)
// CheckUnsupportedKey checks if given komposeObject contains
// keys that are not supported by this transformer.
// list of all unsupported keys are stored in unsupportedKey variable
@@ -635,13 +642,25 @@ func (k *Kubernetes) CreateKubernetesObjects(name string, service kobject.Servic
}
}
if opt.CreateD || opt.Controller == "deployment" {
//Resolve labels first
if val, ok := service.Labels[compose.LabelControllerType]; ok {
opt.CreateD = false
opt.CreateDS = false
opt.CreateRC = false
if opt.Controller != "" {
log.Warnf("Use label %s type %s for service %s, ignore %s flags", compose.LabelControllerType, val, name, opt.Controller)
}
opt.Controller = val
}
if opt.CreateD || opt.Controller == DeploymentController {
objects = append(objects, k.InitD(name, service, replica))
}
if opt.CreateDS || opt.Controller == "daemonset" {
if opt.CreateDS || opt.Controller == DaemonSetController {
objects = append(objects, k.InitDS(name, service))
}
if opt.CreateRC || opt.Controller == "replicationcontroller" {
if opt.CreateRC || opt.Controller == ReplicationController {
objects = append(objects, k.InitRC(name, service, replica))
}