@@ -12,27 +12,27 @@ echo Creating instance: ${INSTANCE_ID}
1212INSTANCE_DOMAIN=` python3 -c '
1313import yaml;
1414print(yaml.load(open("' ${CKAN_VALUES_FILE} ' ")).get("domain", ""))
15- ' `
15+ ' 2> /dev/null `
1616
1717WITH_SANS_SSL=` python3 -c '
1818import yaml;
1919print("1" if yaml.load(open("' ${CKAN_VALUES_FILE} ' ")).get("withSansSSL", False) else "0")
20- ' `
20+ ' 2> /dev/null `
2121
2222REGISTER_SUBDOMAIN=` python3 -c '
2323import yaml;
2424print(yaml.load(open("' ${CKAN_VALUES_FILE} ' ")).get("registerSubdomain", ""))
25- ' `
25+ ' 2> /dev/null `
2626
2727CKAN_HELM_CHART_REPO=` python3 -c '
2828import yaml;
2929print(yaml.load(open("' ${CKAN_VALUES_FILE} ' ")).get("ckanHelmChartRepo", "https://raw.githubusercontent.com/ViderumGlobal/ckan-cloud-helm/master/charts_repository"))
30- ' `
30+ ' 2> /dev/null `
3131
3232CKAN_HELM_CHART_VERSION=` python3 -c '
3333import yaml;
3434print(yaml.load(open("' ${CKAN_VALUES_FILE} ' ")).get("ckanHelmChartVersion", ""))
35- ' `
35+ ' 2> /dev/null `
3636
3737LOAD_BALANCER_HOSTNAME=$( kubectl $KUBECTL_GLOBAL_ARGS -n default get service traefik -o yaml \
3838 | python3 -c ' import sys, yaml; print(yaml.load(sys.stdin)["status"]["loadBalancer"]["ingress"][0]["hostname"])' 2> /dev/null)
@@ -43,68 +43,7 @@ if [ "${REGISTER_SUBDOMAIN}" != "" ]; then
4343fi
4444
4545if ! [ -z " ${INSTANCE_DOMAIN} " ]; then
46- if grep ' rule = "Host:' ${INSTANCE_DOMAIN} ' "' /etc/ckan-cloud/traefik-values.yaml; then
47- echo Skipping load balancer deployment
48- echo instance domain already exists in load balancer values: ${INSTANCE_DOMAIN}
49- else
50- echo Configuring load balancer for domain " ${INSTANCE_DOMAIN} "
51- cp -f " ${TRAEFIK_VALUES_FILE} " /etc/ckan-cloud/backups/traefik-values.yaml.` date +%Y-%m-%d_%H-%M` && \
52- cp -f " ${TRAEFIK_VALUES_FILE} " /etc/ckan-cloud/backups/traefik-values.yaml.last
53- [ " $? " != " 0" ] && exit 1
54-
55- TRAEFIK_VALUES_MODIFIED_FILE=/etc/ckan-cloud/traefik-values.yaml
56-
57- if [ " ${WITH_SANS_SSL} " == " 1" ]; then
58- echo Configuring SSL
59- TEMPFILE=` mktemp`
60- python3 -c '
61- import yaml, json;
62- traefik_values = yaml.load(open("' ${TRAEFIK_VALUES_MODIFIED_FILE} ' "));
63- def acme_domains():
64- for line in traefik_values["acmeDomains"].splitlines():
65- if line.startswith(" sans = ["):
66- line = " sans = " + json.dumps(json.loads(line.strip().split(" = ")[1]) + ["' ${INSTANCE_DOMAIN} ' "])
67- yield line
68- print(yaml.dump(dict(traefik_values, acmeDomains="\n".join(acme_domains())),
69- default_flow_style=False));
70- ' > $TEMPFILE
71- [ " $? " != " 0" ] && exit 1
72- TRAEFIK_VALUES_MODIFIED_FILE=$TEMPFILE
73- fi
74-
75- TEMPFILE=` mktemp`
76- python3 -c '
77- import yaml;
78- traefik_values = yaml.load(open("' ${TRAEFIK_VALUES_MODIFIED_FILE} ' "));
79- traefik_values["backends"] += " \n\
80- [backends.' ${INSTANCE_ID} ' ] \n\
81- [backends.' ${INSTANCE_ID} ' .servers.server1] \n\
82- url = \"http://nginx.' ${INSTANCE_NAMESPACE} ' \" \n\
83- ";
84- traefik_values["frontends"] += " \n\
85- [frontends.' ${INSTANCE_ID} ' ] \n\
86- backend=\"' ${INSTANCE_ID} ' \" \n\
87- passHostHeader = true \n\
88- [frontends.' ${INSTANCE_ID} ' .headers] \n\
89- SSLRedirect = true \n\
90- [frontends.' ${INSTANCE_ID} ' .routes.route1] \n\
91- rule = \"Host:' ${INSTANCE_DOMAIN} ' \" \n\
92- ";
93- print(yaml.dump(traefik_values, default_flow_style=False));
94- ' > $TEMPFILE
95- [ " $? " != " 0" ] && exit 1
96- TRAEFIK_VALUES_MODIFIED_FILE=$TEMPFILE
97-
98- mv $TRAEFIK_VALUES_MODIFIED_FILE $TRAEFIK_VALUES_FILE
99-
100- echo Deploying to kube context ` kubectl $KUBECTL_GLOBAL_ARGS config current-context` , load balancer hostname: ${LOAD_BALANCER_HOSTNAME}
101-
102- helm upgrade " ${TRAEFIK_HELM_RELEASE_NAME} " " ${TRAEFIK_HELM_CHART_PATH} " \
103- --namespace " ${TRAEFIK_NAMESPACE} " -if " ${TRAEFIK_VALUES_FILE} " --dry-run --debug > /dev/stderr && \
104- helm upgrade " ${TRAEFIK_HELM_RELEASE_NAME} " " ${TRAEFIK_HELM_CHART_PATH} " \
105- --namespace " ${TRAEFIK_NAMESPACE} " -if " ${TRAEFIK_VALUES_FILE} "
106- [ " $? " != " 0" ] && exit 1
107- fi
46+ ! add_domain_to_traefik " ${INSTANCE_DOMAIN} " " ${WITH_SANS_SSL} " " ${INSTANCE_ID} " && exit 1
10847fi
10948
11049if kubectl $KUBECTL_GLOBAL_ARGS get ns " ${INSTANCE_NAMESPACE} " ; then
0 commit comments