이 시리즈는 개인 GCP 계정으로 Kubernetes / GKE / GitHub Actions / ArgoCD 를 처음부터 끝까지 직접 띄워보며 정리한 학습 노트다. 회사 시스템과는 무관하고, 이 글은 시리즈 전체 계획과 동기·결제 비용·7편 인덱스를 한 곳에 모은 opener다. 막힌 부분 / 비용 / 명령어는 실제 시도한 값 그대로 기록한다.
이 글의 목적
이 글은 Kubernetes, GKE, GitHub Actions, ArgoCD 시스템을 처음부터 연동하며 구축하는 인프라 학습 시리즈에 대한 전체 계획을 제공합니다.
왜 직접 띄워봤나
Kubernetes 를 책과 강의로만 본 게 답답해서, 한번 끝까지 손으로 띄워보고 싶었다. 이론으로 Pod / Deployment / Service / Ingress 를 외워 본 것과, yaml 한 줄을 잘못 써서 트래픽이 안 도는 걸 직접 보는 것은 전혀 다른 경험이라는 가설이 있었고, 7편을 다 끝낸 지금 보면 그 가설은 맞았다. 책으로 “Service 가 Pod 를 추상화한다” 는 한 줄을 100번 읽는 것보다, Service 의 selector 라벨을 한 글자 틀려서 30분 헤매는 게 더 깊이 남는다.
시작 시점은 2025년 여름 (대략 6~8월). 회사 인프라와는 무관한 개인 학습 트랙으로 진행했고, 결제는 개인 GCP 계정·개인 카드로 했다.
한눈에 보기
이번 학습 시리즈는 총 10편으로 구성되어 있으며, Kubernetes와 GCP의 GKE, GitHub Actions, ArgoCD를 연동하는 것이 목표입니다. 각 절차는 쿠버네티스와 GKE, GitHub Actions, ArgoCD로 나누어져 있으며, 이를 통해 인프라를 자동화하고 최적화된 CI/CD 과정을 구축합니다.
이 절차의 목적: Kubernetes 환경을 구축하고 GKE와 연결합니다.
쿠버네티스와 GKE의 절차
- CRUD API를 만든다.
- 해당 서버를 Kubernetes로 실행할 수 있도록 만든다.
- 생성된 Kubernetes 관련 파일들을 GKE에 연결 짓는다.
이 절차의 목적: GitHub Actions을 통해 지속적인 통합을 설정합니다.
Git Actions의 연결 절차
- Git Repository를 만든다.
- Git Actions가 인식될 수 있도록 만든다.
- GKE에서 잘 적용되었는지 확인한다.
이 절차의 목적: ArgoCD를 통해 지속적인 배포를 설정합니다.
ArgoCD의 연결 절차
- ArgoCD 관련 설정 파일들을 만든다.
- 해당 설정을 ArgoCD에서 인식할 수 있도록 만든다.
- 연결된 설정 정보가 ArgoCD에 잘 적용되었는지 확인한다.
흔한 함정
- Kubernetes 설정 파일 작성 시 오타나 잘못된 설정으로 인해 배포가 이루어지지 않을 수 있습니다.
- GitHub Actions와 연결 시 CI/CD 파이프라인을 제대로 이해하지 못하면 오류 트러블슈팅이 어렵습니다.
다음 단계
다음 글에서는 첫 번째 단계인 CRUD API 작성에 대해 자세히 다룹니다.
시리즈 7편을 다 끝낸 뒤 — 두 가지 개인적 발견
1. Autopilot 의 편리함은 비용으로 환산된다
시작은 GKE Autopilot 으로 했다. yaml 만 던지면 알아서 노드를 만들어 주는 게 학습에는 가장 편하다. 하지만 며칠 돌려보니 “이 정도 트래픽에 이 비용은 과하다” 는 감이 왔다. 그 뒤 Autopilot → Standard 클러스터 전환을 진행하면서, 노드 스펙 선택 / autoscaling 범위 결정 / 비싼 옵션 끄기 같은 의사결정이 사실은 학습의 본체였다는 걸 알게 됐다. 자세한 비교는 (4-3) 비용 최적화 편에 정리했다.
2. GitHub Actions 의 secret 저장은 보안의 시작점이 아니다
Git Actions 편 (6편) 을 만들면서 Repository secret 에 키를 박아 넣고 워크플로우를 돌렸다. 그 시점에는 “그래도 환경변수보다는 안전하겠지” 라고 생각했는데, 키 자체가 어딘가 저장공간에 평문 형태로 올라가 있다는 것이 보안 모델의 시작점은 아니라는 점을 OIDC 개념을 본 뒤에야 알게 됐다. 단기 토큰을 발급받고 만료시키는 모델이 진짜 시작점이라는 게 분명해졌고, 그 깨달음과 적용 시도를 (6) Git Actions 편 마지막 단락에 남겨 두었다.
실제 소요 비용 — 개인 카드 기준
시리즈 전체에 들어간 GCP 누적 결제는 3만 원 ~ 10만 원 사이. (4-3) 편에 적은 “어제 하루 690원” 같은 일별 청구액이 며칠 쌓인 정도 — 학습 비용으로는 큰 부담이 아니었지만, “왜 690원이지?” 를 일별로 뜯어보는 게 가장 좋은 학습 chunk 였다. 의외로 컸던 항목은 cluster 자체보다 주변 리소스 (Ingress / Global Static IP / Artifact Registry egress) 쪽이었고, 이 발견이 (5) 편의 TLS 3시간 디버깅으로 이어졌다.
시리즈 7편 인덱스 (한 줄 요약)
- 인프라 학습(2) – API 서버 — ChatGPT 가 짠 CRUD 코드를 실제 환경에 맞췄던 과정
- 인프라 학습(3) – Kubernetes 실행 — 로컬 / 클러스터에 첫 yaml 을 올린 기록
- 인프라 학습(4-1) K8S를 GKE와 연결 — 클러스터 생성과 region 선택 (asia-northeast3 서울)
- 인프라 학습(4-3) 비용 최적화 — Autopilot → Standard 전환과 일별 청구액 관찰
- 인프라 학습(4-4) 비용 최적화(2) — 불필요한 파드 제거로 네트워킹 비용 줄이기
- 인프라 학습(5) 내 프로젝트의 이미지 — Docker 이미지를 GKE 에 올리며 Postman 2시간 / TLS 3시간 막혔던 기록
- 인프라 학습(6) Git Actions — Workflow 설계와 OIDC 의 필요성을 알게 된 회고
- 인프라 학습(7) ArgoCD — GKE 내 ArgoCD 설치 vs 로컬 PC 설치 판단과 그 후
답글 남기기