QEMU로 Ubuntu Server VM 생성하기

시작하며 직접 구축하는 홈서버에 VM도 추가하고 싶어졌고 이전 글[1]과 마찬가지로 CLI로 VM을 띄워보고 싶었다. 이전 글에서는 VirtualBox를 이용했지만 이번에는 qemu라는 도구를 이용해 VM을 만들어보고자한다. qemu는 VM을 띄우는 도구들 중에서도 꽤나 로우한 레벨에 있으면서 손쉽게 다양한 아키텍쳐를 가상화해서 사용할 수 있게 해준다. 또한 CLI로 실행하는 프로그램이기에 VM을 손쉽게 띄워보고 싶은 나 같은 경우에 적합하다. 실습 환경 호스트 환경은 아래와 같다. 항목 정보 CPU amd64, 8 Core RAM 16GB Disk 256GB OS Ubuntu server 22.04 구성하고자하는 VM은 다음과 같다. ...

12월 8, 2022 · 11 분

VBoxManage(VirtualBox CLI)로 VM 생성하기

시작하며 홈서버를 직접 구성해보면서 실제 기기 개수가 많지 않아 좀 아쉬웠는데 최근에는 이를 VM으로 충당해볼까 싶은 생각이 들기도 했다. 갖고 있는 랩탑 하나에 여러 대의 VM을 띄우면 홈서버에서 좀 더 많은 수의 노드가 있는 것처럼 이용할 수 있지 않을까 싶어 VM을 띄워보기로 했다. 하지만 이번에는 단순히 GUI로 VM을 띄우는 것이 아니라 CLI로 VM을 띄우면서 LV(Logical Volume)을 이용해봤다. 해당 내용을 까먹을까봐 이 글을 통해 한 번 정리해본다. 실습 환경 호스트 환경은 아래와 같다. ...

12월 6, 2022 · 9 분

[반려 서버 키우기 사전 작업] Core DNS를 홈랩의 커스텀 DNS 서버로 이용하기

시작하며 “반려 서버 키우기”라는 건전한 취미 생활을 본격적으로 시작하기 전에 그 사전 작업 중 하나로 Core DNS를 찍먹해보려한다. 현재 나의 홈랩 상황은 다음과 같다. (서버 및 장난감) 라즈베리파이 4대 (서버 및 장난감) 랩탑 1대 + 그 위의 VM 3대 (서버 관리용) PC 2대 핸드폰 2개 즉 나의 반려 서버는 8대, 반려 서버에 접속하는 장비는 4대(PC + 핸드폰) 정도라고 볼 수 있다. 기존에는 매번 사용하는 PC의 /etc/hosts 를 편집해서 도메인 네임을 이용하곤 했는데 한 대의 PC로만 접속하는 게 아니라 여러 장비로 서버에 접속하게 될 수 있다보니 매번 /etc/hosts를 편집하는 것이 그닥 유쾌하진 않았고, 심지어 모바일에서는 /etc/hosts 를 제어할 수 없어 IP로 직접 접근해야했다. ...

11월 30, 2022 · 7 분

[책] 실습과 그림으로 배우는 리눅스 구조 리뷰

시작하며 Istio in Action을 읽고난 뒤에 리눅스나 커널에 대한 책을 읽어보겠다는 계획을 갖게 되었습니다. 정확히는 DevOps와 SE를 위한 리눅스 커널 이야기라는 책을 읽고싶었습니다. 기존에는 그 책이 사무실에 비치되어있었지만 이번에 사무실을 이사하면서 그 책이 어디갔는지 보이지가 않더라구요. 그래서 그냥 다른 책장에 비치되어있던 이 책을 읽어봤습니다. 다루고 있는 내용은 주로 리눅스 구조라기보다는 전반적인 컴퓨터 구조, 운영체제 같았습니다. 책에 담긴 내용 간단히 정리 커널의 역할, 운영체제의 역할이 무엇인지. 커널과 운영체제 및 드라이버들이 없다면 어떤 불편이 있을지 설명합니다. syscall, interrupt에 대해 이해하기 쉽게 설명하고 어떤 플로우로 동작하는지 설명합니다. CPU, 코어, 하이퍼 스레드에 대해 설명합니다. 메모리와 Virtual Memory, Cache, HDD, SSD의 특징과 어떻게 동작하는지를 설명합니다. fork & execve가 어떻게 동작하는지와 계층적인 리눅스의 프로세스 관계에 대해 설명합니다. 파일 시스템이 무엇인지, 파일 시스템이 없다면 어떠한 불편이 있는지 설명합니다. 장단점 장점 실제 코드와 그것에 대한 수행 결과, 개념을 나타낸 그림 등을 통해 이해를 돕습니다. 단순히 “이런 역할을 하는 녀석입니다.“로 설명이 끝나는 게 아니라 그 녀석이 없으면 어떤 불편이 있는지 예시를 들어줍니다. e.g. 디바이스 드라이버가 없다면 유저들은 작성하는 모든 프로그램에서 디바이스를 어떻게 제어할지를 구현해야할 것이고, 여러 프로세스가 같은 디바이스를 사용하려는 경우 어떻게 해야할 지에 대한 문제가 생길 것이다. e.g. 가상 메모리라는 개념 없이 물리 메모리를 직접 이용한다면 프로세스들이 실제로 자신의 물리메모리 주소를 관리해야하는데 이런 경우 다양한 어려움이 존재할 것이다. (너무 다양해서 이 글에선 생략.) 평소에 궁금했던 개념들, 내가 잘 알고 있는 건지 의문이 들었던 개념들, 이것까지 알아야하나싶은 개념들에 대해 한 번 가볍게 정리해볼 수 있습니다. 예를 들면 Page cache, Hyper thread 이런 개념들은 들어보기만 많이 들어보고 가볍게 알아볼 기회가 없었는데 이번에 가볍게 ‘아~ 이런 거구나~’ 해볼 수 있었습니다. 교수님께 배웠던 Virtual Memory 역할과 흔히 인터넷에서 Virtual memory를 설명하던 내용이 조금 달라서 내가 잘 알고있는 건지 의문이 들었는데 이런 의문도 해소가 됐습니다. 흔히 인터넷에서 봤던 Virtual memory의 역할은 Page라는 개념을 바탕으로 물리 메모리를 프로세스가 안전하고 편리하게 사용할 수 있도록 해주는 것이었습니다. 교수님께 배웠던 Virtual memory는 이뿐만 아니라 메모리를 demading page, swap 같은 응용된 내용도 있었습니다. 그래서 제가 인터넷에서 봤던 내용들이 맞는 건지 교수님께 배웠던 내용이 맞는 건지 궁금했는데 이 책 덕분에 ‘뭐 모두 맞는 내용 같다.‘는 결론을 낼 수 있었습니다. 단점 깊이가 깊진 않습니다. 깊이만 놓고 보면 학부생 수준의 컴퓨터구조, 운영체제 정도인 듯합니다. 번역이 조금 어색한 부분들이 종종 보였습니다. 마치며 ...

10월 9, 2022 · 2 분

[책] Istio in Action 리뷰

시작하며 저는 데브옵스 엔지니어로 현재(2022년 9월)의 회사에 입사한 후, 기존에 막연하게 궁금증을 가져왔던 Istio라는 제품을 주로 담당하게 됐습니다. 공식 문서와 릴리즈 노트 위주로 Istio를 공부하던 중 팀원분께 Istio in Action이라는 책을 추천받게 됐고, 이 책을 통해 조금 두루뭉실했던 이해와 삽질을 바탕으로 했던 판단들이 좀 더 분명해질 수 있었던 것 같습니다. 그 동안은 지루함으로 인해 책을 다소 멀리 하고 짧은 아티클들을 위주로 학습을 해온 반면 올해 제 목표 중 하나는 책을 통해 좀 더 개념을 잘 정리하고 깊이 있게 공부를 해나가는 것이었습니다. 이 책은 그런 저의 목표에 다행히 잘 부합해줬던 것 같고 정말 간단히 리뷰를 해보려합니다. ...

9월 30, 2022 · 4 분

2022년 9월에 적어보는 조금은 뜬금없는 9개월간의 2022년 회고

시작하며 시간은 정말 나이를 먹을 수록 빠르게 지나가는 것일까? 매번 지난 회고를 돌이켜보면 시간이 빠르게 지나갔다는 얘기로 시작하게 된 것 같다. 올해에도 역시나다. 시간이 참 빠른 것 같다. 이전 회고글과 같이 기술적으로 매력적인 신입이 되고자하는 회고라기보다는 이번 글은 회고라고 적기는 했으나 취준 과정 그리고 입사 이후에 대한 일기라고 볼 수도 있을 것 같다. 되돌아본 2022 크게 올 한해를 정리해보자면 다음과 같다. 2022.01~2022.02 | 당근마켓 플랫폼 서버 Golang 개발자 인턴으로 근무했다. 2022.03~2022.04 | 짧다면 짧은 시간이겠지만 취준생으로서 노력했다. 2022.03 | 고독한 취준 시기이고 이후에도 고독한 직장인이 되겠지만 그를 위해 취미 하나쯤은 갖고자 기타 레슨을 시작했다. 2022.04 | 취준을 마치고 홀로 🇺🇸미국여행을 다녀왔다. 향후 N년간은 겪어보지 못할 것 같다. 2022.05 | 행운이게도 고맙고 좋은 사람을 만났다. 2022.05 | 데브시스터즈에 데브옵스 엔지니어로 입사했다. 또 인생 첫 자취를 시작했다. 2022.07 | 회사에 적응 후 관심있던 istio 관련 업무를 주로 보고 있다. 2022.09 | 새로운 k8s와 클라우드 인프라 관리에 대한 큰 그림을 그려나가야할 때이다. 동료들과 종종 “진수님은 요즘은 잘 지내고 계신가요?” 이런 얘기를 나누게 될 때가 있다. 올해의 나는 항상 이렇게 대답하고 있다. “26년 인생 중 가장 행복한 한해를 보내고있다"고. ...

9월 10, 2022 · 8 분

Virtual Service와 Destination Rule을 이용해 mesh 내부 트래픽을 원하는 대로 라우팅해보기

시작하며 데브옵스 엔지니어로 입사한 뒤 주로 맡고 있는 작업은 Istio 관련 작업이다. 평소 참 관심 있었던 분야이기도 하고 istio 뿐만 아니라 네트워크에 대해 개인적으로 정말 공부해보고싶었는데 덕분에 재미있게 공부하고 성장하며 근무하고 있는 것 같다. 😊 근데 요즘 들어 점점 단순히 ‘어떻게 저떻게 하니까 돌아는가네~ 오.. 나 istio 좀 파악한듯?ㅋㅋ’ 수준의 자세로는 트러블슈팅을 하거나 올바르게 설계하기가 쉽지 않은 경우들이 잦아졌다. 따라서 평소 궁금했던 내용 중 하나를 살짝 파헤쳐볼까한다. 나는 주로 istio ingress gateway와 관련된 작업을 많이 했었고 이 경우 Virtual Service는 항상 ingress gateway를 참조하도록 설정해왔다. 근데 istio를 처음 배울 때는 분명 ‘client 측에서 outbound handler 역할을 하는 Envoy 사이드카을 통해 알아서 우리가 의도하는 목적지를 찾아서 요청을 보낸다.’ 이런 식으로 배웠던 것 같은데 ‘왜 나는 Virtual Service를 이용할 때 항상 Gateway를 설정해줘야하는 것이었을까?’하는 궁금증이 생겼다. ...

8월 11, 2022 · 7 분

Istio와 envoy proxy를 통해 경험해보는 네트워크 인터페이스 (istio 1.10)

시작하며 요즘 istio를 공부하던 중 istio가 변화해온 과정에 대해서도 흥미가 생겨 지난 버전들의 릴리즈 노트들도 읽어보고 있습니다. 그러던 중 현 시점(2022년 7월)에는 이미 공식적인 End of Life가 지난 2021년 3월 처음 릴리즈된 istio 1.10의 릴리즈 노트를 보다가 재미있는 점을 하나 발견할 수 있었는데요. 바로 envoy proxy가 eth0에 대한 요청을 넘겨주는 container의 network interface가 lo 에서 eth0 로 변경되었다는 점입니다. 네트워크에 대해, 그 중에서도 특히 네트워크 인터페이스에 대해 잘 몰랐던 때에는 이 변경사항에 그닥 관심이 안 갔을 것 같은데 최근 네트워크 인터페이스에 대해 공부를 해서인지 이 변경사항에 관심이 갔습니다. ...

7월 17, 2022 · 10 분

쿠버네티스로 Clova AI Custom Extension 배포하기 (feat. Istio, Cert Manager)

시작하며 올해에는 많은 변화가 있었다! 💼 데브옵스 엔지니어로 회사를 가게 됐고 아주 만족 중이다! 🏠 회사의 좋은 보상, 복지에 힘입어 생애 첫 자취를 하게 됐다. 💻 네트워크나 리눅스, 보안 등 딥한 영역에 좀 더 관심을 갖게 됐다. 🎸 기타를 꾸준히 다니고 있다. 그런 변화들 속에서 자취방에 인터넷 설치를 하게 됐는데 클로바 AI 스피커를 공짜로 주더라. 본가에 있을 때도 쓰긴 했는데 딱히 관심 없다가 직접 클로바 앱을 깔아서 이것저것 써보니 ‘전보다 재밌네..? ㅎㅎ’ 싶었고, ‘아니 이거 직접 만들지는 못하나’하는 생각이 들던 참에 “스킬 스토어”라는 게 눈에 띄었다. 스킬 스토어에는 개별 개발사들이 개발한 자기네 기능들이 소개되어있었다. ...

7월 13, 2022 · 8 분

ArgoCD 선언적으로 이용해나가기 - Github을 통한 SSO 및 RBAC

시작하며 저번 글(“ArgoCD 선언적으로 이용해나가기 - Helm, App of App”)에서는 Helm과 App of App 패턴을 이용해 ArgoCD를 선언적으로 이용해나가는 방법을 다뤘습니다. 바~로 ArgoCD를 좀 더 선언적으로 이용해나가는 것과 관련된 팁부터 글을 적어나가기는 좀 무리가 있을 것 같아 해당 글에서는 배경지식들에 대한 간략한 정리와 핸즈온 같은 느낌의 내용들도 많이 포함하게 됐던 것 같아요. 이번 글에서는 ArgoCD를 실제로 이용하기 위해 필요할만한 이런 저런 설정들을 어떻게 선언적으로 정의해볼 수 있을지를 소개해보려해요! 그리고 그 예시로 RBAC 설정을 해보겠습니다. 이번 글에서 수행해볼 작업은 Github 계정을 ArgoCD와 연동시켜 역할(Role) 기반으로 ArgoCD의 권한을 제어하는 것이에요. ...

5월 7, 2022 · 6 분