From f9221c776e261748369747c63e39ece8cd96c247 Mon Sep 17 00:00:00 2001 From: dlddu <39251873+dlddu@users.noreply.github.com> Date: Mon, 12 Jan 2026 07:23:35 +0000 Subject: [PATCH 1/4] feat: add Dockerfile for container deployment - Multi-stage build with Node.js 20 Alpine - Build frontend assets in builder stage - Health check endpoint at /page/index.html - Expose port 8080 - Add .dockerignore to optimize build context Co-Authored-By: Claude Opus 4.5 --- .dockerignore | 12 ++++++++++++ Dockerfile | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..e80c68a2 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,12 @@ +node_modules +npm-debug.log +.git +.gitignore +.vscode +*.md +images +example +.env.dev +.eslintrc.js +.eslintignore +.editorconfig diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..3724fa8b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +# Build stage +FROM node:20-alpine AS builder + +WORKDIR /app + +# Install dependencies +COPY package.json yarn.lock ./ +RUN yarn install --frozen-lockfile + +# Copy source and build +COPY . . +RUN yarn build + +# Production stage +FROM node:20-alpine + +WORKDIR /app + +# Copy built assets and required files +COPY --from=builder /app/dist ./dist +COPY --from=builder /app/src/server ./src/server +COPY --from=builder /app/devtools-frontend ./devtools-frontend +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package.json ./ + +# Expose port +EXPOSE 8080 + +# Environment variables +ENV NODE_ENV=production +ENV DEBUG_PORT=8080 + +# Health check +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD wget --no-verbose --tries=1 --spider http://localhost:8080/page/index.html || exit 1 + +# Start server +CMD ["npm", "run", "start"] From 5b715ce1a688427f07c6b3c7e3e25de9713e44f5 Mon Sep 17 00:00:00 2001 From: dlddu <39251873+dlddu@users.noreply.github.com> Date: Mon, 12 Jan 2026 07:29:53 +0000 Subject: [PATCH 2/4] feat: add Helm values files for dev/prod environments - release/values.dev.yaml for dev environment - Domain: webview-debug-dev.buzzvil.dev - Resources: 100m/256Mi - 500m/512Mi - Replicas: 1 - release/values.prod.yaml for prod environment - Domain: webview-debug.buzzvil.dev - Resources: 200m/512Mi - 1000m/1Gi - Replicas: 2 Both include: - Health check at /page/index.html - Environment variables: DEBUG_PORT, DEBUG_HOST - Ingress configuration with TLS Co-Authored-By: Claude Opus 4.5 --- release/values.dev.yaml | 78 ++++++++++++++++++++++++++++++++++++++++ release/values.prod.yaml | 78 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 release/values.dev.yaml create mode 100644 release/values.prod.yaml diff --git a/release/values.dev.yaml b/release/values.dev.yaml new file mode 100644 index 00000000..1d19a393 --- /dev/null +++ b/release/values.dev.yaml @@ -0,0 +1,78 @@ +# values.dev.yaml - devtools-remote-debugger dev environment +global: + fullnameOverride: devtools-remote-debugger-dev + environment: dev + service: devtools-remote-debugger + team: devops + +replicaCount: 1 + +image: + repository: 591756927972.dkr.ecr.ap-northeast-1.amazonaws.com/devtools-remote-debugger + pullPolicy: IfNotPresent + tag: "" + +serviceAccount: + create: true + name: devtools-remote-debugger-dev + annotations: {} + +service: + type: ClusterIP + port: 8080 + targetPort: 8080 + +ingress: + enabled: true + className: "" + annotations: + kubernetes.io/ingress.class: nginx + hosts: + - host: webview-debug-dev.buzzvil.dev + paths: + - path: / + pathType: Prefix + tls: + - secretName: webview-debug-dev-tls + hosts: + - webview-debug-dev.buzzvil.dev + +resources: + limits: + cpu: 500m + memory: 512Mi + requests: + cpu: 100m + memory: 256Mi + +readinessProbe: + httpGet: + path: /page/index.html + port: 8080 + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + +livenessProbe: + httpGet: + path: /page/index.html + port: 8080 + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 3 + +env: + - name: NODE_ENV + value: "production" + - name: DEBUG_PORT + value: "8080" + - name: DEBUG_HOST + value: "https://webview-debug-dev.buzzvil.dev" + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/release/values.prod.yaml b/release/values.prod.yaml new file mode 100644 index 00000000..4b737118 --- /dev/null +++ b/release/values.prod.yaml @@ -0,0 +1,78 @@ +# values.prod.yaml - devtools-remote-debugger prod environment +global: + fullnameOverride: devtools-remote-debugger-prod + environment: prod + service: devtools-remote-debugger + team: devops + +replicaCount: 2 + +image: + repository: 591756927972.dkr.ecr.ap-northeast-1.amazonaws.com/devtools-remote-debugger + pullPolicy: IfNotPresent + tag: "" + +serviceAccount: + create: true + name: devtools-remote-debugger-prod + annotations: {} + +service: + type: ClusterIP + port: 8080 + targetPort: 8080 + +ingress: + enabled: true + className: "" + annotations: + kubernetes.io/ingress.class: nginx + hosts: + - host: webview-debug.buzzvil.dev + paths: + - path: / + pathType: Prefix + tls: + - secretName: webview-debug-tls + hosts: + - webview-debug.buzzvil.dev + +resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 200m + memory: 512Mi + +readinessProbe: + httpGet: + path: /page/index.html + port: 8080 + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + +livenessProbe: + httpGet: + path: /page/index.html + port: 8080 + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 3 + +env: + - name: NODE_ENV + value: "production" + - name: DEBUG_PORT + value: "8080" + - name: DEBUG_HOST + value: "https://webview-debug.buzzvil.dev" + +nodeSelector: {} + +tolerations: [] + +affinity: {} From f22bcf51a663f37a8a0a899856d133d7c7d37a2b Mon Sep 17 00:00:00 2001 From: dlddu <39251873+dlddu@users.noreply.github.com> Date: Mon, 12 Jan 2026 08:03:33 +0000 Subject: [PATCH 3/4] feat: update values files with Istio VirtualService configuration - Replace nginx ingress with Istio gatewayRoutes - Configure public gateway routes for external access - Use config map instead of env array for environment variables Co-Authored-By: Claude Opus 4.5 --- release/values.dev.yaml | 46 ++++++++++++++++++---------------------- release/values.prod.yaml | 46 ++++++++++++++++++---------------------- 2 files changed, 42 insertions(+), 50 deletions(-) diff --git a/release/values.dev.yaml b/release/values.dev.yaml index 1d19a393..074db2c6 100644 --- a/release/values.dev.yaml +++ b/release/values.dev.yaml @@ -17,25 +17,24 @@ serviceAccount: name: devtools-remote-debugger-dev annotations: {} -service: - type: ClusterIP - port: 8080 - targetPort: 8080 +# -- Service +ports: + - name: http + port: 8080 + protocol: TCP -ingress: - enabled: true - className: "" - annotations: - kubernetes.io/ingress.class: nginx - hosts: - - host: webview-debug-dev.buzzvil.dev - paths: - - path: / - pathType: Prefix - tls: - - secretName: webview-debug-dev-tls - hosts: - - webview-debug-dev.buzzvil.dev +# -- VirtualService (Istio Gateway Routes) +gatewayRoutes: + - name: public + hosts: + - webview-debug-dev.buzzvil.dev + http: + - name: devtools-remote-debugger + route: + - destination: + host: devtools-remote-debugger-dev.devtools-remote-debugger + port: + number: 8080 resources: limits: @@ -63,13 +62,10 @@ livenessProbe: timeoutSeconds: 5 failureThreshold: 3 -env: - - name: NODE_ENV - value: "production" - - name: DEBUG_PORT - value: "8080" - - name: DEBUG_HOST - value: "https://webview-debug-dev.buzzvil.dev" +config: + NODE_ENV: production + DEBUG_PORT: "8080" + DEBUG_HOST: https://webview-debug-dev.buzzvil.dev nodeSelector: {} diff --git a/release/values.prod.yaml b/release/values.prod.yaml index 4b737118..40ed5f9e 100644 --- a/release/values.prod.yaml +++ b/release/values.prod.yaml @@ -17,25 +17,24 @@ serviceAccount: name: devtools-remote-debugger-prod annotations: {} -service: - type: ClusterIP - port: 8080 - targetPort: 8080 +# -- Service +ports: + - name: http + port: 8080 + protocol: TCP -ingress: - enabled: true - className: "" - annotations: - kubernetes.io/ingress.class: nginx - hosts: - - host: webview-debug.buzzvil.dev - paths: - - path: / - pathType: Prefix - tls: - - secretName: webview-debug-tls - hosts: - - webview-debug.buzzvil.dev +# -- VirtualService (Istio Gateway Routes) +gatewayRoutes: + - name: public + hosts: + - webview-debug.buzzvil.dev + http: + - name: devtools-remote-debugger + route: + - destination: + host: devtools-remote-debugger-prod.devtools-remote-debugger + port: + number: 8080 resources: limits: @@ -63,13 +62,10 @@ livenessProbe: timeoutSeconds: 5 failureThreshold: 3 -env: - - name: NODE_ENV - value: "production" - - name: DEBUG_PORT - value: "8080" - - name: DEBUG_HOST - value: "https://webview-debug.buzzvil.dev" +config: + NODE_ENV: production + DEBUG_PORT: "8080" + DEBUG_HOST: https://webview-debug.buzzvil.dev nodeSelector: {} From 32fb96125480fa46ca32c4667755b539529e1357 Mon Sep 17 00:00:00 2001 From: dlddu <39251873+dlddu@users.noreply.github.com> Date: Mon, 12 Jan 2026 08:09:02 +0000 Subject: [PATCH 4/4] chore: change team from devops to adhub Co-Authored-By: Claude Opus 4.5 --- release/values.dev.yaml | 2 +- release/values.prod.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/release/values.dev.yaml b/release/values.dev.yaml index 074db2c6..d5b5f222 100644 --- a/release/values.dev.yaml +++ b/release/values.dev.yaml @@ -3,7 +3,7 @@ global: fullnameOverride: devtools-remote-debugger-dev environment: dev service: devtools-remote-debugger - team: devops + team: adhub replicaCount: 1 diff --git a/release/values.prod.yaml b/release/values.prod.yaml index 40ed5f9e..9502fef3 100644 --- a/release/values.prod.yaml +++ b/release/values.prod.yaml @@ -3,7 +3,7 @@ global: fullnameOverride: devtools-remote-debugger-prod environment: prod service: devtools-remote-debugger - team: devops + team: adhub replicaCount: 2