#!/bin/bash -ex function cleanup() { rm -f "/etc/cni/net.d/10-kuryr.conf" rm -f "/opt/cni/bin/kuryr-cni" } function deploy() { local serviceaccount_path serviceaccount_path="/var/run/secrets/kubernetes.io/serviceaccount" # Prepare token. KUBE_TOKEN=$(<${serviceaccount_path}/token) POD_NAMESPACE=$(<${serviceaccount_path}/namespace) CONTAINERID="" x=0 while [ -z ${CONTAINERID} ] && [ $x -lt 9 ]; do sleep 5 CONTAINERID=$(curl -vvv -H "Authorization: Bearer $KUBE_TOKEN" --cacert ${serviceaccount_path}/ca.crt \ https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}/api/v1/namespaces/${POD_NAMESPACE}/pods/${KURYR_CNI_POD_NAME} | jq -r '.["status"]["containerStatuses"][0]["containerID"]') CONTAINERID=${CONTAINERID#*//} ((x++)) || true done; # There's no point to run if we cannot get CONTAINERID. if [ -z ${CONTAINERID} ]; then exit 1 fi # Write the script to a file. cat > /kuryr-cni << EOF #!/bin/bash -x envs=(\$(env | grep ^CNI_)) docker exec \${envs[@]/#/--env } -i "${CONTAINERID}" kuryr-cni --config-file /etc/kuryr/kuryr.conf EOF # Copy the script into the designated location cp /kuryr-cni "/opt/cni/bin/kuryr-cni" chmod +x /opt/cni/bin/kuryr-cni cp /opt/kuryr-kubernetes/etc/cni/net.d/* /etc/cni/net.d } cleanup deploy # Start CNI daemon if required if [ "$CNI_DAEMON" == "True" ]; then kuryr-daemon --config-file /etc/kuryr/kuryr.conf else sleep infinity fi