mirror of https://github.com/kubernetes/kops.git
Merge pull request #343 from justinsb/custom_build
Make it easy to run a custom build
This commit is contained in:
commit
14aa1dc18f
|
@ -5,8 +5,8 @@ After=docker.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
EnvironmentFile=/etc/sysconfig/protokube
|
EnvironmentFile=/etc/sysconfig/protokube
|
||||||
ExecStartPre=/usr/bin/docker pull kope/protokube:1.3
|
ExecStartPre=/usr/bin/docker pull {{ ProtokubeImage }}
|
||||||
ExecStart=/usr/bin/docker run -v /:/rootfs/ --privileged kope/protokube:1.3 /usr/bin/protokube "$DAEMON_ARGS"
|
ExecStart=/usr/bin/docker run -v /:/rootfs/ --privileged {{ ProtokubeImage }} /usr/bin/protokube "$DAEMON_ARGS"
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=2s
|
RestartSec=2s
|
||||||
StartLimitInterval=0
|
StartLimitInterval=0
|
|
@ -129,8 +129,13 @@ func (c *ApplyClusterCmd) Run() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.NodeUpSource == "" {
|
if c.NodeUpSource == "" {
|
||||||
location := "https://kubeupv2.s3.amazonaws.com/nodeup/nodeup-1.3.tar.gz"
|
location := os.Getenv("NODEUP_URL")
|
||||||
glog.Infof("Using default nodeup location: %q", location)
|
if location == "" {
|
||||||
|
location = "https://kubeupv2.s3.amazonaws.com/nodeup/nodeup-1.3.tar.gz"
|
||||||
|
glog.Infof("Using default nodeup location: %q", location)
|
||||||
|
} else {
|
||||||
|
glog.Warningf("Using nodeup location from NODEUP_URL env var: %q", location)
|
||||||
|
}
|
||||||
c.NodeUpSource = location
|
c.NodeUpSource = location
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -350,6 +355,19 @@ func (c *ApplyClusterCmd) Run() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
config.Images = images
|
config.Images = images
|
||||||
|
|
||||||
|
{
|
||||||
|
protokubeImage := os.Getenv("PROTOKUBE_IMAGE")
|
||||||
|
if protokubeImage != "" {
|
||||||
|
glog.Warningf("Using protokube image specified in PROTOKUBE_IMAGE env var: %q", protokubeImage)
|
||||||
|
} else {
|
||||||
|
protokubeImage = nodeup.DefaultProtokubeImage
|
||||||
|
}
|
||||||
|
config.ProtokubeImage = &nodeup.Image{
|
||||||
|
Source: protokubeImage,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
yaml, err := api.ToYaml(config)
|
yaml, err := api.ToYaml(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
|
|
@ -21,6 +21,9 @@ type NodeUpConfig struct {
|
||||||
// Technically this is redundant - it is in ClusterLocation, but this can serve as a cross-check,
|
// Technically this is redundant - it is in ClusterLocation, but this can serve as a cross-check,
|
||||||
// and it allows us to more easily identify the cluster, for example when we are deleting resources.
|
// and it allows us to more easily identify the cluster, for example when we are deleting resources.
|
||||||
ClusterName string `json:",omitempty"`
|
ClusterName string `json:",omitempty"`
|
||||||
|
|
||||||
|
// ProtokubeImage is the docker image to load for protokube (bootstrapping)
|
||||||
|
ProtokubeImage *Image `json:"protokubeImage"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Image is a docker image we should pre-load
|
// Image is a docker image we should pre-load
|
||||||
|
|
|
@ -124,7 +124,18 @@ func (r *Loader) newTaskHandler(prefix string, builder TaskBuilder) loader.Handl
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
task, err := builder(i.Name, contents, i.Meta)
|
name := i.Name
|
||||||
|
if strings.HasSuffix(name, ".template") {
|
||||||
|
name = strings.TrimSuffix(name, ".template")
|
||||||
|
expanded, err := r.executeTemplate(name, contents)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("error executing template %q: %v", i.RelativePath, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
contents = expanded
|
||||||
|
}
|
||||||
|
|
||||||
|
task, err := builder(name, contents, i.Meta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error building %s for %q: %v", i.Name, i.Path, err)
|
return fmt.Errorf("error building %s for %q: %v", i.Name, i.Path, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@ import (
|
||||||
|
|
||||||
const TagMaster = "_kubernetes_master"
|
const TagMaster = "_kubernetes_master"
|
||||||
|
|
||||||
|
const DefaultProtokubeImage = "kope/protokube:1.3"
|
||||||
|
|
||||||
// templateFunctions is a simple helper-class for the functions accessible to templates
|
// templateFunctions is a simple helper-class for the functions accessible to templates
|
||||||
type templateFunctions struct {
|
type templateFunctions struct {
|
||||||
nodeupConfig *NodeUpConfig
|
nodeupConfig *NodeUpConfig
|
||||||
|
@ -98,6 +100,8 @@ func (t *templateFunctions) populate(dest template.FuncMap) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dest["ClusterName"] = func() string { return t.cluster.Name }
|
dest["ClusterName"] = func() string { return t.cluster.Name }
|
||||||
|
|
||||||
|
dest["ProtokubeImage"] = t.ProtokubeImage
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsMaster returns true if we are tagged as a master
|
// IsMaster returns true if we are tagged as a master
|
||||||
|
@ -174,3 +178,16 @@ func (t *templateFunctions) GetToken(key string) (string, error) {
|
||||||
}
|
}
|
||||||
return string(token.Data), nil
|
return string(token.Data), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ProtokubeImage returns the docker image for protokube
|
||||||
|
func (t *templateFunctions) ProtokubeImage() string {
|
||||||
|
image := ""
|
||||||
|
if t.nodeupConfig.ProtokubeImage != nil {
|
||||||
|
image = t.nodeupConfig.ProtokubeImage.Source
|
||||||
|
}
|
||||||
|
if image == "" {
|
||||||
|
// use current default corresponding to this version of nodeup
|
||||||
|
image = DefaultProtokubeImage
|
||||||
|
}
|
||||||
|
return image
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue