4단계. 배포 상태 확인 및 오류 해결¶
Runway 플랫폼 UI에서는 오류 메시지가 상세하게 표시되지 않는 경우가 있습니다. ArgoCD UI 또는 kubectl을 사용해 원인을 파악할 수 있습니다.
ArgoCD에서 확인¶
Runway 플랫폼은 내부적으로 ArgoCD를 사용해 헬름 배포를 관리합니다. ArgoCD UI에서 배포 상태를 시각적으로 확인할 수 있습니다.
ArgoCD에 접근하려면 애플리케이션 상세 페이지 > 정보 영역에서 ArgoCD URL을 확인하고 클릭합니다.
배포 상태 흐름¶
ArgoCD 애플리케이션 그래프에서 왼쪽부터 오른쪽으로 App → Deployment → ReplicaSet → Pod 순서로 상태가 표시됩니다.
- 모든 노드에 초록 아이콘이 표시되면 정상 배포된 것입니다.
- 빨간 하트(💔)가 표시된 노드에서 문제가 발생한 것입니다.
ArgoCD에서 확인할 수 있는 주요 정보¶
| 위치 | 확인 내용 |
|---|---|
| App 노드 > SYNC STATUS | Synced 여부 — values.yaml이 정상 적용됐는지 확인 |
| ReplicaSet 노드 💔 | Pod 생성 실패 — CPU 쿼터 초과 등 스케줄링 문제 |
| Pod 노드 💔 | 컨테이너 실행 실패 — CrashLoopBackOff, Init:RunContainerError 등 |
| Pod > EVENTS 탭 | FailedCreate 이벤트와 상세 오류 메시지 |
| Pod > LOGS 탭 | 컨테이너 로그 — 권한 오류, 파일시스템 오류 등 |
Progressing 상태에서 멈추는 경우, Pod 노드를 클릭해 EVENTS 또는 LOGS 탭에서 원인을 확인합니다.
kubectl로 확인¶
kubeconfig 파일은 Runway 플랫폼에서 직접 다운로드할 수 있습니다.
Pod 상태 확인¶
kubectl --kubeconfig <KUBECONFIG_PATH> get pods -n <PROJECT_NAMESPACE>
STATUS 컬럼에서 아래 상태가 보이면 오류가 발생한 것입니다.
| 상태 | 의미 |
|---|---|
Init:CrashLoopBackOff |
initContainer 실행 실패 → enableDefaultInitContainers: false 설정 필요 |
CrashLoopBackOff |
메인 컨테이너 반복 실패 → 로그 확인 필요 |
Pending |
Pod 스케줄 실패 → 리소스 쿼터 초과 여부 확인 필요 |
로그 확인¶
kubectl --kubeconfig <KUBECONFIG_PATH> logs -n <PROJECT_NAMESPACE> \
-l app.kubernetes.io/instance=<HELM_RELEASE_NAME> --previous
주요 오류 메시지와 해결 방법:
| 오류 메시지 | 원인 | 해결 방법 |
|---|---|---|
mkdir() ... failed (30: Read-only file system) |
읽기 전용 파일시스템 | readOnlyRootFilesystem: false |
open() "/run/nginx.pid" failed (13: Permission denied) |
권한 부족 | runAsUser: 0, runAsNonRoot: false |
chown(...) failed (1: Operation not permitted) |
capability 부족 | capabilities.add: ["CHOWN", "SETUID", "SETGID"] |
ReplicaSet 이벤트 확인¶
Pod 자체가 생성되지 않는 경우 ReplicaSet 이벤트를 확인합니다.
kubectl --kubeconfig <KUBECONFIG_PATH> describe rs -n <PROJECT_NAMESPACE>
아래 메시지가 보이면 CPU 쿼터가 초과된 것입니다.
exceeded quota: ..., requested: limits.cpu=150m, used: limits.cpu=2, limited: limits.cpu=2
이 경우 resourcesPreset: "none"으로 설정하고 resources에 더 낮은 값을 직접 지정합니다.
Gateway 조회¶
HTTPRoute에 설정할 Gateway 이름과 네임스페이스를 확인합니다.
kubectl --kubeconfig <KUBECONFIG_PATH> get gateway -A
출력 예시:
NAMESPACE NAME CLASS ADDRESS PROGRAMMED
istio-system platform-core-gateway istio 192.168.134.105 True
NAME과 NAMESPACE 값을 httpRoute.parentRefs에 입력합니다.