본문 바로가기
C.W.K.
Stream
Lesson 04 of 04 · published

뭘 바꿀 권리를 벌어라

~10 min · read-only-first, mutation-disabled, agentless, least-privilege

Level 0Lone Machine
0 XP0/37 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"control plane 은 전부 볼 수 있어야 하고, 첫날엔 아무것도 못 바꿔야 해."

기본은 힘 꺼짐

Watchfire 는 read-only, agentless, production mutation 꺼진 채로 나와. fleet 을 훑고, 도달 여부를 probe 하고, OS 빌드며 서비스 상태며 drift 를 읽어. 근데 재부팅도, 업그레이드도, enroll 도, 재설정도 못 해. 다 보되 하나도 못 건드려. 이건 덜 만든 게 아니라, 일부러 잡은 시작 자세야.

일부러 불구로 시작하는 이유

둘은 위험이 아예 달라서 그래. 관찰은 안전해. 돌리고 또 돌려도 아래로 아무 변화가 없어. mutation 은 위험해. 딴 나라 기계를 재부팅하거나, 엉뚱한 호스트를 retire 하거나, OS 업그레이드를 벽돌로 만들어. 그래서 안전한 반쪽은 첫날부터 밥값을 하고, 위험한 반쪽은 각 operation 의 preflight, approval, verification, recovery 가 실제로 만들어지고 리뷰를 통과할 때까지 꺼둬. 힘은 gate 걸린 operation 하나씩 켜져. 전역 스위치 하나 올려서 켜지는 게 아니라.

agentless 먼저

첫 probe 는 탑에서 당겨오는 방식이야. 자격 있는 호스트에 SSH 로 닿고, 제한된 read-only 명령을 돌리고, 결과를 정리해. 아홉 대에 데몬을 깔지 않아. 그거 없이는 도저히 안 되는 구체적인 operation 이 생겼을 때만 상주 agent 를 더해. 재부팅이랑 SSH 끊김을 버텨야 하는 작업 같은 거. 아직 없는 문제를 풀겠다고 영구 agent 를 뿌리지 마. agent 는 진짜 job 이 요구할 때만 치르는 비용이야.

수동 증거는 receipt 가 아냐

가끔은 기계를 손으로 고쳐. 직접 앉아서 업그레이드하지. 그건 진짜고 증거 로 쳐. 근데 서명된 executor receipt 는 아냐. control plane 은 자기가 실제로 보낸 걸 적어. 그냥 지켜본 작업에 receipt 를 지어내면 안 돼. 그 둘을 갈라둬야 기록이 그럴싸한 거짓말로 슬금슬금 차는 걸 막아.

관찰은 공짜, mutation 은 버는 거. 보는 걸 먼저 내놓고, 뭘 바꿀 힘은 전부 자기 gate 를 달고 오게 해.

Code

자세, config 로·bash
export WATCHFIRE_ENVIRONMENT=production
export WATCHFIRE_MUTATION_MODE=disabled   # 보되, 건드리진 마

# read 경로는 어디서나, 언제나 돼:
watchfire fleet status          # OK  -- 관찰
watchfire host show server       # OK  -- 관찰

# mutating 경로는 disabled 인 동안 모든 경계에서 fail closed:
watchfire host restart server    # 거부 -- mutation disabled, gate 미완성

# 힘은 그 operation 의 gate 가 리뷰를 통과한 뒤 하나씩 켜져.
# 넘기면 전부 mutable 해지는 단일 플래그 같은 건 없어.

External links

Exercise

네 기계용으로 가장 작은 read-only probe 를 짜봐. 아무것도 안 바꾸면서 '괜찮아?' 에 답하는 제한된 명령 서너 개를 골라. 그다음 probe 돌리다가 '그냥 고쳐버릴까' 싶어질 것 하나를 짚어봐. 왜 그건 별도의 리뷰된 operation 이어야 하는지 대봐.
Hint
안전한 read 는 두 번 돌려도 결과가 똑같아. OS 버전 조회, 남은 디스크, uptime, loaded 서비스 목록 같은 거. remove·kill·install·설정 쓰기가 끼면 그건 probe 가 아니라 probe 옷 입은 mutation 이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.