Zum Hauptinhalt springen

OpenClaw

OpenClaw는 Lumie 비즈니스 운영을 지원하는 자체 호스팅 다중 AI 에이전트 플랫폼입니다. 마케팅, 영업, 고객지원, 운영 등 각 업무 도메인별로 전문화된 에이전트를 운영하며, 에이전트 간 위임(agent-to-agent) 협업이 가능합니다.

배포 구성

  • 네임스페이스: openclaw
  • 배포 방식: 커스텀 매니페스트 (Kustomize + Common 차트)
  • 이미지: zot.lumie-infra.com/openclaw/openclaw:2026.4.14
  • 복제본: 1개 (Recreate 전략)
  • 게이트웨이 포트: 18789
  • 접근: Teleport 앱 프록시 경유 (직접 Ingress 없음)

아키텍처

에이전트 구성

OpenClaw는 총 28개 에이전트를 운영합니다. 에이전트는 업무 도메인 기준으로 5개 그룹으로 분류됩니다:

에이전트 목록

그룹에이전트 ID역할
핵심main범용 오케스트레이터, 최상위 에이전트
마케팅marketing-manager마케팅 전략 총괄
blog-writerSEO 블로그 포스트 작성
sns-creatorSNS 콘텐츠 제작
seo-specialist키워드 리서치 및 SEO 분석
landing-copywriter랜딩 페이지 카피 작성
email-newsletter이메일 뉴스레터 작성
competitor-analyst경쟁사 분석
community-manager커뮤니티 참여 전략
영업sales-manager영업 전략 총괄
lead-qualifier리드 자격 심사
outreach-specialist외부 접촉 전문가
proposal-writer제안서 작성
followup-drafter후속 연락 초안 작성
demo-prep데모 준비
objection-handler반론 처리
고객지원cs-manager고객지원 총괄
onboarding-guide온보딩 가이드
support-responder지원 요청 응답
faq-specialistFAQ 관리
feedback-synthesiser피드백 종합 분석
운영ops-manager운영 총괄
legal-compliance법무/컴플라이언스
finance-billing재무/결제
systems-monitor시스템 모니터링
strategy-advisor전략 자문
market-research시장 조사
pricing-strategist가격 전략

기본 모델

모든 에이전트의 기본 모델은 deepseek/deepseek-chat(DeepSeek V3)입니다. DeepSeek R1(deepseek-reasoner)도 설정에서 사용 가능합니다.

{
"agents": {
"defaults": {
"model": {
"primary": "deepseek/deepseek-chat"
}
}
},
"models": {
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"api": "openai-completions",
"models": [
{ "id": "deepseek-chat", "name": "DeepSeek V3" },
{ "id": "deepseek-reasoner", "name": "DeepSeek R1" }
]
}
}
}
}

게이트웨이 설정 (openclaw.json)

{
"gateway": {
"bind": "lan",
"trustedProxies": ["10.42.0.0/16", "127.0.0.0/8"],
"auth": {
"mode": "token",
"token": "${OPENCLAW_GATEWAY_TOKEN}"
},
"controlUi": {
"dangerouslyAllowHostHeaderOriginFallback": true,
"dangerouslyDisableDeviceAuth": true
}
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "${TELEGRAM_BOT_TOKEN}"
}
},
"tools": {
"agentToAgent": {
"enabled": true
}
}
}

이 설정 파일은 ConfigMap(openclaw-config)에 저장되며, Init Container가 PVC의 /home/node/.openclaw/openclaw.json으로 복사합니다.

Init Container: 워크스페이스 초기화

OpenClaw는 Init Container를 사용하여 에이전트 워크스페이스를 PVC에 초기화합니다. 이 패턴은 ConfigMap에 저장된 에이전트 SOUL 파일을 컨테이너 시작마다 동기화합니다:

initContainers:
- name: init-config
image: zot.lumie-infra.com/openclaw/openclaw:2026.4.14
command: ["sh", "-c"]
args:
- |
# 설정 파일 동기화
cp /tmp/openclaw-config/openclaw.json /home/node/.openclaw/openclaw.json

# 구형 워크스페이스 정리 (sales, growth, cs → 새 구조로 교체)
for old in sales growth cs; do
if [ -d "/home/node/.openclaw/workspaces/$old" ]; then
rm -rf "/home/node/.openclaw/workspaces/$old"
rm -rf "/home/node/.openclaw/agents/$old"
fi
done

# main 워크스페이스 시드 (ConfigMap에서 항상 덮어쓰기)
mkdir -p /home/node/.openclaw/workspace
for f in /tmp/openclaw-workspace/main-*; do
filename="${f##*/main-}"
cp "$f" "/home/node/.openclaw/workspace/$filename"
done

# 28개 에이전트 워크스페이스 시드
for agent in marketing-manager blog-writer ...; do
mkdir -p "/home/node/.openclaw/workspaces/$agent"
mkdir -p "/home/node/.openclaw/agents/$agent/agent"
mkdir -p "/home/node/.openclaw/agents/$agent/sessions"
for f in /tmp/openclaw-workspace/${agent}-*; do
[ ! -f "$f" ] && continue
cp "$f" "/home/node/.openclaw/workspaces/$agent/"
done
done

영구 저장소 (PVC)

에이전트 데이터, 세션 기록, 설정은 PVC에 저장됩니다:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: openclaw-data
namespace: openclaw
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-path-retain # 파드 삭제 후에도 데이터 보존
resources:
requests:
storage: 500Mi

local-path-retain StorageClass를 사용하여 파드가 삭제되거나 재생성되어도 에이전트 세션 데이터가 유지됩니다.

볼륨 마운트 구조

/home/node/.openclaw/ ← PVC (openclaw-data)
openclaw.json ← 게이트웨이 설정 (Init Container가 복사)
workspace/ ← main 에이전트 워크스페이스
workspaces/
marketing-manager/ ← 에이전트별 SOUL 파일
blog-writer/
...
agents/
marketing-manager/
agent/ ← 에이전트 상태
sessions/ ← 세션 기록
...

/tmp/openclaw-config/ ← ConfigMap (openclaw-config), 읽기 전용
/tmp/openclaw-workspace/ ← ConfigMap (openclaw-workspace-seed), 읽기 전용
/tmp/ ← emptyDir (100Mi), 임시 파일
/home/node/.cache/ ← emptyDir (50Mi), Node.js 캐시

네트워크 정책

OpenClaw는 최소 권한 원칙에 따라 세밀한 NetworkPolicy로 제어됩니다:

사설 IP 대역(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)으로의 외부 HTTPS 트래픽은 차단됩니다. DeepSeek API와 같은 외부 HTTPS만 허용합니다.

RBAC: 클러스터 읽기 전용 권한

OpenClaw는 클러스터 상태를 모니터링하기 위해 읽기 전용 ClusterRole을 가집니다:

clusterRoles:
- name: openclaw-readonly
rules:
- apiGroups: [""]
resources: ["pods", "services", "nodes", "namespaces", "events", "configmaps"]
verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
resources: ["deployments", "statefulsets", "daemonsets", "replicasets"]
verbs: ["get", "list", "watch"]
- apiGroups: ["batch"]
resources: ["jobs", "cronjobs"]
verbs: ["get", "list", "watch"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get", "list", "watch"]
- apiGroups: ["argoproj.io"]
resources: ["applications"]
verbs: ["get", "list", "watch"]

Vault 시크릿 구조

애플리케이션 시크릿

Vault 경로 secret/applications/openclaw:

설명생성된 시크릿
OPENCLAW_GATEWAY_TOKEN게이트웨이 접근 토큰openclaw-secrets
OPENCLAW_DB_PASSWORDinfra-db openclaw 유저 비밀번호openclaw-secrets

공유 API 토큰

Vault 경로 secret/tokens:

설명생성된 시크릿
DEEPSEEK_API_KEYDeepSeek API 키openclaw-token-secrets
TELEGRAM_BOT_TOKENTelegram 봇 토큰openclaw-token-secrets
ANTHROPIC_API_KEYAnthropic API 키openclaw-token-secrets
OPENAI_API_KEYOpenAI API 키openclaw-token-secrets
GOOGLE_API_KEYGoogle API 키openclaw-token-secrets

리소스 설정

resources:
requests:
cpu: 15m
memory: 826Mi
limits:
memory: 1115Mi # CPU 제한 없음

env:
- name: NODE_OPTIONS
value: "--max-old-space-size=896" # V8 힙 제한 (메모리 limit과 맞춤)

헬스체크

게이트웨이 포트(18789)로의 TCP 연결을 Node.js로 직접 확인합니다:

livenessProbe:
exec:
command:
- "sh"
- "-c"
- "node -e \"require('net').createConnection(18789,'127.0.0.1').on('connect',function(){process.exit(0)}).on('error',function(){process.exit(1)})\""
initialDelaySeconds: 60
periodSeconds: 30

startupProbe:
# 동일한 명령
periodSeconds: 10
failureThreshold: 18 # 최대 180초 시작 대기

접근 방법

Teleport를 통한 접근

# Teleport CLI로 앱 로그인
tsh app login openclaw

# 앱 URI 확인
tsh app config openclaw --format=uri

포트 포워딩 (개발/디버깅용)

kubectl port-forward -n openclaw svc/openclaw 18789:18789
# http://localhost:18789 에서 접근 (Gateway Token 필요)

운영 확인

파드 상태 확인

kubectl get pods -n openclaw
kubectl logs -n openclaw deployment/openclaw
kubectl logs -n openclaw deployment/openclaw -c init-config

Init Container 실행 결과 확인

kubectl logs -n openclaw <pod-name> -c init-config
# "All 28 agent workspaces seeded" 메시지 확인

PVC 사용량 확인

kubectl get pvc -n openclaw openclaw-data
kubectl exec -n openclaw deployment/openclaw -- du -sh /home/node/.openclaw/

시크릿 동기화 확인

kubectl get vaultstaticsecret -n openclaw
kubectl describe vaultstaticsecret -n openclaw openclaw-api-vss
kubectl describe vaultstaticsecret -n openclaw openclaw-tokens-vss

Kubernetes API 접근 권한 확인

kubectl auth can-i list pods --all-namespaces \
--as=system:serviceaccount:openclaw:openclaw

kubectl auth can-i get applications --all-namespaces \
--as=system:serviceaccount:openclaw:openclaw

문제 해결

에이전트 워크스페이스 파일 누락

Init Container가 실패했거나 ConfigMap이 비어 있는 경우:

# Init Container 로그 확인
kubectl logs -n openclaw <pod-name> -c init-config

# ConfigMap 내용 확인
kubectl get configmap -n openclaw openclaw-workspace-seed -o yaml | head -50

# PVC 내 파일 목록 직접 확인
kubectl exec -n openclaw deployment/openclaw -- ls /home/node/.openclaw/workspaces/

DeepSeek API 연결 실패

# 네트워크 정책으로 인한 차단 여부 확인
kubectl get networkpolicy -n openclaw

# 외부 HTTPS 연결 테스트 (임시 Pod 사용)
kubectl run -it --rm net-test --image=curlimages/curl \
--overrides='{"spec":{"serviceAccountName":"openclaw"}}' \
-n openclaw -- curl -I https://api.deepseek.com

메모리 부족

# 현재 메모리 사용량 확인
kubectl top pod -n openclaw

# OOMKill 이벤트 확인
kubectl get events -n openclaw --field-selector reason=OOMKilling

# NODE_OPTIONS 설정 확인 (V8 힙 vs 컨테이너 limit)
kubectl exec -n openclaw deployment/openclaw -- \
node -e "console.log(process.env.NODE_OPTIONS)"

Telegram 봇 응답 없음

# 봇 토큰 시크릿 동기화 확인
kubectl get secret -n openclaw openclaw-token-secrets \
-o jsonpath='{.data.TELEGRAM_BOT_TOKEN}' | base64 -d | wc -c
# 0이면 시크릿 동기화 실패

# OpenClaw 로그에서 Telegram 오류 확인
kubectl logs -n openclaw deployment/openclaw | grep -i telegram

관련 문서