태그: #devops
GPU·LLM·MLOps·쿠버네티스, 그리고 마음가짐에 관한 글 · 195 편
LabHub — 브라우저에서 진짜 서버를 만지며 배우는 실습 플랫폼을 열었습니다
읽어서는 늘지 않는 것들이 있습니다. 서버에 붙어 명령을 치고, 틀리고, 왜 틀렸는지 확인하는 과정을 대신할 방법이 없습니다. LabHub 은 그 과정을 브라우저 안에 넣은 학습 플랫폼입니다. 실습 시작을 누르면 전용 리눅스 컨테이너가 즉시 뜨고, 브라우저 터미널로 붙어 과제를 풀고, 단계마다 서버가 실제 상태를 검사해 통과 여부를 알려 줍니다. 러닝패스 12개에 코스 73개, 실습 261개
2026-08-20 · 14 분 읽기 #labhub#kubernetes#devops#education#hands-on지금 주목받는 오픈소스 (6) 스타 수가 말해 주지 않는 것
스타 수는 인기 지표이지 위험 지표가 아닙니다. 오픈소스를 프로덕션에 들이기 전에 실제로 확인해야 하는 신호를 정리합니다. 최근 커밋과 릴리스 주기, 이슈 응답, 기여자 분포와 버스 팩터를 GitHub API로 직접 세는 방법, 라이선스가 자동 분류되지 않을 때 LICENSE 파일을 직접 읽어야 하는 이유, 그리고 도입 전 체크리스트를 담았습니다. 시리즈에서 실제로 확인한 사례를 근거로 삼았
2026-08-12 · 10 분 읽기 #open-source#governance#supply-chain#risk#devops지금 주목받는 오픈소스 (3) 인프라와 데이터베이스
데이터베이스와 인프라 영역은 라이선스 변경과 포크가 판을 다시 짠 분야입니다. 분석 엔진, 임베디드 데이터베이스, 포스트그레스 확장, 쿠버네티스 오퍼레이터, IaC까지 실제로 자리를 잡은 오픈소스 11개를 스타 순위가 아니라 해결하는 문제별로 묶어 소개합니다. 무엇을 대체하는지, 어느 정도 성숙했는지, 언제 쓰면 안 되는지를 함께 적었습니다. 저장소 경로와 라이선스, 스타 수, 최근 푸시는
2026-08-12 · 9 분 읽기 #open-source#database#infrastructure#postgresql#kubernetes버스 팩터는 아는 사람의 수가 아니라 결정할 수 있는 사람의 수다
Nixpkgs 코어 팀이 10개월 만에 해산했습니다. 기여자가 수천 명인 저장소에서 위임된 의사결정 권한을 가진 사람은 두 명이었고, 그 두 명이 물러나자 해당 관할은 직접적인 주인이 없는 상태가 되었습니다. 이 사건을 근거로 의존성 위험을 평가할 때 스타 수와 커밋 수가 아니라 승인 권한을 가진 사람의 수, 위임 구조의 실효성, 에스컬레이션 경로를 봐야 하는 이유를 정리하고, GitHub
2026-08-09 · 16 분 읽기 #devops#open-source#governance#nix#supply-chain레지스트리를 늘렸는데 가용성은 그대로다 — zot 스케일 아웃이 실제로 파는 것
zot을 예로 들어 컨테이너 레지스트리의 확장 설계를 뜯어봅니다. 일관성 해시로 리포지토리를 인스턴스에 배정하고 소유자가 아닌 노드는 프록시로 넘기는 구조는 샤딩이지 고가용성이 아니며, 공식 문서도 자가 치유가 되지 않는다고 명시합니다. 컴퓨트 전용 확장과 컴퓨트 겸 스토리지 확장이 각각 무엇을 포기하는지, boltdb 캐시 드라이버가 인스턴스 수를 사실상 하나로 묶는 이유, 미러링에서 di
2026-08-09 · 15 분 읽기 #devops#oci#registry#zot#containerDockerfile에서 반복되는 실수 — root 실행, PID 1, 이미지에 남는 시크릿
빌드는 통과하는데 운영에서만 터지는 Dockerfile 문제들을 원인부터 정리합니다. USER를 지정하지 않아 root로 도는 컨테이너, latest 태그와 재현성, ADD를 피해야 하는 이유, shell form CMD가 SIGTERM을 삼켜 배포 때마다 10초를 버리고 137로 죽는 구조, PID 1의 좀비 수확 책임과 tini, ARG와 ENV로 넣은 토큰이 docker history에
2026-07-26 · 20 분 읽기 #docker#dockerfile#container-security#pid1#devops도커 이미지 크기 줄이기 — 레이어의 진실, 멀티스테이지, 베이스 이미지의 실제 비용
도커 이미지가 1.9GB까지 부푸는 원인을 dive로 레이어 단위로 특정하는 법부터 정리합니다. 유니온 파일시스템 때문에 RUN rm 으로는 이미지가 한 바이트도 줄지 않는 이유, 멀티스테이지 빌드에서 정확히 무엇만 복사해야 하는지, alpine의 musl libc가 파이썬 휠 재빌드와 DNS 문제로 청구하는 숨은 비용, distroless와 slim의 트레이드오프를 실제 Dockerfile
2026-07-26 · 20 분 읽기 #docker#dockerfile#multi-stage-build#container#devops도커 빌드 캐시가 자꾸 깨지는 이유 — 레이어 캐시 키, ARG, BuildKit 캐시 마운트
코드 한 줄만 고쳤는데 npm ci가 5분 동안 다시 도는 문제의 원인을 캐시 키 수준에서 설명합니다. RUN의 캐시 키는 명령 문자열이고 COPY의 캐시 키는 파일 내용 해시라는 차이, 한 레이어가 깨지면 그 아래가 전부 깨지는 규칙, ARG가 BuildKit과 구 빌더에서 다르게 동작하는 지점을 다룹니다. CI 러너에는 캐시가 없다는 사실과 함께 캐시 마운트가 레지스트리 캐시로 내보내지지
2026-07-26 · 18 분 읽기 #docker#buildkit#build-cache#ci-cd#devops시크릿 관리, .env 파일만으로는 부족한 이유 — 환경변수가 새는 경로와 로테이션 설계
.env 파일을 .gitignore에 넣었다고 시크릿이 안전해지지는 않습니다. 프로세스 환경은 같은 호스트에서 /proc/PID/environ으로 그대로 읽히고, 크래시 리포트와 디버그 페이지와 CI 로그에 실려 나가며, 컨테이너 이미지 레이어에 영구히 남습니다. 이 글은 환경변수가 새어 나가는 실제 경로를 하나씩 보여주고, 시크릿이 이미 커밋된 경우의 대응 순서가 왜 히스토리 재작성이 아니
2026-07-26 · 27 분 읽기 #security#secrets#devops#vault#kubernetes도커 네트워크 모드와 연결 문제 — bridge, host, overlay, 그리고 127.0.0.1의 함정
컨테이너는 떴는데 접속이 안 되는 상황을 모드별 동작 원리로 풀어냅니다. 기본 bridge에서 컨테이너가 서로를 이름으로 못 찾는 이유와 사용자 정의 네트워크의 내장 DNS, 포트 퍼블리싱이 실제로 만드는 iptables DNAT 규칙, 바인딩 주소를 127.0.0.1로 제한하는 것의 보안 의미를 다룹니다. 컨테이너 안의 루프백이 호스트가 아니라는 점과 host.docker.internal,
2026-07-26 · 22 분 읽기 #docker#docker-network#iptables#networking#devopssystemd v261 — PID 1에 들어온 단계적 롤아웃, 클라우드 IMDS 흡수, 그리고 dlopen 전환의 완성
2026년 6월 19일 릴리스된 systemd v261은 유닛을 fleet의 지정 비율에서만 켜는 ConditionFraction=, 머신 태그로 링을 나누는 ConditionMachineTag=, 그리고 9개 퍼블릭 클라우드의 인스턴스 메타데이터를 시스템 자격증명으로 끌어오는 IMDS 서브시스템을 새로 실었고, libc를 제외한 모든 외부 라이브러리 링크를 dlopen()으로 바꾸는 다년
2026-07-17 · 30 분 읽기 #linux#systemd#devops#cloud#sysadminTalos Linux 1.13 — 쉘 없는 불변 OS가 디버그 쉘을 배송하기까지
쿠버네티스 전용 불변 OS인 Talos Linux의 1.13이 2026년 4월 27일에 나왔습니다. 이번 릴리스에는 Clang/ThinLTO로 빌드된 커널, 재현 가능한 디스크 이미지, 머신 전역 컨테이너 이미지 서명 검증, 그리고 가장 상징적인 기능 — 쉘도 SSH도 없는 OS를 위한 공식 디버그 컨테이너(talosctl debug) — 이 들어 있습니다. 이 글은 1.13의 실제 릴리스
2026-07-17 · 25 분 읽기 #linux#kubernetes#talos#immutable-infrastructure#devopsOpenBao는 Vault에서 실제로 얼마나 갈라졌나 — v2.6 네임스페이스 봉인까지, 릴리스 노트로 확인한 분기점
OpenBao v2.0.0 GA(2024-07-17)로부터 정확히 2년이 지났고, 사흘 전에는 v2.6.0이 나왔습니다. 이 글은 "BUSL 배신" 대 "지속가능성" 같은 진영 논리를 걷어내고, 양쪽 프로젝트의 릴리스 노트·체인지로그·커밋만으로 포크가 실제로 어디서 갈라졌는지 확인합니다. OpenBao는 Vault Enterprise 전용이던 네임스페이스를 v2.3.1에서 오픈소스로 가져왔고
2026-07-17 · 19 분 읽기 #security#open-source#devops#licensingFlux 2.9와 Weaveworks 이후 2년 — 스폰서를 잃은 GitOps 프로젝트는 어떻게 유지되고 있나
2024년 초 Flux의 원 개발사 Weaveworks가 문을 닫았을 때, GitHub 디스커션에는 "이 프로젝트의 미래는 위험한가?"라는 질문이 올라왔습니다. 2년 반이 지난 2026년 6월 30일, Flux는 2.9.0을 릴리스했습니다. 이 글은 그 사이에 실제로 일어난 일을 검증 가능한 1차 자료로 재구성합니다 — 릴리스 케이던스가 어떻게 흔들렸다 회복됐는지(v2.0부터 v2.9까지 릴
2026-07-17 · 21 분 읽기 #devops#gitops#fluxcd#kubernetes#open-sourceMySQL 9.7 다음 버전은 26.7 — 2026년 봄, MySQL과 MariaDB가 릴리스 모델을 정리한 방식
2026년 4월 21일 MySQL 9.7.0이 GA로 나오면서 8.4 이후 거의 2년 만에 새 LTS 라인이 열렸고, 같은 달 MySQL 8.0은 Extended Support가 끝나 Sustaining Support로 내려갔습니다. 그리고 6월 16일 Oracle은 버전 번호를 YY.M 캘린더 버저닝으로 바꾼다고 발표해, 9.7 다음 혁신 릴리스는 9.8이 아니라 26.7이 됐습니다. Ma
2026-07-16 · 34 분 읽기 #mysql#mariadb#database#versioning#devopsOpenTofu 1.12의 동적 prevent_destroy — lifecycle의 정적 제약이 풀린 자리와 그 대가
Terraform의 lifecycle 블록은 설계상 리터럴 값만 받습니다. 의존성 그래프를 만드는 단계에서 처리되기 때문에 변수를 평가할 시점이 아직 아니라는 것이 HashiCorp 문서의 설명이고, "변수를 쓰게 해 달라"는 요청은 2016년부터 있었습니다. OpenTofu 1.12(2026년 5월 14일)는 preventdestroy의 평가를 설정 로더에서 언어 런타임으로 옮겨 이 제약을
2026-07-16 · 22 분 읽기 #opentofu#terraform#iac#devops#state-managementDebian이 재현 불가능한 패키지의 testing 이행을 막기 시작했다 — 게이트가 실제로 막는 것과 막지 않는 것
2026년 5월 9일, Debian 릴리스 팀은 이행 소프트웨어 britney를 재현 가능성 검사와 연결했습니다. 다음 날 메일링 리스트에 올라온 문장은 "Debian must ship reproducible packages"였지만, 실제로 막히는 것은 재현되지 않는 신규 패키지와 재현되던 패키지의 회귀 두 가지뿐입니다. 이 글은 그 게이트를 뜯어봅니다 — buildd가 남긴 .buildin
2026-07-16 · 37 분 읽기 #devops#reproducible-builds#debian#supply-chain#ci-cdKubeVirt GPU 패스스루 VM은 왜 112일간 스케줄되지 못했나 — 실제 클러스터 부검
Rust 오퍼레이터가 "GPU 노드 4개 전부 NotReady"라는 진단을 내린 뒤, 그 죽음의 원인을 실제 8노드 클러스터(GPU Operator v25.3.0, KubeVirt v1.7.0)에서 끝까지 추적했습니다. gpu-fedora와 rhel9-gpu-vm이 112일간 ErrorUnschedulable로 멈춰 있던 진짜 이유는 화려한 GPU 설정이 아니라 kubelet 한 줄 에러 —
2026-07-11 · 8 분 읽기 #kubevirt#gpu#kubernetes#nvidia#devopsKeycloak로 SSO 구축하기 — Realm·Client·플로우부터 2026 신기능까지
사내 앱 20개에 로그인을 각각 붙이는 대신, 하나의 아이덴티티 서버가 전부를 대신하게 만드는 것이 SSO입니다. 오픈소스 표준인 Keycloak을 Realm·Client·Role·Identity Provider라는 4개의 핵심 개념으로 이해하고, OIDC Authorization Code + PKCE 로그인 흐름을 한 단계씩 따라가며, Quarkus 배포의 build/start 2단계 모델
2026-07-09 · 16 분 읽기 #keycloak#sso#oidc#security#devopsGPU Operator × KubeVirt 총정리 — 구성요소·설정·버전, 부분 MIG와 수동 MIG까지
쿠버네티스 GPU 인프라의 두 기둥을 한 장에 정리합니다. GPU Operator의 오퍼랜드 구성과 ClusterPolicy 설정, 버전 체계와 함께, 노드의 일부 GPU에만 MIG를 적용하는 커스텀 설정과 nvidia-smi로 MIG를 수동 생성·삭제하는 방법을 다루고, VM을 쿠버네티스에서 돌리는 KubeVirt의 4대 컴포넌트(virt-operator·controller·handler·
2026-07-09 · 14 분 읽기 #kubernetes#gpu#kubevirt#mig#nvidia