90DaysOfDevOps (Day 51)

고태규·4일 전
0

DevOps

목록 보기
47/50
post-thumbnail

해당 스터디는 90DaysOfDevOps
https://github.com/MichaelCade/90DaysOfDevOps
를 기반으로 진행한 내용입니다.

Day 51 - DevOps on Windows


1. WSL2


DevOps 환경은 전통적으로 컨테이너 기술의 특성상 Linux 환경을 우선으로 한다.

그러나 Windows 환경에서 개발하거나 작업해야 하는 경우, WSL (Windows Subsystem for Linux)을 통해 리눅스 환경을 통합하고 모든 데브옵스 도구를 효율적으로 사용할 수 있다.

Windows에서 컨테이너 라이프사이클 툴링을 원활하게 사용하려면 Linux 환경이 필수적이다.

과거 Git Bash와 같은 변환 계층 도구가 있었으나, 이는 Windows 파일 시스템 위에서 리눅스 명령어를 사용하게 해주는 수준이었다.

현재는 WSL2를 통해 Windows와 통합된 가상화된 리눅스 사용자 영역을 확보할 수 있다.
이는 단순한 변환이 아닌 실제 리눅스 환경을 제공한다.

다만, WSL 환경에서 작업할 때, 성능 저하를 피하기 위해 지켜야 하는 원칙이 존재한다.

  • WSL 파일 시스템에서 작업: Git 클론이나 개발 작업은 반드시 WSL 내부의 파일 시스템 (예: 리눅스 홈 디렉토리)에서 수행해야 한다.

  • 주의 사항: WSL에서 Windows의 C 드라이브( /mnt/c/ 경로)에 접근하여 작업을 수행하면, 파일 시스템 간의 상호 작용으로 인해 심각한 성능 문제가 발생한다.


2. 필수 네이티브 도구


성공적인 DevOps 환경 구축을 위한 핵심 Windows 네이티브 도구들이다.

2-1. Microsoft Terminal

Microsoft Terminal은 리눅스나 Mac OS의 최신 터미널과 유사한 기능을 제공하는 오픈 소스 프로젝트이다.

  • 탭 기능, 창 분할, 높은 사용자 정의 (투명도, 폰트), 다양한 프로필 (Command Prompt, PowerShell, Azure Cloud Shell, WSL 배포판)을 지원하여 여러 환경에 즉시 접근 가능하다.

2-2. WinGet

WinGet은 리눅스의 apt나 Mac OS의 brew와 동일한 역할을 하는 Windows의 패키지 관리자이다.

  • 대부분의 애플리케이션을 명령줄로 설치, 검색, 업데이트 및 제거할 수 있다 (예: winget install code)
    텍스트
  • 커뮤니티와 벤더들이 저장소를 지속적으로 확장하고 있어 일일 업무에 필요한 거의 모든 도구 설치가 가능하다.

2-3. Visual Studio Code

VS Code는 개발자들이 선호하는 IDE이며, 윈도우즈 환경에서 WSL과의 통합이 특징이다.

  • 핵심 확장: WSL 확장, Dev Containers, GitHub Codespaces 등이 있다.

  • VS Code의 확장 기능을 통해 로컬 Windows 애플리케이션으로 WSL 내부에 있는 파일을 직접 편집하거나, 원격 서버 (SSH) 또는 클라우드 환경 (Codespaces)에 직접 연결하여 개발을 진행할 수 있다.

2-4. Git Bash & GitHub Desktop

  • Git Bash: Windows 파일 시스템 위에서 리눅스 표준 명령어 (예: ls, 파이프, grep)를 사용할 수 있게 해주는 변환 계층이다. 네이티브 Git 애플리케이션이므로 Powershell에서도 Git 명령을 사용할 수 있게 된다.

  • GitHub Desktop: Git 초보자나 복잡한 명령을 기억하고 싶지 않은 사용자에게 유용한 시각적 도구이다. UI를 통해 Pull, Clone 등의 기본적인 Git 작업을 손쉽게 처리할 수 있다.


3. 컨테이너 도구


컨테이너 환경을 구축하기 위해 여러 가지 선택지가 존재한다.

이들은 기능이 많이 겹치지만, 각자의 강점이 있다. 이 모든 도구들은 백엔드에서 WSL2 배포판을 생성하여 컨테이너 런타임을 구동한다.

도구명특징 및 역할WSL 통합
Docker DesktopWindows 및 macOS에서 컨테이너 기반 애플리케이션을 쉽게 개발하고 실행할 수 있게 해주는 통합 애플리케이션전용 WSL 배포판 생성
Rancher Desktop컨테이너 런타임 외에 Kubernetes 환경을 제공하며, 런타임 유형을 선택할 수 있음전용 WSL 배포판 생성
Podman DesktopRancher/Docker와 유사하게 컨테이너 실행을 지원하며, OpenShift와 같은 플러그인 환경도 제공전용 WSL 배포판 생성
FinchAWS 팀이 개발한 도구로, Lima를 WSL2 드라이버로 포팅하여 사용플랫폼 간 기술 세트 공유를 염두에 둔 설계이며, WSL2 기반 배포판을 생성

이러한 도구들은 컨테이너 런타임을 위해 WSL 내부에 독립적인 임시 배포판을 생성하여 사용하며, 이로써 Windows 환경에서도 안정적으로 컨테이너 작업을 수행할 수 있게 된다.


4. Finch


Finch는 컨테이너 환경을 사용자 데스크톱에 빠르고 가볍게 구축하는 것을 목표로 하며, AWS의 주도하에 기존의 Docker Desktop과 같은 도구의 대안으로 등장하였다.

Finch는 여러 CNCF 프로젝트와 오픈 소스 도구를 결합하여 구성되었다.

  • 컨테이너 런타임: ContainerD를 사용하여 컨테이너를 관리

  • CLI 인터페이스: nerdctl을 사용
    (nerdctl: ContainerD를 보다 쉽게 다룰 수 있게 해주는 Docker 호환 CLI)

  • macOS의 드라이버: macOS 환경에서는 Lima (Linux virtual machines)를 사용하여 경량의 리눅스 가상 머신을 띄움.

  • Windows의 드라이버: Windows 환경에서는 WSL2를 드라이버로 사용하여 Lima를 포팅하고 전용 리눅스 배포판을 생성

Finch의 특징은 Lima 기술을 중심으로 macOS, Linux, Windows (WSL2) 플랫폼 간의 환경 구축 스킬셋을 공유할 수 있도록 설계되었다.

이는 여러 운영체제를 사용하는 팀 환경에서 개발 환경의 통일성을 높이고, 플랫폼 간의 격차를 줄이는 데 도움을 준다.


0개의 댓글