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
|
||||
ConvertStdout bool
|
||||
ConvertEmptyVols bool
|
||||
ConvertInsecureRepo bool
|
||||
ConvertDeploymentConfig bool
|
||||
ConvertReplicas int
|
||||
ConvertOpt kobject.ConvertOptions
|
||||
@ -68,6 +69,7 @@ var convertCmd = &cobra.Command{
|
||||
BuildBranch: ConvertBuildBranch,
|
||||
CreateDeploymentConfig: ConvertDeploymentConfig,
|
||||
EmptyVols: ConvertEmptyVols,
|
||||
InsecureRepository: ConvertInsecureRepo,
|
||||
IsDeploymentFlag: cmd.Flags().Lookup("deployment").Changed,
|
||||
IsDaemonSetFlag: cmd.Flags().Lookup("daemon-set").Changed,
|
||||
IsReplicationControllerFlag: cmd.Flags().Lookup("replication-controller").Changed,
|
||||
@ -101,9 +103,11 @@ func init() {
|
||||
|
||||
// OpenShift only
|
||||
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(&ConvertBuildBranch, "build-branch", "", "Specify repository branch to use for buildconfig (default master)")
|
||||
convertCmd.Flags().MarkHidden("deployment-config")
|
||||
convertCmd.Flags().MarkHidden("insecure-repository")
|
||||
convertCmd.Flags().MarkHidden("build-repo")
|
||||
convertCmd.Flags().MarkHidden("build-branch")
|
||||
|
||||
@ -138,6 +142,7 @@ Resource Flags:
|
||||
--daemon-set Generate a Kubernetes daemonset object
|
||||
-d, --deployment Generate a Kubernetes deployment 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
|
||||
|
||||
Flags:
|
||||
|
||||
17
cmd/up.go
17
cmd/up.go
@ -26,9 +26,10 @@ import (
|
||||
|
||||
// TODO: comment
|
||||
var (
|
||||
UpReplicas int
|
||||
UpEmptyVols bool
|
||||
UpOpt kobject.ConvertOptions
|
||||
UpReplicas int
|
||||
UpEmptyVols bool
|
||||
UpInsecureRepo bool
|
||||
UpOpt kobject.ConvertOptions
|
||||
)
|
||||
|
||||
var upCmd = &cobra.Command{
|
||||
@ -39,10 +40,11 @@ var upCmd = &cobra.Command{
|
||||
|
||||
// Create the Convert options.
|
||||
UpOpt = kobject.ConvertOptions{
|
||||
Replicas: UpReplicas,
|
||||
InputFiles: GlobalFiles,
|
||||
Provider: strings.ToLower(GlobalProvider),
|
||||
EmptyVols: UpEmptyVols,
|
||||
Replicas: UpReplicas,
|
||||
InputFiles: GlobalFiles,
|
||||
Provider: strings.ToLower(GlobalProvider),
|
||||
EmptyVols: UpEmptyVols,
|
||||
InsecureRepository: UpInsecureRepo,
|
||||
}
|
||||
|
||||
// Validate before doing anything else.
|
||||
@ -56,5 +58,6 @@ var upCmd = &cobra.Command{
|
||||
func init() {
|
||||
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().BoolVar(&UpInsecureRepo, "insecure-repository", false, "Use an insecure Docker repository for OpenShift ImageStream")
|
||||
RootCmd.AddCommand(upCmd)
|
||||
}
|
||||
|
||||
@ -43,6 +43,7 @@ type ConvertOptions struct {
|
||||
GenerateYaml bool
|
||||
GenerateJSON bool
|
||||
EmptyVols bool
|
||||
InsecureRepository bool
|
||||
Replicas int
|
||||
InputFiles []string
|
||||
OutFile string
|
||||
|
||||
@ -75,7 +75,22 @@ var unsupportedKey = map[string]bool{}
|
||||
// getImageTag get tag name from image name
|
||||
// if no tag is specified return 'latest'
|
||||
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 {
|
||||
return p[1]
|
||||
}
|
||||
@ -144,9 +159,14 @@ func getAbsBuildContext(context string, composeFileDir string) (string, error) {
|
||||
}
|
||||
|
||||
// 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)
|
||||
|
||||
var importPolicy imageapi.TagImportPolicy
|
||||
if opt.InsecureRepository {
|
||||
importPolicy = imageapi.TagImportPolicy{Insecure: true}
|
||||
}
|
||||
|
||||
var tags map[string]imageapi.TagReference
|
||||
if service.Build == "" {
|
||||
tags = map[string]imageapi.TagReference{
|
||||
@ -155,6 +175,7 @@ func (o *OpenShift) initImageStream(name string, service kobject.ServiceConfig)
|
||||
Kind: "DockerImage",
|
||||
Name: service.Image,
|
||||
},
|
||||
ImportPolicy: importPolicy,
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -333,7 +354,7 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
|
||||
if opt.CreateDeploymentConfig {
|
||||
objects = append(objects, o.initDeploymentConfig(name, service, opt.Replicas)) // OpenShift DeploymentConfigs
|
||||
// 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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user