Files
insurance/deploy/k8s/api.yaml
T
chpark c53cc69d97
Deploy / deploy (push) Failing after 0s
fix(kakao): Kakao SDK v2 authorize 방식으로 전환 + code 교환 엔드포인트
- Kakao SDK v2.7에서 Auth.login() 제거 → authorize() 리다이렉트 플로우 사용
- services/kakao.ts: kakaoWebLoginStart() redirect 시작
- RootNavigator: 웹 URL의 code + state=kakao_login 감지 → kakaoCodeLogin 호출
- useAuthStore.kakaoCodeLogin 추가 (authApi.kakaoCode 호출)
- 백엔드 /auth/kakao/code: REST API 키로 code→access_token 교환 후 기존 processKakaoLogin 재사용
- api-secrets에 kakaoRestApiKey/kakaoClientSecret 슬롯 추가
- 환경변수: KAKAO_REST_API_KEY 서버에 저장 완료

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 01:27:49 +09:00

128 lines
4.0 KiB
YAML

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: uploads
namespace: insurance
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: insurance-api
namespace: insurance
labels:
app.kubernetes.io/name: insurance-api
spec:
replicas: 2
revisionHistoryLimit: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app.kubernetes.io/name: insurance-api
template:
metadata:
labels:
app.kubernetes.io/name: insurance-api
spec:
containers:
- name: api
image: localhost:5000/insurance/api:latest
imagePullPolicy: Always
ports:
- name: http
containerPort: 4000
env:
- name: PORT
value: "4000"
- name: HOST
value: "0.0.0.0"
- name: NODE_ENV
value: production
- name: UPLOAD_DIR
value: /data/uploads
- name: JWT_SECRET
valueFrom:
secretKeyRef:
name: api-secrets
key: jwtSecret
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: api-secrets
key: databaseUrl
- name: ANTHROPIC_API_KEY
valueFrom: { secretKeyRef: { name: api-secrets, key: anthropicApiKey, optional: true } }
- name: CLOVA_OCR_URL
valueFrom: { secretKeyRef: { name: api-secrets, key: clovaOcrUrl, optional: true } }
- name: CLOVA_OCR_SECRET
valueFrom: { secretKeyRef: { name: api-secrets, key: clovaOcrSecret, optional: true } }
- name: GCP_VISION_API_KEY
valueFrom: { secretKeyRef: { name: api-secrets, key: gcpVisionApiKey, optional: true } }
- name: SOLAPI_API_KEY
valueFrom: { secretKeyRef: { name: api-secrets, key: solapiApiKey, optional: true } }
- name: SOLAPI_API_SECRET
valueFrom: { secretKeyRef: { name: api-secrets, key: solapiApiSecret, optional: true } }
- name: SOLAPI_PFID
valueFrom: { secretKeyRef: { name: api-secrets, key: solapiPfId, optional: true } }
- name: SOLAPI_SENDER_KEY
valueFrom: { secretKeyRef: { name: api-secrets, key: solapiSenderKey, optional: true } }
- name: CODEF_CLIENT_ID
valueFrom: { secretKeyRef: { name: api-secrets, key: codefClientId, optional: true } }
- name: CODEF_CLIENT_SECRET
valueFrom: { secretKeyRef: { name: api-secrets, key: codefClientSecret, optional: true } }
- name: KAKAO_REST_API_KEY
valueFrom: { secretKeyRef: { name: api-secrets, key: kakaoRestApiKey, optional: true } }
- name: KAKAO_CLIENT_SECRET
valueFrom: { secretKeyRef: { name: api-secrets, key: kakaoClientSecret, optional: true } }
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 30
periodSeconds: 20
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
volumeMounts:
- name: uploads
mountPath: /data/uploads
volumes:
- name: uploads
persistentVolumeClaim:
claimName: uploads
---
apiVersion: v1
kind: Service
metadata:
name: insurance-api
namespace: insurance
labels:
app.kubernetes.io/name: insurance-api
spec:
type: NodePort
selector:
app.kubernetes.io/name: insurance-api
ports:
- name: http
port: 4000
targetPort: http
nodePort: 30201