gomumu-web-installer
메인 인덱스 | bob-yamong | GitHub
이 문서는 gomumu-web-installer 레포를 실제 코드 기준으로 다시 읽은 메모입니다. 현재 소스만으로 제 직접 구현 범위를 단정하지는 않겠지만, 설치기 자체는 단순 빌드 스크립트가 아니라 브라우저 입력과 SSE 로그 스트리밍을 붙인 설치 오케스트레이터로 읽히는 레포입니다.
한 줄 소개
gomumu-web-installer는 Go 표준 라이브러리로 만든 웹 설치기이며, gomumu 설정 다운로드부터 microk8s 준비, BPF LSM 활성화 확인, Kubernetes 배포 적용까지를 브라우저 기반 흐름으로 묶습니다.
기술 스택
- Go
net/http,html/template- Server-Sent Events
- Bash 기반 설치 단계 실행
microk8s,kubectl, Docker registry 시크릿
코드 기준으로 확인한 구조
main.go는/,/start,/events세 개의 HTTP 핸들러를 중심으로 동작합니다.- 설치 로그는
logChan과clients맵으로 관리하고,/events에서text/event-stream형태로 브라우저에 실시간 전송합니다. - 입력 폼은
html/template로 렌더링되며,DOCKER_REGISTRY_SERVER,INSTALLER_USERNAME,INSTALLER_PASSWORD,OPERATOR_NAMESPACE를 받습니다. - 실제 설치는 Go 코드 안에 직접 배포 로직을 적는 대신, 쉘 명령을 순차 실행하는 방식으로 구성돼 있습니다.
- 초기 단계에는
gomumu설정 다운로드,microk8s설치, 그룹 추가, kube 디렉터리 준비, readiness 대기가 포함됩니다. - 커널 검사 단계에서는
CONFIG_BPF_LSM=y여부와/sys/kernel/security/lsm안의bpf활성 상태를 확인하고, 필요하면 GRUB의lsm=...bpf설정을 다룹니다. - 이후 Docker registry 인증 시크릿
regcred를 기본 네임스페이스와operator-system네임스페이스에 만들고,kubectl kustomize gomumu/operator/config/default | kubectl apply -f -와yamong.yaml적용으로 실제 Kubernetes 배포를 이어 갑니다. build.sh는 단순히go build -o web_installer main.go를 수행하므로, 이 레포의 핵심은 빌드가 아니라 설치 순서 orchestration에 있습니다.
주요 파일과 흐름
main.go: 웹 입력, 로그 브로드캐스트, 설치 단계 실행을 한 파일에 모은 엔트리포인트입니다.build.sh: 설치기 바이너리를 빌드하는 가장 얇은 스크립트입니다.- 설치 흐름 안의
download-release호출은 release-downloader.md와 연결됩니다. - 실제 배포 대상은 gomumu.md의 operator/runtime 구성입니다.
포트폴리오 메모
이 레포는 “Go 웹 서버 하나 더 만들었다”보다 “설치 경험을 웹 입력과 실시간 로그까지 포함한 배포 절차로 감쌌다”는 점에서 설명 가치가 있습니다. 현재 소스만으로 제 직접 구현 범위를 단정하진 않겠지만, 설치기라는 표면 아래에서 커널 조건, 레지스트리 인증, Kubernetes 적용을 한 번에 연결하려는 의도가 분명하게 보입니다.