From e9a1653c4e32a4c8983063f48d2bc7ec0cceb429 Mon Sep 17 00:00:00 2001 From: Declan Date: Wed, 27 Sep 2023 22:27:52 +0100 Subject: [PATCH] manifests --- manifests/.gitkeep | 0 manifests/auth-service.yaml | 76 +++++++++++++++++++ manifests/comment-service.yaml | 71 +++++++++++++++++ manifests/frontend.yaml | 35 +++++++++ manifests/gateway-service.yaml | 66 ++++++++++++++++ manifests/jwtkeys-secret.yaml | 44 +++++++++++ manifests/kafka.yaml | 56 ++++++++++++++ manifests/panel-service.yaml | 76 +++++++++++++++++++ manifests/post-service.yaml | 76 +++++++++++++++++++ manifests/services-configmap.yaml | 73 ++++++++++++++++++ manifests/user-service.yaml | 46 +++++++++++ services/frontend/src/app/features/api.ts | 4 +- services/frontend/src/app/types/api.ts | 6 ++ .../frontend/src/components/PanelLayout.tsx | 6 +- .../frontend/src/components/UserLayout.tsx | 6 +- services/frontend/src/pages/PanelPost.tsx | 6 +- skaffold.yaml | 46 +++++++++++ 17 files changed, 683 insertions(+), 10 deletions(-) delete mode 100644 manifests/.gitkeep create mode 100644 manifests/auth-service.yaml create mode 100644 manifests/comment-service.yaml create mode 100644 manifests/frontend.yaml create mode 100644 manifests/gateway-service.yaml create mode 100644 manifests/jwtkeys-secret.yaml create mode 100644 manifests/kafka.yaml create mode 100644 manifests/panel-service.yaml create mode 100644 manifests/post-service.yaml create mode 100644 manifests/services-configmap.yaml create mode 100644 manifests/user-service.yaml create mode 100644 skaffold.yaml diff --git a/manifests/.gitkeep b/manifests/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/manifests/auth-service.yaml b/manifests/auth-service.yaml new file mode 100644 index 0000000..f5ce5d7 --- /dev/null +++ b/manifests/auth-service.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: auth-service +spec: + replicas: 1 + selector: + matchLabels: + app: auth-service + strategy: {} + template: + metadata: + labels: + app: auth-service + spec: + containers: + - name: auth-service + image: panels/auth-service + ports: + - containerPort: 9090 + env: + - name: JWT_PUBLIC_KEY + valueFrom: + secretKeyRef: + name: panels-jwtkeys-secret + key: public-key + - name: JWT_PRIVATE_KEY + valueFrom: + secretKeyRef: + name: panels-jwtkeys-secret + key: private-key + - name: PASSWORD_PEPPER + valueFrom: + configMapKeyRef: + name: auth-service-config + key: password-pepper + - name: POSTGRES_HOST + valueFrom: + configMapKeyRef: + name: auth-service-config + key: postgres-host + - name: POSTGRES_USER + valueFrom: + configMapKeyRef: + name: auth-service-config + key: postgres-user + - name: POSTGRES_PASS + valueFrom: + configMapKeyRef: + name: auth-service-config + key: postgres-pass + - name: POSTGRES_DATABASE + valueFrom: + configMapKeyRef: + name: auth-service-config + key: postgres-database + - name: KAFKA_BROKERS + valueFrom: + configMapKeyRef: + name: panels-shared-config + key: kafka-brokers + resources: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: auth-service +spec: + selectors: + app: auth-service + type: ClusterIP + ports: + - name: grpc + port: 9090 + targetPort: 9090 + protocol: TCP \ No newline at end of file diff --git a/manifests/comment-service.yaml b/manifests/comment-service.yaml new file mode 100644 index 0000000..a4d707b --- /dev/null +++ b/manifests/comment-service.yaml @@ -0,0 +1,71 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: comment-service +spec: + replicas: 1 + selector: + matchLabels: + app: comment-service + strategy: {} + template: + metadata: + labels: + app: comment-service + spec: + containers: + - name: comment-service + image: panels/comment-service + ports: + - containerPort: 9090 + env: + - name: POSTGRES_HOST + valueFrom: + configMapKeyRef: + name: comment-service-config + key: postgres-host + - name: POSTGRES_USER + valueFrom: + configMapKeyRef: + name: comment-service-config + key: postgres-user + - name: POSTGRES_PASS + valueFrom: + configMapKeyRef: + name: comment-service-config + key: postgres-pass + - name: POSTGRES_DATABASE + valueFrom: + configMapKeyRef: + name: comment-service-config + key: postgres-database + - name: REDIS_HOST + valueFrom: + configMapKeyRef: + name: comment-service-config + key: redis-host + - name: REDIS_PASS + valueFrom: + configMapKeyRef: + name: comment-service-config + key: redis-pass + - name: KAFKA_BROKERS + valueFrom: + configMapKeyRef: + name: panels-shared-config + key: kafka-brokers + resources: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: comment-service +spec: + selectors: + app: comment-service + type: ClusterIP + ports: + - name: grpc + port: 9090 + targetPort: 9090 + protocol: TCP \ No newline at end of file diff --git a/manifests/frontend.yaml b/manifests/frontend.yaml new file mode 100644 index 0000000..e98606e --- /dev/null +++ b/manifests/frontend.yaml @@ -0,0 +1,35 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend +spec: + replicas: 1 + selector: + matchLabels: + app: frontend + template: + metadata: + labels: + app: frontend + spec: + containers: + - name: frontend + image: panels/frontend + ports: + - containerPort: 80 + resources: {} + restartPolicy: Always +--- +apiVersion: v1 +kind: Service +metadata: + name: frontend +spec: + selectors: + app: frontend + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: 80 + protocol: TCP \ No newline at end of file diff --git a/manifests/gateway-service.yaml b/manifests/gateway-service.yaml new file mode 100644 index 0000000..133a81f --- /dev/null +++ b/manifests/gateway-service.yaml @@ -0,0 +1,66 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: gateway-service +spec: + replicas: 1 + selector: + matchLabels: + app: gateway-service + strategy: {} + template: + metadata: + labels: + app: gateway-service + spec: + containers: + - name: gateway-service + image: panels/gateway-service + ports: + - containerPort: 3000 + env: + - name: JWT_PUBLIC_KEY + valueFrom: + secretKeyRef: + name: panels-jwtkeys-secret + key: public-key + - name: AUTH_SVC_ADDR + valueFrom: + configMapKeyRef: + name: gateway-service-config + key: auth-service-address + - name: COMMENT_SVC_ADDR + valueFrom: + configMapKeyRef: + name: gateway-service-config + key: comment-service-address + - name: PANEL_SVC_ADDR + valueFrom: + configMapKeyRef: + name: gateway-service-config + key: panel-service-address + - name: POST_SVC_ADDR + valueFrom: + configMapKeyRef: + name: gateway-service-config + key: post-service-address + - name: USER_SVC_ADDR + valueFrom: + configMapKeyRef: + name: gateway-service-config + key: user-service-address + resources: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: gateway-service +spec: + selectors: + app: gateway-service + type: ClusterIP + ports: + - name: http + port: 3000 + targetPort: 3000 + protocol: TCP \ No newline at end of file diff --git a/manifests/jwtkeys-secret.yaml b/manifests/jwtkeys-secret.yaml new file mode 100644 index 0000000..64a59b5 --- /dev/null +++ b/manifests/jwtkeys-secret.yaml @@ -0,0 +1,44 @@ +apiVersion: v1 +kind: Secrets +metadata: + name: panels-jwtkeys-secret +type: Opaque +data: + public-key: | + -----BEGIN PUBLIC KEY----- + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7LhPzG5rcU2A55qek4fK + E7T0YyXLTkEXjUXvd7f/7UY21BelgHVTS2L71Qms/sOjHEXwR8lwvP9VxWDTA0bx + n9rpXTV0UuFEam8JFe70O7Z9+43WujjbagMON/15YkwF94xiZPrYrZ18LE2eVHiC + eQmtW3W8AK5qZzrvDDwAdbTLvmKEkDpeJa82Ay0O/cqmIQ7Ctu4GWczwRJMbM2Tm + 5PY3YCVgEtXMVcP0eeawcIAtY5WrYrtOUdMAhtYtFXXUiNmibAR8lS8Mu20juFw9 + bgoaPQvR7aW/8K/hpiGfmsyWYfljG3LNbRB0JbrU9q6z6W/rD3FUBBeCyoVzP8N3 + SwIDAQAB + -----END PUBLIC KEY----- + private-key: | + -----BEGIN RSA PRIVATE KEY----- + MIIEpgIBAAKCAQEA7LhPzG5rcU2A55qek4fKE7T0YyXLTkEXjUXvd7f/7UY21Bel + gHVTS2L71Qms/sOjHEXwR8lwvP9VxWDTA0bxn9rpXTV0UuFEam8JFe70O7Z9+43W + ujjbagMON/15YkwF94xiZPrYrZ18LE2eVHiCeQmtW3W8AK5qZzrvDDwAdbTLvmKE + kDpeJa82Ay0O/cqmIQ7Ctu4GWczwRJMbM2Tm5PY3YCVgEtXMVcP0eeawcIAtY5Wr + YrtOUdMAhtYtFXXUiNmibAR8lS8Mu20juFw9bgoaPQvR7aW/8K/hpiGfmsyWYflj + G3LNbRB0JbrU9q6z6W/rD3FUBBeCyoVzP8N3SwIDAQABAoIBAQDXsrab2/2xF2Mf + JwfZ/ICI5nlNotGXM77HLvOejh340eMB7a4T2FSWu9Im9BMbbZ7CE4R3lTlSLgO0 + v55nPQzMkYfVM/ET2EokBZsszjjj9EzlnAAOXeKovbIGGMSzafyB7fx2cRBhWsAc + Cnn8FHcm3UeGsEgoAsXX3J6X8lCk7uGHGgHg2OoIGy3gHxbp8BbVRWxAH2nkWcqz + zC45jzE+knmZkW7I99eAwLN77AzDfXYIMkv6EvxpYWPgUIknwyww2ghcGmlXpk7L + gT3kyujDh+j9ZkAZv7QwbKVka/HWAD2CGKP4XL+gaeoseGC19ckEolywaf1c4gy2 + DN5gBCHpAoGBAPrjQhochIu1c3S8NawCaE77gF1qDWA35onIKFuhT0a5wV/YLsUr + k2IzNvhLqoWKSndaNgxici95d+wXVOpKKCYX+GcU5fDubIx7joKVqLj+hMtb/5AK + S0P00rjBPfPqMk+mWaG1XMbx1/ne3boWVVCr+PnVo72eZ9z8ul+7mzstAoGBAPGL + Je7iE7fdKYx1Cr3l7ImqhpmTmG+wohwpZuTx4KCyc0eZRPJJGKq3+TtzzxSdG94T + 3czyRZ7MbjYKryVOw4G2Ii1eZ1oiIRkI8Q2CBWCYaiyXXAwLeJHoC9yjgAD0zWmS + LGqfpJpZJE9CsuH2U27qcFkA8o3kf8CE8rCFCKdXAoGBAJf9i3M0KZxVzd8/kihl + wPlwZeCxue67jt+TsddpDxTiveKpnhP3BS+tpTSg6mpCUECkFzBDh7d5GAygSeIy + EMabKPKR94eReZNV2w0DS5bfImXskxOZGOXPcMVa1IRrMhWMyqorrEweAWCwApWU + qBTaSlhYc/0Q9Q0s0l/i0PT1AoGBANOpILt9ZtQGvML1SU1w7t8QDFUFzl2JRfUx + npXfEv0egwBp4c4Cmdf30TH04LDqn6HyfLl8T9/Auo8mu6YQqCfBR5/ECwMjxycd + +8XfewDTbq7Wj/WKE8Sft81HhQLRgjMRwVRJwr7ygGvoQcLazO/0BjEoMGSAqCY3 + Gkfuu8+PAoGBAOUxFqskISqop2PbYFd8HE74xJbVAG1Jf8uXIe2ysDqkvu9Fbzv5 + Zw5invtp5VHpZ0SLSytUb6KsHcRiqI5s2mnMnaLip2RgtnEsA5fcnWx1aFQIrXXb + UQqDvIKwRhOfcfDdu1CLYiobtcCesBHIG1sO2+/TbauXnlpaWYz7CXkV + -----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/manifests/kafka.yaml b/manifests/kafka.yaml new file mode 100644 index 0000000..350445a --- /dev/null +++ b/manifests/kafka.yaml @@ -0,0 +1,56 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kafka +spec: + replicas: 1 + selector: + matchLabels: + app: kafka + template: + metadata: + labels: + app: kafka + spec: + containers: + - name: kafka + image: bitnami/kafka:3.4 + ports: + - containerPort: 19093 + - containerPort: 19092 + - containerPort: 9092 + env: + - name: KAFKA_CFG_ADVERTISED_LISTENERS + value: INTERNAL://kafka:19092,EXTERNAL://localhost:9092 + - name: KAFKA_CFG_CONTROLLER_LISTENER_NAMES + value: CONTROLLER + - name: KAFKA_CFG_CONTROLLER_QUORUM_VOTERS + value: 0@kafka:19093 + - name: KAFKA_CFG_INTER_BROKER_LISTENER_NAME + value: INTERNAL + - name: KAFKA_CFG_LISTENERS + value: CONTROLLER://:19093,INTERNAL://:19092,EXTERNAL://:9092 + - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP + value: CONTROLLER:PLAINTEXT,INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT + - name: KAFKA_CFG_NODE_ID + value: "0" + - name: KAFKA_CFG_PROCESS_ROLES + value: controller,broker + - name: KAFKA_KRAFT_CLUSTER_ID + value: g9rbXaCaSGqB3CURPeEvTA + resources: {} + restartPolicy: Always +--- +apiVersion: v1 +kind: Service +metadata: + name: kafka +spec: + selectors: + app: kafka + type: ClusterIP + ports: + - name: kafka + port: 19092 + targetPort: 19092 + protocol: TCP \ No newline at end of file diff --git a/manifests/panel-service.yaml b/manifests/panel-service.yaml new file mode 100644 index 0000000..2cc13f4 --- /dev/null +++ b/manifests/panel-service.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: panel-service +spec: + replicas: 1 + selector: + matchLabels: + app: panel-service + strategy: {} + template: + metadata: + labels: + app: panel-service + spec: + containers: + - name: panel-service + image: panels/panel-service + ports: + - containerPort: 9090 + env: + - name: POSTGRES_HOST + valueFrom: + configMapKeyRef: + name: panel-service-config + key: postgres-host + - name: POSTGRES_USER + valueFrom: + configMapKeyRef: + name: panel-service-config + key: postgres-user + - name: POSTGRES_PASS + valueFrom: + configMapKeyRef: + name: panel-service-config + key: postgres-pass + - name: POSTGRES_DATABASE + valueFrom: + configMapKeyRef: + name: panel-service-config + key: postgres-database + - name: REDIS_HOST + valueFrom: + configMapKeyRef: + name: panel-service-config + key: redis-host + - name: REDIS_PASS + valueFrom: + configMapKeyRef: + name: panel-service-config + key: redis-pass + - name: LOG_LEVEL + valueFrom: + configMapKeyRef: + name: panel-service-config + key: log-level + - name: KAFKA_BROKERS + valueFrom: + configMapKeyRef: + name: panels-shared-config + key: kafka-brokers + resources: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: panel-service +spec: + selectors: + app: panel-service + type: ClusterIP + ports: + - name: grpc + port: 9090 + targetPort: 9090 + protocol: TCP \ No newline at end of file diff --git a/manifests/post-service.yaml b/manifests/post-service.yaml new file mode 100644 index 0000000..32211e7 --- /dev/null +++ b/manifests/post-service.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: post-service +spec: + replicas: 1 + selector: + matchLabels: + app: post-service + strategy: {} + template: + metadata: + labels: + app: post-service + spec: + containers: + - name: post-service + image: panels/post-service + ports: + - containerPort: 9090 + env: + - name: POSTGRES_HOST + valueFrom: + configMapKeyRef: + name: post-service-config + key: postgres-host + - name: POSTGRES_USER + valueFrom: + configMapKeyRef: + name: post-service-config + key: postgres-user + - name: POSTGRES_PASS + valueFrom: + configMapKeyRef: + name: post-service-config + key: postgres-pass + - name: POSTGRES_DATABASE + valueFrom: + configMapKeyRef: + name: post-service-config + key: postgres-database + - name: REDIS_HOST + valueFrom: + configMapKeyRef: + name: post-service-config + key: redis-host + - name: REDIS_PASS + valueFrom: + configMapKeyRef: + name: post-service-config + key: redis-pass + - name: LOG_LEVEL + valueFrom: + configMapKeyRef: + name: post-service-config + key: log-level + - name: KAFKA_BROKERS + valueFrom: + configMapKeyRef: + name: panels-shared-config + key: kafka-brokers + resources: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: post-service +spec: + selectors: + app: post-service + type: ClusterIP + ports: + - name: grpc + port: 9090 + targetPort: 9090 + protocol: TCP \ No newline at end of file diff --git a/manifests/services-configmap.yaml b/manifests/services-configmap.yaml new file mode 100644 index 0000000..455e578 --- /dev/null +++ b/manifests/services-configmap.yaml @@ -0,0 +1,73 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: panels-shared-config +data: + kafka-brokers: kafka:19092 +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: gateway-service-config +data: + auth-service-address: auth-service:9090 + comment-service-address: comment-service:9090 + panel-service-address: panel-service:9090 + post-service-address: post-service:9090 + user-service-address: user-service:9090 +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: auth-service-config +data: + password-pepper: 4d0c18c368489d4c0b48c497efb1d6b3 + postgres-host: host.docker.internal:5434 + postgres-user: postgres + postgres-pass: postgres + postgres-database: postgres +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: comment-service-config +data: + postgres-host: host.docker.internal:5435 + postgres-user: postgres + postgres-pass: postgres + postgres-database: postgres + redis-host: host.docker.internal:6381 + redis-pass: redis +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: panel-service-config +data: + postgres-host: host.docker.internal:5432 + postgres-user: postgres + postgres-pass: postgres + postgres-database: postgres + redis-host: host.docker.internal:6379 + redis-pass: redis + log-level: info +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: post-service-config +data: + postgres-host: host.docker.internal:5433 + postgres-user: postgres + postgres-pass: postgres + postgres-database: postgres + redis-host: host.docker.internal:6380 + redis-pass: redis + log-level: info +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: user-service-config +data: + mongodb-uri: mongodb://mongo:mongo@host.docker.internal:27017/ \ No newline at end of file diff --git a/manifests/user-service.yaml b/manifests/user-service.yaml new file mode 100644 index 0000000..39b12a0 --- /dev/null +++ b/manifests/user-service.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: user-service +spec: + replicas: 1 + selector: + matchLabels: + app: user-service + strategy: {} + template: + metadata: + labels: + app: user-service + spec: + containers: + - name: user-service + image: panels/user-service + ports: + - containerPort: 9090 + env: + - name: MONGODB_URI + valueFrom: + configMapKeyRef: + name: user-service-config + key: mongodb-uri + - name: KAFKA_BROKERS + valueFrom: + configMapKeyRef: + name: panels-shared-config + key: kafka-brokers + resources: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: user-service +spec: + selectors: + app: user-service + type: ClusterIP + ports: + - name: grpc + port: 9090 + targetPort: 9090 + protocol: TCP \ No newline at end of file diff --git a/services/frontend/src/app/features/api.ts b/services/frontend/src/app/features/api.ts index 99ad63b..9dfb99e 100644 --- a/services/frontend/src/app/features/api.ts +++ b/services/frontend/src/app/features/api.ts @@ -3,6 +3,7 @@ import type { BaseQueryFn } from '@reduxjs/toolkit/query' import { setUnauthed } from './auth' import type { RootState } from '../store' +import type { QueryError } from '../types/api'; const baseQuery = fetchBaseQuery({ baseUrl: import.meta.env.VITE_API_URL, @@ -18,7 +19,8 @@ const baseQuery = fetchBaseQuery({ } }) -const wrappedBaseQuery: BaseQueryFn = async (args, api, extraOptions) => { +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const wrappedBaseQuery: BaseQueryFn = async (args, api, extraOptions) => { const result = await baseQuery(args, api, extraOptions) if ((api.getState() as RootState).auth.accessToken && result?.error?.status === 403) { api.dispatch(setUnauthed()) diff --git a/services/frontend/src/app/types/api.ts b/services/frontend/src/app/types/api.ts index 988e464..b4269ff 100644 --- a/services/frontend/src/app/types/api.ts +++ b/services/frontend/src/app/types/api.ts @@ -1,3 +1,9 @@ +import type { FetchBaseQueryError } from '@reduxjs/toolkit/query' + +export type QueryError = FetchBaseQueryError | { + data: ErrorResponse; +} + export type RawResponse = { status: string; msg?: string; diff --git a/services/frontend/src/components/PanelLayout.tsx b/services/frontend/src/components/PanelLayout.tsx index 064bf88..bd50594 100644 --- a/services/frontend/src/components/PanelLayout.tsx +++ b/services/frontend/src/components/PanelLayout.tsx @@ -6,7 +6,7 @@ import LoadingBar from '../components/LoadingBar' import { useAppSelector } from '../app/hooks' import { useGetPanelByNameQuery } from '../app/api/panels' import type { Panel } from '../app/types/common' -import type { ErrorResponse } from '../app/types/api' +import type { QueryError, ErrorResponse } from '../app/types/api' export type PanelContext = { panel: Panel; @@ -63,8 +63,8 @@ function PanelLayout() { } else if (!data) { if (!error) { throw Error('Unknown error occured') - } else if ('data' in error) { - const errResponse = error.data as ErrorResponse + } else if ((error as QueryError).data) { + const errResponse = (error as QueryError).data as ErrorResponse if (errResponse.msg) { throw Error(errResponse.msg) } else { diff --git a/services/frontend/src/components/UserLayout.tsx b/services/frontend/src/components/UserLayout.tsx index 525f7e4..b3a5f0a 100644 --- a/services/frontend/src/components/UserLayout.tsx +++ b/services/frontend/src/components/UserLayout.tsx @@ -7,7 +7,7 @@ import LoadingBar from './LoadingBar' import { User } from '../app/types/common' import { useAppSelector } from '../app/hooks' import { useGetUserByNameQuery } from '../app/api/users' -import type { ErrorResponse } from '../app/types/api' +import type { ErrorResponse, QueryError } from '../app/types/api' export type UserContext = { user: User @@ -40,8 +40,8 @@ function UserLayout() { } else if (!data) { if (!error) { throw Error('Unknown error occured') - } else if ('data' in error) { - const errResponse = error.data as ErrorResponse + } else if ((error as QueryError).data) { + const errResponse = (error as QueryError).data as ErrorResponse if (errResponse.msg) { throw Error(errResponse.msg) } else { diff --git a/services/frontend/src/pages/PanelPost.tsx b/services/frontend/src/pages/PanelPost.tsx index ad24cbb..b92a3fe 100644 --- a/services/frontend/src/pages/PanelPost.tsx +++ b/services/frontend/src/pages/PanelPost.tsx @@ -10,7 +10,7 @@ import LoadingBar from '../components/LoadingBar' import { useAppSelector } from '../app/hooks' import { useGetPanelPostQuery } from '../app/api/posts' import type { PanelContext } from '../components/PanelLayout' -import type { ErrorResponse } from '../app/types/api' +import type { QueryError, ErrorResponse } from '../app/types/api' import type { Comment } from '../app/types/common' type PanelPostPageParams = { @@ -37,8 +37,8 @@ function PanelPostPage() { } else if (!data) { if (!error) { throw Error('Unknown error occured') - } else if ('data' in error) { - const errResponse = error.data as ErrorResponse + } else if ((error as QueryError).data) { + const errResponse = (error as QueryError).data as ErrorResponse if (errResponse.msg) { throw Error(errResponse.msg) } else { diff --git a/skaffold.yaml b/skaffold.yaml new file mode 100644 index 0000000..eb18eaa --- /dev/null +++ b/skaffold.yaml @@ -0,0 +1,46 @@ +apiVersion: skaffold/v3 +kind: Config +metadata: + name: panels +build: + artifacts: + - image: panels/auth-service + context: services/auth-service + docker: + dockerfile: Dockerfile + - image: panels/comment-service + context: services/comment-service + docker: + dockerfile: Dockerfile + - image: panels/frontend + context: services/frontend + docker: + dockerfile: Dockerfile + - image: panels/gateway-service + context: services/gateway-service + docker: + dockerfile: Dockerfile + - image: panels/panel-service + context: services/panel-service + docker: + dockerfile: Dockerfile + - image: panels/post-service + context: services/post-service + docker: + dockerfile: Dockerfile + - image: panels/user-service + context: services/user-service + docker: + dockerfile: Dockerfile +manifests: + rawYaml: + - ./manifests/jwtkeys-secret.yaml + - ./manifests/services-configmap.yaml + - ./manifests/kafka.yaml + - ./manifests/frontend.yaml + - ./manifests/auth-service.yaml + - ./manifests/gateway-service.yaml + - ./manifests/panel-service.yaml + - ./manifests/post-service.yaml + - ./manifests/user-service.yaml + - ./manifests/comment-service.yaml \ No newline at end of file