지원 중단 — v1.x 차트이 페이지에서는 유지보수 모드인 v1.x 인라인 템플릿 Helm 차트의 구성을 설명합니다. v2.x 차트는 Helm 구성을 참조하십시오. 마이그레이션 방법은 업그레이드 가이드를 참조하십시오.
이 가이드에서는 ClickStack Helm 배포에 사용할 수 있는 구성 옵션을 설명합니다. 기본 설치 방법은 기본 Helm 배포 가이드를 참조하십시오.
ClickStack을 성공적으로 배포한 후 텔레메트리 데이터 수집을 활성화하려면 API Key를 구성하십시오:
- 구성된 인그레스 또는 서비스 엔드포인트를 통해 HyperDX 인스턴스에 접속합니다
- HyperDX 대시보드에 로그인한 다음 Team settings로 이동하여 API Key를 생성하거나 확인합니다
- 다음 방법 중 하나를 사용하여 API Key로 배포를 업데이트합니다:
방법 1: values 파일을 사용해 Helm upgrade로 업데이트
values.yaml에 API Key를 추가하세요:
hyperdx:
apiKey: "your-api-key-here"
이어서 배포를 업그레이드하세요:
helm upgrade my-clickstack clickstack/clickstack -f values.yaml
방법 2: —set 플래그를 사용해 Helm upgrade로 업데이트
helm upgrade my-clickstack clickstack/clickstack --set hyperdx.apiKey="your-api-key-here"
변경 사항을 적용하려면 파드를 다시 시작하세요
API Key를 업데이트한 후 새 구성이 반영되도록 파드를 다시 시작하세요:
kubectl rollout restart deployment my-clickstack-clickstack-app my-clickstack-clickstack-otel-collector
이 차트는 API Key가 포함된 Kubernetes 시크릿(<release-name>-app-secrets)을 자동으로 생성합니다. 외부 시크릿을 사용하려는 경우가 아니라면 추가 시크릿 구성은 필요하지 않습니다.
API Key 또는 데이터베이스 자격 증명과 같은 민감한 데이터를 안전하게 관리하려면 Kubernetes 시크릿을 사용하십시오.
Helm 차트에는 charts/clickstack/templates/secrets.yaml에 있는 기본 시크릿 템플릿이 포함되어 있습니다. 이 파일은 시크릿 관리를 위한 기본 구조를 제공합니다.
시크릿을 수동으로 적용해야 하면, 제공된 secrets.yaml 템플릿을 수정하여 적용하십시오:
apiVersion: v1
kind: Secret
metadata:
name: hyperdx-secret
annotations:
"helm.sh/resource-policy": keep
type: Opaque
data:
API_KEY: <base64-encoded-api-key>
클러스터에 시크릿을 적용하세요:
kubectl apply -f secrets.yaml
사용자 지정 Kubernetes 시크릿을 수동으로 만드십시오:
kubectl create secret generic hyperdx-secret \
--from-literal=API_KEY=my-secret-api-key
hyperdx:
apiKey:
valueFrom:
secretKeyRef:
name: hyperdx-secret
key: API_KEY
도메인 이름으로 HyperDX UI와 API를 노출하려면 values.yaml에서 인그레스를 활성화하세요.
hyperdx:
frontendUrl: "https://hyperdx.yourdomain.com" # 인그레스 호스트와 일치해야 합니다
ingress:
enabled: true
host: "hyperdx.yourdomain.com"
중요한 구성 참고 사항hyperdx.frontendUrl은 인그레스 호스트와 일치해야 하며 프로토콜(예: https://hyperdx.yourdomain.com)도 포함해야 합니다. 이렇게 해야 생성되는 모든 링크, 쿠키, 리디렉션이 올바르게 작동합니다.
배포를 HTTPS로 안전하게 보호하려면:
1. 인증서와 개인 키로 TLS 시크릿을 생성하세요:
kubectl create secret tls hyperdx-tls \
--cert=path/to/tls.crt \
--key=path/to/tls.key
2. 인그레스 구성에서 TLS를 활성화하세요:
hyperdx:
ingress:
enabled: true
host: "hyperdx.yourdomain.com"
tls:
enabled: true
tlsSecretName: "hyperdx-tls"
참고로, 생성된 인그레스 리소스는 다음과 같습니다:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hyperdx-app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx
rules:
- host: hyperdx.yourdomain.com
http:
paths:
- path: /(.*)
pathType: ImplementationSpecific
backend:
service:
name: my-clickstack-clickstack-app
port:
number: 3000
tls:
- hosts:
- hyperdx.yourdomain.com
secretName: hyperdx-tls
경로 및 재작성 구성:
- Next.js 및 기타 SPA에서는 항상 위에 나온 것처럼 정규식 경로와 재작성 어노테이션을 사용하세요
- 재작성 없이
path: /만 사용하지 마세요. 정적 자산이 정상적으로 제공되지 않을 수 있습니다
frontendUrl과 ingress.host 불일치:
- 이 둘이 일치하지 않으면 쿠키, 리디렉션, 자산 로딩에 문제가 발생할 수 있습니다
TLS 구성 오류:
- TLS 시크릿이 유효하며 인그레스에서 올바르게 참조되고 있는지 확인하세요
- TLS가 활성화된 상태에서 HTTP로 앱에 접근하면 브라우저가 안전하지 않은 콘텐츠를 차단할 수 있습니다
인그레스 컨트롤러 버전:
- 일부 기능(예: 정규식 경로 및 재작성)에는 최신 버전의 nginx ingress controller가 필요합니다
- 다음 명령으로 버전을 확인하세요:
kubectl -n ingress-nginx get pods -l app.kubernetes.io/name=ingress-nginx -o jsonpath="{.items[0].spec.containers[0].image}"
인그레스를 통해 OTel collector 엔드포인트(트레이스, 메트릭, 로그)를 노출해야 한다면 additionalIngresses 구성을 사용하십시오. 이 구성은 클러스터 외부에서 텔레메트리 데이터를 전송하거나 collector에 사용자 지정 도메인을 연결할 때 유용합니다.
hyperdx:
ingress:
enabled: true
additionalIngresses:
- name: otel-collector
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
ingressClassName: nginx
hosts:
- host: collector.yourdomain.com
paths:
- path: /v1/(traces|metrics|logs)
pathType: Prefix
port: 4318
name: otel-collector
tls:
- hosts:
- collector.yourdomain.com
secretName: collector-tls
- 이렇게 하면 OTel collector 엔드포인트용 별도의 인그레스 리소스가 생성됩니다
- 다른 도메인을 사용하고, 특정 TLS 설정을 구성하며, 사용자 지정 어노테이션을 적용할 수 있습니다
- 정규식 경로 규칙을 사용하면 모든 OTLP 신호(트레이스, 메트릭, 로그)를 단일 규칙으로 라우팅할 수 있습니다
OTel collector를 외부에 노출할 필요가 없다면 이 구성은 건너뛰어도 됩니다. 대부분의 경우 일반적인 인그레스 설정으로 충분합니다.
인그레스 리소스 확인:
kubectl get ingress -A
kubectl describe ingress <ingress-name>
인그레스 컨트롤러의 로그를 확인하세요:
kubectl logs -l app.kubernetes.io/name=ingress-nginx -n ingress-nginx
테스트용 에셋 URL:
정적 에셋이 HTML이 아니라 JS로 제공되는지 curl로 확인합니다:
curl -I https://hyperdx.yourdomain.com/_next/static/chunks/main-xxxx.js
# Content-Type: application/javascript 가 반환되어야 합니다
브라우저 DevTools:
- 404 응답이 있는지, 또는 JS 대신 HTML을 반환하는 정적 파일이 있는지 Network 탭에서 확인하세요
- 콘솔에서
Unexpected token < 같은 오류를 찾으세요(JS 대신 HTML이 반환되었음을 의미합니다)
경로 재작성 확인:
- 인그레스가 정적 파일 경로를 제거하거나 잘못 재작성하지 않는지 확인하세요
브라우저 및 CDN 캐시 지우기:
- 변경 후에는 오래된 정적 파일이 남지 않도록 브라우저 캐시와 CDN/프록시 캐시를 지우세요
--set 플래그를 사용하여 설정을 사용자 지정할 수 있습니다:
helm install my-clickstack clickstack/clickstack --set key=value
또는 사용자 지정 values.yaml 파일을 생성합니다. 기본값을 확인하려면:
helm show values clickstack/clickstack > values.yaml
구성 예시:
replicaCount: 2
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
hyperdx:
ingress:
enabled: true
host: hyperdx.example.com
사용자 지정 값을 적용하세요:
helm install my-clickstack clickstack/clickstack -f values.yaml