添加 'Yaml文件/deploy.sh'
This commit is contained in:
parent
3f429cee63
commit
5a13d225ed
|
@ -0,0 +1,123 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Deploys CoreDNS to a cluster currently running Kube-DNS.
|
||||||
|
|
||||||
|
show_help () {
|
||||||
|
cat << USAGE
|
||||||
|
usage: $0 [ -r REVERSE-CIDR ] [ -i DNS-IP ] [ -d CLUSTER-DOMAIN ] [ -t YAML-TEMPLATE ]
|
||||||
|
|
||||||
|
-r : Define a reverse zone for the given CIDR. You may specify this option more
|
||||||
|
than once to add multiple reverse zones. If no reverse CIDRs are defined,
|
||||||
|
then the default is to handle all reverse zones (i.e. in-addr.arpa and ip6.arpa)
|
||||||
|
-i : Specify the cluster DNS IP address. If not specified, the IP address of
|
||||||
|
the existing "kube-dns" service is used, if present.
|
||||||
|
-s : Skips the translation of kube-dns configmap to the corresponding CoreDNS Corefile configuration.
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Simple Defaults
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||||
|
CLUSTER_DOMAIN=cluster.local
|
||||||
|
YAML_TEMPLATE="$DIR/coredns.yaml.sed"
|
||||||
|
STUBDOMAINS=""
|
||||||
|
UPSTREAM=\\/etc\\/resolv\.conf
|
||||||
|
|
||||||
|
# Translates the kube-dns ConfigMap to equivalent CoreDNS Configuration.
|
||||||
|
function translate-kube-dns-configmap {
|
||||||
|
kube-dns-upstreamnameserver-to-coredns
|
||||||
|
kube-dns-stubdomains-to-coredns
|
||||||
|
}
|
||||||
|
|
||||||
|
function kube-dns-upstreamnameserver-to-coredns {
|
||||||
|
up=$(kubectl -n kube-system get configmap kube-dns -ojsonpath='{.data.upstreamNameservers}' 2> /dev/null | tr -d '[",]')
|
||||||
|
if [[ ! -z ${up} ]]; then
|
||||||
|
UPSTREAM=${up}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function kube-dns-stubdomains-to-coredns {
|
||||||
|
STUBDOMAIN_TEMPLATE='
|
||||||
|
SD_DOMAIN:53 {
|
||||||
|
errors
|
||||||
|
cache 30
|
||||||
|
loop
|
||||||
|
forward . SD_DESTINATION {
|
||||||
|
max_concurrent 1000
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
|
||||||
|
function dequote {
|
||||||
|
str=${1#\"} # delete leading quote
|
||||||
|
str=${str%\"} # delete trailing quote
|
||||||
|
echo ${str}
|
||||||
|
}
|
||||||
|
|
||||||
|
function parse_stub_domains() {
|
||||||
|
sd=$1
|
||||||
|
|
||||||
|
# get keys - each key is a domain
|
||||||
|
sd_keys=$(echo -n $sd | jq keys[])
|
||||||
|
|
||||||
|
# For each domain ...
|
||||||
|
for dom in $sd_keys; do
|
||||||
|
dst=$(echo -n $sd | jq '.['$dom'][0]') # get the destination
|
||||||
|
|
||||||
|
dom=$(dequote $dom)
|
||||||
|
dst=$(dequote $dst)
|
||||||
|
|
||||||
|
sd_stanza=${STUBDOMAIN_TEMPLATE/SD_DOMAIN/$dom} # replace SD_DOMAIN
|
||||||
|
sd_stanza=${sd_stanza/SD_DESTINATION/$dst} # replace SD_DESTINATION
|
||||||
|
echo "$sd_stanza"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
sd=$(kubectl -n kube-system get configmap kube-dns -ojsonpath='{.data.stubDomains}' 2> /dev/null)
|
||||||
|
STUBDOMAINS=$(parse_stub_domains "$sd")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Get Opts
|
||||||
|
while getopts "hsr:i:d:t:k:" opt; do
|
||||||
|
case "$opt" in
|
||||||
|
h) show_help
|
||||||
|
;;
|
||||||
|
s) SKIP=1
|
||||||
|
;;
|
||||||
|
r) REVERSE_CIDRS="$REVERSE_CIDRS $OPTARG"
|
||||||
|
;;
|
||||||
|
i) CLUSTER_DNS_IP=$OPTARG
|
||||||
|
;;
|
||||||
|
d) CLUSTER_DOMAIN=$OPTARG
|
||||||
|
;;
|
||||||
|
t) YAML_TEMPLATE=$OPTARG
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Conditional Defaults
|
||||||
|
if [[ -z $REVERSE_CIDRS ]]; then
|
||||||
|
REVERSE_CIDRS="in-addr.arpa ip6.arpa"
|
||||||
|
fi
|
||||||
|
if [[ -z $CLUSTER_DNS_IP ]]; then
|
||||||
|
# Default IP to kube-dns IP
|
||||||
|
CLUSTER_DNS_IP=$(kubectl get service --namespace kube-system kube-dns -o jsonpath="{.spec.clusterIP}")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
>&2 echo "Error! The IP address for DNS service couldn't be determined automatically. Please specify the DNS-IP with the '-i' option."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${SKIP}" -ne 1 ]] ; then
|
||||||
|
translate-kube-dns-configmap
|
||||||
|
fi
|
||||||
|
|
||||||
|
orig=$'\n'
|
||||||
|
replace=$'\\\n'
|
||||||
|
sed -e "s/CLUSTER_DNS_IP/$CLUSTER_DNS_IP/g" \
|
||||||
|
-e "s/CLUSTER_DOMAIN/$CLUSTER_DOMAIN/g" \
|
||||||
|
-e "s?REVERSE_CIDRS?$REVERSE_CIDRS?g" \
|
||||||
|
-e "s@STUBDOMAINS@${STUBDOMAINS//$orig/$replace}@g" \
|
||||||
|
-e "s/UPSTREAMNAMESERVER/$UPSTREAM/g" \
|
||||||
|
"${YAML_TEMPLATE}"
|
Loading…
Reference in New Issue