Skip to content
/ lab Public

스꾸딩에서 진행 중인 각종 실험적 프로젝트(ProSeed, 주당, 인프라팀 온보딩 등)를 진행하는 쿠버네티스 클러스터를 관리 합니다.

Notifications You must be signed in to change notification settings

skkuding/lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Lab

스꾸딩에서 진행 중인 각종 실험적 프로젝트(ProSeed, 주당, 인프라팀 온보딩 등)를 진행하는 쿠버네티스 클러스터 및 인프라를 관리 합니다. 이는 개발 및 테스트 환경으로 사용되며 다른 서비스들(특히 코드당)과는 별도로 운영됩니다.

클러스터 정보

  • 클러스터 이름: Lab
  • 클러스터 유형: K3s
  • 노드: 10번 서버(컨트롤 플레인 + 워커 노드)

접속 방법

관리 중인 앱

디렉토리 구조

k8s/
├── argocd/
│   ├── applications/
│   │   ├── infra/          # 인프라 컴포넌트
│   │   ├── observability/  # 모니터링 스택
│   │   └── proseed/        # 프로젝트별 앱
│   └── values.yaml
├── aws-credentials/        # AWS 자격증명 (SealedSecret)
├── cert-manager/           # TLS 인증서 자동 발급
├── external-secrets/       # AWS Secrets Manager 연동
├── reflector/              # Secret 복제
├── observability/          # Prometheus, Grafana, Loki, Tempo
└── dashboard/              # Kubernetes Dashboard

인프라 컴포넌트

컴포넌트 설명 문서
ArgoCD GitOps CD README
ArgoCD Image Updater 자동 이미지 업데이트 -
Cert Manager Let's Encrypt 인증서 README
External Secrets AWS Secrets Manager 동기화 README
Reflector Secret/ConfigMap 복제 README
Sealed Secrets Git에 암호화된 Secret 저장 README

모니터링 스택

자세한 내용은 README를 참고하세요.

컴포넌트 용도
OpenTelemetry Collector 텔레메트리 수집/분배
Prometheus 메트릭 저장
Loki 로그 저장
Tempo 트레이스 저장
Promtail 노드 로그 수집
Grafana 대시보드

앱 추가 방법

  1. 별도의 레포지토리 생성
    • 프로젝트별로 독립된 레포지토리를 생성합니다.
    • 예: ProSeed 프로젝트의 경우 skkuding/proseed 레포지토리 생성
  2. 쿠버네티스 매니페스트 작성
    • 앱 배포를 위한 쿠버네티스 매니페스트 파일을 위에서 생성한 레포지토리에 작성합니다.
    • 매니페스트 파일은 Helm 차트, Kustomize, 또는 순수 YAML 파일 형식으로 작성할 수 있습니다.
  3. Argo CD 애플리케이션 생성
    • Argo CD가 관리하는 애플리케이션 디렉토리(k8s/argocd/applications)에 새 애플리케이션 매니페스트 파일(kind: Application)을 생성합니다.
    • Argo CD 애플리케이션은 앱의 레포지토리와 매니페스트 경로를 참조하도록 설정합니다.

규칙과 컨벤션

네임스페이스 관리

각 프로젝트는 namespace 단위로 격리하여 배포합니다. namespace 이름은 프로젝트명과 동일하게 설정합니다. 예: ProSeed 프로젝트의 경우 proseed 네임스페이스 생성

IaC 도구 사용

클러스터 내 리소스는 반드시 IaC(Infrastructure as Code) 도구를 사용하여 관리합니다. 이는 팀원들이 리소스 구성을 쉽게 이해하고 재현할 수 있도록 돕기 위함입니다. 만약 IaC 도구를 사용하지 않고 리소스를 생성해야 하는 경우, 반드시 해당 리소스의 생성 및 관리 방법을 문서화하여 공유해야 합니다. 그렇지 않다면 언제든 예고 없이 삭제될 수 있습니다.

  • 사용 도구: YAML manifests, Helm charts, Kustomize, Terraform 등

리소스 쿼터 및 제한

각 네임스페이스에는 적절한 리소스 쿼터(Resource Quota)와 리소스 제한(Resource Limits)을 설정하여 클러스터 자원의 과도한 사용을 방지합니다. 이는 다른 프로젝트에 영향을 미치지 않도록 하기 위함입니다.

  • 예: CPU, 메모리, 스토리지 등 현재는 리소스 쿼터 및 제한이 설정되어 있지 않습니다. 필요 시 설정을 추가할 예정입니다.

환경 정책

코드당과는 다르게 production, staging 환경을 구분하지 않습니다. 모든 배포는 동일한 환경에서 이루어지며, 각 프로젝트 내에서 자체적으로 환경을 구분하여 관리합니다.

About

스꾸딩에서 진행 중인 각종 실험적 프로젝트(ProSeed, 주당, 인프라팀 온보딩 등)를 진행하는 쿠버네티스 클러스터를 관리 합니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages