forked from LaconicNetwork/kompose
Merge pull request #547 from qujinping/master
Support insecure registry and enhance parsing of image stream tag
This commit is contained in:
commit
e8b98e32f3
@ -38,6 +38,7 @@ var (
|
|||||||
ConvertJSON bool
|
ConvertJSON bool
|
||||||
ConvertStdout bool
|
ConvertStdout bool
|
||||||
ConvertEmptyVols bool
|
ConvertEmptyVols bool
|
||||||
|
ConvertInsecureRepo bool
|
||||||
ConvertDeploymentConfig bool
|
ConvertDeploymentConfig bool
|
||||||
ConvertReplicas int
|
ConvertReplicas int
|
||||||
ConvertOpt kobject.ConvertOptions
|
ConvertOpt kobject.ConvertOptions
|
||||||
@ -68,6 +69,7 @@ var convertCmd = &cobra.Command{
|
|||||||
BuildBranch: ConvertBuildBranch,
|
BuildBranch: ConvertBuildBranch,
|
||||||
CreateDeploymentConfig: ConvertDeploymentConfig,
|
CreateDeploymentConfig: ConvertDeploymentConfig,
|
||||||
EmptyVols: ConvertEmptyVols,
|
EmptyVols: ConvertEmptyVols,
|
||||||
|
InsecureRepository: ConvertInsecureRepo,
|
||||||
IsDeploymentFlag: cmd.Flags().Lookup("deployment").Changed,
|
IsDeploymentFlag: cmd.Flags().Lookup("deployment").Changed,
|
||||||
IsDaemonSetFlag: cmd.Flags().Lookup("daemon-set").Changed,
|
IsDaemonSetFlag: cmd.Flags().Lookup("daemon-set").Changed,
|
||||||
IsReplicationControllerFlag: cmd.Flags().Lookup("replication-controller").Changed,
|
IsReplicationControllerFlag: cmd.Flags().Lookup("replication-controller").Changed,
|
||||||
@ -101,9 +103,11 @@ func init() {
|
|||||||
|
|
||||||
// OpenShift only
|
// OpenShift only
|
||||||
convertCmd.Flags().BoolVar(&ConvertDeploymentConfig, "deployment-config", true, "Generate an OpenShift deploymentconfig object")
|
convertCmd.Flags().BoolVar(&ConvertDeploymentConfig, "deployment-config", true, "Generate an OpenShift deploymentconfig object")
|
||||||
|
convertCmd.Flags().BoolVar(&ConvertInsecureRepo, "insecure-repository", false, "Use an insecure Docker repository for OpenShift ImageStream")
|
||||||
convertCmd.Flags().StringVar(&ConvertBuildRepo, "build-repo", "", "Specify source repository for buildconfig (default remote origin)")
|
convertCmd.Flags().StringVar(&ConvertBuildRepo, "build-repo", "", "Specify source repository for buildconfig (default remote origin)")
|
||||||
convertCmd.Flags().StringVar(&ConvertBuildBranch, "build-branch", "", "Specify repository branch to use for buildconfig (default master)")
|
convertCmd.Flags().StringVar(&ConvertBuildBranch, "build-branch", "", "Specify repository branch to use for buildconfig (default master)")
|
||||||
convertCmd.Flags().MarkHidden("deployment-config")
|
convertCmd.Flags().MarkHidden("deployment-config")
|
||||||
|
convertCmd.Flags().MarkHidden("insecure-repository")
|
||||||
convertCmd.Flags().MarkHidden("build-repo")
|
convertCmd.Flags().MarkHidden("build-repo")
|
||||||
convertCmd.Flags().MarkHidden("build-branch")
|
convertCmd.Flags().MarkHidden("build-branch")
|
||||||
|
|
||||||
@ -138,6 +142,7 @@ Resource Flags:
|
|||||||
--daemon-set Generate a Kubernetes daemonset object
|
--daemon-set Generate a Kubernetes daemonset object
|
||||||
-d, --deployment Generate a Kubernetes deployment object
|
-d, --deployment Generate a Kubernetes deployment object
|
||||||
--deployment-config Generate an OpenShift deployment config object
|
--deployment-config Generate an OpenShift deployment config object
|
||||||
|
--insecure-repository Specify to use insecure docker repository while generating Openshift image stream object
|
||||||
--replication-controller Generate a Kubernetes replication controller object
|
--replication-controller Generate a Kubernetes replication controller object
|
||||||
|
|
||||||
Flags:
|
Flags:
|
||||||
|
|||||||
@ -28,6 +28,7 @@ import (
|
|||||||
var (
|
var (
|
||||||
UpReplicas int
|
UpReplicas int
|
||||||
UpEmptyVols bool
|
UpEmptyVols bool
|
||||||
|
UpInsecureRepo bool
|
||||||
UpOpt kobject.ConvertOptions
|
UpOpt kobject.ConvertOptions
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -43,6 +44,7 @@ var upCmd = &cobra.Command{
|
|||||||
InputFiles: GlobalFiles,
|
InputFiles: GlobalFiles,
|
||||||
Provider: strings.ToLower(GlobalProvider),
|
Provider: strings.ToLower(GlobalProvider),
|
||||||
EmptyVols: UpEmptyVols,
|
EmptyVols: UpEmptyVols,
|
||||||
|
InsecureRepository: UpInsecureRepo,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate before doing anything else.
|
// Validate before doing anything else.
|
||||||
@ -56,5 +58,6 @@ var upCmd = &cobra.Command{
|
|||||||
func init() {
|
func init() {
|
||||||
upCmd.Flags().BoolVar(&UpEmptyVols, "emptyvols", false, "Use empty volumes. Do not generate PersistentVolumeClaim")
|
upCmd.Flags().BoolVar(&UpEmptyVols, "emptyvols", false, "Use empty volumes. Do not generate PersistentVolumeClaim")
|
||||||
upCmd.Flags().IntVar(&UpReplicas, "replicas", 1, "Specify the number of replicas generated")
|
upCmd.Flags().IntVar(&UpReplicas, "replicas", 1, "Specify the number of replicas generated")
|
||||||
|
upCmd.Flags().BoolVar(&UpInsecureRepo, "insecure-repository", false, "Use an insecure Docker repository for OpenShift ImageStream")
|
||||||
RootCmd.AddCommand(upCmd)
|
RootCmd.AddCommand(upCmd)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,6 +43,7 @@ type ConvertOptions struct {
|
|||||||
GenerateYaml bool
|
GenerateYaml bool
|
||||||
GenerateJSON bool
|
GenerateJSON bool
|
||||||
EmptyVols bool
|
EmptyVols bool
|
||||||
|
InsecureRepository bool
|
||||||
Replicas int
|
Replicas int
|
||||||
InputFiles []string
|
InputFiles []string
|
||||||
OutFile string
|
OutFile string
|
||||||
|
|||||||
@ -75,7 +75,22 @@ var unsupportedKey = map[string]bool{}
|
|||||||
// getImageTag get tag name from image name
|
// getImageTag get tag name from image name
|
||||||
// if no tag is specified return 'latest'
|
// if no tag is specified return 'latest'
|
||||||
func getImageTag(image string) string {
|
func getImageTag(image string) string {
|
||||||
p := strings.Split(image, ":")
|
// format: registry_host:registry_port/repo_name/image_name:image_tag
|
||||||
|
// example:
|
||||||
|
// 1) myregistryhost:5000/fedora/httpd:version1.0
|
||||||
|
// 2) myregistryhost:5000/fedora/httpd
|
||||||
|
// 3) myregistryhost/fedora/httpd:version1.0
|
||||||
|
// 4) myregistryhost/fedora/httpd
|
||||||
|
// 5) fedora/httpd
|
||||||
|
// 6) httpd
|
||||||
|
imageAndTag := image
|
||||||
|
|
||||||
|
i := strings.Split(image, "/")
|
||||||
|
if len(i) >= 2 {
|
||||||
|
imageAndTag = i[len(i)-1]
|
||||||
|
}
|
||||||
|
|
||||||
|
p := strings.Split(imageAndTag, ":")
|
||||||
if len(p) == 2 {
|
if len(p) == 2 {
|
||||||
return p[1]
|
return p[1]
|
||||||
}
|
}
|
||||||
@ -144,9 +159,14 @@ func getAbsBuildContext(context string, composeFileDir string) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// initImageStream initialize ImageStream object
|
// initImageStream initialize ImageStream object
|
||||||
func (o *OpenShift) initImageStream(name string, service kobject.ServiceConfig) *imageapi.ImageStream {
|
func (o *OpenShift) initImageStream(name string, service kobject.ServiceConfig, opt kobject.ConvertOptions) *imageapi.ImageStream {
|
||||||
tag := getImageTag(service.Image)
|
tag := getImageTag(service.Image)
|
||||||
|
|
||||||
|
var importPolicy imageapi.TagImportPolicy
|
||||||
|
if opt.InsecureRepository {
|
||||||
|
importPolicy = imageapi.TagImportPolicy{Insecure: true}
|
||||||
|
}
|
||||||
|
|
||||||
var tags map[string]imageapi.TagReference
|
var tags map[string]imageapi.TagReference
|
||||||
if service.Build == "" {
|
if service.Build == "" {
|
||||||
tags = map[string]imageapi.TagReference{
|
tags = map[string]imageapi.TagReference{
|
||||||
@ -155,6 +175,7 @@ func (o *OpenShift) initImageStream(name string, service kobject.ServiceConfig)
|
|||||||
Kind: "DockerImage",
|
Kind: "DockerImage",
|
||||||
Name: service.Image,
|
Name: service.Image,
|
||||||
},
|
},
|
||||||
|
ImportPolicy: importPolicy,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -333,7 +354,7 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
|
|||||||
if opt.CreateDeploymentConfig {
|
if opt.CreateDeploymentConfig {
|
||||||
objects = append(objects, o.initDeploymentConfig(name, service, opt.Replicas)) // OpenShift DeploymentConfigs
|
objects = append(objects, o.initDeploymentConfig(name, service, opt.Replicas)) // OpenShift DeploymentConfigs
|
||||||
// create ImageStream after deployment (creating IS will trigger new deployment)
|
// create ImageStream after deployment (creating IS will trigger new deployment)
|
||||||
objects = append(objects, o.initImageStream(name, service))
|
objects = append(objects, o.initImageStream(name, service, opt))
|
||||||
}
|
}
|
||||||
|
|
||||||
// buildconfig needs to be added to objects after imagestream because of this Openshift bug: https://github.com/openshift/origin/issues/4518
|
// buildconfig needs to be added to objects after imagestream because of this Openshift bug: https://github.com/openshift/origin/issues/4518
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user