From 692336eb1c33c64423b8724cd8338aeb9f78abb5 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Mon, 1 Apr 2019 00:03:48 -0400 Subject: [PATCH] initial k8s configs --- ....dockerfile => megacosm-webapp.dockerfile} | 6 +- TF/main.tf | 92 ------------------- ...loader.yml => megacosm-dataloader-job.yml} | 12 ++- k8s/megacosm-namespace.yml | 4 + k8s/megacosm-redis-deployment.yml | 23 +++++ k8s/megacosm-redis-service.yml | 13 +++ k8s/megacosm-webapp-deployment.yml | 21 +++++ k8s/megacosm-webapp-ingress.yml | 14 +++ k8s/megacosm-webapp-service.yml | 13 +++ 9 files changed, 100 insertions(+), 98 deletions(-) rename Dockerfiles/{megacosm-gunicorn.dockerfile => megacosm-webapp.dockerfile} (62%) rename k8s/{dataloader.yml => megacosm-dataloader-job.yml} (63%) create mode 100644 k8s/megacosm-namespace.yml create mode 100644 k8s/megacosm-redis-deployment.yml create mode 100644 k8s/megacosm-redis-service.yml create mode 100644 k8s/megacosm-webapp-deployment.yml create mode 100644 k8s/megacosm-webapp-ingress.yml create mode 100644 k8s/megacosm-webapp-service.yml diff --git a/Dockerfiles/megacosm-gunicorn.dockerfile b/Dockerfiles/megacosm-webapp.dockerfile similarity index 62% rename from Dockerfiles/megacosm-gunicorn.dockerfile rename to Dockerfiles/megacosm-webapp.dockerfile index c91d030..7293cd2 100644 --- a/Dockerfiles/megacosm-gunicorn.dockerfile +++ b/Dockerfiles/megacosm-webapp.dockerfile @@ -4,10 +4,10 @@ WORKDIR /app #COPY megacosm log run.py requirements.txt /app/ COPY . /app COPY config.py.example /app/config.py +EXPOSE 8000 RUN pip install --no-cache-dir --trusted-host pypi.python.org -r requirements.txt -EXPOSE 8000 -CMD [ "/usr/local/bin/python", "run.py"] +#CMD [ "/usr/local/bin/python", "run.py"] #CMD '/bin/bash' -#/var/www/megacosm.morgajel.net/.env/bin/gunicorn --pid /var/run/megacosm/pid --bind unix:/var/run/megacosm/socket megacosm:app -w 2 +CMD ["gunicorn", "megacosm:app", "-w", "4" ] diff --git a/TF/main.tf b/TF/main.tf index f0923d2..6851a64 100644 --- a/TF/main.tf +++ b/TF/main.tf @@ -1,96 +1,4 @@ provider "kubernetes" {} -resource "kubernetes_namespace" "megacosm" { - metadata { - name = "megacosm" - } -} -resource "kubernetes_deployment" "megacosm-deployment" { - metadata { - name = "megacosm-deployment" - labels { - test = "Megacosm" - } - } - - spec { - replicas = 2 - - selector { - match_labels { - test = "Megacosm" - } - } - - template { - metadata { - labels { - test = "Megacosm" - } - } - spec { - container { - image = "redis:latest" - name = "redis" - resources{ - limits{ - cpu = "0.5" - memory = "512Mi" - } - requests{ - cpu = "250m" - memory = "50Mi" - } - } - } - container { - image="python:3.7" - name = "data-loader" - } - } - } - } -} - - - -//resource "kubernetes_service" "redis-service" { -// metadata { -// name = "redis-service" -// } -// spec { -// selector { -// app = "${kubernetes_pod.redis.metadata.0.labels.app}" -// } -// session_affinity = "ClientIP" -// port { -// port = 16379 -// target_port = 6379 -// } -// -// type = "LoadBalancer" -// } -//} - -resource "kubernetes_pod" "megacosm" { - metadata { - name = "megacosm" - labels { - app = "Megacosm" - } - } - - spec { - container { - image = "redis:latest" - name = "redis" - } - container { - image = "python" - name = "redis" - } - } -} - diff --git a/k8s/dataloader.yml b/k8s/megacosm-dataloader-job.yml similarity index 63% rename from k8s/dataloader.yml rename to k8s/megacosm-dataloader-job.yml index 1e20538..cf76c2b 100644 --- a/k8s/dataloader.yml +++ b/k8s/megacosm-dataloader-job.yml @@ -1,7 +1,8 @@ +--- apiVersion: batch/v1 kind: Job metadata: - name: single-job + name: megacosm-dataloader spec: backoffLimit: 6 # number of retries before throwing error activeDeadlineSeconds: 10 # time to allow job to run @@ -17,6 +18,11 @@ spec: image: megacosm-dataloader:latest env: - name: REDISHOST - value: localhost + resourceFieldRef: + serviceName: megacosm-redis + resource: medadata.name - name: REDISPORT - value: 6379 + resourceFieldRef: + serviceName: megacosm-redis + resource: spec.ports.port + diff --git a/k8s/megacosm-namespace.yml b/k8s/megacosm-namespace.yml new file mode 100644 index 0000000..f99d00a --- /dev/null +++ b/k8s/megacosm-namespace.yml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: megacosm diff --git a/k8s/megacosm-redis-deployment.yml b/k8s/megacosm-redis-deployment.yml new file mode 100644 index 0000000..f3ad629 --- /dev/null +++ b/k8s/megacosm-redis-deployment.yml @@ -0,0 +1,23 @@ +apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use extensions/v1beta1 +kind: Deployment +metadata: + name: megacosm-redis +spec: + selector: + matchLabels: + app: megacosm-redis + replicas: 2 + template: + metadata: + labels: + app: megacosm-redis + spec: + containers: + - name: megacosm-redis + image: morgajel/megacosm-redis # or just image: redis + resources: + requests: + cpu: 100m + memory: 100Mi + ports: + - containerPort: 6379 \ No newline at end of file diff --git a/k8s/megacosm-redis-service.yml b/k8s/megacosm-redis-service.yml new file mode 100644 index 0000000..3a3f21a --- /dev/null +++ b/k8s/megacosm-redis-service.yml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: megacosm-redis + labels: + app: megacosm-redis +spec: + ports: + - port: 6379 + targetPort: 6379 + selector: + app: megacosm-redis diff --git a/k8s/megacosm-webapp-deployment.yml b/k8s/megacosm-webapp-deployment.yml new file mode 100644 index 0000000..71552db --- /dev/null +++ b/k8s/megacosm-webapp-deployment.yml @@ -0,0 +1,21 @@ +apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use extensions/v1beta1 +kind: Deployment +metadata: + name: megacosm-webapp +spec: + selector: + matchLabels: + app: megacosm-webapp + replicas: 2 + template: + metadata: + labels: + app: megacosm-webapp + spec: + containers: + - name: megacosm-webapp + image: morgajel/megacosm-webapp:latest + resources: + ports: + - containerPort: 8000 + diff --git a/k8s/megacosm-webapp-ingress.yml b/k8s/megacosm-webapp-ingress.yml new file mode 100644 index 0000000..52e0c34 --- /dev/null +++ b/k8s/megacosm-webapp-ingress.yml @@ -0,0 +1,14 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: megacosm-webapp-ingress + annotations: + ingress.kubernetes.io/rewrite-target: / +spec: + rules: + - http: + paths: + - path: / + backend: + serviceName: megacosm-webapp + servicePort: 8000 diff --git a/k8s/megacosm-webapp-service.yml b/k8s/megacosm-webapp-service.yml new file mode 100644 index 0000000..efeae17 --- /dev/null +++ b/k8s/megacosm-webapp-service.yml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: megacosm-webapp + labels: + app: megacosm-webapp +spec: + ports: + - port: 8000 + targetPort: 8000 + selector: + app: megacosm-webapp