90DaysOfDevOps (Day 52)

고태규·3일 전
0

DevOps

목록 보기
48/50
post-thumbnail

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

Day 52 - Creating a custom Dev Container for your GitHub Codespace to start with Terraform on Azure


1. GitHub Codespaces와 Dev Container


클라우드 네이티브 환경에서 작업할 때, 일관된 개발 환경을 구축하는 것은 중요하다.

GitHub Codespaces는 브라우저나 VS Code를 통해 접근 가능한 클라우드 기반 개발 환경을 제공하며, Dev Container를 사용하여 필요한 도구와 설정을 코드화할 수 있다.

해당 프레젠테이션은 Terraform과 Azure CLI를 사전 설치한 맞춤형 Dev Container를 GitHub Codespaces에 배포하는 방법을 설명한다.

GitHub Codespaces는 GitHub 리포지토리를 기반으로 구동되는 클라우드 개발 환경 (Cloud Development Environment, CDE)이다.

  • 접근성: 웹 브라우저, VS Code 데스크톱 애플리케이션을 통해 접속 가능

  • 일관성: 환경 구성 파일을 리포지토리에 저장하므로, 팀원 누구나 동일한 개발 환경을 생성하여 사용할 수 있음.

  • 유연성: VM 위에서 실행되며, CPU 코어 수와 RAM 용량을 선택할 수 있음

그리고, Dev Container는 개발 환경을 컨테이너 이미지로 정의하는 표준이며, 모든 의존성 (언어 런타임, OS 라이브러리, 도구 등)을 미리 패키징하여 환경 구축을 편리하게 해준다.


2. Dev Container 설정 파일


해당 프레젠테이션에서는 Terraform과 Azure CLI가 설치된 환경을 만들기 위해, 리포지토리 루트에 .devcontainer 디렉터리를 생성하고 그 안에 두 개의 파일을 추가한다.

2-1. Dockerfile 내용: 도구 설치 정의

Dockerfile은 컨테이너의 베이스 이미지와 설치될 도구들을 정의한다.

# 베이스 이미지로 Ubuntu 22.04 LTS 사용
FROM ubuntu:22.04

# 필요한 기본 도구 및 환경 설정 (sudo, curl, git 등)
RUN apt-get update && \
    apt-get install -y sudo curl git zip unzip vim \
    && rm -rf /var/lib/apt/lists/*

# Azure CLI 설치
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash


# Terraform 설치
RUN apt-get update && apt-get install -y wget software-properties-common
RUN wget -O- https://apt.releases.hashicorp.com/gpg | \
    gpg --dearmor | \
    sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
RUN echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
    sudo tee /etc/apt/sources.list.d/hashicorp.list
RUN sudo apt update && sudo apt install terraform

# 환경 구축 후 잔여 파일 정리
RUN rm -rf /var/lib/apt/lists/*

2-2. devcontainer.json 내용: Codespace 설정

devcontainer.json 파일은 Dev Container의 이름과 Dockerfile을 참조하는 구성파일로, 핵심파일이므로 무조건 구성되어야한다.

{
    // Codespace 환경의 표시 이름 설정
    "name": "Azure Terraform Codespace",
    
    // 해당 Dev Container를 빌드하는 데 사용할 Dockerfile 참조
    "build": {
        "dockerfile": "Dockerfile"
    }
}

2-3. Codespace 생성 및 환경 확인

  1. Dockerfile과 devcontainer.json 파일을 .devcontainer 디렉터리 내에 넣고 Git에 커밋하여 GitHub 저장소에 푸시

  2. GitHub Codespaces 또는 VS Code의 Remote Explorer를 통해 새 Codespace 생성을 선택하고 리포지토리를 지정

  3. GitHub는 Dockerfile을 기반으로 환경을 빌드하고 VM을 가동함. 빌드가 완료되면 맞춤형 환경이 로드됨.


2-4. 도구 설치 검증

Codespace가 로드되면, 터미널을 열어 도구들이 성공적으로 설치되었는지 확인할 수 있다.

# Terraform 설치 확인
terraform --version

# Azure CLI 설치 확인
az --version

3. Codespace 관리 및 재빌드


  • 원격 접속: VS Code를 통해 Codespace에 연결하면, 로컬 애플리케이션처럼 작동하지만 실제 개발 환경은 클라우드 VM에서 실행되고 있다.

  • 환경 확장: 만약 새로운 도구 (예: Kubectl)를 추가해야 한다면, Dockerfile을 수정하고 VS Code 내에서 "Rebuild Container" 기능을 사용하여 컨테이너 환경을 다시 빌드할 수 있다.

  • 종료 및 중지: 작업 완료 후 VS Code 상단 메뉴에서 Disconnect를 선택하여 Codespace 세션에서 나갈 수 있다.


0개의 댓글