Skip to content

Commit b94c788

Browse files
Keerthan Malamboersma
authored andcommitted
feat(k8s): switch from channels to io.Writers
1 parent 1cf73d1 commit b94c788

9 files changed

Lines changed: 65 additions & 176 deletions

File tree

Vagrantfile

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@ end
1212
CLOUD_CONFIG_PATH = File.join(File.dirname(__FILE__), "contrib", "coreos", "user-data")
1313
CONFIG = File.join(File.dirname(__FILE__), "config.rb")
1414

15-
user_data = File.read(CLOUD_CONFIG_PATH)
16-
new_userdata = user_data.gsub("--iface=eth0", "--iface=eth1")
17-
18-
File.open(CLOUD_CONFIG_PATH, "w") {|file| file.puts new_userdata }
19-
2015
# Defaults for config options defined in CONFIG
2116
$num_instances = 1
2217
$instance_name_prefix = "deis"

contrib/coreos/user-data.example

Lines changed: 3 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,6 @@ write_files:
159159
- path: /etc/deis-release
160160
content: |
161161
DEIS_RELEASE=v1.8.0
162-
- path: /etc/k8environment
163-
content: |
164-
K8S_VERSION=v1.0.1
165162
- path: /etc/motd
166163
content: " \e[31m* * \e[34m* \e[32m***** \e[39mddddd eeeeeee iiiiiii ssss\n\e[31m* * \e[34m* * \e[32m* * \e[39md d e e i s s\n \e[31m* * \e[34m***** \e[32m***** \e[39md d e i s\n\e[32m***** \e[31m* * \e[34m* \e[39md d e i s\n\e[32m* * \e[31m* * \e[34m* * \e[39md d eee i sss\n\e[32m***** \e[31m* * \e[34m***** \e[39md d e i s\n \e[34m* \e[32m***** \e[31m* * \e[39md d e i s\n \e[34m* * \e[32m* * \e[31m* * \e[39md d e e i s s\n\e[34m***** \e[32m***** \e[31m* * \e[39mddddd eeeeeee iiiiiii ssss\n\n\e[39mWelcome to Deis\t\t\tPowered by Core\e[38;5;45mO\e[38;5;206mS\e[39m\n"
167164
- path: /etc/profile.d/nse-function.sh
@@ -319,40 +316,6 @@ write_files:
319316
# removing the node from etcd
320317
NODE=$($ETCDCTL member list | grep `cat /etc/machine-id` | cut -d ':' -f 1)
321318
$ETCDCTL member remove $NODE
322-
- path: /opt/bin/download-k8s-binary
323-
permissions: '0755'
324-
content: |
325-
#!/bin/bash
326-
327-
. /etc/k8environment
328-
329-
mkdir -p /opt/bin
330-
331-
FILE=$1
332-
if [ ! -f /opt/bin/$FILE ]; then
333-
curl -sSL -o /opt/bin/$FILE https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/linux/amd64/$FILE
334-
chmod +x /opt/bin/$FILE
335-
else
336-
# we check the version of the binary
337-
INSTALLED_VERSION=$(/opt/bin/$FILE --version)
338-
MATCH=$(echo "${INSTALLED_VERSION}" | grep -c "${K8S_VERSION}")
339-
if [ $MATCH -eq 0 ]; then
340-
# the version is different
341-
curl -sSL -o /opt/bin/$FILE https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/linux/amd64/$FILE
342-
chmod +x /opt/bin/$FILE
343-
fi
344-
fi
345-
- path: /opt/bin/kube-serviceaccount
346-
permissions: '0755'
347-
content: |
348-
#!/bin/bash
349-
350-
if etcdctl get /kube-serviceaccount >/dev/null 2>&1; then
351-
etcdctl get /kube-serviceaccount > /opt/bin/kube-serviceaccount.key
352-
else
353-
/bin/openssl genrsa -out /opt/bin/kube-serviceaccount.key 2048 2>/dev/null
354-
etcdctl set /kube-serviceaccount < /opt/bin/kube-serviceaccount.key
355-
fi
356319
- path: /opt/bin/wupiao
357320
permissions: '0755'
358321
content: |
@@ -367,11 +330,8 @@ write_files:
367330
permissions: '0755'
368331
content: |
369332
#!/bin/bash
370-
371-
. /etc/k8environment
372-
333+
export K8S_VERSION="v1.0.1"
373334
mkdir -p /opt/bin
374-
375335
FILE=$1
376336
if [ ! -f /opt/bin/$FILE ]; then
377337
curl -sSL -o /opt/bin/$FILE https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/linux/amd64/$FILE
@@ -386,56 +346,12 @@ write_files:
386346
chmod +x /opt/bin/$FILE
387347
fi
388348
fi
389-
- path: /opt/bin/kube-serviceaccount
390-
permissions: '0755'
391-
content: |
392-
#!/bin/bash
393-
394-
if etcdctl get /kube-serviceaccount >/dev/null 2>&1; then
395-
etcdctl get /kube-serviceaccount > /opt/bin/kube-serviceaccount.key
396-
else
397-
/bin/openssl genrsa -out /opt/bin/kube-serviceaccount.key 2048 2>/dev/null
398-
etcdctl set /kube-serviceaccount < /opt/bin/kube-serviceaccount.key
399-
fi
400349
- path: /opt/bin/scheduler-policy.json
401350
content: |
402351
{
403352
"kind": "Policy",
404353
"apiVersion": "v1",
405-
"predicates": [
406-
{
407-
"name": "PodFitsPorts"
408-
},
409-
{
410-
"name": "PodFitsResources"
411-
},
412-
{
413-
"name": "NoDiskConflict"
414-
},
415-
{
416-
"name": "MatchNodeSelector"
417-
},
418-
{
419-
"name": "HostName"
420-
}
421-
],
422-
"priorities": [
423-
{
424-
"name": "LeastRequestedPriority",
425-
"weight": 1
426-
},
427-
{
428-
"name": "BalancedResourceAllocation",
429-
"weight": 1
430-
},
431-
{
432-
"name": "ServiceSpreadingPriority",
433-
"weight": 2
434-
},
435-
{
436-
"name": "EqualPriority",
437-
"weight": 1
438-
}
439-
]
354+
"predicates": [{"name": "PodFitsPorts"},{"name": "PodFitsResources"},{"name": "NoDiskConflict"},{"name": "MatchNodeSelector"},{"name": "HostName"}],
355+
"priorities": [{"name": "LeastRequestedPriority","weight": 1},{"name": "BalancedResourceAllocation","weight": 1},{"name": "ServiceSpreadingPriority","weight": 2},{"name": "EqualPriority","weight": 1}]
440356
}
441357
manage_etc_hosts: localhost

deisctl/cmd/cmd.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ const (
2828
swarm string = "swarm"
2929
mesos string = "mesos"
3030
// DefaultRouterMeshSize defines the default number of routers to be loaded when installing the platform.
31-
DefaultRouterMeshSize uint8 = 3
32-
k8s string = "k8s"
31+
DefaultRouterMeshSize uint8 = 3
32+
k8s string = "k8s"
3333
)
3434

3535
// ListUnits prints a list of installed units.
@@ -85,8 +85,7 @@ func Start(targets []string, b backend.Backend) error {
8585
return StartMesos(b)
8686
case swarm:
8787
return StartSwarm(b)
88-
}
89-
if targets[0] == k8s {
88+
case k8s:
9089
return StartK8s(b)
9190
}
9291
}
@@ -189,8 +188,7 @@ func Stop(targets []string, b backend.Backend) error {
189188
return StopMesos(b)
190189
case swarm:
191190
return StopSwarm(b)
192-
}
193-
if targets[0] == k8s {
191+
case k8s:
194192
return StopK8s(b)
195193
}
196194
}
@@ -291,8 +289,7 @@ func Install(targets []string, b backend.Backend, checkKeys func() error) error
291289
return InstallMesos(b)
292290
case swarm:
293291
return InstallSwarm(b)
294-
}
295-
if targets[0] == k8s {
292+
case k8s:
296293
return InstallK8s(b)
297294
}
298295
}
@@ -360,8 +357,7 @@ func Uninstall(targets []string, b backend.Backend) error {
360357
return UninstallMesos(b)
361358
case swarm:
362359
return UnInstallSwarm(b)
363-
}
364-
if targets[0] == k8s {
360+
case k8s:
365361
return UnInstallK8s(b)
366362
}
367363
}

deisctl/cmd/k8s.go

Lines changed: 36 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -2,105 +2,79 @@ package cmd
22

33
import (
44
"fmt"
5+
"io"
56
"sync"
6-
"time"
77

88
"github.com/deis/deis/deisctl/backend"
9-
"github.com/deis/deis/deisctl/utils"
9+
"github.com/deis/deis/pkg/prettyprint"
1010
)
1111

1212
//InstallK8s Installs K8s
1313
func InstallK8s(b backend.Backend) error {
14-
outchan := make(chan string)
15-
errchan := make(chan error)
16-
defer close(outchan)
17-
defer close(errchan)
1814
var wg sync.WaitGroup
19-
go printState(outchan, errchan, 500*time.Millisecond)
20-
outchan <- utils.DeisIfy("Installing K8s...")
21-
outchan <- fmt.Sprintf("K8s API Server ...")
22-
b.Create([]string{"kube-apiserver"}, &wg, outchan, errchan)
15+
io.WriteString(Stdout, prettyprint.DeisIfy("Installing K8s..."))
16+
fmt.Fprintln(Stdout, "K8s API Server...")
17+
b.Create([]string{"kube-apiserver"}, &wg, Stdout, Stderr)
2318
wg.Wait()
24-
outchan <- fmt.Sprintf("K8s controller and scheduler ...")
25-
b.Create([]string{"kube-controller-manager", "kube-scheduler"}, &wg, outchan, errchan)
19+
fmt.Fprintln(Stdout, "K8s controller and scheduler ...")
20+
b.Create([]string{"kube-controller-manager", "kube-scheduler"}, &wg, Stdout, Stderr)
2621
wg.Wait()
27-
outchan <- fmt.Sprintf("K8s proxy and kubelet ...")
28-
b.Create([]string{"kube-proxy", "kube-kubelet"}, &wg, outchan, errchan)
22+
fmt.Fprintln(Stdout, "K8s proxy and kubelet ...")
23+
b.Create([]string{"kube-proxy", "kube-kubelet"}, &wg, Stdout, Stderr)
2924
wg.Wait()
30-
fmt.Println("Done.")
31-
fmt.Println()
32-
fmt.Println("Please run `deisctl start k8s` to start K8s.")
25+
fmt.Fprintln(Stdout, "Done.\n ")
26+
fmt.Fprintln(Stdout, "Please run `deisctl start k8s` to start K8s.")
3327
return nil
3428
}
3529

3630
//StartK8s starts K8s Schduler
3731
func StartK8s(b backend.Backend) error {
38-
outchan := make(chan string)
39-
errchan := make(chan error)
40-
defer close(outchan)
41-
defer close(errchan)
4232
var wg sync.WaitGroup
43-
go printState(outchan, errchan, 500*time.Millisecond)
44-
outchan <- utils.DeisIfy("Starting K8s...")
45-
outchan <- fmt.Sprintf("K8s API Server ...")
46-
b.Start([]string{"kube-apiserver"}, &wg, outchan, errchan)
33+
io.WriteString(Stdout, prettyprint.DeisIfy("Starting K8s..."))
34+
fmt.Fprintln(Stdout, "K8s API Server ...")
35+
b.Start([]string{"kube-apiserver"}, &wg, Stdout, Stderr)
4736
wg.Wait()
48-
outchan <- fmt.Sprintf("K8s controller and scheduler ...")
49-
b.Start([]string{"kube-controller-manager", "kube-scheduler"}, &wg, outchan, errchan)
37+
fmt.Fprintln(Stdout, "K8s controller and scheduler ...")
38+
b.Start([]string{"kube-controller-manager", "kube-scheduler"}, &wg, Stdout, Stderr)
5039
wg.Wait()
51-
outchan <- fmt.Sprintf("K8s proxy and kubelet ...")
52-
b.Start([]string{"kube-proxy", "kube-kubelet"}, &wg, outchan, errchan)
40+
fmt.Fprintln(Stdout, "K8s proxy and kubelet ...")
41+
b.Start([]string{"kube-proxy", "kube-kubelet"}, &wg, Stdout, Stderr)
5342
wg.Wait()
54-
fmt.Println("Done.")
55-
fmt.Println("Please run `deisctl config controller set schedulerModule=k8s` to use the K8s scheduler.")
43+
fmt.Fprintln(Stdout, "Done.\n ")
44+
fmt.Fprintln(Stdout, "Please run `deisctl config controller set schedulerModule=k8s` to use the K8s scheduler.")
5645
return nil
5746
}
5847

5948
//StopK8s stops K8s
6049
func StopK8s(b backend.Backend) error {
61-
62-
outchan := make(chan string)
63-
errchan := make(chan error)
64-
defer close(outchan)
65-
defer close(errchan)
6650
var wg sync.WaitGroup
67-
68-
go printState(outchan, errchan, 500*time.Millisecond)
69-
70-
outchan <- utils.DeisIfy("Stopping K8s...")
71-
outchan <- fmt.Sprintf("K8s proxy and kubelet ...")
72-
b.Stop([]string{"kube-proxy", "kube-kubelet"}, &wg, outchan, errchan)
51+
io.WriteString(Stdout, prettyprint.DeisIfy("Stopping K8s..."))
52+
fmt.Fprintln(Stdout, "K8s proxy and kubelet ...")
53+
b.Stop([]string{"kube-proxy", "kube-kubelet"}, &wg, Stdout, Stderr)
7354
wg.Wait()
74-
outchan <- fmt.Sprintf("K8s controller and scheduler ...")
75-
b.Stop([]string{"kube-controller-manager", "kube-scheduler"}, &wg, outchan, errchan)
55+
fmt.Fprintln(Stdout, "K8s controller and scheduler ...")
56+
b.Stop([]string{"kube-controller-manager", "kube-scheduler"}, &wg, Stdout, Stderr)
7657
wg.Wait()
77-
outchan <- fmt.Sprintf("K8s API Server ...")
78-
b.Stop([]string{"kube-apiserver"}, &wg, outchan, errchan)
58+
fmt.Fprintln(Stdout, "K8s API Server ...")
59+
b.Stop([]string{"kube-apiserver"}, &wg, Stdout, Stderr)
7960
wg.Wait()
80-
fmt.Println("Done.")
81-
fmt.Println()
61+
fmt.Fprintln(Stdout, "Done.\n ")
8262
return nil
8363
}
8464

8565
//UnInstallK8s uninstall K8s
8666
func UnInstallK8s(b backend.Backend) error {
87-
outchan := make(chan string)
88-
errchan := make(chan error)
89-
defer close(outchan)
90-
defer close(errchan)
9167
var wg sync.WaitGroup
92-
go printState(outchan, errchan, 500*time.Millisecond)
93-
outchan <- utils.DeisIfy("Destroying K8s...")
94-
outchan <- fmt.Sprintf("K8s proxy and kubelet ...")
95-
b.Destroy([]string{"kube-proxy", "kube-kubelet"}, &wg, outchan, errchan)
68+
io.WriteString(Stdout, prettyprint.DeisIfy("Destroying K8s..."))
69+
fmt.Fprintln(Stdout, "K8s proxy and kubelet ...")
70+
b.Destroy([]string{"kube-proxy", "kube-kubelet"}, &wg, Stdout, Stderr)
9671
wg.Wait()
97-
outchan <- fmt.Sprintf("K8s controller and scheduler ...")
98-
b.Destroy([]string{"kube-controller-manager", "kube-scheduler"}, &wg, outchan, errchan)
72+
fmt.Fprintln(Stdout, "K8s controller and scheduler ...")
73+
b.Destroy([]string{"kube-controller-manager", "kube-scheduler"}, &wg, Stdout, Stderr)
9974
wg.Wait()
100-
outchan <- fmt.Sprintf("K8s API Server ...")
101-
b.Destroy([]string{"kube-apiserver"}, &wg, outchan, errchan)
75+
fmt.Fprintln(Stdout, "K8s API Server ...")
76+
b.Destroy([]string{"kube-apiserver"}, &wg, Stdout, Stderr)
10277
wg.Wait()
103-
fmt.Println("Done.")
104-
fmt.Println()
78+
fmt.Fprintln(Stdout, "Done.\n ")
10579
return nil
10680
}

deisctl/units/deis-kube-apiserver.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ EnvironmentFile=/etc/environment
88
ExecStartPre=-/bin/sh -c "etcdctl get /deis/scheduler/k8s/master >/dev/null 2>&1 || etcdctl mk /deis/scheduler/k8s/master"
99
ExecStartPre=/bin/sh -c "etcdctl set /deis/scheduler/k8s/master $COREOS_PRIVATE_IPV4"
1010
ExecStartPre=/bin/bash -c "/opt/bin/download-k8s-binary kube-apiserver"
11-
ExecStartPre=/opt/bin/kube-serviceaccount
11+
ExecStartPre=/bin/bash -c "if etcdctl get /kube-serviceaccount >/dev/null 2>&1; then etcdctl get /kube-serviceaccount > /opt/bin/kube-serviceaccount.key; else /bin/openssl genrsa -out /opt/bin/kube-serviceaccount.key 2048 2>/dev/null; etcdctl set /kube-serviceaccount < /opt/bin/kube-serviceaccount.key; fi"
1212
ExecStart=/bin/bash -c "/opt/bin/kube-apiserver \
1313
--service_account_key_file=/opt/bin/kube-serviceaccount.key \
1414
--service_account_lookup=false \

deisctl/units/deis-logspout.service

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[Unit]
22
Description=deis-logspout
3-
Requires=docker.socket etcd2.service
4-
After=docker.socket etcd2.service
3+
Requires=docker.socket etcd.service
4+
After=docker.socket etcd.service
55

66
[Service]
77
EnvironmentFile=/etc/environment

deisctl/units/deis-publisher.service

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[Unit]
22
Description=deis-publisher
3-
Requires=docker.socket etcd2.service
4-
After=docker.socket etcd2.service
3+
Requires=docker.socket etcd.service
4+
After=docker.socket etcd.service
55

66
[Service]
77
EnvironmentFile=/etc/environment

deisctl/units/units.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ var Names = []string{
2323
"deis-mesos-master",
2424
"deis-mesos-slave",
2525
"deis-zookeeper",
26+
"deis-kube-apiserver",
27+
"deis-kube-controller-manager",
28+
"deis-kube-kubelet",
29+
"deis-kube-proxy",
30+
"deis-kube-scheduler",
2631
}
2732

2833
// URL is the GitHub url where these units can be refreshed from

0 commit comments

Comments
 (0)