Przeglądaj źródła

feat: deploy script and added client/other dependencies to manifest

Fela Maslen 5 lat temu
rodzic
commit
657792c0bf
2 zmienionych plików z 180 dodań i 24 usunięć
  1. 22 0
      k8s/deploy.sh
  2. 158 24
      k8s/manifest.yml

+ 22 - 0
k8s/deploy.sh

@@ -0,0 +1,22 @@
+#!/bin/bash
+
+set -e
+
+cd $(dirname "$0")
+
+IMAGE_BACKEND=$(make -f ../gmus-backend/Makefile get_image)
+IMAGE_WEB=$(make -f ../gmus-web/Makefile get_image)
+
+namespace="gmus"
+
+cat ./manifest.yml \
+  | sed -e "s/docker\.fela\.space\/gmus-backend\:0/$(echo $IMAGE_BACKEND | sed -e 's/\//\\\//')/g" \
+  | sed -e "s/docker\.fela\.space\/gmus-web\:0/$(echo $IMAGE_WEB | sed -e 's/\//\\\//')/g" \
+  > ./manifest_with_image.yml
+
+echo "Updating deployment..."
+kubectl -n=$namespace apply -f ./manifest_with_image.yml
+
+rm -f manifest_with_image.yml
+
+exit 0

+ 158 - 24
k8s/manifest.yml

@@ -1,46 +1,138 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: gmusic
+  name: gmus
 spec:
   type: LoadBalancer
   selector:
-    app: gmusic
+    app: gmus
   ports:
     - name: http
       protocol: TCP
-      port: 8080
+      port: 8081
       targetPort: 80
 ---
 apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
-  name: gmusic-ingress
+  name: gmus-ingress
   annotations:
-    nginx.ingress.kubernetes.io/rewrite-target: /
+    nginx.ingress.kubernetes.io/rewrite-target: /$2
 spec:
   rules:
     - http:
         paths:
-          - path: /
+          - path: /api(/|$)(.*)
             pathType: Prefix
             backend:
               service:
-                name: gmusic
+                name: gmus-backend
                 port:
                   number: 80
+          - path: /(.*)
+            backend:
+              service:
+                name: gmus-web
+                port:
+                  number: 80
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: gmus-backend
+  labels:
+    app: gmus-backend
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: gmus-backend
+  template:
+    metadata:
+      labels:
+        app: gmus-backend
+    spec:
+      imagePullSecrets:
+        - name: regcred
+      containers:
+        - name: gmus-backend
+          image: docker.fela.space/gmus-backend:0
+          ports:
+            - containerPort: 80
+          envFrom:
+            - configMapRef:
+                name: gmus-backend
+          env:
+            - name: GO_ENV
+              value: production
+            - name: POSTGRES_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: postgres-pass
+                  key: password
+          livenessProbe:
+            initialDelaySeconds: 5
+            periodSeconds: 5
+            httpGet:
+              path: /liveness
+              port: 80
+          readinessProbe:
+            initialDelaySeconds: 5
+            periodSeconds: 5
+            httpGet:
+              path: /readiness
+              port: 80
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: gmus-web
+  labels:
+    app: gmus-web
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: gmus-web
+  template:
+    metadata:
+      labels:
+        app: gmus-web
+    spec:
+      imagePullSecrets:
+        - name: regcred
+      containers:
+        - name: gmus-web
+          image: docker.fela.space/gmus-web:0
+          ports:
+            - containerPort: 80
+          envFrom:
+            - configMapRef:
+                name: gmus-web
+          livenessProbe:
+            initialDelaySeconds: 5
+            periodSeconds: 5
+            httpGet:
+              path: /liveness
+              port: 80
+          readinessProbe:
+            initialDelaySeconds: 5
+            periodSeconds: 5
+            httpGet:
+              path: /readiness
+              port: 80
 ---
 apiVersion: v1
 kind: Service
 metadata:
-  name: gmusic-database
+  name: gmus-database
   labels:
-    app: gmusic-database
+    app: gmus-database
 spec:
   ports:
     - port: 5432
   selector:
-    app: gmusic-database
+    app: gmus-database
     tier: postgres
   clusterIP: None
 ---
@@ -56,7 +148,7 @@ kind: PersistentVolume
 metadata:
   name: postgres-pv
   labels:
-    app: gmusic-database
+    app: gmus-database
 spec:
   storageClassName: manual
   capacity:
@@ -64,14 +156,14 @@ spec:
   accessModes:
     - ReadWriteOnce
   hostPath:
-    path: /var/local/gmusic-database
+    path: /var/local/gmus-database
 ---
 apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
   name: postgres-pv-claim
   labels:
-    app: gmusic-database
+    app: gmus-database
 spec:
   storageClassName: manual
   accessModes:
@@ -83,20 +175,20 @@ spec:
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  name: gmusic-database
+  name: gmus-database
   labels:
-    app: gmusic-database
+    app: gmus-database
 spec:
   selector:
     matchLabels:
-      app: gmusic-database
+      app: gmus-database
       tier: postgres
   strategy:
     type: Recreate
   template:
     metadata:
       labels:
-        app: gmusic-database
+        app: gmus-database
         tier: postgres
     spec:
       containers:
@@ -104,7 +196,7 @@ spec:
           name: postgres
           env:
             - name: POSTGRES_USER
-              value: gmusic
+              value: gmus
             - name: POSTGRES_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -121,10 +213,50 @@ spec:
           persistentVolumeClaim:
             claimName: postgres-pv-claim
 ---
+apiVersion: v1
+kind: Service
+metadata:
+  name: gmus-redis
+  labels:
+    app: gmus-redis
+spec:
+  ports:
+    - port: 6379
+  selector:
+    app: gmus-redis
+    tier: redis
+  clusterIP: None
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: gmus-redis
+  labels:
+    app: gmus-redis
+spec:
+  selector:
+    matchLabels:
+      app: gmus-redis
+      tier: redis
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      labels:
+        app: gmus-redis
+        tier: redis
+    spec:
+      containers:
+        - image: redis:6-alpine
+          name: redis
+          ports:
+            - containerPort: 6379
+              name: redis
+---
 apiVersion: batch/v1beta1
 kind: CronJob
 metadata:
-  name: gmusic-scan-library
+  name: gmus-scan-library
 spec:
   schedule: "45 5 * * *"
   jobTemplate:
@@ -132,17 +264,19 @@ spec:
       template:
         spec:
           containers:
-            - name: gmusic-scan
-              image: docker.fela.space/gmusic:0
+            - name: gmus-scan
+              image: docker.fela.space/gmus-backend:0
               args:
                 - scan
               envFrom:
                 - configMapRef:
-                    name: gmusic
+                    name: gmus-backend
               env:
-                - name: DATABASE_URL
+                - name: GO_ENV
+                  value: production
+                - name: POSTGRES_PASSWORD
                   valueFrom:
                     secretKeyRef:
                       name: postgres-pass
-                      key: url
+                      key: password
           restartPolicy: Never