셀프 호스팅 구성 참조(Self-Hosted Configuration Reference)

셀프 호스팅 구성 참조(Self-Hosted Configuration Reference)

confident-ai Helm 차트는 values 파일로 구성돼요. 이 페이지는 실제로 손댈 설정들을 관심사별로 묶어 설명해요. 각 클라우드의 Deploy 페이지(AWS, GCP, Azure)에서 완전하고 동작하는 values 파일을 제공하며, 여기는 각 블록이 무엇을 의미하는지에 대한 참조예요. 긴 꼬리(세밀한 리소스 튜닝, 오퍼레이터 내부)는 차트의 values.yaml을 직접 읽어요.

출처: 문서

본문

fullnameOverride: confident(차트 기본값)를 유지하고 nameOverride는 설정하지 마세요. 프론트엔드가 차트 접두사 이름으로 백엔드와 다른 서비스를 확인하므로, 이름을 바꾸면 ENOTFOUND confident-backend 오류로 앱이 고장나요.

이 참조는 최신 차트(0.2.0)를 다룹니다. 더 오래된 차트 버전은 helm show values oci://ghcr.io/confident-ai/charts/confident-ai --version <x>로 값을 읽거나, helm-v<x> git 태그에서 차트를 보세요.

이미지와 레지스트리

각 앱 이미지는 repository + tag 전체로 참조돼서, 모든 이미지를 values.yaml에서 바로 추적할 수 있어요. 네 앱 이미지가 YAML 앵커로 하나의 태그를 공유하므로, 차트의 기본 태그가 릴리스(appVersion)와 일치해요 — 차트 버전을 설치하면 번들된 앱 버전을 오버라이드 없이 얻게 되죠.

값 기본값 설명
image.registry Confident AI의 ECR 레지스트리 호스트. ECR 풀 시크릿 리프레셔만 사용해요.
image.backend.repository (및 frontend, evals, otel) Confident AI의 ECR repos 앱 이미지별 전체 리포지토리. 미러에서 가져오도록 오버라이드해요.
image.backend.tag (및 frontend, evals, otel) 차트 appVersion 각 이미지가 실행하는 릴리스. 차트의 appVersion이 기본값이며, 서비스별 태그를 설정해 고정·오버라이드해요.
image.pullPolicy IfNotPresent 표준 Kubernetes 풀 정책.

이미지 가져오기

이미지는 Confident AI의 비공개 레지스트리에 있어요. ECR 토큰이 약 12시간마다 만료되므로, 차트가 풀 시크릿을 만들어 갱신해 줄 수 있어요.

값 기본값 설명
imagePullSecrets [] 모든 워크로드가 참조하는 풀 시크릿, 예: [{name: ecr-registry-credentials}].
imagePullSecretRefresh.enabled false 일정에 따라 ECR 풀 시크릿을 만들고 갱신해요.
imagePullSecretRefresh.region "" 레지스트리의 AWS 리전 (활성화 시 필수).
imagePullSecretRefresh.awsAccessKeyId / awsSecretAccessKey "" Confident AI의 ECR 자격 증명. 리프레셔 Secret에 렌더링돼요.
imagePullSecretRefresh.awsCredentialsSecret "" 인라인 대신 AWS 키가 있는 기존 Secret 사용.
imagePullSecretRefresh.schedule 0 */6 * * * 갱신 주기.

애플리케이션 구성

비밀번호가 아닌 설정들로, 모든 워크로드가 읽는 ConfigMap에 렌더링돼요.

값 기본값 설명
config.cloudProvider AWS AWS, GCP, 또는 AZURE. 스토리지 백엔드를 선택해요.
config.frontendUrl "" 공개 대시보드 URL, 예: https://app.acme.com. app. 인그레스 호스트를 결정해요.
config.backendUrl "" 공개 API URL, 예: https://api.acme.com. api. 인그레스 호스트를 결정해요.
config.subdomain "" 프론트엔드와 백엔드가 공유하는 쿠키 도메인, 예: acme.com.
config.isAzureEnvironment false Azure에서는 true로 설정해요.
config.disableNonSsoLogin false SSO를 요구하고 이메일·비밀번호 로그인을 끄는 설정.
config.disableSignUp false 새 계정 가입을 끄는 설정. 기존 사용자는 여전히 로그인 가능.
config.enableExperimentalFeatures false 실험·프리뷰 기능 활성화.
config.useWebsockets true 대시보드 실시간 업데이트에 WebSockets 사용.
config.auditLogStdout false 감사 이벤트를 로그 기반 지표(예: Datadog)용으로 JSON으로 stdout에 미러링.
config.region US 데이터 리전 라벨.
config.betterAuthTrustedOrigins "" 인증용 추가 쉼표 분리 신뢰 Origin.
config.poc false 환경을 개념 증명(POC)으로 표시.
config.extraEnv {} ConfigMap에 추가되는 추가 키-값 쌍.

아이덴티티

앱이 클라우드에 인증하는 방식이에요. 세부 사항은 클라우드마다 달라요.

값 기본값 설명
serviceAccount.create true 모든 워크로드가 공유하는 ServiceAccount 생성.
serviceAccount.name "" 대신 사전 프로비저닝된 ServiceAccount 재사용.
serviceAccount.annotations {} 클라우드 워크로드-아이덴티티 바인딩 (아래 참고).
podLabels {} 추가 파드 라벨. Azure Workload Identity는 azure.workload.identity/use: "true" 필요.

클라우드별 어노테이션:

  • AWS: 없음. EKS Pod Identity가 역할을 대역외로 바인딩하므로 ServiceAccount에 어노테이션이 없어요.
  • GCP: iam.gke.io/gcp-service-account: <gsa-email>.
  • Azure: Blob에는 없음 (연결 문자열 사용). Workload Identity는 External Secrets Operator에만 필요해요.

객체 스토리지

값 기본값 설명
storage.testCasesBucket / storage.payloadsBucket "" 버킷 이름 (AWS, GCP) 또는 컨테이너 이름 (Azure).
storage.aws.region us-east-1 S3용 리전.
storage.gcp.projectId / storage.gcp.region "" GCS용 프로젝트와 리전.
storage.azure.storageAccountName "" Blob용 스토리지 계정. 연결 문자열은 시크릿에 들어가요.

시크릿

애플리케이션 시크릿은 두 가지 방법 중 하나로 워크로드에 도달해요. 하나를 선택하세요.

값 기본값 설명
secrets.create true secrets.data에서 Kubernetes Secret 렌더링.
secrets.existingSecret "" 직접 만든 Secret 사용 (Vault, SealedSecrets 등).
secrets.data.DATABASE_URL "" PostgreSQL 연결 문자열.
secrets.data.BETTER_AUTH_SECRET "" 인증 토큰 서명 시크릿 (openssl rand -hex 32).
secrets.data.OPENAI_API_KEY "" 선택. Confident AI 내장 평가 제공자를 뒷받침.
secrets.data.CONFIDENT_LICENSE_KEY "" 서명된 Enterprise 라이선스 키.
secrets.data.GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET "" 선택. Google OAuth.
secrets.data.AZURE_STORAGE_CONNECTION_STRING "" Blob 자격 증명 (Azure 전용).
secrets.data.SMTP_PASSWORD "" email.smtp에 설정된 SMTP 릴레이용 비밀번호 (Email 참고).
secrets.data.RESEND_API_KEY "" SMTP 릴레이가 없을 때 쓰는 Resend API 키 (Email 참고).

대신 클라우드 시크릿 스토어에서 가져오려면 External Secrets Operator를 활성화해요. externalSecrets.enabled가 true면 secrets.data는 무시되고 오퍼레이터가 앱 Secret을 소유해요.

값 기본값 설명
secrets.externalSecrets.enabled false ESO를 통해 클라우드 스토어에서 시크릿 동기화.
secrets.externalSecrets.provider aws aws (Secrets Manager), gcpsm (Secret Manager), 또는 azurekv (Key Vault).
secrets.externalSecrets.createStore false (Cluster)SecretStore도 렌더링.
secrets.externalSecrets.remoteKey "" 하나의 JSON 시크릿 이름 (aws, gcpsm). Key Vault는 모든 시크릿을 가져와요.
secrets.externalSecrets.serviceAccountRef.name external-secrets-sa ESO가 인증하는 ServiceAccount.
secrets.externalSecrets.aws.region / gcp.* / azure.vaultUrl "" 제공자별 위치.

이메일(Email)

백엔드가 초대, 비밀번호 재설정, 할당·내보내기 알림, 이메일 알림·리포트를 보내요. 아웃바운드 전송 수단 하나가 필요해요. 둘 다 없으면 앱은 실행되지만 모든 이메일을 건너뛰고 경고를 로그하며, 초대된 사용자는 링크를 받지 못해요.

값 기본값 설명
email.from "" 발신자 주소, 예: [email protected]. 릴레이·제공자가 보낼 수 있게 허용한 주소여야 해요. email.smtp.host 설정 시 필수.
email.smtp.host "" SMTP 릴레이 호스트. 설정되면 모든 이메일에 SMTP를 사용해요.
email.smtp.port 587 STARTTLS는 587, 암시적 TLS는 465 (secure: true 설정). 클라우드 제공자는 아웃바운드 포트 25를 차단해요.
email.smtp.secure false 암시적 TLS 사용.
email.smtp.user "" SMTP 사용자 이름. 네트워크로 인증하는 릴레이는 비워 두세요. 비밀번호는 secrets.data.SMTP_PASSWORD에.
email.resend.baseUrl "" Resend 클라이언트를 api.resend.com 대신 셀프 호스팅된 Resend 호환 엔드포인트로 지정.

SMTP는 온프렘에서 권장 경로예요: 이미 운영 중인 메일 서버(Exchange·Office 365, Google Workspace, Amazon SES SMTP, SendGrid, 내부 Postfix)를 통해 릴레이해요. 그러면 전달성(SPF, DKIM, DMARC)이 여러분의 도메인과 릴레이에 있고, 클러스터에서 직접 보내는 것은 없어요.

email:
  from: [email protected]
  smtp:
    host: email-smtp.us-east-1.amazonaws.com
    port: 587
    user: AKIA_CHANGE_ME
secrets:
  data:
    SMTP_PASSWORD: CHANGE_ME

대신 Resend(또는 Resend 호환 API)를 쓰려면 secrets.data.RESEND_API_KEY와 email.from을 설정하고 email.smtp.host는 비워 두세요. External Secrets 경로에서는 다른 키처럼 원격 스토어에 SMTP_PASSWORD 또는 RESEND_API_KEY를 추가해요. 새 Amazon SES 계정은 샌드박스 모드로 시작해서, 프로덕션 접근을 요청하기 전까지 검증된 주소에만 전달해요.

코드 실행기(Code executor)

코드 기반 및 트랜스포머 지표에 필요해요. provider가 어떤 블록을 사용할지 선택하며, provider가 비어 있으면 비활성화돼요.

값 기본값 설명
codeExecutor.provider "" AWS_LAMBDA, GCP_CLOUD_FUNCTIONS, 또는 AZURE_FUNCTIONS.
codeExecutor.aws.lambdaFunctionName / lambdaRegion "" Lambda 대상.
codeExecutor.gcp.functionUrl "" Cloud Run 서비스 URL.
codeExecutor.azure.functionUrl "" Function URL (/api/execute 추가).

ClickHouse

기본적으로 클러스터 안에서 실행되며, 고가용성을 위해 복제돼요. Scaling과 Disaster Recovery를 참고하세요.

값 기본값 설명
clickhouse.internal true 번들 클러스터 실행. false와 externalHost로 직접 운영하는 클러스터를 써요.
clickhouse.password "" 관리자 비밀번호. 앱에도 CLICKHOUSE_PASSWORD로 노출돼요.
clickhouse.clusterType replicated Keeper를 통한 복제본 간 복제.
clickhouse.replicas / clickhouse.shards 2 / 1 클러스터 크기.
clickhouse.storage / clickhouse.storageClass 256Gi / "" 데이터 볼륨. 성장할 크기로.
clickhouse.keeper.replicas / keeper.storage 3 / 20Gi Keeper 쿼럼. 3으로 유지.
clickhouse.backup.enabled false 객체 스토리지로 매일 밤 백업 (Disaster Recovery 참고).
clickhouse.extraConfig IPv4 listen 파드가 0.0.0.0으로 청취하도록 고정. 듀얼 스택을 쓰지 않으면 그대로 둬요.

Redis

값 기본값 설명
redis.internal true 번들 Redis 실행. false로 설정하면 관리형 Redis를 써요.
redis.externalUrl "" internal: false일 때의 관리형 Redis URL.
redis.storage / redis.storageClass 1Gi / "" 클러스터 내부 Redis용 볼륨.

워크로드와 확장

각 서비스(backend, frontend, evals, evalsWorker, ingestionWorker, worker, otel)는 같은 형태를 가져요. 튜닝 방법은 Scaling을 참고하세요.

값 설명
<service>.replicas 자동 확장이 꺼져 있을 때 고정 레플리카 수.
<service>.autoscaling.enabled HPA 켜기/끄기 (대부분 기본으로 켜짐).
<service>.autoscaling.minReplicas / maxReplicas / targetCPU HPA 경계와 대상.
<service>.resources CPU와 메모리 requests 및 limits.
<service>.readinessProbe HTTP readiness 경로 (클라우드 로드 밸런서 헬스 체크를 구동).
backend.migrations.enabled 설치·업그레이드 시 데이터베이스 마이그레이션 작업 실행 (켜둬요).

인그레스(Ingress)

값 기본값 설명
ingress.enabled false Ingress 생성.
ingress.className alb Ingress 클래스 (alb, nginx, webapprouting.kubernetes.io, 또는 GKE의 어노테이션 구동 컨트롤러용 빈 값).
ingress.annotations {} 클라우드별 어노테이션. Deploy 페이지 참고.
ingress.hosts.evals / ingress.hosts.otel "" evals. 및 otel. 호스트네임. app.와 api.는 config에서 온다.
ingress.tls [] TLS 블록 (호스트 목록 + 시크릿 이름).

옵저버빌리티(Observability)

값 기본값 설명
datadog.enabled false Datadog APM과 지표 전송.
datadog.env / datadog.version prod / appVersion 전송되는 텔레메트리의 태그.

전체 목록

이 페이지는 대부분의 배포가 설정하는 항목을 다뤄요. 차트의 values.yaml이 진실의 원천(source of truth)이며, 모든 옵션(오퍼레이터 내부, 서비스별 리소스 기본값, ClickHouse 백업 제공자 포함)에 인라인 주석을 담고 있어요. 잘 모를 때는 거기서 읽으세요.

더 알아보기