# Note: Secret 'woocommerce-credentials' must be created manually with real credentials: # kubectl create secret generic woocommerce-credentials -n manoonoils \ # --from-literal=WOOCOMMERCE_URL="https://manoonoils.com" \ # --from-literal=WOOCOMMERCE_CONSUMER_KEY="ck_6a62a2ac8fa8d50e4757bf3b35c9d052dbbcf09f" \ # --from-literal=WOOCOMMERCE_CONSUMER_SECRET="cs_0ea41d2c8fc232d1e609e559ea8561d02c4406ee" --- apiVersion: apps/v1 kind: Deployment metadata: name: storefront namespace: manoonoils spec: replicas: 1 selector: matchLabels: app: storefront template: metadata: labels: app: storefront annotations: # Git revision annotation - changes with each commit to force pod restart gitRevision: ${GIT_REVISION} spec: initContainers: - name: clone image: alpine/git:latest command: - sh - -c - | set -e apk add --no-cache git git clone --depth 1 --branch master \ http://gitea.gitea.svc.cluster.local:3000/unchained/manoon-headless.git \ /workspace echo "Clone complete." volumeMounts: - name: workspace mountPath: /workspace securityContext: runAsUser: 0 resources: limits: cpu: 500m memory: 256Mi - name: install image: node:20-slim workingDir: /workspace command: - sh - -c - | set -e echo "Installing dependencies..." npm install --prefer-offline --no-audit 2>&1 echo "Dependencies installed." volumeMounts: - name: workspace mountPath: /workspace securityContext: runAsUser: 0 resources: limits: cpu: 2000m memory: 3Gi requests: cpu: 100m memory: 1Gi - name: build image: node:20-slim workingDir: /workspace command: - sh - -c - | set -e echo "Building Next.js app..." npm run build echo "Build complete!" env: - name: NODE_ENV value: "production" - name: NEXT_PUBLIC_WOOCOMMERCE_URL valueFrom: secretKeyRef: name: woocommerce-credentials key: WOOCOMMERCE_URL - name: NEXT_PUBLIC_WOOCOMMERCE_CONSUMER_KEY valueFrom: secretKeyRef: name: woocommerce-credentials key: WOOCOMMERCE_CONSUMER_KEY - name: NEXT_PUBLIC_WOOCOMMERCE_CONSUMER_SECRET valueFrom: secretKeyRef: name: woocommerce-credentials key: WOOCOMMERCE_CONSUMER_SECRET - name: NEXT_PUBLIC_SITE_URL value: "https://dev.manoonoils.com" volumeMounts: - name: workspace mountPath: /workspace securityContext: runAsUser: 0 resources: limits: cpu: 2000m memory: 2Gi requests: cpu: 100m memory: 512Mi containers: - name: storefront image: node:20-slim workingDir: /workspace command: - npm - start ports: - containerPort: 3000 envFrom: - configMapRef: name: deployment-metadata optional: true env: - name: NODE_ENV value: "production" - name: PORT value: "3000" - name: HOSTNAME value: "0.0.0.0" - name: NEXT_PUBLIC_WOOCOMMERCE_URL valueFrom: secretKeyRef: name: woocommerce-credentials key: WOOCOMMERCE_URL - name: NEXT_PUBLIC_WOOCOMMERCE_CONSUMER_KEY valueFrom: secretKeyRef: name: woocommerce-credentials key: WOOCOMMERCE_CONSUMER_KEY - name: NEXT_PUBLIC_WOOCOMMERCE_CONSUMER_SECRET valueFrom: secretKeyRef: name: woocommerce-credentials key: WOOCOMMERCE_CONSUMER_SECRET - name: NEXT_PUBLIC_SITE_URL value: "https://dev.manoonoils.com" resources: limits: cpu: 500m memory: 512Mi requests: cpu: 50m memory: 128Mi volumeMounts: - name: workspace mountPath: /workspace startupProbe: httpGet: path: /favicon.ico port: 3000 periodSeconds: 10 failureThreshold: 30 livenessProbe: httpGet: path: /favicon.ico port: 3000 periodSeconds: 30 failureThreshold: 3 readinessProbe: httpGet: path: /favicon.ico port: 3000 periodSeconds: 5 failureThreshold: 3 volumes: - name: workspace emptyDir: sizeLimit: 2Gi