添加 'Yaml文件/deploy.sh'
This commit is contained in:
		
							parent
							
								
									3f429cee63
								
							
						
					
					
						commit
						5a13d225ed
					
				
							
								
								
									
										123
									
								
								Yaml文件/deploy.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								Yaml文件/deploy.sh
									
									
									
									
									
										Normal file
									
								
							| @ -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
	
	Block a user
	 diandian
						diandian