From 8a53149eeffcc3844808c643bd59b462a562b92a Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Tue, 7 Jun 2016 15:32:37 -0400 Subject: [PATCH] upup: use protokube This wires up protokube, replacing a lot of the nodeup functionality. The option of not using protokube is retained, via the _not_protokube tag. --- upup/cmd/cloudup/main.go | 49 +++++++++++++------ upup/cmd/nodeup/main.go | 2 - .../_not_protokube/master-disk/NOTES.md | 5 ++ .../master-disk/disks/_aws/master-pd | 0 .../master-disk/disks/_gce/master-pd | 0 .../files/mnt/master-pd/srv/kubernetes.meta | 0 .../mnt/master-pd/srv/kubernetes/.gitignore | 1 + .../files/mnt/master-pd/srv/sshproxy.meta | 0 .../mnt/master-pd/srv/sshproxy/.gitignore | 1 + .../files/mnt/master-pd/var/etcd.meta | 0 .../files/mnt/master-pd/var/etcd/.gitignore | 1 + .../master-disk/files/srv/kubernetes.meta | 0 .../master-disk/files/srv/sshproxy.meta | 0 .../master-disk/files/var/etcd.meta | 0 .../kubernetes/manifests/etcd-events.manifest | 0 .../etc/kubernetes/manifests/etcd.manifest | 0 .../var/log/etcd-events.log | 0 .../var/log/etcd-events.log.meta | 0 .../var/log/etcd.log | 0 .../var/log/etcd.log.meta | 0 .../files/etc/sysconfig/protokube.template | 4 +- .../_protokube/services/protokube.service | 4 +- 22 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/NOTES.md rename upup/models/nodeup/_kubernetes_master/{ => _not_protokube}/master-disk/disks/_aws/master-pd (100%) rename upup/models/nodeup/_kubernetes_master/{ => _not_protokube}/master-disk/disks/_gce/master-pd (100%) rename upup/models/nodeup/_kubernetes_master/{ => _not_protokube}/master-disk/files/mnt/master-pd/srv/kubernetes.meta (100%) create mode 100644 upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/kubernetes/.gitignore rename upup/models/nodeup/_kubernetes_master/{ => _not_protokube}/master-disk/files/mnt/master-pd/srv/sshproxy.meta (100%) create mode 100644 upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/sshproxy/.gitignore rename upup/models/nodeup/_kubernetes_master/{ => _not_protokube}/master-disk/files/mnt/master-pd/var/etcd.meta (100%) create mode 100644 upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/var/etcd/.gitignore rename upup/models/nodeup/_kubernetes_master/{ => _not_protokube}/master-disk/files/srv/kubernetes.meta (100%) rename upup/models/nodeup/_kubernetes_master/{ => _not_protokube}/master-disk/files/srv/sshproxy.meta (100%) rename upup/models/nodeup/_kubernetes_master/{ => _not_protokube}/master-disk/files/var/etcd.meta (100%) rename upup/models/nodeup/_kubernetes_master/etcd/{files => _not_protokube}/etc/kubernetes/manifests/etcd-events.manifest (100%) rename upup/models/nodeup/_kubernetes_master/etcd/{files => _not_protokube}/etc/kubernetes/manifests/etcd.manifest (100%) rename upup/models/nodeup/_kubernetes_master/etcd/{files => _not_protokube}/var/log/etcd-events.log (100%) rename upup/models/nodeup/_kubernetes_master/etcd/{files => _not_protokube}/var/log/etcd-events.log.meta (100%) rename upup/models/nodeup/_kubernetes_master/etcd/{files => _not_protokube}/var/log/etcd.log (100%) rename upup/models/nodeup/_kubernetes_master/etcd/{files => _not_protokube}/var/log/etcd.log.meta (100%) diff --git a/upup/cmd/cloudup/main.go b/upup/cmd/cloudup/main.go index 64c9fd7c51..452045ff8a 100644 --- a/upup/cmd/cloudup/main.go +++ b/upup/cmd/cloudup/main.go @@ -108,6 +108,8 @@ func (c *CreateClusterCmd) LoadConfig(configFile string) error { } func (c *CreateClusterCmd) Run() error { + useProtokube := true + if c.StateDir == "" { return fmt.Errorf("state dir is required") } @@ -146,6 +148,12 @@ func (c *CreateClusterCmd) Run() error { c.Config.NodeUp.Location = location } + if useProtokube { + location := "https://kubeupv2.s3.amazonaws.com/protokube/protokube.tar.gz" + glog.Infof("Using default protokube location: %q", location) + c.Config.Assets = append(c.Config.Assets, location) + } + var cloud fi.Cloud var project string @@ -155,6 +163,14 @@ func (c *CreateClusterCmd) Run() error { c.Config.NodeUpTags = append(c.Config.NodeUpTags, "_jessie", "_debian_family", "_systemd") + if useProtokube { + tags["_protokube"] = struct{}{} + c.Config.NodeUpTags = append(c.Config.NodeUpTags, "_protokube") + } else { + tags["_not_protokube"] = struct{}{} + c.Config.NodeUpTags = append(c.Config.NodeUpTags, "_not_protokube") + } + l.AddTypes(map[string]interface{}{ "keypair": &fitasks.Keypair{}, }) @@ -204,26 +220,31 @@ func (c *CreateClusterCmd) Run() error { c.Config.NodeUpTags = append(c.Config.NodeUpTags, "_aws") l.AddTypes(map[string]interface{}{ - "dhcpOptions": &awstasks.DHCPOptions{}, + // EC2 "elasticIP": &awstasks.ElasticIP{}, - "iamInstanceProfile": &awstasks.IAMInstanceProfile{}, - "iamInstanceProfileRole": &awstasks.IAMInstanceProfileRole{}, - "iamRole": &awstasks.IAMRole{}, - "iamRolePolicy": &awstasks.IAMRolePolicy{}, "instance": &awstasks.Instance{}, "instanceElasticIPAttachment": &awstasks.InstanceElasticIPAttachment{}, "instanceVolumeAttachment": &awstasks.InstanceVolumeAttachment{}, - "internetGateway": &awstasks.InternetGateway{}, - "internetGatewayAttachment": &awstasks.InternetGatewayAttachment{}, "ebsVolume": &awstasks.EBSVolume{}, - "route": &awstasks.Route{}, - "routeTable": &awstasks.RouteTable{}, - "routeTableAssociation": &awstasks.RouteTableAssociation{}, - "securityGroup": &awstasks.SecurityGroup{}, - "securityGroupIngress": &awstasks.SecurityGroupIngress{}, "sshKey": &awstasks.SSHKey{}, - "subnet": &awstasks.Subnet{}, - "vpc": &awstasks.VPC{}, + + // IAM + "iamInstanceProfile": &awstasks.IAMInstanceProfile{}, + "iamInstanceProfileRole": &awstasks.IAMInstanceProfileRole{}, + "iamRole": &awstasks.IAMRole{}, + "iamRolePolicy": &awstasks.IAMRolePolicy{}, + + // VPC / Networking + "dhcpOptions": &awstasks.DHCPOptions{}, + "internetGateway": &awstasks.InternetGateway{}, + "internetGatewayAttachment": &awstasks.InternetGatewayAttachment{}, + "route": &awstasks.Route{}, + "routeTable": &awstasks.RouteTable{}, + "routeTableAssociation": &awstasks.RouteTableAssociation{}, + "securityGroup": &awstasks.SecurityGroup{}, + "securityGroupIngress": &awstasks.SecurityGroupIngress{}, + "subnet": &awstasks.Subnet{}, + "vpc": &awstasks.VPC{}, "vpcDHDCPOptionsAssociation": &awstasks.VPCDHCPOptionsAssociation{}, // ELB diff --git a/upup/cmd/nodeup/main.go b/upup/cmd/nodeup/main.go index 1b195ce173..0a7b17e167 100644 --- a/upup/cmd/nodeup/main.go +++ b/upup/cmd/nodeup/main.go @@ -21,8 +21,6 @@ func main() { target := "direct" flag.StringVar(&target, "target", target, "Target - direct, cloudinit") - flag.Parse() - if dryrun { target = "dryrun" } diff --git a/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/NOTES.md b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/NOTES.md new file mode 100644 index 0000000000..315ddb9a56 --- /dev/null +++ b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/NOTES.md @@ -0,0 +1,5 @@ +/srv/kubernetes - secrets + +/srv/sshproxy - not used in "normal" environments? Contains SSH keypairs for tunnelling. Secrets, really. + +/var/etcd - the etcd data volume. This should be a direct EBS volume diff --git a/upup/models/nodeup/_kubernetes_master/master-disk/disks/_aws/master-pd b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/disks/_aws/master-pd similarity index 100% rename from upup/models/nodeup/_kubernetes_master/master-disk/disks/_aws/master-pd rename to upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/disks/_aws/master-pd diff --git a/upup/models/nodeup/_kubernetes_master/master-disk/disks/_gce/master-pd b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/disks/_gce/master-pd similarity index 100% rename from upup/models/nodeup/_kubernetes_master/master-disk/disks/_gce/master-pd rename to upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/disks/_gce/master-pd diff --git a/upup/models/nodeup/_kubernetes_master/master-disk/files/mnt/master-pd/srv/kubernetes.meta b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/kubernetes.meta similarity index 100% rename from upup/models/nodeup/_kubernetes_master/master-disk/files/mnt/master-pd/srv/kubernetes.meta rename to upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/kubernetes.meta diff --git a/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/kubernetes/.gitignore b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/kubernetes/.gitignore new file mode 100644 index 0000000000..79c7388edd --- /dev/null +++ b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/kubernetes/.gitignore @@ -0,0 +1 @@ +# Needed to add empty directory to git \ No newline at end of file diff --git a/upup/models/nodeup/_kubernetes_master/master-disk/files/mnt/master-pd/srv/sshproxy.meta b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/sshproxy.meta similarity index 100% rename from upup/models/nodeup/_kubernetes_master/master-disk/files/mnt/master-pd/srv/sshproxy.meta rename to upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/sshproxy.meta diff --git a/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/sshproxy/.gitignore b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/sshproxy/.gitignore new file mode 100644 index 0000000000..79c7388edd --- /dev/null +++ b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/srv/sshproxy/.gitignore @@ -0,0 +1 @@ +# Needed to add empty directory to git \ No newline at end of file diff --git a/upup/models/nodeup/_kubernetes_master/master-disk/files/mnt/master-pd/var/etcd.meta b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/var/etcd.meta similarity index 100% rename from upup/models/nodeup/_kubernetes_master/master-disk/files/mnt/master-pd/var/etcd.meta rename to upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/var/etcd.meta diff --git a/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/var/etcd/.gitignore b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/var/etcd/.gitignore new file mode 100644 index 0000000000..79c7388edd --- /dev/null +++ b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/mnt/master-pd/var/etcd/.gitignore @@ -0,0 +1 @@ +# Needed to add empty directory to git \ No newline at end of file diff --git a/upup/models/nodeup/_kubernetes_master/master-disk/files/srv/kubernetes.meta b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/srv/kubernetes.meta similarity index 100% rename from upup/models/nodeup/_kubernetes_master/master-disk/files/srv/kubernetes.meta rename to upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/srv/kubernetes.meta diff --git a/upup/models/nodeup/_kubernetes_master/master-disk/files/srv/sshproxy.meta b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/srv/sshproxy.meta similarity index 100% rename from upup/models/nodeup/_kubernetes_master/master-disk/files/srv/sshproxy.meta rename to upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/srv/sshproxy.meta diff --git a/upup/models/nodeup/_kubernetes_master/master-disk/files/var/etcd.meta b/upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/var/etcd.meta similarity index 100% rename from upup/models/nodeup/_kubernetes_master/master-disk/files/var/etcd.meta rename to upup/models/nodeup/_kubernetes_master/_not_protokube/master-disk/files/var/etcd.meta diff --git a/upup/models/nodeup/_kubernetes_master/etcd/files/etc/kubernetes/manifests/etcd-events.manifest b/upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/etc/kubernetes/manifests/etcd-events.manifest similarity index 100% rename from upup/models/nodeup/_kubernetes_master/etcd/files/etc/kubernetes/manifests/etcd-events.manifest rename to upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/etc/kubernetes/manifests/etcd-events.manifest diff --git a/upup/models/nodeup/_kubernetes_master/etcd/files/etc/kubernetes/manifests/etcd.manifest b/upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/etc/kubernetes/manifests/etcd.manifest similarity index 100% rename from upup/models/nodeup/_kubernetes_master/etcd/files/etc/kubernetes/manifests/etcd.manifest rename to upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/etc/kubernetes/manifests/etcd.manifest diff --git a/upup/models/nodeup/_kubernetes_master/etcd/files/var/log/etcd-events.log b/upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/var/log/etcd-events.log similarity index 100% rename from upup/models/nodeup/_kubernetes_master/etcd/files/var/log/etcd-events.log rename to upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/var/log/etcd-events.log diff --git a/upup/models/nodeup/_kubernetes_master/etcd/files/var/log/etcd-events.log.meta b/upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/var/log/etcd-events.log.meta similarity index 100% rename from upup/models/nodeup/_kubernetes_master/etcd/files/var/log/etcd-events.log.meta rename to upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/var/log/etcd-events.log.meta diff --git a/upup/models/nodeup/_kubernetes_master/etcd/files/var/log/etcd.log b/upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/var/log/etcd.log similarity index 100% rename from upup/models/nodeup/_kubernetes_master/etcd/files/var/log/etcd.log rename to upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/var/log/etcd.log diff --git a/upup/models/nodeup/_kubernetes_master/etcd/files/var/log/etcd.log.meta b/upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/var/log/etcd.log.meta similarity index 100% rename from upup/models/nodeup/_kubernetes_master/etcd/files/var/log/etcd.log.meta rename to upup/models/nodeup/_kubernetes_master/etcd/_not_protokube/var/log/etcd.log.meta diff --git a/upup/models/nodeup/_protokube/files/etc/sysconfig/protokube.template b/upup/models/nodeup/_protokube/files/etc/sysconfig/protokube.template index ee08f75dde..eea5e7228c 100644 --- a/upup/models/nodeup/_protokube/files/etc/sysconfig/protokube.template +++ b/upup/models/nodeup/_protokube/files/etc/sysconfig/protokube.template @@ -1,5 +1,5 @@ {{ if HasTag "_kubernetes_master" }} -DAEMON_ARGS="--master=true" +DAEMON_ARGS="--master=true --containerized --v=8" {{ else }} -DAEMON_ARGS="--master=false" +DAEMON_ARGS="--master=false --containerized --v=8" {{ end }} diff --git a/upup/models/nodeup/_protokube/services/protokube.service b/upup/models/nodeup/_protokube/services/protokube.service index 594b77a706..85a3e656b9 100644 --- a/upup/models/nodeup/_protokube/services/protokube.service +++ b/upup/models/nodeup/_protokube/services/protokube.service @@ -1,10 +1,12 @@ [Unit] Description=Kubernetes Protokube Service Documentation=https://github.com/kubernetes/kube-deploy/protokube +After=docker.service [Service] EnvironmentFile=/etc/sysconfig/protokube -ExecStart=/usr/local/bin/protokube "$DAEMON_ARGS" +ExecStartPre=/usr/bin/docker pull kope/protokube +ExecStart=/usr/bin/docker run -v /:/rootfs/ --privileged kope/protokube /usr/bin/protokube "$DAEMON_ARGS" Restart=always RestartSec=2s StartLimitInterval=0