Managed Kubernetes Service 내역

Jerry(이정훈)
5 min readApr 4, 2021

--

Kubernetes를 기업 운영 환경 레벨에서 사용하기 위해서는 Native Kube 설치 이 외 여러가지 작업들이 함께 필요합니다. 처음 도입하고 운영 가능한 수준으로 되기가 시간도 많이 걸리고 쉽지는 않습니다. 하지만, 처음만 잘 넘어가면 이 후 운영 및 다른 구축 작업은 그리 어렵지만은 않습니다. 무엇이든지 처음이 어려운 법입니다.

아마 각 회사마다 비슷한 환경일 것 같은데, Kube 도입 시 필요한 작업 내역을 사용하는 Tool과 함께 정리해 보았습니다. Service Mesh 등은 빠져있는데(오버엔지니어링이라 생각해서) 비교해 보시면 조금 도움이 되실 것 같습니다.

SPK — Kube Tool List

세부 항목

  1. Legacy Application Containerization
    : Pure OS 기반 Application 이미지 구성 또는 docker or Helm 공식 이미지 활용
    : Dockerfile 작성 및 최적화
  2. IaC(Infra as Code) 이용 하드웨어 구성 및 Kube 설치
    : Ansible 및 KubeSpray 활용
    : Server/Storage/Network 등 물리 Infra 구성
  3. Kubernetes Best Practice 시스템 구축
    : Tekton, Loki, Polaris 등 다양한 경험 & Survey 바탕으로 최적 Kubernetes 플랫폼 선택
    : SR-IOV, Local NVMe 등 성능 최적화
  4. SR-IOV 기반 Kube 네트워크 환경 구성(Intel Multus or Diamanti)
    : Application 별 VLAN 기반 IP 대역 분리
    : Data 및 Management 대역 IP 분리
  5. Local NVMe 기반 Kubernetes 스토리지 구성(OpenEBS or Diamanti)
    : 물리 Node 간 Mirroring(2 way or 3 way) 구성
    : Storage Class IOPS Min/Max QoS(Quality of Service) 설정
  6. 외부 스토리지 연동
    : NFS 용 전용 Storage Class 및 PVC 설정
  7. Configuration, Secret 등 이용 Kubernetes Application 구성 설정
  8. Helm 기반 Kubernetes Object YAML 관리
    : Deployment, Statefulset, ClusterRole, ServiceAccount 등 통합 관리
    : kafka, elastic, redis 등 (거의 모든 ^^) Application 지원
  9. Best Practice YAML 설정 (Polaris)
    : resource limit, probe 등 가용성/보안/안정성 기반 최적 YAML 구성
  10. 컨테이너 런타임 설정(docker, cri-o, containerd 등)
  11. GitOps 시스템 구성
    : 단일 Git 소스 기반 Application 관리(ArgoCD)
  12. Application 외부 접속 네트워크 환경 설정
    : Kubernetes Service LoadBalancer(MetalLB) 및 Ingress 설정(Traefik 등)
    : 외부 L4 스위치 연동
  13. Application 별 IOPS, Throughput QoS 설정 (Diamanti)
  14. 사용자 권한 별 Application RBAC(Role Based Access Control) 설정
  15. Private Image Repository 구축 (Harbor, GitLab)
  16. Git Source Repository 구축 (GitLab, GitHub)
  17. POD 중앙 로깅 시스템 구축
    : 개별 POD 단위 로그 모니터링 시스템 구축(Loki, FluentD)
  18. CPU/Memory + Custom Metrics 기반 Auto Scaling(HPA) 시스템 구성
  19. Snapshot 기반 PVC Backup 시스템 구성 (Velero, Minio)
    : 원격지 PVC Replication 시스템 구성
  20. CI/CD 시스템 구축
    : Tekton, ArgoCD 기반 Best Practice 시스템 구성(Jenkins)
  21. 모니터링 설정
    : Prometheus, Grafana, Lens 등 이용 클러스터/노드/Application/컨테이너 모니터링 설정
  22. Alert 설정
    : 임계값에 의한 AlertManager 시스템 설정(메일 또는 Slack)
  23. HA, 시스템 가용성 테스트
    : Node Down, Storage/Network 절체 테스트 등 진행
    : Application 이중화 검증, Chaos Engineering(Litmus) 활용
  24. Application 부하 테스트 (JMeter, Vegeta)
  25. Kubernetes 보안 설정
    : YAML 감사(polaris), 이미지 Scan(Trivy), 정책 기반 YAML 설정(Kyverno)
    : CIS security benchmark(kube-bench), 포트스캔(kube-hunter)
  26. Kubernetes Tool 활용
    : kubeps, kubectx, kubens, kubetail, kubeneat, Alias 설정 등

Diamanti & Managed Kubernetes Service 문의 : leejunghoon@spkr.co.kr

--

--

Jerry(이정훈)

DevOps/Automation Engineer 60살까지 콘솔 잡는 엔지니어를 목표로 느리게 생각하고 있습니다.