오픈소스

[Karmada] 오픈 소스 기여하기 1주차

안녕유지 2024. 5. 21. 08:29

Go언어 기본 디렉터리 설정

 

기본 프로젝트 레이아웃 : https://github.com/golang-standards/project-layout

 

Go 디렉터리

  • cmd : 프로젝트의 메인 어플리케이션
  • internal : private 어플리케이션 라이브러리 코드
  • pkg : external 어플리케이션 라이브러리 코드 
  • vendor : 어플리케이션 종속성

 

pkg, vendor 디렉터리 하위 모두 라이브러리 관련 디렉터리 같아 헷갈렸는데 다음과 같은 차이가 있다고 한다.

 

pkg 

  • 프로젝트 내에서 재사용 가능한 코드를 조직화 하고, 외부 라이브러리나 내부 패키지를 포함하는데 사용
  • 프로젝트 내부에서 공유 및 재사용할 수 있는 패키지의 소스 코드(.go 파일 등)로 구성

 

vendor

  • 프로젝트 종속성을 관리하고, 외부 패키지들을 로컬에 포함하여 버전 고정 및 네트워크 의존성을 줄이는 데 사용
  • 외부 종속성 패키지들의 소스 코드로 구성되며, 주로 제3자 라이브러리들이 포함
  • 사용하기 위해선 반드시 gopath 내부에 있어야함

 

Karmada란

 

https://github.com/karmada-io/karmada

 

Open, Multi-Cloud, Multi-Cluster, Kubernetes Orchestration

Karmada는 다수의 Kubernetes 클러스터를 하나의 클러스터처럼 사용할 수 있게 해주는 멀티 클러스터 관리 도구

 

Vertical Scaling

SPoF (Single Point of Faliure)

확장 제한적 (Scalability limitations)

리소스 활용도 부족

운영의 복잡성

 

Horizontal Scaling

복잡성과 관리 증가

리소스 할당에 어려움

네트워크 복잡성

일관성 없는 구성의 가능성

 

 

Karmada Components

 

 

 

Karmada Concept

 

 

Karmada Architecture

 

 

 

CRD + Operator / Aggregated API

Aggregated API라서 API server라고 했음

 

리소스들의 상태를 가져오는걸 informer라고 한다. 리포머팩토리 정보를 가져와서 ???