바쁜 맥 사용자를 위한 도커 및 쿠버네티스 도구인 오브스택을 소개합니다. 기존 도커의 컨테이너 방식은 리눅스 VM을 사용하는 방식으로, 맥에 최적화된 가상화가 아니었습니다. 오브스택은 애플의 Virtualization Framework를 활용한 도커의 대체 도구로, 쿠버네티스와 도커 소켓을 지원하는 맥에 최적화된 컨테이너 도구입니다. 따라서 docker, docker-compose, kubectl(별도 설치) 명령어를 모두 사용할 수 있습니다. 이 블로그에서는 오브스택의 소개, 설치 및 사용 방법을 살펴보겠습니다.
✨ 소개
오브스택은 Orbital Labs에서 개발한 도구로, 애플의 독자적인 Virtualization Framework 기술로 최적화한 컨테이너 지원 도구입니다. 맥 환경에서 기존의 도커 및 도커 데스크탑은 리눅스 VM을 생성하여 리눅스 환경에서 컨테이너를 운영했습니다. 하지만 오브스택을 이용하면 Virtualization Framework으로 리눅스 VM을 사용하는 성능 오버헤드 없이 컨테이너를 운영할 수 있습니다. 공식 사이트에서 제시하는 특징은 다음과 같습니다.
- ⚡️ 번개처럼 빠릅니다. 시작하면 2초안에 준비되고, 네트워크와 파일시스템, x86 에뮬레이션에 최적화 되어있습니다.
- 💨 깃털처럼 가볍습니다. 오브스택은 낮은 CPU, 낮은 디스크 사용량, 배터리 친화적, 메모리가 적게 드는 Swift 앱입니다.
- 🍰 손쉽고 간단합니다. 도메인 접근, 컨텍스트(도커 엔진 ~ 도커 데스크탑, 오브스택) 전환, CLI를 통한 리소스 제어, VPN, SSH를 지원합니다.
- ⚙️ 강력합니다. 도커 컨테이너, 쿠버네티스, 리눅스 배포 모두를 실행할 수 있습니다. 메뉴를 통해 볼륨과 이미지 파일을 탐색할 수 있습니다.
위 내용에 대한 원문은 여기에서 확인하실 수 있습니다.
🧐 근데 로컬 쿠버네티스는 왜 사용하나요?
로컬 쿠버네티스는 경량 쿠버네티스를 내 컴퓨터에 설치하여 사용하는 것을 말합니다. 경량 쿠버네티스는 minikube, k3s, microk8s, kind 등이 있습니다. 도커 데스크탑(경량화된 순정 k8s)도 오브스택(k3s)도 경량 쿠버네티스를 지원합니다. GUI를 이용해서 편하게 모니터링할 수 있기 때문에, 개발용 및 실험용으로 아주 적합합니다. 요약하면 다음과 같은 장점이 있습니다.
- 로컬 호스트에 편하게 결합할 수 있음
- 설치 및 초기화가 간단함
- 쿠버네티스 입문자는 하루에 5번씩 쿠버네티스를 터트립니다. (제가 그랬습니다)
- 프로덕션용 쿠버네티스 보다는 경량 쿠버네티스에서 자주 초기화 하면서 연습하는 걸 강력히 추천합니다. (이 글을 쓰게 된 주요 동기입니다)
- 동일한 환경이 제현되기 때문에 다른 컴퓨터에서도 쉽게 검증할 수 있음
이 블로그는 쿠버네티스 입문자가 좀 더 편하게 연습하실 수 있기를 바라면서 작성하였습니다.
🧑🔧 설치법
공식 설치법은 여기에서 볼 수 있지만, homebrew로 너무나 간단하게 설치할 수 있습니다.
brew install orbstack
오브스택은 현재 맥을 위해서만 개발되었습니다. 윈도우 사용자는 안타깝지만 사용하실 수 없습니다.
설치 후 실행하면 다음과 같은 화면이 나옵니다.
위 이미지의 상단에 동그란 구슬 아이콘으로 메인 앱이나 설정을 살펴볼 수 있어요.
📝 사용법
컨테이너 사용법
오브스택이 실행 중이라면 고유 주소인 https://orb.local 접속할 수 있습니다.
그럼 메인 앱에서 나오는 것 처럼 실행 중인 컨테이너가 없다고 나옵니다. 그럼 여기서 다음 명령어를 실행해 볼까요?
docker run -it -p 80:80 docker/getting-started
# docker 명령어를 인식하지 않는다면 `brew install docker`로 설치합니다
그리고 오브스택 웹을 새로고침 해봅니다.
그럼 새로운 링크가 나오는데요, 이 링크에 들어가면 아래처럼 예제 컨테이너의 웹서버에 접속할 수 있습니다.
보통은 로컬에서 컨테이너를 실행할 때 http://localhost:80으로 접속하여 TLS 보안 경고를 무시하고 접속하게 됩니다. 하지만 오브스택에서는 전용 도메인에 컨테이너 이름을 붙여서 바로 연결되고 로컬 인증서로 TLS 연결도 잘 연결해줍니다. 로컬호스트도 물론 잘 동작합니다. localhost와 orb.local을 병행하여 사용하면 '컨테이너 보안을 확인하면서 개발하기 편하다'는 강점이 있습니다 🚀.
포트를 공개하지 않고 docker run -d docker/getting-started 로 실행하여도 80, 443, 8000 등 유효한 포트를 찾아서 연결시켜줍니다.
docker build, pull, push 와 같은 다른 기능들은 도커 데스크탑과 동일합니다!
쿠버네티스 사용법
이제 가장 중요한 쿠버네티스 사용법이죠. 오브스택 설정으로 들어갑니다.
그리고 쿠버네티스텝에서 활성화를 체크합니다. 여기서 적용하기 전 주의사항이 있습니다. 쿠버네티스를 활성화 할 때, 실행 중인 컨테이너가 비정상 종료될 수 있습니다. 작업하던 컨테이너를 보존한 후에 적용해주세요.
적용 후 조금 기다리면 다음과 같이 쿠버네티스가 컨테이너 목록에 나오게 됩니다.
앱에서는 쿠버네티스가 설치된 것 처럼 보입니다. 그럼 쿠버네티스를 제어할 수 있는 kubeconfig를 확보해야겠죠?
다음 명령어 중 하나를 수행하면 됩니다.
# 1. kubeconfig 파일을 직접 확인하기
cat ~/.kube/config
# 2. kubectl로 컨텍스트 확인하기 (brew install kubectl)
kubectl config view
# 3. kubectx로 orbstack 컨텍스트 확인하기 (brew install kubectx)
kubectx orbstack
그럼 기존 컨텍스트에서 orbstack 이라는 컨텍스트가 추가된 것을 볼 수 있습니다.
이제 오브스택의 컨텍스트를 선택합니다. 그리고 모든 파드 목록을 검색합니다.
kubectl config set-context orbstack
kubectl get pods -A
실행 결과는 다음과 같습니다.
참고로
1. 쿠버네티스에서 서비스 중인 파드는 orb.local 페이지에 나오지 않습니다.
2. 하지만 쿠버네티스 표준 도메인인 cluster.local 로 인그레스 가능합니다.
로컬 클러스터 활용법
먼저 맥의 쿠버네티스에는 큰 주의사항이 있습니다. intel 기반 맥은 x86_64 기반의 컨테이너를 잘 실행할 수 있습니다. 하지만 apple silicon M1, ..., M4 이상의 맥에서는 arm64 기반의 컨테이너를 실행해야 합니다. 따라서 아키텍처 오류와 같은 호환성 문제가 자주 발생합니다. 오픈소스를 사용하거나 도커파일을 빌드할 때 arm64도 지원하는 지 꼼꼼히 확인해 보시는 걸 추천합니다 (애플 실리콘 출시 이후 많은 오픈소스들이 arm64를 지원하고 있습니다!)
애플 실리콘 맥에서 빌드 할 때는 이렇게 여러 플랫폼에 대해서 빌드하는 걸 추천드립니다.
docker build --platform linux/amd64,linux/arm64 .
다음 포스팅은 오브스택과 같은 로컬 클러스터를 이용한 인프라 구성 예제입니다. 읽어주셔서 감사합니다.
다음 포스팅
'DevOps' 카테고리의 다른 글
🐙 GitOps#1: Argo CD와 함께 GitOps 시작하기 (1) | 2024.11.21 |
---|---|
📝 k8s+STDIN: 쿠버네티스에서 YAML 파일 없이 리소스 생성하기 (0) | 2024.11.12 |
🐶 k9s: 쿠버네티스 클러스터 관리를 위한 커맨드라인 UI 도구를 소개합니다 (1) | 2024.11.10 |
☸️ 로컬 쿠버네티스: 연습용 쿠버네티스 클러스터 사용법을 소개합니다 (1) | 2024.11.09 |
🍩 호머(Homer): YAML로 만드는 간편 대시보드 도구를 소개합니다 (0) | 2024.11.07 |
어제보다 오늘 더 공부 잘하는 코딩냥이. 어제보다 오늘 더 일 잘하는 코딩냥이.
포스팅이 좋았다면, 오류를 발견했다면, 더 좋은 아이디어가 있다면 댓글 부탁드립니다!