Switch to building in the rego-dev namespace
This commit is contained in:
		
							parent
							
								
									304436881b
								
							
						
					
					
						commit
						65bed40faf
					
				
					 2 changed files with 148 additions and 208 deletions
				
			
		|  | @ -44,10 +44,11 @@ build_review_deployment: | |||
|     - docker:dind | ||||
|   stage: build | ||||
|   script: | ||||
|     - docker run -v "${PWD}"/k8s:/src sparkprime/jsonnet /src/deployment_template.jsonnet --tla-str slug="${CI_COMMIT_REF_SLUG}" > "${CI_COMMIT_REF_SLUG}".json | ||||
|     - docker run -v "${PWD}"/k8s:/src sparkprime/jsonnet /src/deployment_template.jsonnet --tla-str slug="${CI_COMMIT_REF_SLUG}" -m /src | ||||
|   artifacts: | ||||
|     paths: | ||||
|       - "${CI_COMMIT_REF_SLUG}.json"  | ||||
|     - k8s/deployment.json | ||||
|     - k8s/ingress-patch.json | ||||
| 
 | ||||
| build_2019_dev_image: | ||||
|   image: docker:git | ||||
|  | @ -91,7 +92,8 @@ k8s-2019_dev_review-deploy: | |||
|   - kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt | ||||
|   - kubectl config set-context cluster --cluster=cluster --namespace=rego-dev --user=gitlab-sa | ||||
|   - kubectl config use-context cluster | ||||
|   - kubectl --token "${GL_KUBE_TOKEN}" apply -f ${CI_COMMIT_REF_SLUG}.json | ||||
|   - kubectl --token "${GL_KUBE_TOKEN}" apply -f k8s/deployment.json | ||||
|   - kubectl --token "${GL_KUBE_TOKEN}" describe ingress | grep "${CI_COMMIT_REF_SLUG}" || kubectl --token "${GL_KUBE_TOKEN}" patch ingress symposion-app-ingress -p "$(cat k8s/ingress-patch.json)" --type json | ||||
|   only: | ||||
|   - /^dev\/.*$/ | ||||
|   environment: | ||||
|  | @ -107,7 +109,7 @@ k8s-2019_dev_review-stop-deploy: | |||
|   - kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt | ||||
|   - kubectl config set-context cluster --cluster=cluster --namespace=rego-dev --user=gitlab-sa | ||||
|   - kubectl config use-context cluster | ||||
|   - kubectl --token "${GL_KUBE_TOKEN}" delete -f ${CI_COMMIT_REF_SLUG}.json | ||||
|   - kubectl --token "${GL_KUBE_TOKEN}" delete -f k8s/deployment.json | ||||
|   only: | ||||
|   - /^dev\/.*$/ | ||||
|   when: manual | ||||
|  |  | |||
|  | @ -1,225 +1,163 @@ | |||
| function (slug) { | ||||
| 
 | ||||
|   local namespace = slug + "-rego-dev", | ||||
|   local domain = slug + ".dev.lca2019.org", | ||||
|   local tls_certname = slug + "-dev-lca2019-org", | ||||
|   local tls_secret = tls_certname + "-tls", | ||||
|    | ||||
|   "apiVersion": "v1", | ||||
|   "items": [ | ||||
|   local app = "symposion-app-" + slug, | ||||
|   local namespace = "rego-dev", | ||||
|   local domain = slug + ".dev.lca2019.org", | ||||
|    | ||||
|   "deployment.json": | ||||
|     { | ||||
|       "apiVersion": "v1", | ||||
|       "kind": "Namespace", | ||||
|       "metadata": { | ||||
|         "name": namespace, | ||||
|         "namespace": "", | ||||
|       }, | ||||
|       "spec": { | ||||
|         "finalizers": [ | ||||
|           "kubernetes" | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "apiVersion": "certmanager.k8s.io/v1alpha1", | ||||
|       "kind": "Certificate", | ||||
|       "metadata": { | ||||
|         "name": tls_certname, | ||||
|         "namespace": namespace | ||||
|       }, | ||||
|       "spec": { | ||||
|         "acme": { | ||||
|           "config": [ | ||||
|             { | ||||
|               "domains": [ | ||||
|                 domain | ||||
|               ], | ||||
|               "http01": { | ||||
|                 "ingress": "", | ||||
|                 "ingressClass": "nginx" | ||||
|               } | ||||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         "commonName": domain, | ||||
|         "issuerRef": { | ||||
|           "kind": "ClusterIssuer", | ||||
|           "name": "letsencrypt-prod" | ||||
|         }, | ||||
|         "secretName": tls_secret | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "apiVersion": "extensions/v1beta1", | ||||
|       "kind": "Ingress", | ||||
|       "metadata": { | ||||
|         "name": "symposion-app-ingress", | ||||
|         "namespace": namespace | ||||
|       }, | ||||
|       "spec": { | ||||
|         "backend": { | ||||
|           "serviceName": "symposion-app", | ||||
|           "servicePort": 80 | ||||
|         }, | ||||
|         "rules": [ | ||||
|           { | ||||
|             "host": domain, | ||||
|             "http": { | ||||
|               "paths": [ | ||||
|                 { | ||||
|                   "backend": { | ||||
|                     "serviceName": "symposion-app", | ||||
|                     "servicePort": 8000 | ||||
|                   }, | ||||
|                   "path": "/" | ||||
|                 } | ||||
|               ] | ||||
|             } | ||||
|           } | ||||
|         ], | ||||
|         "tls": [ | ||||
|           { | ||||
|             "hosts": [ | ||||
|               domain | ||||
|             ], | ||||
|             "secretName": tls_secret | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "apiVersion": "v1", | ||||
|       "kind": "Service", | ||||
|       "metadata": { | ||||
|         "labels": { | ||||
|           "app": "symposion-app" | ||||
|         }, | ||||
|         "name": "symposion-app", | ||||
|         "namespace": namespace | ||||
|       }, | ||||
|       "spec": { | ||||
|         "ports": [ | ||||
|           { | ||||
|             "port": 8000, | ||||
|             "protocol": "TCP", | ||||
|             "targetPort": 8000 | ||||
|           } | ||||
|         ], | ||||
|         "selector": { | ||||
|           "app": "symposion-app" | ||||
|         }, | ||||
|         "sessionAffinity": "None", | ||||
|         "type": "ClusterIP" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "apiVersion": "extensions/v1beta1", | ||||
|       "kind": "Deployment", | ||||
|       "metadata": { | ||||
|         "labels": { | ||||
|           "app": "symposion-app" | ||||
|         }, | ||||
|         "name": "symposion-app", | ||||
|         "namespace": namespace | ||||
|       }, | ||||
|       "spec": { | ||||
|         "replicas": 1, | ||||
|         "revisionHistoryLimit": 1, | ||||
|         "selector": { | ||||
|           "matchLabels": { | ||||
|             "app": "symposion-app" | ||||
|           } | ||||
|         }, | ||||
|         "strategy": { | ||||
|           "rollingUpdate": { | ||||
|             "maxSurge": 1, | ||||
|             "maxUnavailable": 1 | ||||
|           }, | ||||
|           "type": "RollingUpdate" | ||||
|         }, | ||||
|         "template": { | ||||
|       "items": [ | ||||
|         { | ||||
|           "apiVersion": "v1", | ||||
|           "kind": "Service", | ||||
|           "metadata": { | ||||
|             "labels": { | ||||
|               "app": "symposion-app" | ||||
|             } | ||||
|             }, | ||||
|             "name": app, | ||||
|             "namespace": namespace | ||||
|           }, | ||||
|           "spec": { | ||||
|             "containers": [ | ||||
|             "ports": [ | ||||
|               { | ||||
|                 "env": [ | ||||
|                   { | ||||
|                     "name": "SYMPOSION_APP_DEBUG", | ||||
|                     "value": "1" | ||||
|                   }, | ||||
|                   { | ||||
|                     "name": "DJANGO_SECRET_KEY", | ||||
|                     "value": "paGhahQuain5ohYoh0moorai" | ||||
|                   }, | ||||
|                   { | ||||
|                     "name": "DATABASE_URL", | ||||
|                     "value": "sqlite:////tmp/symposion.sqlite" | ||||
|                   }, | ||||
|                   { | ||||
|                     "name": "GCS_BUCKET", | ||||
|                     "value": "CEA51A5-A613-4AEF-A9FB-D0A57D77C13B" | ||||
|                   }, | ||||
|                   { | ||||
|                     "name": "GOOGLE_APPLICATION_CREDENTIALS", | ||||
|                     "value": "/dev/null" | ||||
|                   }, | ||||
|                   { | ||||
|                     "name": "STRIPE_PUBLIC_KEY", | ||||
|                     "value": "5CEA51A5-A613-4AEF-A9FB-D0A57D77C13B" | ||||
|                   }, | ||||
|                   { | ||||
|                     "name": "STRIPE_SECRET_KEY", | ||||
|                     "value": "5CEA51A5-A613-4AEF-A9FB-D0A57D77C13B" | ||||
|                   }, | ||||
|                 ], | ||||
|                 "image": "asia.gcr.io/linuxconfsydney/symposion_app_2019_dev:" + slug, | ||||
|                 "imagePullPolicy": "Always", | ||||
|                 "livenessProbe": { | ||||
|                   "failureThreshold": 3, | ||||
|                   "httpGet": { | ||||
|                     "path": "/admin/login/", | ||||
|                     "port": 8000, | ||||
|                     "scheme": "HTTP" | ||||
|                   }, | ||||
|                   "initialDelaySeconds": 120, | ||||
|                   "periodSeconds": 10, | ||||
|                   "successThreshold": 1, | ||||
|                   "timeoutSeconds": 2 | ||||
|                 }, | ||||
|                 "name": "symposion-app", | ||||
|                 "ports": [ | ||||
|                   { | ||||
|                     "containerPort": 8000, | ||||
|                     "protocol": "TCP" | ||||
|                   } | ||||
|                 ], | ||||
|                 "resources": {}, | ||||
|                 "terminationMessagePath": "/dev/termination-log", | ||||
|                 "terminationMessagePolicy": "File" | ||||
|                 "port": 8000, | ||||
|                 "protocol": "TCP", | ||||
|                 "targetPort": 8000 | ||||
|               } | ||||
|             ], | ||||
|             "dnsPolicy": "ClusterFirst", | ||||
|             "restartPolicy": "Always", | ||||
|             "schedulerName": "default-scheduler", | ||||
|             "securityContext": {}, | ||||
|             "terminationGracePeriodSeconds": 30, | ||||
|             "volumes": [ | ||||
|             "selector": { | ||||
|               "app": "symposion-app" | ||||
|             }, | ||||
|             "sessionAffinity": "None", | ||||
|             "type": "ClusterIP" | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "apiVersion": "extensions/v1beta1", | ||||
|           "kind": "Deployment", | ||||
|           "metadata": { | ||||
|             "labels": { | ||||
|               "app": "symposion-app" | ||||
|             }, | ||||
|             "name": app, | ||||
|             "namespace": namespace | ||||
|           }, | ||||
|           "spec": { | ||||
|             "replicas": 1, | ||||
|             "revisionHistoryLimit": 1, | ||||
|             "selector": { | ||||
|               "matchLabels": { | ||||
|                 "app": "symposion-app" | ||||
|               } | ||||
|             }, | ||||
|             "strategy": { | ||||
|               "rollingUpdate": { | ||||
|                 "maxSurge": 1, | ||||
|                 "maxUnavailable": 1 | ||||
|               }, | ||||
|               "type": "RollingUpdate" | ||||
|             }, | ||||
|             "template": { | ||||
|               "metadata": { | ||||
|                 "labels": { | ||||
|                   "app": "symposion-app" | ||||
|                 } | ||||
|               }, | ||||
|               "spec": { | ||||
|                 "containers": [ | ||||
|                   { | ||||
|                     "env": [ | ||||
|                       { | ||||
|                         "name": "SYMPOSION_APP_DEBUG", | ||||
|                         "value": "1" | ||||
|                       }, | ||||
|                       { | ||||
|                         "name": "DJANGO_SECRET_KEY", | ||||
|                         "value": "paGhahQuain5ohYoh0moorai" | ||||
|                       }, | ||||
|                       { | ||||
|                         "name": "DATABASE_URL", | ||||
|                         "value": "sqlite:////tmp/symposion.sqlite" | ||||
|                       }, | ||||
|                       { | ||||
|                         "name": "GCS_BUCKET", | ||||
|                         "value": "CEA51A5-A613-4AEF-A9FB-D0A57D77C13B" | ||||
|                       }, | ||||
|                       { | ||||
|                         "name": "GOOGLE_APPLICATION_CREDENTIALS", | ||||
|                         "value": "/dev/null" | ||||
|                       }, | ||||
|                       { | ||||
|                         "name": "STRIPE_PUBLIC_KEY", | ||||
|                         "value": "5CEA51A5-A613-4AEF-A9FB-D0A57D77C13B" | ||||
|                       }, | ||||
|                       { | ||||
|                         "name": "STRIPE_SECRET_KEY", | ||||
|                         "value": "5CEA51A5-A613-4AEF-A9FB-D0A57D77C13B" | ||||
|                       }, | ||||
|                     ], | ||||
|                     "image": "asia.gcr.io/linuxconfsydney/symposion_app_2019_dev:" + slug, | ||||
|                     "imagePullPolicy": "Always", | ||||
|                     "livenessProbe": { | ||||
|                       "failureThreshold": 3, | ||||
|                       "httpGet": { | ||||
|                         "path": "/admin/login/", | ||||
|                         "port": 8000, | ||||
|                         "scheme": "HTTP" | ||||
|                       }, | ||||
|                       "initialDelaySeconds": 120, | ||||
|                       "periodSeconds": 10, | ||||
|                       "successThreshold": 1, | ||||
|                       "timeoutSeconds": 2 | ||||
|                     }, | ||||
|                     "name": "symposion-app", | ||||
|                     "ports": [ | ||||
|                       { | ||||
|                         "containerPort": 8000, | ||||
|                         "protocol": "TCP" | ||||
|                       } | ||||
|                     ], | ||||
|                     "resources": {}, | ||||
|                     "terminationMessagePath": "/dev/termination-log", | ||||
|                     "terminationMessagePolicy": "File" | ||||
|                   } | ||||
|                 ], | ||||
|                 "dnsPolicy": "ClusterFirst", | ||||
|                 "restartPolicy": "Always", | ||||
|                 "schedulerName": "default-scheduler", | ||||
|                 "securityContext": {}, | ||||
|                 "terminationGracePeriodSeconds": 30 | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "kind": "List" | ||||
|     }, | ||||
|   "ingress-patch.json": [ | ||||
|       { | ||||
|         "op": "add", | ||||
|         "path": "/spec/rules/-", | ||||
|         "value": { | ||||
|           "host": domain, | ||||
|           "http": { | ||||
|             "paths": [ | ||||
|               { | ||||
|                 "hostPath": { | ||||
|                   "path": "/etc/ssl/certs", | ||||
|                   "type": "" | ||||
|                 "backend": { | ||||
|                   "serviceName": app, | ||||
|                   "servicePort": 8000 | ||||
|                 }, | ||||
|                 "name": "ssl-certs" | ||||
|                 "path": "/" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
|         "op": "add", | ||||
|         "path": "/spec/tls/0/hosts/-", | ||||
|         "value": domain | ||||
|       } | ||||
|     } | ||||
|   ], | ||||
|   "kind": "List" | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 James Polley
						James Polley