Managed Kubernetes Service 내역
5 min readApr 4, 2021
Kubernetes를 기업 운영 환경 레벨에서 사용하기 위해서는 Native Kube 설치 이 외 여러가지 작업들이 함께 필요합니다. 처음 도입하고 운영 가능한 수준으로 되기가 시간도 많이 걸리고 쉽지는 않습니다. 하지만, 처음만 잘 넘어가면 이 후 운영 및 다른 구축 작업은 그리 어렵지만은 않습니다. 무엇이든지 처음이 어려운 법입니다.
아마 각 회사마다 비슷한 환경일 것 같은데, Kube 도입 시 필요한 작업 내역을 사용하는 Tool과 함께 정리해 보았습니다. Service Mesh 등은 빠져있는데(오버엔지니어링이라 생각해서) 비교해 보시면 조금 도움이 되실 것 같습니다.
세부 항목
- Legacy Application Containerization
: Pure OS 기반 Application 이미지 구성 또는 docker or Helm 공식 이미지 활용
: Dockerfile 작성 및 최적화 - IaC(Infra as Code) 이용 하드웨어 구성 및 Kube 설치
: Ansible 및 KubeSpray 활용
: Server/Storage/Network 등 물리 Infra 구성 - Kubernetes Best Practice 시스템 구축
: Tekton, Loki, Polaris 등 다양한 경험 & Survey 바탕으로 최적 Kubernetes 플랫폼 선택
: SR-IOV, Local NVMe 등 성능 최적화 - SR-IOV 기반 Kube 네트워크 환경 구성(Intel Multus or Diamanti)
: Application 별 VLAN 기반 IP 대역 분리
: Data 및 Management 대역 IP 분리 - Local NVMe 기반 Kubernetes 스토리지 구성(OpenEBS or Diamanti)
: 물리 Node 간 Mirroring(2 way or 3 way) 구성
: Storage Class IOPS Min/Max QoS(Quality of Service) 설정 - 외부 스토리지 연동
: NFS 용 전용 Storage Class 및 PVC 설정 - Configuration, Secret 등 이용 Kubernetes Application 구성 설정
- Helm 기반 Kubernetes Object YAML 관리
: Deployment, Statefulset, ClusterRole, ServiceAccount 등 통합 관리
: kafka, elastic, redis 등 (거의 모든 ^^) Application 지원 - Best Practice YAML 설정 (Polaris)
: resource limit, probe 등 가용성/보안/안정성 기반 최적 YAML 구성 - 컨테이너 런타임 설정(docker, cri-o, containerd 등)
- GitOps 시스템 구성
: 단일 Git 소스 기반 Application 관리(ArgoCD) - Application 외부 접속 네트워크 환경 설정
: Kubernetes Service LoadBalancer(MetalLB) 및 Ingress 설정(Traefik 등)
: 외부 L4 스위치 연동 - Application 별 IOPS, Throughput QoS 설정 (Diamanti)
- 사용자 권한 별 Application RBAC(Role Based Access Control) 설정
- Private Image Repository 구축 (Harbor, GitLab)
- Git Source Repository 구축 (GitLab, GitHub)
- POD 중앙 로깅 시스템 구축
: 개별 POD 단위 로그 모니터링 시스템 구축(Loki, FluentD) - CPU/Memory + Custom Metrics 기반 Auto Scaling(HPA) 시스템 구성
- Snapshot 기반 PVC Backup 시스템 구성 (Velero, Minio)
: 원격지 PVC Replication 시스템 구성 - CI/CD 시스템 구축
: Tekton, ArgoCD 기반 Best Practice 시스템 구성(Jenkins) - 모니터링 설정
: Prometheus, Grafana, Lens 등 이용 클러스터/노드/Application/컨테이너 모니터링 설정 - Alert 설정
: 임계값에 의한 AlertManager 시스템 설정(메일 또는 Slack) - HA, 시스템 가용성 테스트
: Node Down, Storage/Network 절체 테스트 등 진행
: Application 이중화 검증, Chaos Engineering(Litmus) 활용 - Application 부하 테스트 (JMeter, Vegeta)
- Kubernetes 보안 설정
: YAML 감사(polaris), 이미지 Scan(Trivy), 정책 기반 YAML 설정(Kyverno)
: CIS security benchmark(kube-bench), 포트스캔(kube-hunter) - Kubernetes Tool 활용
: kubeps, kubectx, kubens, kubetail, kubeneat, Alias 설정 등
Diamanti & Managed Kubernetes Service 문의 : leejunghoon@spkr.co.kr