Kubernetes 내부에서 애플리케이션 빌드, 테스트 및 디버깅
요약
DevSpace는 Loft Labs에서 개발한 CNCF 샌드박스 프로젝트로, Kubernetes 환경에서 클라우드 네이티브 애플리케이션의 개발 및 배포 워크플로우를 표준화합니다. 이 도구는 `devspace.yaml`이라는 단일 설정 파일에 모든 빌드/배포 지식을 코드로 정의하여 버전 관리를 용이하게 합니다. 또한, 핫 리로딩과 양방향 파일 동기화를 지원하여 개발자가 실행 중인 컨테이너에서 즉시 코드 변경 사항을 테스트할 수 있게 해줍니다.
핵심 포인트
- `devspace.yaml`에 모든 워크플로우를 코드로 정의하고 버전 관리 가능
- 팀원 모두가 Kubernetes 전문가가 아니어도 표준화된 배포 및 개발 환경 제공
- 핫 리로딩과 양방향 파일 동기화를 통해 개발 속도 극대화
Kubernetes 내부에서 애플리케이션을 빌드, 테스트 및 디버깅하세요
핫 리로딩으로 개발: 이미지를 다시 빌드하거나 컨테이너를 재시작할 필요 없이 실행 중인 컨테이너를 업데이트합니다.
팀 내외의 배포 워크플로우 통합: 팀 내부와 dev, staging, production 환경 전반에 걸쳐 배포 워크플로우를 통일합니다.
이미지 빌드 및 배포 자동화: 이미지 빌드 및 배포 같은 반복적인 작업을 자동화합니다.
⭐️ DevSpace가 마음에 드시나요? 별점으로 프로젝트를 지원해 주세요 ⭐️
DevSpace는 Loft Labs에서 개발한 Cloud Native Computing Foundation (CNCF)의 샌드박스 프로젝트입니다.
Kubernetes를 사용하여 현대적이고, 분산화되고, 고도로 확장 가능한 마이크로서비스를 구축하는 것은 어렵습니다. 특히 대규모 개발팀에게는 더욱 그렇습니다. DevSpace는 빠르고 클라우드 네이티브한 소프트웨어 개발을 위한 차세대 도구입니다.
워크플로우 표준화 및 버전 관리
DevSpace를 사용하면 모든 워크플로우를 단일 선언적 설정 파일인 devspace.yaml에 저장할 수 있습니다.
- 이미지 빌드, 프로젝트 및 종속성 배포 등에 대한 **워크플로우 지식을 코드로 정의(Codify)**합니다.
- 코드와 함께 워크플로우 버전을 관리할 수 있습니다 (즉, 단일 명령만으로 어떤 이전 버전이든 실행 상태로 만들 수 있습니다).
- 팀원들과 워크플로우를 공유할 수 있습니다.
팀의 모든 사람이 Kubernetes에 배포하도록 지원
DevSpace는 팀원 모두가 Kubernetes 전문가가 될 필요 없이 배포 및 개발 워크플로우를 표준화하는 데 도움을 줍니다.
- 팀 내 DevOps 및 Kubernetes 전문가는
devspace.yaml을 사용하여 DevSpace를 구성하고, 이를 git으로 커밋하기만 하면 됩니다. 다른 팀원이 프로젝트를 체크아웃하면, 그들은 단순히devspace deploy를 실행하여 프로젝트(이미지 빌드 및 기타 관련 프로젝트 배포 포함)를 배포할 수 있으며, 프로젝트의 실행 인스턴스를 갖게 됩니다. DevSpace의 설정은 매우 동적이기 때문에, 하나의 기본 설정을 유지하면서도 개발자 간의 차이점(예: 테스트용 다른 서브 도메인)을 허용하는 구성 변수를 사용하여 모든 것을 구성하기가 훨씬 쉽습니다.
팀의 모든 구성원에게 온디맨드(on-demand)로 Kubernetes 클러스터에 접근 권한을 제공하는 것은 시스템 관리자 및 인프라 관리자들에게 어려운 문제입니다. 엔지니어링 팀을 위해 개발용 클러스터를 효율적으로 공유하고 싶다면, www.loft.sh를 확인해 보세요.
클라우드 네이티브 개발 속도 높이기 (Speed Up Cloud-Native Development)
이미지를 다시 빌드하고 컨테이너를 재배포하는 대신, DevSpace는 코딩하는 동안 실행 중인 컨테이너에 핫 리로드(hot reload)할 수 있도록 해줍니다:
- IDE로 파일을 편집하기만 하면 애플리케이션이 실행 중인 컨테이너 내에서 어떻게 다시 로드되는지 확인할 수 있습니다.
- 고성능 양방향 파일 동기화(high performance, bi-directional file synchronization) 기능은 코드 변경 사항을 즉시 감지하고 로컬 개발 환경과 Kubernetes에서 실행되는 컨테이너 간에 파일을 즉시 동기화합니다. 단 하나의 명령만으로 IDE에서 스트림 로그를 연결하거나 디버거를 연결하거나 컨테이너 터미널을 열 수 있습니다.
반복적인 작업 자동화 (Automate Repetitive Tasks)
Kubernetes로 서비스를 배포하고 디버깅하는 것은 많은 지식을 필요로 하며, kubectl get pod와 같은 명령어를 반복적으로 실행하고 파드 ID를 주고받도록 강요합니다. 시간 낭비를 멈추고 DevSpace가 Kubernetes 작업의 지루한 부분을 자동화하도록 하세요:
- DevSpace는 여러 이미지를 병렬로 빌드하고, 자동으로 태그를 지정하며, 단 하나의 명령만으로 전체 애플리케이션(종속성 포함)을 배포할 수 있게 해줍니다.
- DevSpace가 포트 포워딩(port-fowarding) 및 로그 스트리밍을 자동으로 시작하도록 하여, 파드 ID를 끊임없이 복사/붙여넣기 하거나 모든 것을 시작하기 위해 10개의 명령어를 실행할 필요가 없습니다.
모든 Kubernetes 클러스터에서 작동 (Works with Any Kubernetes Clusters)
DevSpace는 다음과 같은 많은 Kubernetes 배포판으로 검증되었습니다:
로컬 Kubernetes 클러스터: minikube, k3s, MikroK8s, kind
관리형 Kubernetes 클러스터: GKE (Google Cloud), EKS (Amazon Web Service), AKS (Microsoft Azure), Digital Ocean
자체 관리형 Kubernetes 클러스터: Rancher로 생성된 클러스터
DevSpace를 사용하면 클러스터와 네임스페이스 간에 끊김 없이 전환할 수 있습니다. 로컬 클러스터로 충분하다면 그것을 사용하여 작업할 수 있습니다. 상황이 더 복잡해지거나 GPU 같은 클라우드 파워가 필요하거나, Kafka와 같이 복잡한 시스템을 팀과 공유하고 싶다면, DevSpace에게 kube-context를 전환하여 원격 클러스터를 사용하도록 지시하기만 하면 계속 작업을 진행할 수 있습니다.
저희의 시작 가이드를 확인해 보세요.
DevSpace는 컴퓨터에 직접 실행되는 단일 바이너리 CLI 도구이며, 이상적으로는 IDE 내 터미널에서 바로 사용하는 것이 좋습니다. DevSpace는 kubectl처럼 kube-context를 사용하여 Kubernetes 클러스터와 직접 통신하기 때문에 서버 측 구성 요소가 필요하지 않습니다.
DevSpace 프로젝트 참여는 CNCF 코드 오브 컨덕트(Code of Conduct)의 지침을 따릅니다.
DevSpace를 Kubernetes 앱 개발, 배포 및 디버깅에 가장 좋은 도구로 만드는 데 도움을 주세요.
DevSpace 사용 중 버그를 발견하면 GitHub에 이슈를 열고 어떤 문제가 발생했는지 알려주세요. 가능한 한 빨리 수정하도록 노력하겠습니다.
이 프로젝트에서 다음과 같은 목적으로 이슈를 여시는 것을 환영합니다:
이 프로젝트는 주로 Golang으로 작성되었습니다. 코드를 기여하고 싶다면:
-
go 모듈 지원을 위해 golang 버전 1.11.4 이상을 실행하는지 확인하세요.
-
다음 환경 변수를 설정하세요:
GO111MODULE=on GOFLAGS=-mod=vendor -
프로젝트를 체크아웃하세요:
git clone https://github.com/loft-sh/devspace && cd devspace -
코드 변경 사항을 만드세요.
-
예를 들어 다음 명령어를 통해 프로젝트를 빌드하세요:
go build -o devspace[.exe] -
변경 사항을 평가하고 테스트하세요:
./devspace [SOME_COMMAND]
더 많은 정보는 기여 가이드라인(Contributing Guidelines)을 참고하세요.
DevSpace 프로젝트는 CNCF 코드 오브 컨덕트(Code of Conduct)를 따릅니다.
DevSpace란 무엇인가요?
DevSpace는 Docker와 Kubernetes를 사용하여 애플리케이션을 개발, 배포 및 디버깅하는 데 필요한 모든 것을 제공하는 오픈 소스 명령줄 도구입니다. 이 도구를 사용하면 배포 워크플로우를 간소화하고 선언적 구성 파일인 devspace.yaml을 통해 동료들과 공유할 수 있습니다.
DevSpace는 무료인가요?
예. DevSpace는 오픈 소스이며, 모든 비공개 프로젝트와 상업적 프로젝트에 대해서도 무료로 사용할 수 있습니다.
DevSpace를 사용하려면 Kubernetes 클러스터가 필요한가요?
네. Docker Desktop Kubernetes, minikube, 또는 Kind와 같은 로컬 클러스터를 사용하거나, GKE, EKS, AKS, RKE (Rancher), 또는 DOKS와 같은 원격 클러스터를 사용할 수 있습니다.
기존 Kubernetes 클러스터에서 DevSpace를 사용할 수 있나요?
예. DevSpace는 일반적인 kube-context를 사용합니다. kubectl 명령어로 클러스터를 실행할 수 있다면, 이 클러스터도 DevSpace와 함께 사용할 수 있습니다.
Helm 차트란 무엇인가요?
Helm은 Kubernetes의 패키지 관리자입니다. Helm에서 패키지를 'Helm 차트'라고 부릅니다.
DevSpace는 Apache 2.0 라이선스 하에 공개되었습니다. 자세한 내용은 LICENSE 파일을 참조하십시오.
DevSpace는 Cloud Native Computing Foundation (CNCF)의 샌드박스 프로젝트이며 Loft Labs에서 기여했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기