이 가이드에서는 관리형 Kubernetes 서비스에 ClickStack을 배포할 때 필요한 클라우드별 구성을 다룹니다. 기본 설치 방법은 기본 Helm 배포 가이드를 참조하십시오.
Google Kubernetes Engine (GKE)
GKE에 배포할 때는 클라우드별 네트워킹 동작으로 인해 일부 값을 재정의해야 할 수 있습니다.
LoadBalancer DNS 해석 문제
GKE의 LoadBalancer service는 파드 간 통신이 클러스터 네트워크 내부에 유지되지 않고 외부 IP로 해석되는 내부 DNS 해석 문제를 일으킬 수 있습니다. 이는 특히 OpAMP 서버에 대한 OTEL collector의 connection에 영향을 줍니다.
증상:
- OTEL collector 로그에 cluster IP 주소와 함께 "connection refused" 오류가 표시됨
- 다음과 같은 OpAMP connection 실패:
dial tcp 34.118.227.30:4320: connect: connection refused
해결 방법:
OpAMP 서버 URL에 정규화된 도메인 이름(FQDN)을 사용하세요:
helm install my-clickstack clickstack/clickstack \
--set hyperdx.frontendUrl="http://your-external-ip-or-domain.com" \
--set hyperdx.config.OPAMP_SERVER_URL="http://my-clickstack-clickstack-app.default.svc.cluster.local:4320"GKE values 예시
# values-gke.yaml
hyperdx:
frontendUrl: "http://34.123.61.99" # LoadBalancer 외부 IP를 입력하세요
config:
OPAMP_SERVER_URL: "http://my-clickstack-clickstack-app.default.svc.cluster.local:4320"
clickhouse:
keeper:
spec:
dataVolumeClaimSpec:
storageClassName: "pd-ssd"
resources:
requests:
storage: 5Gi
cluster:
spec:
dataVolumeClaimSpec:
storageClassName: "pd-ssd"
resources:
requests:
storage: 10GiAmazon EKS
EKS 배포에서는 다음과 같은 일반적인 구성을 고려하십시오.
# values-eks.yaml
hyperdx:
frontendUrl: "https://hyperdx.yourdomain.com"
ingress:
enabled: true
host: "hyperdx.yourdomain.com"
tls:
enabled: true
clickhouse:
keeper:
spec:
dataVolumeClaimSpec:
storageClassName: "gp3"
resources:
requests:
storage: 5Gi
cluster:
spec:
dataVolumeClaimSpec:
storageClassName: "gp3"
resources:
requests:
storage: 10GiAWS ALB 인그레스 구성에 대해서는 추가 매니페스트 가이드 및 ALB 예시 values를 참조하십시오.
Azure AKS
AKS에 배포하는 경우:
# values-aks.yaml
hyperdx:
frontendUrl: "https://hyperdx.yourdomain.com"
clickhouse:
keeper:
spec:
dataVolumeClaimSpec:
storageClassName: "managed-csi"
resources:
requests:
storage: 5Gi
cluster:
spec:
dataVolumeClaimSpec:
storageClassName: "managed-csi"
resources:
requests:
storage: 10Gi운영 환경용 클라우드 배포 체크리스트
클라우드 제공업체와 관계없이 ClickStack을 운영 환경에 배포하기 전에 다음 사항을 확인하십시오.
- 외부 도메인/IP에 맞게
hyperdx.frontendUrl을 올바르게 구성 - HTTPS 액세스를 위해 TLS를 사용하는 인그레스 설정
- 연결 문제가 발생하는 경우(특히 GKE) OpAMP 서버 URL을 FQDN으로 재정의
- ClickHouse 및 Keeper 볼륨 클레임에 사용할 스토리지 클래스 구성
- 적절한 리소스 요청값과 제한값 설정
- 모니터링 및 알림 활성화
- 백업 및 재해 복구 구성
-
hyperdx.secrets또는 외부 시크릿을 통해 적절한 시크릿 관리 구현
프로덕션 모범 사례
리소스 관리
hyperdx:
deployment:
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: "2"
memory: 4Gi
otel-collector:
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 200m
memory: 256Mi고가용성
hyperdx:
deployment:
replicas: 3
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app.kubernetes.io/name: clickstack
podDisruptionBudget:
enabled: true
minAvailable: 1영구 스토리지
operator CR 사양에서 데이터 보존을 위한 영구 볼륨이 구성되어 있는지 확인하십시오:
clickhouse:
keeper:
spec:
dataVolumeClaimSpec:
storageClassName: "fast-ssd"
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
cluster:
spec:
dataVolumeClaimSpec:
storageClassName: "fast-ssd"
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 100Gi
mongodb:
spec:
statefulSet:
spec:
volumeClaimTemplates:
- metadata:
name: data-volume
spec:
storageClassName: "fast-ssd"
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10GiCloud별 스토리지 클래스:
- GKE:
pd-ssd또는pd-balanced - EKS:
gp3또는io2 - AKS:
managed-premium또는managed-csi
브라우저 호환성 참고 사항
HTTP 전용 배포(개발/테스트)에서는 보안 컨텍스트 요구 사항 때문에 일부 브라우저에서 crypto API 오류가 표시될 수 있습니다. 운영 환경 배포에서는 항상 인그레스 구성을 통해 올바른 TLS 인증서와 함께 HTTPS를 사용하십시오.
TLS 설정 지침은 인그레스 구성을 참조하십시오.
다음 단계
- 구성 가이드 - API Key, 시크릿, 인그레스
- 배포 옵션 - 외부 시스템 구성
- 업그레이드 가이드 - v1.x에서 v2.x로 마이그레이션
- 추가 매니페스트 - 사용자 지정 Kubernetes 객체
- 기본 Helm 가이드 - 기본 설치
- Cloud 배포 (v1.x) - v1.x Cloud 구성