ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle Cloud + Tailscale + Kubernetes 완벽 가이드(0)
    실제 경험과 인사이트를 AI와 함께 정리한 글 2025. 10. 26. 19:23

    Oracle Cloud + Tailscale + Kubernetes 완벽 가이드

    Oracle Cloud 무료 인스턴스로 Tailscale 메시 네트워크 위에 Kubernetes 클러스터 구축하기

    들어가며

    imprun.dev는 Kubernetes 기반 서버리스 Cloud Function 플랫폼입니다. 클러스터 인프라를 구축하면서 Oracle Cloud의 무료 ARM64 인스턴스와 Tailscale을 조합해 무료로 고가용성 멀티 노드 클러스터를 구축한 경험을 시리즈로 정리했습니다.

    우리가 마주한 과제:

    • 예산 제약: Oracle Cloud 무료 티어만 활용 (4 cores, 24GB RAM per node)
    • 멀티 리전: 서로 다른 Oracle Cloud 계정의 인스턴스 연결 필요
    • 문제 1: 서로 다른 VCN 간 Private IP 통신 불가
    • 문제 2: Public IP는 보안 위험 + NAT 환경에서 불안정
    • 해결: Tailscale 메시 VPN으로 안전한 Private 네트워크 구성

    시행착오와 최종 아키텍처:

    • 시도 1: ❌ Tailscale을 Kubernetes Pod로 실행 → 네트워크 루프 발생
    • 시도 2: ❌ Cilium Native Routing + Tailscale Routes → 수동 라우팅 관리 지옥
    • 최종: ✅ Tailscale(호스트) + Cilium VXLAN → 자동화 성공

    이 가이드는 imprun.dev 플랫폼 구축 과정에서 겪은 며칠간의 삽질을 바탕으로, "다음에 재구축할 때 그대로 따라 할 수 있도록" 명확하고 간결하게 정리했습니다.


    📚 가이드 구성

    🎯 최종 아키텍처

    ┌─────────────────────────────────────────────────────┐
    │                   Tailscale Mesh                    │
    │                  (100.64.0.0/10)                   │
    ├──────────────┬──────────────┬──────────────────────┤
    │  Master Node │  Worker #1   │    Worker #2         │
    │  100.64.0.1  │  100.64.0.2  │    100.64.0.3       │
    ├──────────────┴──────────────┴──────────────────────┤
    │         Cilium CNI (VXLAN, UDP 8472)               │
    │              Pod Network: 10.244.0.0/16            │
    └─────────────────────────────────────────────────────┘

    ⚠️ 왜 VXLAN 터널링을 사용하나요?

    Tailscale의 제약사항:

    • Tailscale/Headscale은 자동으로 Pod 네트워크 라우팅을 설정하지 않음
    • --advertise-routes로 라우트를 광고해도 각 노드에서 수동으로 ip route 설정 필요
    • 노드가 추가/제거될 때마다 모든 노드의 라우팅 테이블 수동 업데이트

    시도했던 방법 (실패):

    1. ❌ Cilium Native Routing + Tailscale Routes
      • 각 노드에서 ip route add 10.244.x.0/24 via 100.64.0.y 수동 설정
      • 노드 추가 시마다 모든 노드에서 라우팅 업데이트
      • 운영 복잡도 급증, 자동화 어려움

    선택한 방법 (성공):
    2. ✅ Cilium VXLAN Tunneling

    • Cilium이 VXLAN 터널로 Pod 네트워크 캡슐화
    • Tailscale은 단순히 노드 간 터널만 제공
    • 라우팅 자동 관리, 노드 추가 시 설정 불필요

    트레이드오프:

    • 성능: VXLAN 오버헤드 약 5-10% (실무에서는 무시 가능)
    • 안정성: 라우팅 자동화로 운영 안정성 ↑↑↑
    • 결론: 운영 편의성 >> 미세한 성능 차이

    📖 문서 목차

    1단계: 준비 (Preparation)

    • 01-preparation-oracle-cloud.md
      • Oracle Cloud 무료 계정 생성
      • VCN, Subnet, Security List 구성
      • 인스턴스 생성 및 SSH 접속
      • 기본 시스템 설정

    2단계: 네트워크 구축 (Network Setup)

    3단계: 클러스터 구축 (Cluster Setup)

    • 03-setup-kubernetes-cilium.md
      • Kubernetes 1.34.1 설치
      • kubeadm 초기화
      • Cilium 1.18.2 CNI 설치 (VXLAN)
      • 워커 노드 조인
      • Phase 7 (옵셔널): 마스터 노드 워크로드 스케줄링 설정
        • 소규모 클러스터: taint 제거 (마스터에 워크로드 허용)
        • 표준 구성: taint 유지 (컨트롤플레인 전용)

    4단계: 심화 학습 (Deep Dive)

    • 04-deep-dive-networking.md
      • Tailscale WireGuard 터널링 이해
      • Cilium eBPF 네트워킹 동작 원리
      • VXLAN 오버레이 네트워크
      • 트래픽 플로우 분석

    5단계: 실전 경험 (Lessons Learned)

    • 05-lessons-learned.md
      • Tailscale을 Kubernetes 내부에서 실행 시도 (실패)
      • Cilium Native Routing 시도 (실패)
      • 최종 아키텍처 결정 배경
      • 삽질에서 얻은 교훈

    ⚡ 빠른 시작

    최소 구성으로 빠르게 시작하려면:

    1. Oracle Cloud 인스턴스 2개 생성 (ARM64 추천)
    2. 각 노드에서 실행:
    3. # Tailscale 설치 curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up # Kubernetes 설치 (03-setup-kubernetes-cilium.md 참조)

    📋 체크리스트

    필수 작업

    • Oracle Cloud 계정 및 인스턴스 준비
    • Tailscale 메시 네트워크 구성
    • Kubernetes 마스터 노드 초기화
    • Cilium CNI 설치 및 설정
    • 워커 노드 추가
    • 클러스터 동작 검증
    • 실전 경험 문서 읽기 (함정 회피)

    옵셔널 작업

    • 마스터 노드 taint 설정 결정 (Phase 7)
      • 워커 3개 이상: taint 유지 (컨트롤플레인 전용) ✅ 권장
      • 워커 1-2개: taint 제거 (리소스 효율) ⚠️ 개발/테스트만
    • 워커 노드 역할 라벨링 (게이트웨이 전용 등)

    🔍 검증된 환경

    • Oracle Cloud: ARM64 (Ampere A1) 4 OCPU, 24GB RAM
    • OS: Ubuntu 22.04 LTS
    • Kubernetes: v1.34.1
    • Cilium: v1.18.2
    • Tailscale: 최신 버전

    📝 참고사항

    이 가이드는 실제 구축 과정에서 발생한 문제들을 해결하며 작성되었습니다.
    "다음에 재구축할 때 그대로 따라 할 수 있도록" 명확하고 간결하게 정리했습니다.

Designed by Tistory.