From 86557bcd09b374a797900c70aebf9c72e061ef66 Mon Sep 17 00:00:00 2001 From: greattashinegi <97507378+greattashinegi@users.noreply.github.com> Date: Tue, 2 Aug 2022 12:08:09 +0530 Subject: [PATCH 1/3] Add files via upload --- Kubernetes Project/api-cluster-ip-service.yml | 11 +++++++ Kubernetes Project/api-deployment.yml | 31 +++++++++++++++++++ Kubernetes Project/ingress-service.yml | 19 ++++++++++++ .../postgres-cluster-ip-service.yml | 11 +++++++ Kubernetes Project/postgres-deployment.yml | 27 ++++++++++++++++ 5 files changed, 99 insertions(+) create mode 100644 Kubernetes Project/api-cluster-ip-service.yml create mode 100644 Kubernetes Project/api-deployment.yml create mode 100644 Kubernetes Project/ingress-service.yml create mode 100644 Kubernetes Project/postgres-cluster-ip-service.yml create mode 100644 Kubernetes Project/postgres-deployment.yml diff --git a/Kubernetes Project/api-cluster-ip-service.yml b/Kubernetes Project/api-cluster-ip-service.yml new file mode 100644 index 00000000..6ea31372 --- /dev/null +++ b/Kubernetes Project/api-cluster-ip-service.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: api-cluster-ip-service +spec: + type: ClusterIP + selector: + component: api + ports: + - port: 3000 + targetPort: 3000 diff --git a/Kubernetes Project/api-deployment.yml b/Kubernetes Project/api-deployment.yml new file mode 100644 index 00000000..eba6adac --- /dev/null +++ b/Kubernetes Project/api-deployment.yml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: api-deployment +spec: + replicas: 1 + selector: + matchLabels: + component: api + template: + metadata: + labels: + component: api + spec: + containers: + - name: api + image: axelsilverdew/simple-api:latest + ports: + - containerPort: 3000 + env: + - name: POSTGRES_USER + value: postgres + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: pgpassword + key: POSTGRES_PASSWORD + - name: POSTGRES_DB + value: simple_blog_api + - name: POSTGRES_HOST + value: postgres-cluster-ip-service diff --git a/Kubernetes Project/ingress-service.yml b/Kubernetes Project/ingress-service.yml new file mode 100644 index 00000000..6d52520f --- /dev/null +++ b/Kubernetes Project/ingress-service.yml @@ -0,0 +1,19 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ingress-service + annotations: + kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/use-regex: "true" + nginx.ingress.kubernetes.io/rewrite-target: /$1 +spec: + rules: + - http: + paths: + - path: /?(.*) + pathType: Prefix + backend: + service: + name: api-cluster-ip-service + port: + number: 3000 diff --git a/Kubernetes Project/postgres-cluster-ip-service.yml b/Kubernetes Project/postgres-cluster-ip-service.yml new file mode 100644 index 00000000..d39856c0 --- /dev/null +++ b/Kubernetes Project/postgres-cluster-ip-service.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: postgres-cluster-ip-service +spec: + type: ClusterIP + selector: + component: postgres + ports: + - port: 5432 + targetPort: 5432 diff --git a/Kubernetes Project/postgres-deployment.yml b/Kubernetes Project/postgres-deployment.yml new file mode 100644 index 00000000..52ccc1be --- /dev/null +++ b/Kubernetes Project/postgres-deployment.yml @@ -0,0 +1,27 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres-deployment +spec: + replicas: 1 + selector: + matchLabels: + component: postgres + template: + metadata: + labels: + component: postgres + spec: + containers: + - name: postgres + image: postgres + ports: + - containerPort: 5432 + env: + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: pgpassword + key: POSTGRES_PASSWORD + - name: POSTGRES_DB + value: simple_blog_api From 5d8b7f320fceb1ff517259e938c27fd40c42eb89 Mon Sep 17 00:00:00 2001 From: greattashinegi <97507378+greattashinegi@users.noreply.github.com> Date: Tue, 2 Aug 2022 12:18:46 +0530 Subject: [PATCH 2/3] Add files via upload --- Docker Project/Dockerfile.dev | 6 ++++++ Docker Project/docker-compose.yml | 20 +++++++++++++++++ Docker Project/nodemon.json | 6 ++++++ Docker Project/package.json | 36 +++++++++++++++++++++++++++++++ Docker Project/tsconfig.json | 13 +++++++++++ 5 files changed, 81 insertions(+) create mode 100644 Docker Project/Dockerfile.dev create mode 100644 Docker Project/docker-compose.yml create mode 100644 Docker Project/nodemon.json create mode 100644 Docker Project/package.json create mode 100644 Docker Project/tsconfig.json diff --git a/Docker Project/Dockerfile.dev b/Docker Project/Dockerfile.dev new file mode 100644 index 00000000..2e11945b --- /dev/null +++ b/Docker Project/Dockerfile.dev @@ -0,0 +1,6 @@ +FROM node:alpine +WORKDIR /usr/app +COPY ./package.json . +RUN npm install +COPY . . +CMD ["npm", "run", "serve"] diff --git a/Docker Project/docker-compose.yml b/Docker Project/docker-compose.yml new file mode 100644 index 00000000..943c54a0 --- /dev/null +++ b/Docker Project/docker-compose.yml @@ -0,0 +1,20 @@ +version: '3' +services: + postgres: + image: 'postgres:latest' + environment: + - POSTGRES_PASSWORD=postgres_password + - POSTGRES_USER=postgres + - POSTGRES_DB=simple_blog_api + api: + depends_on: + - postgres + image: axelsilverdew/simple-api:latest + ports: + - '3000:3000' + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres_password + - POSTGRES_DB=simple_blog_api + - POSTGRES_HOST=postgres + - POSTGRES_PORT=5432 diff --git a/Docker Project/nodemon.json b/Docker Project/nodemon.json new file mode 100644 index 00000000..2734934f --- /dev/null +++ b/Docker Project/nodemon.json @@ -0,0 +1,6 @@ +{ + "watch": ["src"], + "exec": "npm run serve", + "ext": "ts" +} + diff --git a/Docker Project/package.json b/Docker Project/package.json new file mode 100644 index 00000000..ce90f4cb --- /dev/null +++ b/Docker Project/package.json @@ -0,0 +1,36 @@ +{ + "name": "simple_todo_api", + "version": "1.0.0", + "description": "Simple Todo API for Docker/K8s project", + "main": "app.ts", + "scripts": { + "build": "tsc", + "serve": "ts-node src/server.ts", + "start": "nodemon", + "lint": "eslint" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@types/http-status-codes": "^1.2.0", + "@types/koa": "^2.13.4", + "@types/koa-bodyparser": "^4.3.2", + "@types/koa-router": "^7.4.4", + "@types/node": "^16.3.3", + "@typescript-eslint/eslint-plugin": "^4.28.3", + "@typescript-eslint/parser": "^4.28.3", + "eslint": "^7.31.0", + "eslint-config-airbnb": "^18.2.1", + "http-status-codes": "^2.1.4", + "koa": "^2.13.1", + "koa-bodyparser": "^4.3.0", + "koa-router": "^10.0.0", + "nodemon": "^2.0.12", + "pg": "^8.6.0", + "reflect-metadata": "^0.1.13", + "ts-node": "^10.1.0", + "typeorm": "^0.2.34", + "typescript": "^4.3.5" + } +} + diff --git a/Docker Project/tsconfig.json b/Docker Project/tsconfig.json new file mode 100644 index 00000000..c7294e9d --- /dev/null +++ b/Docker Project/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ES2018", + "module": "commonjs", + "lib": ["es2018"], + "outDir": "dist", + "rootDir": "src", + "noImplicitAny": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true + } +} + From 6854654496112a9d133e24a95948e6a1421e33fd Mon Sep 17 00:00:00 2001 From: greattashinegi <97507378+greattashinegi@users.noreply.github.com> Date: Tue, 2 Aug 2022 12:19:12 +0530 Subject: [PATCH 3/3] Add files via upload