-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpushkubeproxy
executable file
·45 lines (35 loc) · 1.55 KB
/
pushkubeproxy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/python
import argparse
import datetime
from util import *
KUBE_PROXY_BASE_IMAGE = "gcr.io/google_containers/debian-iptables-amd64:v4"
KUBE_PROXY_IMAGE_TAR_PATH = "/tmp/kube-proxy.tar"
KUBE_PROXY_BIN_NAME = "kube-proxy"
parser = argparse.ArgumentParser(description='push kubeproxy')
parser.add_argument("--skip-build", dest='build', action='store_false',
help='build kube-proxy image')
parser.add_argument('host', metavar='host', type=str, nargs="?",
help='target host to push')
parser.set_defaults(build=True)
args = parser.parse_args()
kubeproxy_bin_path = search_binary_in_k8s_output_path('kube-proxy')
if args.build:
print
"============= Build kube-proxy image tarball ================"
tag = "mykubeproxy:" + datetime.datetime.now().strftime("%Y%m%d%H%M")
build_kube_image(KUBE_PROXY_BASE_IMAGE, kubeproxy_bin_path, KUBE_PROXY_BIN_NAME, tag=tag)
build_kube_image_tarball(tag, output_path=KUBE_PROXY_IMAGE_TAR_PATH)
docker_rmi(tag)
else:
tag = retrieve_image_tag(KUBE_PROXY_IMAGE_TAR_PATH)
instance = get_target_gce_instance(args.host)
print
"============= Push new kube-proxy ================"
gcloud_compute_copy_file_to_host(instance.name, KUBE_PROXY_IMAGE_TAR_PATH)
cmd = """sudo bash -c '
docker load < kube-proxy.tar
ls -al ~/kube-proxy.manifest > /dev/null 2>&1 || cp /etc/kubernetes/manifests/kube-proxy.manifest ~/kube-proxy.manifest
sed -i "s/image:.*/image: {}/" /etc/kubernetes/manifests/kube-proxy.manifest
'
"""
gcloud_compute_ssh_command(instance.zone, instance.name, cmd.format(tag))