Created
September 22, 2016 17:24
-
-
Save shahidhk/ed6d1121b212659e126638169d928e45 to your computer and use it in GitHub Desktop.
foo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
function init_ssl { | |
mkdir -p /etc/kubernetes/ssl | |
local TEMPLATE=/etc/kubernetes/ssl/ca.pem | |
[ -f $TEMPLATE ] || { | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
-----BEGIN CERTIFICATE----- | |
MIIC9zCCAd+gAwIBAgIJAKDn9d9+6tKxMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV | |
BAMMB2t1YmUtY2EwHhcNMTYwOTIxMDg0MzMxWhcNNDQwMjA3MDg0MzMxWjASMRAw | |
DgYDVQQDDAdrdWJlLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA | |
zvkPtSJbJsMwuUf2l/lnuLnXE+D4UfQT8yhQ02jHEutcEj52KQI1F2ndVBXOQNSb | |
fTYJlqyFJX0L7xYbZuQY14xaoRQBkTWxpKMrXRFoCsvI4tdbUchwX2ez2p99ws4n | |
a3SP9UT/iXWrwmAxveHgT7KbUkZHGYPd0k2FFZ904qm0fpeEfqyALGqN6xsLmvce | |
U6Rejr2kxEzFxWrlVcKNqQ72EcEqrJky0qYcPK9P62foEBtc/EglUV/0sPwCLxom | |
EEGmyXcsR/dHD3OXzzhsDnjC6CylSZpAcuzOi6NuF0Tw1pO6ASLSM0ADN8YHlaI0 | |
xHOTSE4v/3RBZaLhftQ67QIDAQABo1AwTjAdBgNVHQ4EFgQUsG47QGjIIwSpofk/ | |
UIVPaHKCdg0wHwYDVR0jBBgwFoAUsG47QGjIIwSpofk/UIVPaHKCdg0wDAYDVR0T | |
BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAyycm405Nfel/uuJFy6VJfbS+d79Q | |
0dMnZcPNipYz3tlHNKBTa6Hcm5oNT2sijmxg8JHZYGYoZnMimjltsHweWVhgFX0C | |
w0tgLNz/FdegHtOdNkqCEsmo20mTlW60lQptgkxeGr4Glqx7YFYWJP1SjMJMGzb9 | |
BcWL69Bg047wBXLpz+k8CDctRi0qEokC4XSOokoKEfnxTgcAljhufwdLPBv+nx6l | |
lhVKJPLrv8OqtPQJYOYBmqWCZ2KNaSVo5qXPcdVVlqot2oYTXVpo3/YfwDI3HFU7 | |
3vYJeN+OnJ/OeJKodpMYZ79RgnUjb7niSZ58JvyyUTbPwlsKSKQwys//mA== | |
-----END CERTIFICATE----- | |
EOF | |
} | |
local TEMPLATE=/etc/kubernetes/ssl/apiserver.pem | |
[ -f $TEMPLATE ] || { | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
-----BEGIN CERTIFICATE----- | |
MIIDOTCCAiGgAwIBAgIJALAvBIdmLXGHMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV | |
BAMMB2t1YmUtY2EwHhcNMTYwOTIxMDg0MzMxWhcNMTcwOTIxMDg0MzMxWjAZMRcw | |
FQYDVQQDDA5rdWJlLWFwaXNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC | |
AQoCggEBAO1fKaDZS5AjNcWSEahfW3j6Gr20znIrDWWNfsa2OVxAjdd1ZJnRE4jp | |
lBM41xdhkpOxEHHGTO1s4Bpq7KPwDzEdRYTxw08iWMYoPjUC958+wfcsM5a2Qspq | |
BEzknfbTuzMQ+KcQFnBMQAsZVaHoaTqfsW+0RZLYu+lbJ+vICX3YMRY6Pl2GZ9ez | |
Sw5LJgLWARBz9jD7BEUExlM4JrWkooxJB5idrOCVqPsi3nILkuOJGdfhe8s1gyR3 | |
VJurG7FYvOHBMNWLrmTPPzc7UmVRiX+plUhGGxfdS3U/Q0Nc43XOZFRlUS7cc/02 | |
4f6VfsWLTKb2tnaWkDMd6vlvqK/QIMUCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsG | |
A1UdDwQEAwIF4DBtBgNVHREEZjBkggprdWJlcm5ldGVzghJrdWJlcm5ldGVzLmRl | |
ZmF1bHSHBH8AAAGHBAoDAAGHBArwAAKHBArwAAOCFms4cy50ZXN0Lmhhc3VyYS1h | |
cHAuaW+CEnRlc3QuaGFzdXJhLWFwcC5pbzANBgkqhkiG9w0BAQsFAAOCAQEAfqfc | |
/5SCickaoFWHHEXRpV7E2VOUdP7BlJrUgZVRxc5yc20xWymgsfL52Ld2yKGtkmd/ | |
miTB5t4nU5yqik7mBrELTM9kp24GvD/NWMbb54SN8R8IqxCEFEfKJZwVWe436xa/ | |
pIYSHoFrkZyaQfrfTozx7WcqB49NBGpmqUP73YvibMTfA8WtQCv5jPO/LBujH1aW | |
9csGD0icf4r6E08CMNB7upEDKiJmnS8G+rOKq4WvLf9KY+4qVQvtzS3GX5NcFJrY | |
fLEZPEh60PBMtAsKMIj8ExaHZHx1cvrreX3lloJYCWCPQvOMcaVNVsDKS+7ImztQ | |
wrgOjCyT0+FIjf6oew== | |
-----END CERTIFICATE----- | |
EOF | |
} | |
local TEMPLATE=/etc/kubernetes/ssl/apiserver-key.pem | |
[ -f $TEMPLATE ] || { | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
-----BEGIN RSA PRIVATE KEY----- | |
MIIEpAIBAAKCAQEA7V8poNlLkCM1xZIRqF9bePoavbTOcisNZY1+xrY5XECN13Vk | |
mdETiOmUEzjXF2GSk7EQccZM7WzgGmrso/APMR1FhPHDTyJYxig+NQL3nz7B9ywz | |
lrZCymoETOSd9tO7MxD4pxAWcExACxlVoehpOp+xb7RFkti76Vsn68gJfdgxFjo+ | |
XYZn17NLDksmAtYBEHP2MPsERQTGUzgmtaSijEkHmJ2s4JWo+yLecguS44kZ1+F7 | |
yzWDJHdUm6sbsVi84cEw1YuuZM8/NztSZVGJf6mVSEYbF91LdT9DQ1zjdc5kVGVR | |
Ltxz/Tbh/pV+xYtMpva2dpaQMx3q+W+or9AgxQIDAQABAoIBAQCDXU/faYIM8b93 | |
aIAHK0anK9qStDYwLq1KT0Ui2YPjDwKwg5I6Id/qvEGrZaB7mw8QV0RfgrveBYv8 | |
csIlc9wkdSudCGLrL3nrqCfNFKhPY97aWIbwWEucU5GvsDHPgJuwBitl4VxZp4kl | |
205tvP5HaEs9I4oBW5qa6UytitXd4y9ltXJ1CG+EiZoceF60V5hnOVdJFybt5BAd | |
g8r1vT0zELZp0WtD0Hdg/25xHomK3ROvPIuKVlRJU0051RbXLoIJv8LGO6JxZEln | |
7HKsbvU4h1j6+a+883iyDKtm+wJCCnRrR0zDTtjrmnhDLlqzAX+a2e7Gp4WJfzcQ | |
GJw+T4qBAoGBAPd6eJ6YEeFBHrp3qMucEqUCyXC3AM3bzzSBbd5ku6iP7Ka29hpT | |
MgpBUsERxH8s91WLgAVCvTx4sxcSZBe1Tt3cT/JQEEFB+E1DLOulXWmglGH0Sjtp | |
RQB3uowxeUFqNN+F3tGJD9gH1H7dDlaqJXtzCzOpXOQAn1fYYY/jVuAhAoGBAPWL | |
mdBQvR3/WpqcXLiY7pDPFNLq+MPzwECdrcqjVhefKarw8baG9CyPfDkRuaadvaF0 | |
vvPj+4WkIBDc5Ut0pkaqH2J2ceZZarapW8rLxZy+oaiQt2jbXyhtyUizXFC36u1A | |
ViYEJOhlwgPU0f9V2MBaHbZzXsGHCpShXxioejwlAoGADz6PEY3ihBKj1u6qCijK | |
CTobuIK9XPDuWZijcPCZkq+S704T6Nk5GuKdO2Fhzkex0KYwM6LBz2jL917dpYw4 | |
mHgKwK1n4u0yY2gA618bWvdWTJZkwDYi1v2JEzu08W+eZCp16EheHnuU/l+Vk4cV | |
mf4jMYJ8Q1s6dYnRsLBbWKECgYEA3qRWM60BzdFcNhTRfhAtQOCD4TttlT/PcseG | |
bdbsmT6YaYdPpFF51W3FFXoc/BbLezqAamSuC99ls+SXhHOg0TIwgvcjD9rECBxI | |
PvnFlPrFWjLeGxXOkrn5aRI5AnfBbJ6Jfq8DSDX8Vb0DLKKKht8vUeAKazAnR92K | |
fLFHJIECgYA5ts6XfZnNjywD9e4SjudGNURBYEE2ZP54CwOdJoWXwsbfwS0JrAwg | |
QHSuQzNCga2meni1+3TgAOm3/OUIDuZOvRoTa9T72g/e8U7ZI+Nt50xS0+FrLJel | |
w9lGqPY5ruNHR3yiSQEoAhnBM7Ui6ausTSlfJnW3zoJ3mMrkviPULQ== | |
-----END RSA PRIVATE KEY----- | |
EOF | |
} | |
local TEMPLATE=/etc/kubernetes/ssl/worker.pem | |
[ -f $TEMPLATE ] || { | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
-----BEGIN CERTIFICATE----- | |
MIICpDCCAYwCCQCwLwSHZi1xiDANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdr | |
dWJlLWNhMB4XDTE2MDkyMTA4NDMzMVoXDTE3MDkyMTA4NDMzMVowFjEUMBIGA1UE | |
AwwLa3ViZS13b3JrZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDf | |
p1/iog0WTZTGj5y8CDl1WrpRQpSYdWSmktp/+0b44fTwFCMcrklpgZikBgaXhT3A | |
5iOiLkEUkoZl5zTqmmsOJdaPrq1IYyIDaJlJoJHyVC6d0SfjDkWFwrnu3H9tdEGF | |
IoevfCtxNk/HHFI7W9zJ/6JUsKDMTv1ruVV9vmvoUV7AaRp9IgFW3QX1z4IGu1ag | |
cQplwvqmNhAoe0iyHK+PHxMOck2S/IEjGbMVB8T7InBtNmgUqNF88q8BI6nElic3 | |
6+A8eRVUhH8fyWVX0gRlzwq9gLb4p77gtZFGrtxSp+CUOKthxlp2qDpXBekOUMux | |
M4CKzG5S1Myfuk7OE2alAgMBAAEwDQYJKoZIhvcNAQELBQADggEBADjZrdM0DHgh | |
LNIEE6jZUnJNmt9cYjxrdrcPpsUUdaQ/LRnuzZIgAoJweusCHieegmUsxJquHJNv | |
XBmDtNXkYnE2ZGDTgMHI2leNHCoWi6FsgdkRb9nyQJBCHNC1p5wbOUqPzECOIV4+ | |
u+3c3pZwW0E20FSBuB4kzYOzIlwA9f9ltYo1QmnX1cnYEREwGQLu4nrR4Govx8pk | |
5giAMl054cgi51xpOb7lVadUq1StKaubSH744so7IZaT116H+A5lOPowkBzDWriw | |
mgezDc9av9wesp0fh6t7vlBGYJ3UElcBSPUOnHcdmzD58SDV9ktyUgXjB54Mpxqk | |
oK1DIOSJiS4= | |
-----END CERTIFICATE----- | |
EOF | |
} | |
local TEMPLATE=/etc/kubernetes/ssl/worker-key.pem | |
[ -f $TEMPLATE ] || { | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
-----BEGIN RSA PRIVATE KEY----- | |
MIIEpAIBAAKCAQEA36df4qINFk2Uxo+cvAg5dVq6UUKUmHVkppLaf/tG+OH08BQj | |
HK5JaYGYpAYGl4U9wOYjoi5BFJKGZec06pprDiXWj66tSGMiA2iZSaCR8lQundEn | |
4w5FhcK57tx/bXRBhSKHr3wrcTZPxxxSO1vcyf+iVLCgzE79a7lVfb5r6FFewGka | |
fSIBVt0F9c+CBrtWoHEKZcL6pjYQKHtIshyvjx8TDnJNkvyBIxmzFQfE+yJwbTZo | |
FKjRfPKvASOpxJYnN+vgPHkVVIR/H8llV9IEZc8KvYC2+Ke+4LWRRq7cUqfglDir | |
YcZadqg6VwXpDlDLsTOAisxuUtTMn7pOzhNmpQIDAQABAoIBAQDDkV0kFOXyubY9 | |
hrjcJyjvOH2xrtG3Gvf/PGy5+qTN3u/KuyEU5EYnbv5ldytudUFRmyxPlbis34+M | |
Lge0mYDBZ07eZzT5Fk5Ywq8/lZvpVblJoOoK/qDGXUcu2jrHICBm5ZHWXnKyVXaf | |
OmGhrCs9qz5sZeLFpNCu0OozwT4kbtg8I2LP7GRTwTW2pQLLDmctPc6NDKWw4y5e | |
wsvGVEyktE5tVunzC/hWA+Scqxbm9RvD4alJki+Gbc9gwWHXxsM9B2XDgn0uMzKn | |
HLEy4suPs/aBZ9/X/q8Fyjy/e0PmjlqhPrqElVvrar70y0+IRPeURixxPEnNnEpA | |
bqzgy8HhAoGBAPC9qqtyu5OZJCJzvmd+0rU2CAPG908Uv0xo/brCYDRo6ky5s4/D | |
5eackI13byBri/3kfwu71jDteaM8tXI+q6HMzRHigBmBbDoQgWIkpXSwsbQmcbpG | |
xpJZ94HM+Wt9WJI/udndH50MPNAcefsP6EjvrXfN+1w4Nlo33wKokAj5AoGBAO3U | |
cqYB+6mIkuyzwHuSJYai9vUopaRw0YS63JmYYECEhGkMmUq4sdqW2UtHv2AFWwfk | |
081sYL7IVXvUAjT/moAvELse5vAOE92ks7pZ6K5FBacCxzP7KT9EubdJLWjIwYNE | |
jg+8STaI97NCkGCkHHQUib4+5t2o7djSO88peQINAoGAIx/pON6ik6Ryazxr+Xm9 | |
kIbzoGl1R+qFBscCzi7yDnOIS+2ET2OLtZv+U0WrxxUp9b9S8glT9QuRBcojxylx | |
rUfOW9+qRQ5nFgm2dvVV1rK5GsnJKh6Ndmj9/chEU/ST6bK2kRz8MdPJQ6wD+CeY | |
ApxFuQcqt4fUFlG0jhS9/zECgYAxWZccqWauLB/IrBfxzEarJF+4SWHtuFdRgnDK | |
EltOp/DN14Zrgd2t7QVT4KRuaU4VWj807hs5G1rZogl/M9a8aIfBPE1RXKp0oHuG | |
3KcymjHtEN+DAsfxT/J1fOLGTnoRIgWUcE6E2XEEqnhJBWS+FZDrgCPptOb9ycoN | |
V567dQKBgQDv+ewaJNBD81T/hPSsOmuQcbdNTa4Yxidmz/j4Y+9hO6UQJjybvMf+ | |
NmuwoUz/FOsk1OJWYAbvJIZio25ieBs5YKNT5zyqfH3rVX7vxybD3h3eMHvn/RKr | |
N6KGJX/3lOtPm++05GQgXnfRUrGFK3uV30OURKb3jSkQk5EpeLzU9w== | |
-----END RSA PRIVATE KEY----- | |
EOF | |
} | |
} | |
function basic_auth { | |
local TEMPLATE=/etc/kubernetes/ssl/passwd.csv | |
[ -f $TEMPLATE ] || { | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
hydride-kindling-armed,admin,1 | |
EOF | |
} | |
} | |
function token_auth { | |
local TEMPLATE=/etc/kubernetes/ssl/token.csv | |
[ -f $TEMPLATE ] || { | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
G9Jzcrvo6TZvJmndl2r84sia12QhraIM,admin,1 | |
EOF | |
} | |
} | |
init_ssl | |
basic_auth | |
token_auth | |
echo "Generated required creds.." | |
#wget https://hasura.blob.core.windows.net/cloudconfig/coreos-singlenode-v1.3.4_coreos.0.sh | |
#chmod +x coreos-singlenode-v1.3.4_coreos.0.sh | |
#/bin/bash $PWD/coreos-singlenode-v1.3.4_coreos.0.sh | |
#!/bin/bash | |
set -e | |
export ETCD_ENDPOINTS="http://127.0.0.1:2379" | |
export G_K8S_VER=v1.3.4 | |
export K8S_VER=v1.3.4_coreos.0 | |
export HYPERKUBE_IMAGE_REPO=quay.io/coreos/hyperkube | |
export POD_NETWORK=10.2.0.0/16 | |
export SERVICE_IP_RANGE=10.3.0.0/24 | |
export K8S_SERVICE_IP=10.3.0.1 | |
export DNS_SERVICE_IP=10.3.0.10 | |
export USE_CALICO=false | |
export CONTAINER_RUNTIME=docker | |
function init_kube_binaries { | |
[ ! -x /opt/bin/kubectl ] || return 0 | |
mkdir -p /opt/bin | |
rm -f /opt/bin/kubectl | |
curl -o /opt/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/$G_K8S_VER/bin/linux/amd64/kubectl | |
chmod +x /opt/bin/kubectl | |
} | |
function init_config { | |
local REQUIRED=('ADVERTISE_IP' 'POD_NETWORK' 'ETCD_ENDPOINTS' 'SERVICE_IP_RANGE' 'K8S_SERVICE_IP' 'DNS_SERVICE_IP' 'K8S_VER' 'USE_CALICO') | |
if [ -z $ADVERTISE_IP ]; then | |
export ADVERTISE_IP=$(awk -F= '/COREOS_PRIVATE_IPV4/ {print $2}' /etc/environment) | |
fi | |
for REQ in "${REQUIRED[@]}"; do | |
if [ -z "$(eval echo \$$REQ)" ]; then | |
echo "Missing required config value: ${REQ}" | |
exit 1 | |
fi | |
done | |
} | |
function init_flannel { | |
echo "Waiting for etcd..." | |
while true | |
do | |
IFS=',' read -ra ES <<< "$ETCD_ENDPOINTS" | |
for ETCD in "${ES[@]}"; do | |
echo "Trying: $ETCD" | |
if [ -n "$(curl --silent "$ETCD/v2/machines")" ]; then | |
local ACTIVE_ETCD=$ETCD | |
break | |
fi | |
sleep 1 | |
done | |
if [ -n "$ACTIVE_ETCD" ]; then | |
break | |
fi | |
done | |
RES=$(curl --silent -X PUT -d "value={\"Network\":\"$POD_NETWORK\",\"Backend\":{\"Type\":\"vxlan\"}}" "$ACTIVE_ETCD/v2/keys/coreos.com/network/config?prevExist=false") | |
if [ -z "$(echo $RES | grep '"action":"create"')" ] && [ -z "$(echo $RES | grep 'Key already exists')" ]; then | |
echo "Unexpected error configuring flannel pod network: $RES" | |
fi | |
} | |
function init_templates { | |
local TEMPLATE=/etc/systemd/system/kubelet.service | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
[Service] | |
ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests | |
Environment=KUBELET_VERSION=${K8S_VER} | |
Environment=KUBELET_ACI=${HYPERKUBE_IMAGE_REPO} | |
Environment="RKT_OPTS=--volume dns,kind=host,source=/etc/resolv.conf \ | |
--mount volume=dns,target=/etc/resolv.conf \ | |
--volume=rkt,kind=host,source=/opt/bin/host-rkt \ | |
--mount volume=rkt,target=/usr/bin/rkt \ | |
--volume var-lib-rkt,kind=host,source=/var/lib/rkt \ | |
--mount volume=var-lib-rkt,target=/var/lib/rkt \ | |
--volume=stage,kind=host,source=/tmp \ | |
--mount volume=stage,target=/tmp" | |
ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests | |
ExecStart=/usr/lib/coreos/kubelet-wrapper \ | |
--api-servers=http://127.0.0.1:8080 \ | |
--network-plugin-dir=/etc/kubernetes/cni/net.d \ | |
--network-plugin=cni \ | |
--container-runtime=${CONTAINER_RUNTIME} \ | |
--rkt-path=/usr/bin/rkt \ | |
--rkt-stage1-image=coreos.com/rkt/stage1-coreos \ | |
--register-node=true \ | |
--allow-privileged=true \ | |
--node-labels="app=postgres" \ | |
--config=/etc/kubernetes/manifests \ | |
--hostname-override=$(hostname -s) \ | |
--cluster_dns=${DNS_SERVICE_IP} \ | |
--cluster_domain=cluster.local | |
Restart=always | |
RestartSec=10 | |
KillMode=process | |
[Install] | |
WantedBy=multi-user.target | |
EOF | |
fi | |
local TEMPLATE=/opt/bin/host-rkt | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
exec nsenter -m -u -i -n -p -t 1 -- /usr/bin/rkt "\$@" | |
EOF | |
fi | |
local TEMPLATE=/etc/systemd/system/load-rkt-stage1.service | |
if [ ${CONTAINER_RUNTIME} = "rkt" ] && [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
[Unit] | |
Requires=network-online.target | |
After=network-online.target | |
Before=rkt-api.service | |
[Service] | |
Type=oneshot | |
RemainAfterExit=yes | |
ExecStart=/usr/bin/rkt fetch /usr/lib/rkt/stage1-images/stage1-coreos.aci /usr/lib/rkt/stage1-images/stage1-fly.aci --insecure-options=image | |
[Install] | |
RequiredBy=rkt-api.service | |
EOF | |
fi | |
local TEMPLATE=/etc/systemd/system/rkt-api.service | |
if [ ${CONTAINER_RUNTIME} = "rkt" ] && [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
[Unit] | |
Before=kubelet.service | |
[Service] | |
ExecStart=/usr/bin/rkt api-service | |
Restart=always | |
RestartSec=10 | |
[Install] | |
RequiredBy=kubelet.service | |
EOF | |
fi | |
local TEMPLATE=/etc/systemd/system/calico-node.service | |
if [ "${USE_CALICO}" = "true" ] && [ ! -f "${TEMPLATE}" ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
[Unit] | |
Description=Calico per-host agent | |
Requires=network-online.target | |
After=network-online.target | |
[Service] | |
Slice=machine.slice | |
Environment=CALICO_DISABLE_FILE_LOGGING=true | |
Environment=HOSTNAME=${ADVERTISE_IP} | |
Environment=IP=${ADVERTISE_IP} | |
Environment=FELIX_FELIXHOSTNAME=${ADVERTISE_IP} | |
Environment=CALICO_NETWORKING=false | |
Environment=NO_DEFAULT_POOLS=true | |
Environment=ETCD_ENDPOINTS=${ETCD_ENDPOINTS} | |
ExecStart=/usr/bin/rkt run --inherit-env --stage1-from-dir=stage1-fly.aci \ | |
--volume=modules,kind=host,source=/lib/modules,readOnly=false \ | |
--mount=volume=modules,target=/lib/modules \ | |
--trust-keys-from-https quay.io/calico/node:v0.19.0 | |
KillMode=mixed | |
Restart=always | |
TimeoutStartSec=0 | |
[Install] | |
WantedBy=multi-user.target | |
EOF | |
fi | |
local TEMPLATE=/etc/kubernetes/manifests/kube-proxy.yaml | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
name: kube-proxy | |
namespace: kube-system | |
annotations: | |
rkt.alpha.kubernetes.io/stage1-name-override: coreos.com/rkt/stage1-fly | |
spec: | |
hostNetwork: true | |
containers: | |
- name: kube-proxy | |
image: ${HYPERKUBE_IMAGE_REPO}:$K8S_VER | |
command: | |
- /hyperkube | |
- proxy | |
- --master=http://127.0.0.1:8080 | |
securityContext: | |
privileged: true | |
volumeMounts: | |
- mountPath: /etc/ssl/certs | |
name: ssl-certs-host | |
readOnly: true | |
- mountPath: /var/run/dbus | |
name: dbus | |
readOnly: false | |
volumes: | |
- hostPath: | |
path: /usr/share/ca-certificates | |
name: ssl-certs-host | |
- hostPath: | |
path: /var/run/dbus | |
name: dbus | |
EOF | |
fi | |
local TEMPLATE=/etc/kubernetes/manifests/kube-apiserver.yaml | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
name: kube-apiserver | |
namespace: kube-system | |
spec: | |
hostNetwork: true | |
containers: | |
- name: kube-apiserver | |
image: ${HYPERKUBE_IMAGE_REPO}:$K8S_VER | |
command: | |
- /hyperkube | |
- apiserver | |
- --bind-address=0.0.0.0 | |
- --etcd-servers=${ETCD_ENDPOINTS} | |
- --allow-privileged=true | |
- --service-cluster-ip-range=${SERVICE_IP_RANGE} | |
- --secure-port=3443 | |
- --advertise-address=${ADVERTISE_IP} | |
- --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota | |
- --tls-cert-file=/etc/kubernetes/ssl/apiserver.pem | |
- --tls-private-key-file=/etc/kubernetes/ssl/apiserver-key.pem | |
- --client-ca-file=/etc/kubernetes/ssl/ca.pem | |
- --service-account-key-file=/etc/kubernetes/ssl/apiserver-key.pem | |
- --basic-auth-file=/etc/kubernetes/ssl/passwd.csv | |
- --token-auth-file=/etc/kubernetes/ssl/token.csv | |
- --runtime-config=extensions/v1beta1/networkpolicies=true,extensions/v1beta1=true,extensions/v1beta1/thirdpartyresources=true | |
livenessProbe: | |
httpGet: | |
host: 127.0.0.1 | |
port: 8080 | |
path: /healthz | |
initialDelaySeconds: 15 | |
timeoutSeconds: 15 | |
ports: | |
- containerPort: 3443 | |
hostPort: 3443 | |
name: https | |
- containerPort: 8080 | |
hostPort: 8080 | |
name: local | |
volumeMounts: | |
- mountPath: /etc/kubernetes/ssl | |
name: ssl-certs-kubernetes | |
readOnly: true | |
- mountPath: /etc/ssl/certs | |
name: ssl-certs-host | |
readOnly: true | |
volumes: | |
- hostPath: | |
path: /etc/kubernetes/ssl | |
name: ssl-certs-kubernetes | |
- hostPath: | |
path: /usr/share/ca-certificates | |
name: ssl-certs-host | |
EOF | |
fi | |
local TEMPLATE=/etc/kubernetes/manifests/kube-controller-manager.yaml | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
name: kube-controller-manager | |
namespace: kube-system | |
spec: | |
containers: | |
- name: kube-controller-manager | |
image: ${HYPERKUBE_IMAGE_REPO}:$K8S_VER | |
command: | |
- /hyperkube | |
- controller-manager | |
- --master=http://127.0.0.1:8080 | |
- --service-account-private-key-file=/etc/kubernetes/ssl/apiserver-key.pem | |
- --root-ca-file=/etc/kubernetes/ssl/ca.pem | |
- --cloud-provider=aws | |
resources: | |
requests: | |
cpu: 200m | |
livenessProbe: | |
httpGet: | |
host: 127.0.0.1 | |
path: /healthz | |
port: 10252 | |
initialDelaySeconds: 15 | |
timeoutSeconds: 15 | |
volumeMounts: | |
- mountPath: /etc/kubernetes/ssl | |
name: ssl-certs-kubernetes | |
readOnly: true | |
- mountPath: /etc/ssl/certs | |
name: ssl-certs-host | |
readOnly: true | |
hostNetwork: true | |
volumes: | |
- hostPath: | |
path: /etc/kubernetes/ssl | |
name: ssl-certs-kubernetes | |
- hostPath: | |
path: /usr/share/ca-certificates | |
name: ssl-certs-host | |
EOF | |
fi | |
local TEMPLATE=/etc/kubernetes/manifests/kube-scheduler.yaml | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
name: kube-scheduler | |
namespace: kube-system | |
spec: | |
hostNetwork: true | |
containers: | |
- name: kube-scheduler | |
image: ${HYPERKUBE_IMAGE_REPO}:$K8S_VER | |
command: | |
- /hyperkube | |
- scheduler | |
- --master=http://127.0.0.1:8080 | |
resources: | |
requests: | |
cpu: 100m | |
livenessProbe: | |
httpGet: | |
host: 127.0.0.1 | |
path: /healthz | |
port: 10251 | |
initialDelaySeconds: 15 | |
timeoutSeconds: 15 | |
EOF | |
fi | |
local TEMPLATE=/etc/kubernetes/manifests/calico-policy-controller.yaml | |
if [ "${USE_CALICO}" = "true" ] && [ ! -f "${TEMPLATE}" ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
name: calico-policy-controller | |
namespace: calico-system | |
spec: | |
hostNetwork: true | |
containers: | |
# The Calico policy controller. | |
- name: kube-policy-controller | |
image: calico/kube-policy-controller:v0.2.0 | |
env: | |
- name: ETCD_ENDPOINTS | |
value: "${ETCD_ENDPOINTS}" | |
- name: K8S_API | |
value: "http://127.0.0.1:8080" | |
- name: LEADER_ELECTION | |
value: "true" | |
# Leader election container used by the policy controller. | |
- name: leader-elector | |
image: quay.io/calico/leader-elector:v0.1.0 | |
imagePullPolicy: IfNotPresent | |
args: | |
- "--election=calico-policy-election" | |
- "--election-namespace=calico-system" | |
- "--http=127.0.0.1:4040" | |
EOF | |
fi | |
local TEMPLATE=/srv/kubernetes/manifests/calico-system.json | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
{ | |
"apiVersion": "v1", | |
"kind": "Namespace", | |
"metadata": { | |
"name": "calico-system" | |
} | |
} | |
EOF | |
fi | |
local TEMPLATE=/srv/kubernetes/manifests/kube-dns-rc.json | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
{ | |
"apiVersion": "v1", | |
"kind": "ReplicationController", | |
"metadata": { | |
"labels": { | |
"k8s-app": "kube-dns", | |
"kubernetes.io/cluster-service": "true", | |
"version": "v15" | |
}, | |
"name": "kube-dns-v15", | |
"namespace": "kube-system" | |
}, | |
"spec": { | |
"replicas": 1, | |
"selector": { | |
"k8s-app": "kube-dns", | |
"version": "v15" | |
}, | |
"template": { | |
"metadata": { | |
"labels": { | |
"k8s-app": "kube-dns", | |
"kubernetes.io/cluster-service": "true", | |
"version": "v15" | |
} | |
}, | |
"spec": { | |
"containers": [ | |
{ | |
"args": [ | |
"--domain=cluster.local.", | |
"--dns-port=10053" | |
], | |
"image": "gcr.io/google_containers/kubedns-amd64:1.3", | |
"livenessProbe": { | |
"failureThreshold": 5, | |
"httpGet": { | |
"path": "/healthz", | |
"port": 8080, | |
"scheme": "HTTP" | |
}, | |
"initialDelaySeconds": 60, | |
"successThreshold": 1, | |
"timeoutSeconds": 5 | |
}, | |
"name": "kubedns", | |
"ports": [ | |
{ | |
"containerPort": 10053, | |
"name": "dns-local", | |
"protocol": "UDP" | |
}, | |
{ | |
"containerPort": 10053, | |
"name": "dns-tcp-local", | |
"protocol": "TCP" | |
} | |
], | |
"readinessProbe": { | |
"httpGet": { | |
"path": "/readiness", | |
"port": 8081, | |
"scheme": "HTTP" | |
}, | |
"initialDelaySeconds": 30, | |
"timeoutSeconds": 5 | |
}, | |
"resources": { | |
"limits": { | |
"cpu": "100m", | |
"memory": "200Mi" | |
}, | |
"requests": { | |
"cpu": "100m", | |
"memory": "50Mi" | |
} | |
} | |
}, | |
{ | |
"args": [ | |
"--cache-size=1000", | |
"--no-resolv", | |
"--server=127.0.0.1#10053" | |
], | |
"image": "gcr.io/google_containers/kube-dnsmasq-amd64:1.3", | |
"name": "dnsmasq", | |
"ports": [ | |
{ | |
"containerPort": 53, | |
"name": "dns", | |
"protocol": "UDP" | |
}, | |
{ | |
"containerPort": 53, | |
"name": "dns-tcp", | |
"protocol": "TCP" | |
} | |
] | |
}, | |
{ | |
"args": [ | |
"-cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null", | |
"-port=8080", | |
"-quiet" | |
], | |
"image": "gcr.io/google_containers/exechealthz-amd64:1.0", | |
"name": "healthz", | |
"ports": [ | |
{ | |
"containerPort": 8080, | |
"protocol": "TCP" | |
} | |
], | |
"resources": { | |
"limits": { | |
"cpu": "10m", | |
"memory": "20Mi" | |
}, | |
"requests": { | |
"cpu": "10m", | |
"memory": "20Mi" | |
} | |
} | |
} | |
], | |
"dnsPolicy": "Default" | |
} | |
} | |
} | |
} | |
EOF | |
fi | |
local TEMPLATE=/srv/kubernetes/manifests/kube-dns-svc.json | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
{ | |
"apiVersion": "v1", | |
"kind": "Service", | |
"metadata": { | |
"labels": { | |
"k8s-app": "kube-dns", | |
"kubernetes.io/cluster-service": "true", | |
"kubernetes.io/name": "KubeDNS" | |
}, | |
"name": "kube-dns", | |
"namespace": "kube-system" | |
}, | |
"spec": { | |
"clusterIP": "$DNS_SERVICE_IP", | |
"ports": [ | |
{ | |
"name": "dns", | |
"port": 53, | |
"protocol": "UDP" | |
}, | |
{ | |
"name": "dns-tcp", | |
"port": 53, | |
"protocol": "TCP" | |
} | |
], | |
"selector": { | |
"k8s-app": "kube-dns" | |
} | |
} | |
} | |
EOF | |
fi | |
local TEMPLATE=/srv/kubernetes/manifests/heapster-de.json | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
{ | |
"apiVersion": "extensions/v1beta1", | |
"kind": "Deployment", | |
"metadata": { | |
"labels": { | |
"k8s-app": "heapster", | |
"kubernetes.io/cluster-service": "true", | |
"version": "v1.1.0" | |
}, | |
"name": "heapster-v1.1.0", | |
"namespace": "kube-system" | |
}, | |
"spec": { | |
"replicas": 1, | |
"selector": { | |
"matchLabels": { | |
"k8s-app": "heapster", | |
"version": "v1.1.0" | |
} | |
}, | |
"template": { | |
"metadata": { | |
"labels": { | |
"k8s-app": "heapster", | |
"version": "v1.1.0" | |
} | |
}, | |
"spec": { | |
"containers": [ | |
{ | |
"command": [ | |
"/heapster", | |
"--source=kubernetes.summary_api:''" | |
], | |
"image": "gcr.io/google_containers/heapster:v1.1.0", | |
"name": "heapster", | |
"resources": { | |
"limits": { | |
"cpu": "100m", | |
"memory": "200Mi" | |
}, | |
"requests": { | |
"cpu": "100m", | |
"memory": "200Mi" | |
} | |
} | |
}, | |
{ | |
"command": [ | |
"/pod_nanny", | |
"--cpu=100m", | |
"--extra-cpu=0.5m", | |
"--memory=200Mi", | |
"--extra-memory=4Mi", | |
"--threshold=5", | |
"--deployment=heapster-v1.1.0", | |
"--container=heapster", | |
"--poll-period=300000", | |
"--estimator=exponential" | |
], | |
"env": [ | |
{ | |
"name": "MY_POD_NAME", | |
"valueFrom": { | |
"fieldRef": { | |
"fieldPath": "metadata.name" | |
} | |
} | |
}, | |
{ | |
"name": "MY_POD_NAMESPACE", | |
"valueFrom": { | |
"fieldRef": { | |
"fieldPath": "metadata.namespace" | |
} | |
} | |
} | |
], | |
"image": "gcr.io/google_containers/addon-resizer:1.3", | |
"name": "heapster-nanny", | |
"resources": { | |
"limits": { | |
"cpu": "50m", | |
"memory": "100Mi" | |
}, | |
"requests": { | |
"cpu": "50m", | |
"memory": "100Mi" | |
} | |
} | |
} | |
] | |
} | |
} | |
} | |
} | |
EOF | |
fi | |
local TEMPLATE=/srv/kubernetes/manifests/heapster-svc.json | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
{ | |
"apiVersion": "v1", | |
"kind": "Service", | |
"metadata": { | |
"labels": { | |
"kubernetes.io/cluster-service": "true", | |
"kubernetes.io/name": "Heapster" | |
}, | |
"name": "heapster", | |
"namespace": "kube-system" | |
}, | |
"spec": { | |
"ports": [ | |
{ | |
"port": 80, | |
"targetPort": 8082 | |
} | |
], | |
"selector": { | |
"k8s-app": "heapster" | |
} | |
} | |
} | |
EOF | |
fi | |
local TEMPLATE=/srv/kubernetes/manifests/kube-dashboard-rc.json | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
{ | |
"apiVersion": "v1", | |
"kind": "ReplicationController", | |
"metadata": { | |
"labels": { | |
"k8s-app": "kubernetes-dashboard", | |
"kubernetes.io/cluster-service": "true", | |
"version": "v1.1.0" | |
}, | |
"name": "kubernetes-dashboard-v1.1.0", | |
"namespace": "kube-system" | |
}, | |
"spec": { | |
"replicas": 1, | |
"selector": { | |
"k8s-app": "kubernetes-dashboard" | |
}, | |
"template": { | |
"metadata": { | |
"labels": { | |
"k8s-app": "kubernetes-dashboard", | |
"kubernetes.io/cluster-service": "true", | |
"version": "v1.1.0" | |
} | |
}, | |
"spec": { | |
"containers": [ | |
{ | |
"image": "gcr.io/google_containers/kubernetes-dashboard-amd64:v1.1.0", | |
"livenessProbe": { | |
"httpGet": { | |
"path": "/", | |
"port": 9090 | |
}, | |
"initialDelaySeconds": 30, | |
"timeoutSeconds": 30 | |
}, | |
"name": "kubernetes-dashboard", | |
"ports": [ | |
{ | |
"containerPort": 9090 | |
} | |
], | |
"resources": { | |
"limits": { | |
"cpu": "100m", | |
"memory": "50Mi" | |
}, | |
"requests": { | |
"cpu": "100m", | |
"memory": "50Mi" | |
} | |
} | |
} | |
] | |
} | |
} | |
} | |
} | |
EOF | |
fi | |
local TEMPLATE=/srv/kubernetes/manifests/kube-dashboard-svc.json | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
{ | |
"apiVersion": "v1", | |
"kind": "Service", | |
"metadata": { | |
"labels": { | |
"k8s-app": "kubernetes-dashboard", | |
"kubernetes.io/cluster-service": "true" | |
}, | |
"name": "kubernetes-dashboard", | |
"namespace": "kube-system" | |
}, | |
"spec": { | |
"ports": [ | |
{ | |
"port": 80, | |
"targetPort": 9090 | |
} | |
], | |
"selector": { | |
"k8s-app": "kubernetes-dashboard" | |
} | |
} | |
} | |
EOF | |
fi | |
local TEMPLATE=/etc/flannel/options.env | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
FLANNELD_IFACE=$ADVERTISE_IP | |
FLANNELD_ETCD_ENDPOINTS=$ETCD_ENDPOINTS | |
EOF | |
fi | |
local TEMPLATE=/etc/systemd/system/flanneld.service.d/40-ExecStartPre-symlink.conf.conf | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
[Service] | |
ExecStartPre=/usr/bin/ln -sf /etc/flannel/options.env /run/flannel/options.env | |
EOF | |
fi | |
local TEMPLATE=/etc/systemd/system/docker.service.d/40-flannel.conf | |
if [ ! -f $TEMPLATE ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
[Unit] | |
Requires=flanneld.service | |
After=flanneld.service | |
[Service] | |
ExecStart= | |
ExecStart=/usr/lib/coreos/dockerd daemon --host=fd:// \$DOCKER_OPTS \$DOCKER_CGROUPS \$DOCKER_OPT_MTU | |
EOF | |
fi | |
local TEMPLATE=/etc/kubernetes/cni/net.d/10-calico.conf | |
if [ "${USE_CALICO}" = "true" ] && [ ! -f "${TEMPLATE}" ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
{ | |
"name": "calico", | |
"type": "flannel", | |
"delegate": { | |
"type": "calico", | |
"etcd_endpoints": "$ETCD_ENDPOINTS", | |
"log_level": "none", | |
"log_level_stderr": "info", | |
"hostname": "${ADVERTISE_IP}", | |
"policy": { | |
"type": "k8s", | |
"k8s_api_root": "http://127.0.0.1:8080/api/v1/" | |
} | |
} | |
} | |
EOF | |
fi | |
local TEMPLATE=/etc/kubernetes/cni/net.d/10-flannel.conf | |
if [ "${USE_CALICO}" = "false" ] && [ ! -f "${TEMPLATE}" ]; then | |
echo "TEMPLATE: $TEMPLATE" | |
mkdir -p $(dirname $TEMPLATE) | |
cat << EOF > $TEMPLATE | |
{ | |
"name": "podnet", | |
"type": "flannel", | |
"delegate": { | |
"isDefaultGateway": true | |
} | |
} | |
EOF | |
fi | |
} | |
function start_addons { | |
echo "Waiting for Kubernetes API..." | |
until curl --silent "http://127.0.0.1:8080/version" | |
do | |
sleep 5 | |
done | |
echo | |
echo "K8S: DNS addon" | |
curl --silent -H "Content-Type: application/json" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dns-rc.json)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/replicationcontrollers" > /dev/null | |
curl --silent -H "Content-Type: application/json" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dns-svc.json)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/services" > /dev/null | |
echo "K8S: Heapster addon" | |
curl --silent -H "Content-Type: application/json" -XPOST -d"$(cat /srv/kubernetes/manifests/heapster-de.json)" "http://127.0.0.1:8080/apis/extensions/v1beta1/namespaces/kube-system/deployments" > /dev/null | |
curl --silent -H "Content-Type: application/json" -XPOST -d"$(cat /srv/kubernetes/manifests/heapster-svc.json)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/services" > /dev/null | |
echo "K8S: Dashboard addon" | |
curl --silent -H "Content-Type: application/json" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dashboard-rc.json)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/replicationcontrollers" > /dev/null | |
curl --silent -H "Content-Type: application/json" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dashboard-svc.json)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/services" > /dev/null | |
} | |
function enable_calico_policy { | |
echo "Waiting for Kubernetes API..." | |
until curl --silent "http://127.0.0.1:8080/version" | |
do | |
sleep 5 | |
done | |
echo | |
echo "K8S: Calico Policy" | |
curl --silent -H "Content-Type: application/json" -XPOST -d"$(cat /srv/kubernetes/manifests/calico-system.json)" "http://127.0.0.1:8080/api/v1/namespaces/" > /dev/null | |
} | |
init_kube_binaries | |
init_config | |
init_templates | |
systemctl enable etcd2; systemctl start etcd2 | |
chmod +x /opt/bin/host-rkt | |
init_flannel | |
systemctl stop update-engine; systemctl mask update-engine | |
systemctl daemon-reload | |
if [ $CONTAINER_RUNTIME = "rkt" ]; then | |
systemctl enable load-rkt-stage1 | |
systemctl enable rkt-api | |
fi | |
systemctl enable flanneld; systemctl start flanneld | |
systemctl enable kubelet; systemctl start kubelet | |
if [ $USE_CALICO = "true" ]; then | |
systemctl enable calico-node; systemctl start calico-node | |
enable_calico_policy | |
fi | |
start_addons | |
echo "DONE" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment