Skip to content

Commit f6b102e

Browse files
authored
Merge pull request #4 from Mirantis/ivan4th/fix-plain-kubeadm-deployment
Support deployments on plain kubeadm installations & fix dockershim setup
2 parents 0c6e984 + 86fbbe5 commit f6b102e

5 files changed

+42
-100
lines changed

build-package.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ go build 1>&2
1212

1313
# https://www.debian.org/doc/manuals/maint-guide/update.en.html#idm3360
1414
date="$(LANG=C date -R)"
15-
version="$(git describe 2>/dev/null | sed 's/[^0-9.]//g' || true)"
15+
version="$(git describe 2>/dev/null | sed 's/^v\|-g.*//g' || true)"
1616
version="${version:-0.0.0}"
1717
author="Ivan Shvedunov <[email protected]>"
1818

criproxy.sh

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ set -o errtrace
77
api_version=1.8
88
version_str=
99
if hash kubectl 2>/dev/null; then
10-
version_str="$(kubectl --version)"
10+
version_str="$(kubectl version --short --client)"
1111
elif hash hyperkube 2>/dev/null; then
12-
version_str="$(hyperkube kubectl --version)"
12+
version_str="$(hyperkube --version)"
1313
elif [[ -x /k8s/hyperkube ]]; then
1414
# kubeadm-dind-cluster
15-
version_str="$(/k8s/hyperkube kubectl --version)"
15+
version_str="$(/k8s/hyperkube --version)"
1616
fi
17-
17+
1818
if [[ ${version_str} =~ v1\.7\. ]]; then
1919
api_version=1.7
2020
fi

debian/criproxy-nodeps.install

-4
This file was deleted.

debian/criproxy-nodeps.install

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
criproxy.install

debian/criproxy-nodeps.postinst

-68
This file was deleted.

debian/criproxy-nodeps.postinst

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
criproxy.postinst

debian/criproxy.postinst

+35-23
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/sh -x
1+
#!/bin/bash
22
# see: dh_installdeb(1)
33

44
set -o errexit
@@ -16,35 +16,47 @@ set -o nounset
1616
# for details, see http://www.debian.org/doc/debian-policy/ or
1717
# the debian-policy package
1818

19-
20-
case "$1" in
21-
configure)
22-
kubelet_service_file=/lib/systemd/system/kubelet.service
23-
if [ ! -f ${kubelet_service_file} ]; then
24-
kubelet_service_file=/lib/systemd/system/kubelet.service
25-
if [ ! -f ${kubelet_service_file} ]; then
26-
echo "can't find kubelet.service" >&2
27-
exit 1
28-
fi
19+
function make_dochershim_service {
20+
kubelet_service_file=/lib/systemd/system/kubelet.service
21+
if [[ ! -f ${kubelet_service_file} ]]; then
22+
kubelet_service_file=/etc/systemd/system/kubelet.service
23+
if [[ ! -f ${kubelet_service_file} ]]; then
24+
echo "can't find kubelet.service" >&2
25+
exit 1
2926
fi
30-
cp -r "${kubelet_service_file}" /etc/systemd/system/dockershim.service
31-
if [ -d /etc/systemd/system/kubelet.service.d ]; then
32-
cp -r /etc/systemd/system/kubelet.service.d /etc/systemd/system/dockershim.service.d
33-
rm -f /etc/systemd/system/dockershim.service.d/99-criproxy.conf
27+
fi
28+
cp -r "${kubelet_service_file}" /etc/systemd/system/dockershim.service
29+
# only copy the dir if it's non-empty
30+
if [[ -d /etc/systemd/system/kubelet.service.d && $(ls -A "/etc/systemd/system/kubelet.service.d") ]]; then
31+
cp -r /etc/systemd/system/kubelet.service.d /etc/systemd/system/dockershim.service.d
32+
rm -f /etc/systemd/system/dockershim.service.d/99-criproxy.conf
33+
if [[ $(ls -A "/etc/systemd/system/dockershim.service.d") ]]; then
34+
sed -i 's@\(ExecStart.*kubelet\)@\1 --experimental-dockershim --port 11250@' /etc/systemd/system/dockershim.service.d/*
3435
fi
35-
sed -i 's@\(ExecStart.*kubelet\)@\1 --experimental-dockershim --port 11250@' /etc/systemd/system/dockershim.service
36-
# FIXME: this is temporary hack before 'hyperkube kubelet --experimental-dockershim'
37-
# fix lands in k8s 1.7 and k8s 1.8. See k8s issues / PRs:
38-
# https://github.com/kubernetes/kubernetes/issues/54424
39-
# https://github.com/kubernetes/kubernetes/pull/55250
40-
# https://github.com/kubernetes/kubernetes/pull/55335
41-
if [ -d /dind -a -x /k8s/hyperkube ]; then
42-
k8s_version="$(/k8s/hyperkube --version|awk '{print $2}')"
36+
fi
37+
sed -i 's@\(ExecStart.*kubelet\)@\1 --experimental-dockershim --port 11250@' /etc/systemd/system/dockershim.service
38+
}
39+
40+
# FIXME: this is temporary hack because 'hyperkube kubelet --experimental-dockershim'
41+
# used to be broken. The fix is included in k8s 1.8.4 and will be included in k8s 1.7.11.
42+
# PR link: https://github.com/kubernetes/kubernetes/pull/55335
43+
function ensure_dockershim_in_kubelet {
44+
if [[ -d /dind && -x /k8s/hyperkube && $(/k8s/hyperkube --version | awk '{print $2}') =~ (v[0-9]+\.[0-9]+\.[0-9]+)($|^[0-9]) ]]; then
45+
k8s_version="${BASH_REMATCH[1]}"
46+
if [[ $((echo "${k8s_version}"; echo v1.8.4 ) | sort -V | head -1) != v1.8.4 ]]; then
4347
rm -f /usr/bin/kubelet
4448
curl "https://storage.googleapis.com/kubernetes-release/release/${k8s_version}/bin/linux/amd64/kubelet" >/usr/bin/kubelet
4549
chmod +x /usr/bin/kubelet
4650
sed -i 's@ExecStart=/k8s/hyperkube kubelet@ExecStart=/usr/bin/kubelet@' /etc/systemd/system/dockershim.service
4751
fi
52+
fi
53+
return 0
54+
}
55+
56+
case "$1" in
57+
configure)
58+
make_dochershim_service
59+
ensure_dockershim_in_kubelet
4860
systemctl stop kubelet
4961
systemctl daemon-reload
5062
systemctl enable dockershim criproxy

0 commit comments

Comments
 (0)