ECK Operator 설치 가이드 (Kustomize 기반)
1. 개요
본 문서는 gitops 저장소의 /eck/operator 디렉터리 구조를 기반으로 ECK (Elastic Cloud on Kubernetes) Operator를 Kubernetes 클러스터에 설치하는 전체 과정을 안내합니다. ECK Operator는 Elasticsearch, Kibana 등의 Elastic Stack 컴포넌트를 Kubernetes에서 관리하기 위한 오퍼레이터입니다. Helm Chart를 활용한 Kustomize 기반 배포 자동화 방법을 다룹니다.
2. 사전 요구사항
- Kubernetes 클러스터: v1.30 이상
- 로컬 도구: kubectl, kustomize, helm 설치 완료
- 권한: 클러스터에 대한 cluster-admin 권한 (CRD 생성, RBAC 설정 등)
- 네임스페이스:
database네임스페이스 (또는 원하는 네임스페이스)
3. 디렉터리 구조 및 역할
eck/operator/
├── Makefile # 배포 자동화 스크립트
└── kustomize/
├── base/
│ └── helm/
│ └── eck-operator/ # ECK Operator Helm Chart
└── overlays/
└── dev/
├── helm/
│ └── helm-chart.yaml # Helm Chart Inflation Generator 설정
└── kustomization.yaml # 환경별 Kustomize 구성
- Makefile:
pull,namespace,preview,apply,delete등 배포 자동화 명령어 - kustomize/base/helm/eck-operator/: ECK Operator Helm Chart (pull 명령어로 다운로드)
- kustomize/overlays/dev/: dev 환경 특화 설정
4. 설치 단계
4.1. Helm Chart 다운로드
ECK Operator Helm Chart를 Elastic 공식 리포지토리에서 다운로드합니다.
make pull
이 명령어는 다음 작업을 수행합니다:
- Elastic Helm 리포지토리 추가 및 업데이트
- ECK Operator Chart (v3.2.0) 다운로드 및 압축 해제
4.2. Namespace 생성
ECK Operator가 배포될 네임스페이스를 생성합니다.
make namespace
4.3. 배포 미리보기
Kustomize를 사용하여 생성될 매니페스트를 미리 확인합니다.
make preview
4.4. 배포 실행
ECK Operator를 클러스터에 배포합니다.
make apply
4.5. 배포 상태 확인
kubectl get pods -n database -w
5. 설치 후 검증
5.1. Operator Pod 상태 확인
kubectl get pods -n database
확인 사항:
eck-operator-*Pod가Running상태- Ready 상태:
1/1
5.2. CRD 생성 확인
ECK Operator가 설치되면 필요한 Custom Resource Definitions가 생성됩니다.
kubectl get crd | grep elastic
확인 사항:
elasticsearches.elasticsearch.k8s.elastic.cokibanas.kibana.k8s.elastic.coapmservers.apm.k8s.elastic.co- 기타 ECK 관련 CRD들
5.3. Operator 로그 확인
kubectl logs -n database deployment/eck-operator
확인 사항:
- 오류 메시지 없음
- 정상적인 시작 로그
5.4. Webhook 구성 확인
kubectl get validatingwebhookconfigurations
확인 사항:
- ECK 관련 Validating Webhook이 생성됨
6. 운영 및 Troubleshooting
6.1. Operator 재시작
kubectl rollout restart deployment/eck-operator -n database
6.2. 로그 수집
kubectl logs -n database deployment/eck-operator --previous
6.3. 리소스 사용량 확인
kubectl top pods -n database
6.4. 일반적인 문제 해결
- Pod가 Pending 상태: 리소스 부족 또는 노드 스케줄링 문제 확인
- CRD 생성 실패: cluster-admin 권한 확인
- Webhook 오류: 네트워크 정책 또는 TLS 인증서 문제 확인
7. 업그레이드
ECK Operator를 업그레이드하려면:
- 새로운 버전의 Chart 다운로드 (
make pull) - 배포 적용 (
make apply)
8. 제거
8.1. ECK Operator 삭제
make delete
8.2. CRD 및 관련 리소스 정리 (선택사항)
ECK Operator 제거 후 CRD를 삭제하려면:
kubectl delete crd elasticsearches.elasticsearch.k8s.elastic.co
kubectl delete crd kibanas.kibana.k8s.elastic.co
# 기타 CRD들...
8.3. Namespace 삭제 (선택사항)
kubectl delete namespace database
9. 부록: 최종 체크리스트
설치 전:
- Kubernetes 클러스터 준비 (v1.24+)
- kubectl, kustomize, helm 설치
- cluster-admin 권한 확인
- 네임스페이스 생성 계획
설치:
- make pull 실행
- make namespace 실행
- make preview 실행 및 확인
- make apply 실행
검증:
- Operator Pod Running 상태
- CRD 생성 확인
- Webhook 구성 확인
- 로그 오류 없음
운영:
- 모니터링 설정
- 백업 정책 수립
/home/ubuntu/devel/github/gitops/eck/operator/install_guide.md