4.1 KiB
4.1 KiB
Agent 구현 태스크 (Step 2~4)
전제 조건
- Step 1 Skills 구현 완료 (인터페이스 버전
1.0확정) - Staging K8s 클러스터 접근 가능
Step 2: Agent 프레임워크 POC
목표: OpenClaw와 Nanobot 중 하나를 실제 클러스터에서 검증하여 프레임워크를 확정한다.
POC 범위 (최소)
- 각 프레임워크를 Staging 클러스터에 배포
helm_diffSkill 하나를 등록- Agent가 Skill을 호출하여 실제 결과 반환 확인
- 두 프레임워크 비교 후 결정
비교 기준
| 항목 | OpenClaw | Nanobot | 결과 |
|---|---|---|---|
| K8s 배포 난이도 | 공식 Helm chart | 직접 구성 | - |
| Skill 연결 방식 | - | - | - |
| 로그/디버깅 편의성 | - | - | - |
| 보안 설정 가능 여부 | - | - | - |
POC 완료 후 이 표를 채운다.
완료 기준: 두 프레임워크 중 하나 선택, 선택 이유를 decisions/ 에 기록
Step 3: Agent 워크플로 정의
목표: 선택한 프레임워크에서 모든 Skill을 등록하고 워크플로를 정의한다.
태스크
- 모든 Skill 등록
helm_diff,breaking_change_check,generate_upgrade_docupdate_docs_file,create_pr,deploy_validate
- 워크플로 정의 (Cron 스케줄 기반)
workflow: helm-upgrade-automation
schedule: "0 8 * * *"
steps:
- name: detect-versions
skill: chart_version_detector
output: new_versions[] # current_version + latest_version
- name: generate-diffs
skill: helm_diff
for_each: new_versions
output: diff_json[]
# 내부에서 최신 차트 pull + 버전 디렉토리 생성 수행
- name: check-breaking
skill: breaking_change_check
for_each: diff_json
output: breaking_results[]
- name: generate-docs
skill: generate_upgrade_doc
# Skill 내부에서 severity 분기: breaking=true or severity≥high → LLM 심층 요약, 그 외 → 간이 템플릿
for_each: [diff_json, breaking_results]
output: docs[]
- name: update-docs
skill: update_docs_file
for_each: docs
output: updated[]
- name: validate-deployments
skill: deploy_validate
condition: breaking=false and severity<high # breaking=true or severity>=high이면 스킵 → 사람 승인 필요
for_each: updated
output: validation_results[]
- name: create-prs
skill: create_pr
for_each: updated
output: pr_urls[]
- name: notify
channel: slack
message: "Helm upgrade PRs created: {pr_urls}"
- K8s 이벤트 기반 트리거 설정 (선택: ArgoCD App 상태 변화 등)
- Staging 클러스터에서 E2E 동작 확인
완료 기준: Staging에서 airflow chart 신규 버전 감지 → PR 생성까지 E2E 자동 실행
Step 4: 보안 정책 수립 후 운영
목표: 운영 클러스터 투입 전 보안 정책을 확립한다.
태스크
- RBAC 설정 (test namespace만 허용)
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: helm-test
rules:
- apiGroups: ["apps"]
resources: ["deployments", "statefulsets"]
verbs: ["get", "list", "create", "update", "delete"]
- apiGroups: [""]
resources: ["pods", "services", "configmaps"]
verbs: ["get", "list", "create", "update", "delete"]
- NetworkPolicy 설정 (허용 egress만 통과)
- GitHub API (
api.github.com) - LLM API (
api.anthropic.com또는api.openai.com) - Slack API (알림용)
- GitHub API (
- Skill allowlist 관리 (shell skill 비활성화 필수)
- 입력 sanitization (Prompt Injection 방지)
breaking=truePR은 사람이 직접 머지 승인 유지
완료 기준: 보안 체크리스트 전항목 충족, 운영 클러스터 투입
관련 문서
- design/05-on-cluster-agent.md — Agent 배포 설계 + 보안 고려사항
- design/04-skill-interface.md — Agent가 호출할 Skill 인터페이스
- decisions/001-agentic-first.md — 파이프라인 건너뛰기 결정 배경