29 lines
1.2 KiB
Bash
Executable file
29 lines
1.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
if [[ $1 == "--config" ]]; then
|
|
cat <<EOF
|
|
{
|
|
"onKubernetesEvent": [
|
|
{
|
|
"kind": "Ingress",
|
|
"event": ["add"]
|
|
}
|
|
]
|
|
}
|
|
EOF
|
|
else
|
|
json=${BINDING_CONTEXT_PATH}
|
|
ns=$(jq -r '.[0].resourceNamespace' ${json})
|
|
res=$(jq -r '.[0].resourceName' ${json})
|
|
tmp=$(mktemp)
|
|
kubectl -n "${ns}" get ingress "${res}" -ojson >${tmp} || { echo "error: getting ingress ${ns}/${res} failed">&2; exit 0; }
|
|
class=$(jq -r '.metadata.annotations."kubernetes.io/ingress.class"' ${tmp})
|
|
[[ "${class}" == "nginx" ]] || { echo "notice: ingress class ${ns}/${res} is not 'nginx'"; exit 0; }
|
|
port=$(jq -r '.spec.rules[0].http.paths[0].backend.servicePort' ${tmp})
|
|
ann=$(jq -r '.metadata.annotations."nginx.ingress.kubernetes.io/configuration-snippet"' ${tmp})
|
|
rm -f ${tmp}
|
|
[[ "${ann}" =~ "l5d-dst-override" ]] && { echo "notice: ingress ${ns}/${res} already has 'l5d-dst-override' header"; exit 0; }
|
|
[[ "${ann}" == "null" ]] && ann="" || ann="${ann}"$'\n'
|
|
ann="${ann}proxy_set_header l5d-dst-override \$service_name.\$namespace.svc.cluster.local:${port}"$';\nproxy_hide_header l5d-remote-ip;\nproxy_hide_header l5d-server-id;\n'
|
|
kubectl -n "${ns}" annotate ingress "${res}" nginx.ingress.kubernetes.io/configuration-snippet="${ann}" --overwrite
|
|
fi
|