238 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
	
	
		
		
			
		
	
	
			238 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
	
	
|   | 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": [
 | ||
|  |     {
 | ||
|  |       "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
 | ||
|  |           }
 | ||
|  |         ]
 | ||
|  |       },
 | ||
|  |       "status": {
 | ||
|  |         "loadBalancer": {
 | ||
|  |           "ingress": [
 | ||
|  |             {
 | ||
|  |               "ip": "127.0.0.1"
 | ||
|  |             }
 | ||
|  |           ]
 | ||
|  |         }
 | ||
|  |       }
 | ||
|  |     },
 | ||
|  |     {
 | ||
|  |       "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"
 | ||
|  |       },
 | ||
|  |       "status": {
 | ||
|  |         "loadBalancer": {}
 | ||
|  |       }
 | ||
|  |     },
 | ||
|  |     {
 | ||
|  |       "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": {
 | ||
|  |           "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,
 | ||
|  |             "volumes": [
 | ||
|  |               {
 | ||
|  |                 "hostPath": {
 | ||
|  |                   "path": "/etc/ssl/certs",
 | ||
|  |                   "type": ""
 | ||
|  |                 },
 | ||
|  |                 "name": "ssl-certs"
 | ||
|  |               }
 | ||
|  |             ]
 | ||
|  |           }
 | ||
|  |         }
 | ||
|  |       }
 | ||
|  |     }
 | ||
|  |   ],
 | ||
|  |   "kind": "List"
 | ||
|  | }
 |