draft

module
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 30, 2026 License: Apache-2.0

README

Nullus Platform

Kubernetes 기반 DevSecOps 자동화 오픈소스 플랫폼

Helm v3

⚡ 빠른 시작 · 📖 문서 사이트 · 🚀 라이브 데모 · ▶️ 시연 영상 · 📊 발표 장표

Nullus 란

검증된 OSS 조합(GitLab·Argo CD·Harbor·Prometheus·Grafana·OpenBao …)을 Golden Path 템플릿으로 고르고, 웹 UI 에서 노코드로 설정한 뒤 한 번의 배포로 Kubernetes 클러스터에 DevSecOps 스택을 설치하는 플랫폼입니다. 설치한 스택 위에 파이프라인을 만들면 저장소·CI 정의·레지스트리·Argo CD 연동까지 자동으로 묶이고, 빌드 앞뒤에 보안 게이트(시크릿 탐지·의존성 취약점·SAST·이미지 스캔)가 들어갑니다.

프로젝트마다 클러스터에 파이프라인을 반복 설치하면서 팀마다 절차가 달라지고, OSS 조합의 버전 호환성을 매번 검토하는 비용을 없애는 것이 목표입니다. 플랫폼 팀은 템플릿과 호환성 정책을 운영하고, 개발 팀은 검증된 파이프라인을 바로 씁니다.

Nullus main dashboard

지원하는 조합은 세 가지입니다 — GitLab(All-in-One · Argo CD · Harbor · Nexus · SonarQube · OTel), GitHub + Argo CD(저장소·Actions·GHCR 은 외부 서비스, 클러스터에는 Argo CD 와 관측만), Gitea + Jenkins + Argo CD(Lite 포함). 가장 많이 검증된 경로는 GitLab 입니다. 화면별 사용법은 문서 사이트에 있습니다.

설치

처음이라면 빠른 시작을 따라가세요 — 설치부터 스택 설치, 샘플 파이프라인 배포 확인까지 한 문서로 이어집니다.

요구사항

Docker + Docker Compose, Go 1.26+, Node.js 22+. 클러스터에 스택을 설치해 보려면 kind 와 kubectl·helm 이 더 필요합니다. 버전 근거는 준비물에 있습니다.

로컬에서 띄우기
./scripts/runbook_local.sh preflight   # 도구 확인
./scripts/runbook_local.sh up          # 인프라(PostgreSQL·오브젝트 스토리지·Redis·Keycloak) + 마이그레이션 + API + 웹
주소 무엇
http://localhost:5173 웹
http://localhost:8090 API (/health 의 db 가 connected 면 정상)
http://localhost:8180 Keycloak

refresh 는 백엔드·프런트엔드를 다시 빌드해 띄우고, down 은 전부 내립니다. 손으로 띄우려면 make dev → make run → make web-dev 순서입니다.

클러스터에 스택 설치해 보기
./scripts/runbook_local.sh kind-up                                   # kind 클러스터 두 개 (nullus-platform · nullus-develop)
./scripts/register-kind-clusters.sh                                  # 클러스터 등록 (UI 의 Cluster Management 에서도 가능)
./scripts/runbook_local.sh stack-up --template=gitlab-argocd-v1 --wait   # 템플릿으로 설치, 끝까지 기다림
./scripts/runbook_local.sh stack-down                                # 설치한 스택 삭제 (제품 삭제 경로 그대로)

stack-up 은 helm 을 직접 부르지 않고 백엔드 API 를 호출하므로 UI 설치와 같은 경로를 탑니다. 클러스터 등록부터 파이프라인 실행·백업까지 한 바퀴는 로컬 E2E 가이드에 순서대로 적혀 있습니다.

클러스터에 Nullus 배포하기

플랫폼 자체는 Helm 차트로 배포합니다. deploy/helm/nullus/values.yaml 을 복사해 도메인·DB·OIDC 를 채운 뒤:

helm upgrade --install nullus deploy/helm/nullus \
  --namespace nullus-system --create-namespace \
  -f my-values.yaml

DB 마이그레이션은 차트의 훅 Job(post-install·pre-upgrade)이 함께 돌립니다. 폐쇄망에는 airgap/ 의 번들 스크립트로 이미지·차트를 반입해 설치합니다. 배포 구성은 인프라 배포 설계를 참고하세요.

접속 계정

Mock Auth(up --auth=none 으로 띄웠을 때, 웹에서 바로 로그인):

역할 이메일 비밀번호 홈
Admin admin@nullus.dev admin123 /admin/organization
DevOps devops@nullus.dev devops123 /stack/templates
Developer developer@nullus.dev developer123 /cicd/developer-deploy

Keycloak OIDC(기본값 --auth=keycloak, 웹 로그인이 Keycloak 으로 넘어감):

역할 이메일 비밀번호
Admin admin@nullus.io nullus123!
DevOps devops@nullus.io nullus123!
Developer dev@nullus.io nullus123!

로컬 인프라:

서비스 주소 계정
PostgreSQL localhost:5433 nullus / nullus_dev
Keycloak Admin localhost:8180 admin / admin
오브젝트 스토리지 콘솔 (SILO, MinIO 호환) localhost:9001 nullus / nullus_dev
Redis localhost:6380 -

동작 방식

flowchart LR
  A["Admin · DevOps"] --> R["클러스터 등록·검증<br/>kubeconfig 암호화 저장"]
  R --> T["템플릿 선택·설정<br/>호환성 대조 · 자원 계획 · Dry Run"]
  T --> I["설치 엔진<br/>Helm SDK · 고정 단계 순서<br/>진행률 · 로그 스트림(WS)"]
  I --> S[("스택<br/>SCM · 레지스트리 · CI · Argo CD<br/>관측 · OpenBao/ESO")]
  D["Developer"] --> P["파이프라인 생성<br/>SCM 프로젝트 · 스캐폴딩 · CI 변수<br/>Argo CD Application"]
  P --> S
  S --> C["CI 러너가 빌드·스캔·배포<br/>플랫폼은 실행을 넘기고 결과를 들여온다"]
  S --> O["관측 · 경보 전달 · 백업"]
  • 스택 설치는 템플릿이 고른 도구를 아래 코어 DAG 순서로 Helm SDK 로 깝니다. 시크릿은 스택마다 설치되는 OpenBao 에 두고 External Secrets 가 Kubernetes Secret 으로 나릅니다. 도구별 SSO 클라이언트는 플랫폼 Keycloak 에 자동 등록됩니다.
  • 파이프라인 생성은 스택의 SCM 에 프로젝트를 만들고 CI 정의·Dockerfile·매니페스트를 스캐폴딩해 첫 커밋으로 올립니다. 레지스트리 자격증명과 스캔 정책은 CI 변수로 싣고, Argo CD Application 을 만들어 매니페스트를 동기화합니다.
  • 실행은 플랫폼이 빌드하지 않습니다. GitLab CI·GitHub Actions·Jenkins 에 실행을 넘기고(위임), CI 가 이미지를 올려 매니페스트 태그를 되커밋하면 Argo CD 가 배포합니다. 실행 기록은 CI 서버에서 주기적으로 들여옵니다.
  • 보안 게이트는 빌드 앞뒤에 서며 스택 정책으로 차단·경고·끄기를 고릅니다.
순서 단계 생기는 조건
1 SecretScan (gitleaks) 항상
2 DependencyScan (Trivy SCA) 설치 때 SCA 를 골랐을 때
3 Build 항상
4 SAST (SonarQube, Quality Gate) 설치 때 SAST 를 골랐을 때
5 ImageScan (Trivy) 설치 때 이미지 스캐너를 골랐을 때
6 Deploy (매니페스트 되커밋 → Argo CD) 항상
  • 관측은 Prometheus 질의가 아니라 클러스터 kubeconfig 로 Kubernetes 에 직접 붙어 파드·CPU·메모리를 모읍니다. 스택의 Prometheus 가 평가한 심각 경보는 플랫폼이 1분마다 가져와 Telegram·이메일·Slack 으로 보냅니다.
  • 백업은 플랫폼 DB·Keycloak·금고·클러스터 리소스·볼륨을 암호화해 외부 오브젝트 스토리지에 뜨고 되돌립니다(복구는 API 전용).

아키텍처

Frontend React 19 + TypeScript + Vite + Tailwind CSS 4 · Backend Go 1.26 (Echo v4) + PostgreSQL 17 · Auth Keycloak OIDC + JWT + RBAC(Admin/DevOps/Developer) · Infra Helm v3, Kubernetes 1.34+, kind(로컬)

Modular Monolith 로 시작해 모듈 경계를 바운디드 컨텍스트로 유지하고, 각 모듈은 Clean Architecture 로 의존성이 도메인을 향합니다. 모듈 사이는 공개 인터페이스와 도메인 이벤트로만 통신하고, 테이블은 모듈이 소유합니다.

[Handler] → [UseCase] → [Domain]
    ↓            ↓
[Port 인터페이스] → [Adapter: Postgres · Helm · Kubernetes · SCM API]
Context 모듈 핵심 기능
Stack Management internal/stack/ 템플릿·호환성·자원 계획, 설치 엔진(Helm SDK), 삭제·공용 자원 회수
CI/CD Pipeline internal/cicd/ SCM 프로비저닝·스캐폴딩, CI 위임, 실행 기록·스캔 결과
Observability internal/observability/ 클러스터·스택 지표, 스택 경보 수집
Organization internal/admin/ 조직·사용자·클러스터·토큰, 감사 로그
Auth internal/auth/ Keycloak OIDC, JWT, RBAC, 도구 SSO 프로비저닝
Backup internal/backup/ 백업·복구
Notification internal/notification/ 알림 채널, 발송·재시도·이력

역할 검사는 계층이 아니라 명단입니다 — /admin 은 Admin, /stacks 는 Admin·DevOps, /cicd 는 세 역할 모두. 자세한 표는 권한 표, 설계 전체는 시스템 아키텍처에 있습니다.

코어 DAG — 스택 설치 단계

설치 엔진이 밟는 단계와 진행률의 단일 출처는 internal/stack/domain/deploy_steps.go 의 InstallStepOrder 입니다. 현재 구현은 이 순서를 고정 체인으로 돌며(설계의 병렬 DAG 엔진은 아직 아닙니다), 템플릿에서 고르지 않은 도구의 스텝은 건너뜁니다. 설치 구간은 5~90% 를 스텝 수로 균등하게 나눕니다.

flowchart LR
  subgraph INSTALL["installing · 5 → 90%"]
    direction LR
    P1["기반<br/>cert-manager · Prometheus CRD · metrics-server<br/>OpenBao · External Secrets · provisioning_secrets"]
    P2["데이터<br/>PostgreSQL · 오브젝트 스토리지<br/>스토리지 Secret·버킷 · DB 연결 확인"]
    P3["SSO<br/>provisioning_sso<br/>(도구별 Keycloak 클라이언트)"]
    P4["SCM · 레지스트리 · 보안<br/>GitLab 또는 Gitea(+provisioning)<br/>Harbor · Nexus(+provisioning)<br/>Trivy · SonarQube(+provisioning)"]
    P5["CI/CD<br/>Argo CD · Runner · Jenkins"]
    P6["관측<br/>Prometheus · Grafana · 로깅 · 로그 검색<br/>OpenTelemetry · Collector · Agent"]
    P7["마무리<br/>Gateway · integration_check"]
    P1 --> P2 --> P3 --> P4 --> P5 --> P6 --> P7
  end
  V["validate<br/>5%"] --> P1
  P7 --> CF["configuring<br/>93%"] --> HC["health_check<br/>96%"] --> OK["completed<br/>100%"]
  INSTALL -. 실패 .-> F["failed"] --> RB["rolling_back"] --> RD["rolled_back"]

삭제는 deleting_started → deleting_release(helm uninstall) → deleting_manifest(CRD·ClusterRoleBinding 정리) → deleted 순서이며, 클러스터의 마지막 스택을 지울 때는 함께 쓰던 공용 자원(cert-manager·내부 CA·metrics-server·Gateway API CRD)도 Nullus 가 설치한 것이면 회수합니다.

프로젝트 구조

nullus/
├── cmd/
│   ├── api/                # API 서버 진입점
│   ├── nullus/             # CLI (version · stack ls · mcp serve)
│   ├── nullus-bootstrap/   # 무인 설치용 부트스트랩 자격 발급
│   └── token-source-sync/  # 토큰 소스 동기화
├── configs/                # 설정 파일 (config.yaml)
├── db/migrations/          # DB 마이그레이션
├── deploy/helm/nullus/     # Nullus Helm 차트
├── airgap/                 # 폐쇄망 번들 스크립트
├── internal/               # 모듈 (Clean Architecture: domain · usecase · port · adapter)
│   ├── admin/              # 조직·클러스터·사용자·토큰
│   ├── auth/               # Keycloak OIDC · JWT · RBAC · SSO 프로비저닝
│   ├── backup/             # 백업·복구
│   ├── cicd/               # 파이프라인 프로비저닝·CI 위임·실행 기록
│   ├── cli/                # CLI 명령
│   ├── mcp/                # MCP 서버 (stdio)
│   ├── notification/       # 알림 채널 (Telegram · 이메일 · Slack)
│   ├── observability/      # 모니터링, 스택 경보 수집
│   ├── stack/              # 스택 템플릿·호환성·설치 엔진
│   └── shared/             # 설정 · 미들웨어 · 감사 · 이벤트 계약
├── pkg/crypto/             # AES-256 암호화
├── scripts/                # 런북(runbook_local.sh) · Keycloak · kind
├── web/                    # React 프런트엔드 (src/features/<모듈>, e2e/)
├── e2e/                    # Go E2E 테스트
├── website/                # 문서 사이트 (MkDocs Material)
├── docs/                   # 기획 · 아키텍처 · 운영 · 테스트 문서
└── Makefile

라이선스

Apache License 2.0

참고 문서

Directories

Path Synopsis
cmd
api command
nullus command
nullus 는 Nullus 플랫폼의 통합 CLI 다.
nullus 는 Nullus 플랫폼의 통합 CLI 다.
nullus-bootstrap command
nullus-bootstrap 은 무인 설치용 부트스트랩 자격을 발급하고 폐기한다.
nullus-bootstrap 은 무인 설치용 부트스트랩 자격을 발급하고 폐기한다.
internal
assistant
Package assistant 는 AI 어시스턴트 모듈(nullus-plan#94)이다 — Nullus MCP 조회 도구를 조직이 고른 모델 (Upstage · OpenAI · Anthropic · Gemini · OpenAI 호환 사내 서버)에 물려, 화면에서 자연어로 묻고 답한다.
Package assistant 는 AI 어시스턴트 모듈(nullus-plan#94)이다 — Nullus MCP 조회 도구를 조직이 고른 모델 (Upstage · OpenAI · Anthropic · Gemini · OpenAI 호환 사내 서버)에 물려, 화면에서 자연어로 묻고 답한다.
assistant/adapter/handler
Package handler 는 AI 어시스턴트의 HTTP 어댑터다 — 상태 조회와 대화.
Package handler 는 AI 어시스턴트의 HTTP 어댑터다 — 상태 조회와 대화.
assistant/adapter/llm
Package llm 은 모델 API 클라이언트다 — OpenAI 호환 Chat Completions(Upstage · OpenAI · Gemini · 사내 vLLM 등)와 Anthropic Messages.
Package llm 은 모델 API 클라이언트다 — OpenAI 호환 Chat Completions(Upstage · OpenAI · Gemini · 사내 vLLM 등)와 Anthropic Messages.
assistant/adapter/mcphost
Package mcphost 는 어시스턴트의 도구 호스트다.
Package mcphost 는 어시스턴트의 도구 호스트다.
assistant/adapter/repository
Package repository 는 어시스턴트 설정의 Postgres 저장소다.
Package repository 는 어시스턴트 설정의 Postgres 저장소다.
assistant/domain
Package domain 은 AI 어시스턴트의 대화 규칙이다 — 화면이 보낸 대화의 검증, 모델과 주고받는 메시지, 외부 LLM 으로 나가는 도구 결과의 가리기와 자르기.
Package domain 은 AI 어시스턴트의 대화 규칙이다 — 화면이 보낸 대화의 검증, 모델과 주고받는 메시지, 외부 LLM 으로 나가는 도구 결과의 가리기와 자르기.
assistant/port
Package port 는 AI 어시스턴트가 바깥과 만나는 자리다 — 모델(LLM)과 도구(MCP).
Package port 는 AI 어시스턴트가 바깥과 만나는 자리다 — 모델(LLM)과 도구(MCP).
assistant/usecase
Package usecase 는 AI 어시스턴트의 에이전트 루프다 — 대화를 모델에 넘기고, 모델이 고른 도구를 질문한 사용자의 권한으로 실행해 결과를 되돌려 주며 답을 만든다.
Package usecase 는 AI 어시스턴트의 에이전트 루프다 — 대화를 모델에 넘기고, 모델이 고른 도구를 질문한 사용자의 권한으로 실행해 결과를 되돌려 주며 답을 만든다.
auth/adapter/handler
Package handler 는 인증 컨텍스트의 HTTP 어댑터다.
Package handler 는 인증 컨텍스트의 HTTP 어댑터다.
auth/adapter/repository
Package repository 는 인증 컨텍스트의 저장소 구현이다.
Package repository 는 인증 컨텍스트의 저장소 구현이다.
auth/adapter/token
Package token 은 Nullus 가 직접 발급하는 세션 토큰을 다룬다.
Package token 은 Nullus 가 직접 발급하는 세션 토큰을 다룬다.
auth/domain
Package domain 은 인증 바운디드 컨텍스트의 도메인 규칙을 담는다.
Package domain 은 인증 바운디드 컨텍스트의 도메인 규칙을 담는다.
auth/usecase
Package usecase 는 인증 컨텍스트의 애플리케이션 로직을 담는다.
Package usecase 는 인증 컨텍스트의 애플리케이션 로직을 담는다.
backup
Package backup 은 백업/복구 컨텍스트의 조립 지점이다.
Package backup 은 백업/복구 컨텍스트의 조립 지점이다.
backup/adapter/bridge
Package bridge 는 다른 모듈의 공개 인터페이스로만 통하는 얇은 어댑터다.
Package bridge 는 다른 모듈의 공개 인터페이스로만 통하는 얇은 어댑터다.
backup/adapter/handler
Package handler 는 백업/복구 HTTP 어댑터다.
Package handler 는 백업/복구 HTTP 어댑터다.
backup/adapter/kube
Package kube 는 정지/재개, 볼륨 아카이브, 리소스 덤프의 Kubernetes 어댑터다.
Package kube 는 정지/재개, 볼륨 아카이브, 리소스 덤프의 Kubernetes 어댑터다.
backup/adapter/notify
Package notify 는 백업 결과 알림 어댑터다 (B3-3).
Package notify 는 백업 결과 알림 어댑터다 (B3-3).
backup/adapter/openbao
Package openbao 는 OpenBao KV 논리 export/import 어댑터다.
Package openbao 는 OpenBao KV 논리 export/import 어댑터다.
backup/adapter/postgres
Package postgres 는 PostgreSQL 논리 백업/복원 어댑터다.
Package postgres 는 PostgreSQL 논리 백업/복원 어댑터다.
backup/adapter/repository
Package repository 는 backup 컨텍스트의 저장 어댑터다.
Package repository 는 backup 컨텍스트의 저장 어댑터다.
backup/adapter/sealer
Package sealer 는 산출물 암호화 구현체다.
Package sealer 는 산출물 암호화 구현체다.
backup/adapter/store
Package store 는 백업 산출물 저장소 어댑터다.
Package store 는 백업 산출물 저장소 어댑터다.
backup/port
Package port 는 backup 컨텍스트의 입출력 포트다.
Package port 는 backup 컨텍스트의 입출력 포트다.
backup/scheduler
Package scheduler 는 주기 백업과 보존 정책 적용을 돌린다 (B3-1).
Package scheduler 는 주기 백업과 보존 정책 적용을 돌린다 (B3-1).
cicd/adapter/argocd
Package argocd 는 Argo CD Application 리소스를 만든다.
Package argocd 는 Argo CD Application 리소스를 만든다.
cicd/adapter/gitea
Package gitea 는 Gitea REST API 로 리포지토리를 프로비저닝한다.
Package gitea 는 Gitea REST API 로 리포지토리를 프로비저닝한다.
cicd/adapter/github
Package github 은 GitHub REST API 로 리포지토리를 프로비저닝한다.
Package github 은 GitHub REST API 로 리포지토리를 프로비저닝한다.
cicd/adapter/gitlab
Package gitlab 은 GitLab API v4 를 통해 그룹·프로젝트·파일을 프로비저닝한다.
Package gitlab 은 GitLab API v4 를 통해 그룹·프로젝트·파일을 프로비저닝한다.
cicd/adapter/harbor
Package harbor 는 Harbor 레지스트리에서 이미지 저장소를 지운다.
Package harbor 는 Harbor 레지스트리에서 이미지 저장소를 지운다.
cicd/adapter/jenkins
Package jenkins 는 Jenkins 에 multibranch pipeline job 을 만든다.
Package jenkins 는 Jenkins 에 multibranch pipeline job 을 만든다.
cicd/adapter/nexus
Package nexus 는 Nexus 레지스트리에서 이미지를 지운다.
Package nexus 는 Nexus 레지스트리에서 이미지를 지운다.
cicd/adapter/provisioning
Package provisioning 은 스택 정보를 보고 프로비저닝 도구 묶음을 조립한다.
Package provisioning 은 스택 정보를 보고 프로비저닝 도구 묶음을 조립한다.
cicd/adapter/registry
Package registry 는 스택이 선택한 이미지 레지스트리에 맞춰 이미지 저장 위치를 결정한다.
Package registry 는 스택이 선택한 이미지 레지스트리에 맞춰 이미지 저장 위치를 결정한다.
cicd/adapter/registrycreds
Package registrycreds 는 스택이 설치한 레지스트리의 자격증명을 푼다.
Package registrycreds 는 스택이 설치한 레지스트리의 자격증명을 푼다.
cicd/adapter/runner
Package runner 는 배포 실행을 스택의 CI 러너에게 넘긴다.
Package runner 는 배포 실행을 스택의 CI 러너에게 넘긴다.
cicd/adapter/sastcreds
Package sastcreds 는 스택 SonarQube 의 분석 토큰을 푼다.
Package sastcreds 는 스택 SonarQube 의 분석 토큰을 푼다.
cicd/adapter/scaffold
Package scaffold 는 앱 프로젝트에 커밋할 초기 파일들을 만든다.
Package scaffold 는 앱 프로젝트에 커밋할 초기 파일들을 만든다.
cicd/adapter/sourcearchive
Package sourcearchive 는 외부 원본 저장소의 특정 커밋 파일을 가져온다.
Package sourcearchive 는 외부 원본 저장소의 특정 커밋 파일을 가져온다.
cli
Package cli 는 통합 nullus CLI 의 명령 표면이다 (트랙 A).
Package cli 는 통합 nullus CLI 의 명령 표면이다 (트랙 A).
mcp
Package mcp 는 Nullus MCP 서버다 (트랙 B) — AI 어시스턴트(MCP 클라이언트)가 Nullus 를 조회·조작하는 tool 표면을 stdio 로 제공한다.
Package mcp 는 Nullus MCP 서버다 (트랙 B) — AI 어시스턴트(MCP 클라이언트)가 Nullus 를 조회·조작하는 tool 표면을 stdio 로 제공한다.
notification
Package notification 은 알림 채널 모듈이다(nullus-plan#63) — Telegram · 이메일(SMTP) · Slack.
Package notification 은 알림 채널 모듈이다(nullus-plan#63) — Telegram · 이메일(SMTP) · Slack.
notification/adapter/handler
Package handler 는 알림 채널 API 다(관리자 전용 — /api/v1/admin/notifications).
Package handler 는 알림 채널 API 다(관리자 전용 — /api/v1/admin/notifications).
notification/adapter/repository
Package repository 는 알림 채널과 발송 이력의 Postgres 구현이다.
Package repository 는 알림 채널과 발송 이력의 Postgres 구현이다.
notification/adapter/sender
Package sender 는 채널 종류마다 메시지를 실제로 보내는 어댑터다 — Slack Incoming Webhook, Telegram Bot API, SMTP.
Package sender 는 채널 종류마다 메시지를 실제로 보내는 어댑터다 — Slack Incoming Webhook, Telegram Bot API, SMTP.
notification/domain
Package domain 은 알림 채널과 보낼 메시지다(nullus-plan#63, 설계 docs/11_기능설계/Nullus_알림_채널_설계.md).
Package domain 은 알림 채널과 보낼 메시지다(nullus-plan#63, 설계 docs/11_기능설계/Nullus_알림_채널_설계.md).
notification/port
Package port 는 알림 모듈의 바깥 경계다.
Package port 는 알림 모듈의 바깥 경계다.
notification/usecase
Package usecase 는 알림 채널 관리와 발송이다.
Package usecase 는 알림 채널 관리와 발송이다.
observability/adapter/alertmanager
Package alertmanager 는 스택 Alertmanager 의 활성 경보를 읽는 어댑터다(nullus-plan#87).
Package alertmanager 는 스택 Alertmanager 의 활성 경보를 읽는 어댑터다(nullus-plan#87).
observability/adapter/bridge
Package bridge 는 관측 모듈이 다른 모듈의 것을 읽는 자리다.
Package bridge 는 관측 모듈이 다른 모듈의 것을 읽는 자리다.
observability/adapter/toolhealth
Package toolhealth derives live OSS health for the platform dashboard from the pods the installed stacks are actually running.
Package toolhealth derives live OSS health for the platform dashboard from the pods the installed stacks are actually running.
observability/scheduler
Package scheduler 는 스택 경보 수집 주기다(nullus-plan#87).
Package scheduler 는 스택 경보 수집 주기다(nullus-plan#87).
shared/externalsecret
Package externalsecret 은 ExternalSecret 매니페스트를 만든다.
Package externalsecret 은 ExternalSecret 매니페스트를 만든다.
shared/kubeconfig
Package kubeconfig 는 kubectl·helm 을 실행하기 전에 kubeconfig 를 검사한다.
Package kubeconfig 는 kubectl·helm 을 실행하기 전에 kubeconfig 를 검사한다.
shared/notification
Package notification 은 모듈 사이에서 알림 이벤트를 주고받는 공개 계약이다(nullus-plan#63).
Package notification 은 모듈 사이에서 알림 이벤트를 주고받는 공개 계약이다(nullus-plan#63).
stack/adapter/imagescan
Package imagescan 은 스택이 설치한 OSS 이미지를 스택의 Trivy 서버로 스캔한다.
Package imagescan 은 스택이 설치한 OSS 이미지를 스택의 Trivy 서버로 스캔한다.
pkg
nullusclient
Package nullusclient 는 nullus CLI(트랙 A)와 MCP 서버(트랙 B)가 공유하는 유일한 기반이다 — Nullus API 클라이언트와 설정·토큰 해석.
Package nullusclient 는 nullus CLI(트랙 A)와 MCP 서버(트랙 B)가 공유하는 유일한 기반이다 — Nullus API 클라이언트와 설정·토큰 해석.
scripts
cmd/runtime-images command
runtime-images 는 RuntimeImages() 를 한 줄에 하나씩 출력한다.
runtime-images 는 RuntimeImages() 를 한 줄에 하나씩 출력한다.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL