Skip to content

Commit 958f902

Browse files
committed
Add a guide container
+ Vacuum cron Fixes docker-archive#623 + Start integrating buoy + Start integrating cleanup Signed-off-by: David Gageot <[email protected]>
1 parent 30abc7b commit 958f902

File tree

13 files changed

+110
-8
lines changed

13 files changed

+110
-8
lines changed

Diff for: Makefile

+2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@ buoy:
3434
$(MAKE) -C tools/buoy
3535
mkdir -p aws/dockerfiles/files/bin || true
3636
mkdir -p azure/dockerfiles/files/bin || true
37+
mkdir -p gcp/dockerfiles/guide/bin || true
3738
cp tools/buoy/bin/buoy aws/dockerfiles/files/bin/buoy
3839
cp tools/buoy/bin/buoy azure/dockerfiles/files/bin/buoy
40+
cp tools/buoy/bin/buoy gcp/dockerfiles/guide/bin/buoy
3941

4042
moby/alpine/cloud/azure/vhd_blob_url.out: moby
4143
$(MAKE) -C moby/alpine azure

Diff for: gcp/dockerfiles/guide/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
bin

Diff for: gcp/dockerfiles/guide/Dockerfile

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM alpine:3.5
2+
3+
RUN apk add --update bash openssh ca-certificates sudo curl jq tar python py-setuptools shadow
4+
5+
ENTRYPOINT ["/entry.sh"]
6+
7+
RUN mkdir -p /usr/docker /var/log/docker/
8+
COPY crontab.txt /usr/docker/
9+
COPY entry.sh /
10+
COPY vacuum.sh cleanup.sh buoy.sh /usr/bin/
11+
COPY bin/buoy /usr/bin
12+
13+
RUN /usr/bin/crontab /usr/docker/crontab.txt

Diff for: gcp/dockerfiles/guide/Makefile

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
DOCKER_REPO_OWNER ?= docker4x
2+
DOCKER_REPO ?= ${DOCKER_REPO_OWNER}/guide-gcp
3+
DOCKER_TAG ?= latest
4+
DOCKER_IMAGE ?= ${DOCKER_REPO}:${DOCKER_TAG}
5+
DOCKER_BUILD_FLAGS ?= --no-cache --pull
6+
DOCKER_PUSH ?= true
7+
8+
.PHONY: all build push
9+
.DEFAULT: all
10+
all: build push
11+
12+
build:
13+
@docker build $(DOCKER_BUILD_FLAGS) -t $(DOCKER_IMAGE) .
14+
15+
push:
16+
ifeq ($(DOCKER_PUSH),true)
17+
@docker push $(DOCKER_IMAGE)
18+
endif

Diff for: gcp/dockerfiles/guide/buoy.sh

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash
2+
# this script calls buoy with correct parameters
3+
if [ "$NODE_TYPE" == "worker" ] ; then
4+
# this doesn't run on workers, only managers.
5+
exit 0
6+
fi
7+
8+
IS_LEADER=$(docker node inspect self -f '{{ .ManagerStatus.Leader }}')
9+
10+
if [[ "$IS_LEADER" == "true" ]]; then
11+
# we are the leader, so call buoy. We only need to call once, so we only call from the current leader.
12+
NUM_MANAGERS=$(docker info | grep Managers | cut -f2 -d: | sed -e 's/^[ \t]*//')
13+
TOTAL_NODES=$(docker info | grep Nodes | cut -f2 -d: | sed -e 's/^[ \t]*//')
14+
NUM_WORKERS=$(expr $TOTAL_NODES - $NUM_MANAGERS)
15+
NUM_SERVICES=$(docker service ls -q | wc -w)
16+
DOCKER_VERSION=$(docker version --format '{{.Server.Version}}')
17+
SWARM_ID=$(docker info | grep ClusterID | cut -f2 -d: | sed -e 's/^[ \t]*//')
18+
19+
/usr/bin/buoy -event="swarm:ping" -workers=$NUM_WORKERS -managers=$NUM_MANAGERS -services=$NUM_SERVICES \
20+
-docker_version=$DOCKER_VERSION -swarm_id=$SWARM_ID -flavor=aws
21+
fi

Diff for: gcp/dockerfiles/guide/cleanup.sh

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
3+
echo "TODO"

Diff for: gcp/dockerfiles/guide/crontab.txt

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# crontab
2+
42 1 * * * /usr/bin/vacuum.sh >> /var/log/docker/vacuum.log
3+
*/5 * * * * /usr/bin/cleanup.sh >> /var/log/docker/cleanup.log
4+
24 * * * * /usr/bin/buoy.sh >> /var/log/docker/buoy.log

Diff for: gcp/dockerfiles/guide/entry.sh

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/sh
2+
3+
echo "Initialize logging for guide daemons"
4+
# setup symlink to output logs from relevant scripts to container logs
5+
ln -s /proc/1/fd/1 /var/log/docker/cleanup.log
6+
7+
# start cron
8+
/usr/sbin/crond -f -l 9 -L /var/log/cron.log

Diff for: gcp/dockerfiles/guide/vacuum.sh

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash
2+
3+
RUN_VACUUM=${RUN_VACUUM:-"no"}
4+
if [[ "$RUN_VACUUM" != "yes" ]] ; then
5+
exit 0
6+
fi
7+
8+
# sleep for a random amount of time, so that we don't run this at the same time on all nodes.
9+
sleep $[ ( $RANDOM % 240 ) + 1 ]
10+
11+
docker system prune --force

Diff for: gcp/templates/startup/script.sh

+19-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ DOCKER_FOR_IAAS_VERSION='{{ VERSION }}'
88

99
docker_run='docker run --label com.docker.editions.system --log-driver=json-file'
1010
docker_daemon="$docker_run -d"
11-
docker_client='-v /var/run/docker.sock:/var/run/docker.sock'
11+
docker_socket='-v /var/run/docker.sock:/var/run/docker.sock'
12+
docker_cli='-v /usr/bin/docker:/usr/bin/docker'
1213

1314
function dockerPull {
1415
for i in $(seq 1 60); do docker pull $1 && break || sleep 1; done
@@ -69,13 +70,25 @@ $docker_daemon --name=accounts \
6970

7071
dockerRm shell
7172
$docker_daemon --name=shell -p 22:22 \
72-
$docker_client \
73-
-v /usr/bin/docker:/usr/bin/docker \
73+
$docker_socket \
74+
$docker_cli \
7475
-v /var/log:/var/log \
7576
-v /home:/home \
7677
--volumes-from=etc \
7778
$shell_image
7879

80+
echo Start guide
81+
82+
guide_image="docker4x/guide-gcp:$DOCKER_FOR_IAAS_VERSION"
83+
dockerPull ${guide_image}
84+
85+
dockerRm guide
86+
$docker_daemon --name=guide \
87+
-e RUN_VACUUM="{{ properties['enableSystemPrune'] }}" \
88+
$docker_socket \
89+
$docker_cli \
90+
$guide_image
91+
7992
{% if (type in ['manager', 'leader']) %}
8093
echo Start infrakit
8194

@@ -92,7 +105,7 @@ dockerRm flavor-combo
92105
$run_plugin --name=flavor-combo $infrakit_image infrakit-flavor-combo --log=5
93106

94107
dockerRm flavor-swarm
95-
$run_plugin --name=flavor-swarm $docker_client $infrakit_image infrakit-flavor-swarm --log=5
108+
$run_plugin --name=flavor-swarm $docker_socket $infrakit_image infrakit-flavor-swarm --log=5
96109

97110
dockerRm flavor-vanilla
98111
$run_plugin --name=flavor-vanilla $infrakit_image infrakit-flavor-vanilla --log=5
@@ -104,15 +117,15 @@ dockerRm instance-gcp
104117
$run_plugin --name=instance-gcp $infrakit_gcp_image infrakit-instance-gcp --log=5
105118

106119
dockerRm manager
107-
$run_plugin --name=manager $docker_client $infrakit_image infrakit-manager swarm --proxy-for-group=group-stateless --name=group --log=5
120+
$run_plugin --name=manager $docker_socket $infrakit_image infrakit-manager swarm --proxy-for-group=group-stateless --name=group --log=5
108121

109122
echo Start Load Balancer Listener
110123

111124
lb_image="docker4x/l4controller-gcp:$DOCKER_FOR_IAAS_VERSION"
112125
dockerPull ${lb_image}
113126

114127
dockerRm lbcontroller
115-
$docker_daemon --name=lbcontroller $docker_client $lb_image run --log=5
128+
$docker_daemon --name=lbcontroller $docker_socket $lb_image run --log=5
116129
{% endif -%}
117130

118131
{% if (type in ['leader']) %}

Diff for: gcp/templates/swarm.jinja.schema

+5
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,8 @@ properties:
5252
type: boolean
5353
default: False
5454
description: Are workers preemptible?
55+
56+
enableSystemPrune:
57+
type: string
58+
default: "yes"
59+
description: Cleans up unused images, containers, networks and volumes

Diff for: tools/buoy/build_buoy.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ docker run --name $DOCKER_CONTAINER_NAME $DOCKER_IMAGE_NAME ./compile_buoy.sh
1717
mkdir -p bin
1818
docker cp $DOCKER_CONTAINER_NAME:/go/bin/buoy bin/buoy
1919

20-
mkdir -p ../../aws/dockerfiles/files/bin/ ../../azure/dockerfiles/files/bin/
20+
mkdir -p ../../aws/dockerfiles/files/bin/ ../../azure/dockerfiles/files/bin/ ../../gcp/dockerfiles/guide/bin/
2121
cp bin/buoy ../../aws/dockerfiles/files/bin/buoy
2222
cp bin/buoy ../../azure/dockerfiles/files/bin/buoy
23+
cp bin/buoy ../../gcp/dockerfiles/guide/bin/buoy

Diff for: tools/buoy/src/buoy/main.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func main() {
2626
numWorkers := flag.Int("workers", 0, "Number of Workers")
2727
numServices := flag.Int("services", 0, "Number of Services")
2828
dockerVersion := flag.String("docker_version", "n/a", "Docker Version")
29-
flavor := flag.String("flavor", "", "IAAS Flavor (aws, azure, etc)")
29+
flavor := flag.String("flavor", "", "IAAS Flavor (aws, azure, gcp, etc)")
3030
swarmID := flag.String("swarm_id", "n/a", "Swarm ID")
3131
nodeID := flag.String("node_id", "", "Node ID")
3232
event := flag.String("event", "n/a", "Event") // identify, init, ping, scale
@@ -44,6 +44,8 @@ func main() {
4444
clientCode = "0Euz80odMWb07uI6cnhFENW3ohikKpb8"
4545
} else if *flavor == "azure" {
4646
clientCode = "1og3BGfY1Dt2aRBSf2SQrUL2VlGBoW5v"
47+
} else if *flavor == "gcp" {
48+
clientCode = "9ol2zcZN0p4mEy9nuWNGysg9mrFoCqZg"
4749
} else {
4850
err := errors.New("unknown flavor")
4951
log.Fatal(err)

0 commit comments

Comments
 (0)