전체 글 122

21. Kube 교육 - ArgoCD for GitOps

실습 ArgoCD 설치 및 Kube Cluster, Git Repo 연동 ArgoCD를 이용한 Deploy 및 Helm Application 배포 GitOps 실습 : 명령어를 통한 Deploy 상태 수정 후 ArgoCD Sync 상태 확인 실습 내역을 교육 완료 후 테스트 클러스터 환경에서 직접 해 보시길 권고합니다. IT는 백문이 불여일타입니다. Why Argo for GitOps 실 서비스 운영 환경에서 다양한 담당자가 여러가지 이유로 Kube 클러스터 설정을 변경합니다. 문제는 수정된 History가 제대로 관리가 안 된다는 것 입니다. 개발자도 다양하고 운영자도 다양합니다. 가장 심각한 건 저는 제가 어제 왜 수정했는지 도무지 기억이 안 납니다. 운영 환경을 섣불리 k edit 으로 수정하고 해..

20. Kube 교육 - Local GitLab Repository

실습 Local GitLab Repo 설치 git commit & push Why GitLab Kube 환경에서는 Helm Chart 등 YAML 파일을 공유할 Git Repo가 필수적입니다. 기존 VM 환경과 다른 점 입니다. Public Github을 사용해도 되지만 외부에 오픈되었고(혹은 유료 Github Enterprise를 사용하면 Private 사용 가능합니다.) 최근에는 github 장애도 종종 발생하여 Local GitLab 환경을 더 많이 선호 합니다. GitLab은 잘 사용하면 CI/CD, Container Repository, DevSecOps 등 모든게 다 가능하다고 합니다. (물론 유료이지만. 참고로 기업 가치가 무료 3조, 대단합니다. 올해 상장 예정이라고 합니다.) GitLab..

19. Kube 교육 - Harbor

실습 Harbor 설치 및 컨테이너 이미지 업로드(push) Kubernetes YAML 파일 내 사설 Repo 사용 Harbor 이미지 보안 스캔 설정 사용 Why Harbor? Kubernetes를 사용하기 위해서는 보안상의 이유로 로컬 컨테이너 이미지 Registry를 사용합니다. 특히 도커 허브가 유료화 되면서 도커 허브는 사용량 제한(공인 IP 6시간 당 200개 컨테이너 Pull)이 걸리는 경우가 자주 발생합니다. 이미지 레지스트리로 사용 가능한 몇가지 옵션이 있는데 그 중 가장 많이 사용하고 성숙도도 높은(CNCF Graduated) Harbor가 가장 적합합니다. 간단한 소개는 아래 공식 홈페이지 내용으로 대신 합니다. What is Harbor? Harbor is an open sourc..

18. Kube 교육 - Loki Logging System

실습 Loki Helm 설치 POD 로그 조회 및 Filtering Why Loki kube 로그는 기존 VM legacy 시스템과 다르게 로그가 저장되지 않고, pod 수도 너무 많고 (1,000개 pod 넘는건 일도 아님) 또 여러 pod 로그를 동시에 보아야 하는 제약 사항이 있습니다. 이에, 기존 VM 환경 로그 시스템이 아닌 새로운 통합 log 시스템이 필요 합니다. Loki는 기존에 많이 사용하시는 ELK, FluentD 로그 시스템에 비하여 resource 소비도 작고 설치도 간편하여 최근에 많이 사용하고 있습니다. 저희 고객사도 현재 잘 사용 중인데 적용 시 고려했던 사항 위주로 실습과 함께 알아 보겠습니다. 기존 VM Legacy 로그 시스템 차이점 (VM 환경에 Elastic 사용하시면..

17. Kube 교육 - AlertManager 설정

실습 AlertManager 메일 서비스 알람 설정 추가 node down 등의 event 발생 시 정상적인 mail 수신 확인 What is AlertManager? 간단히 Prometheus 시스템 구성은 아래와 같습니다. Alertmanager는 Prometheus ‘push alerts’ 이벤트를 받아서 이를 Email, etc(Slack) 등으로 알람(‘notify’)하는 역할을 합니다. 간단히 요약하면 ‘alerts’는 Prometheus가 수집/발생하고 Alertmanager는 이를 전송하는 역할만 합니다. 참고로, AlertManager 역시 Prometheus, Grafana와 동일하게 Admin 웹페이지를 지원합니다. AlertManager Service 확인 [spkr@erdia22 ..

16. Kube 교육 - Grafana Custom 대시보드 생성

실습 Prometheus-stack Helm Chart Built-in + Grafana 공식 홈페이지 모니터링 대시보드 Import 기존 대시보드 nginx active connections graph(panel) 추가 모니터링 Dashboard 이슈 사항 클러스터 운영을 위해서 시스템 운영 현황 대시보드는 필수적입니다. 문제는 모니터링 해야 할 Metric이 너무 많아 선택이 어렵다는 것 입니다. 그리고 신규 Grafana 기반으로 새로운 모니터링 대쉬보드 만들기가 쉽지는 않습니다. 운영에 반드시 필수적인 부문이지만 저도 경험이 많지 않아 자세한 일사이트를 나누기는 어렵습니다. 다만, 간단히 사용 가능하도록 기존 다른 사람들이 잘 만든 대시보드를 Import 하는 방법과 서로 다른 대시보드에서 내가 ..

15. Kube 교육 - Prometheus Stack 설치

실습 prometheus-stack 설치 grafana 기본 모니터링 페이지 확인 Why Prometheus? Kube 환경에서는 Prometheus가 모니터링 표준 입니다. (이미 2018년 CNCF Graduated, Kubernetes 이 후 2번째 CNCF 졸업 Project 입니다.) 다른 툴 비교하지 마시고 그냥 사용하시면 됩니다. ^^ 예산이 있다면 상용 툴 사용하는 것도 나쁘지 않습니다. 모니터링은 정말 Custom 영역이 많이 들어가는 부문이라 각 회사 상황에 따라 시간과 노력이 많이 필요 합니다. 운영 하면서 당연히 끊임없이 개선이 필요한 부문이죠. 그 광활한 부문 중 이번 포스팅에서는 설치 방법과 모니터링 페이지 확인까지 다루겠습니다. Prometheus-stack 설치 다른 모든 a..

11. Kube 교육 - OpenEBS LocalPV

실습 OpenEBS 설치, 호스트 노드 마운트 포인트 변경 POD Volume 할당 : OpenEBS LocalPV Storage Class 이용 Why OpenEBS? kube 환경에서 PV 스토리지를 사용하려면 상용 외장 스토리지 또는 사용이 쉽지 않은 오픈소스 Ceph/Gluster 등을 이용해야 합니다. 이에 비하여 OpenEBS Local PV는 무료 오픈소스로 사용이 편리하고 성능이 뛰어난 것이 장점 입니다. OpenEBS는 POD가 실행되는 노드의 Local Disk를 POD의 PV로 할당합니다. 단점은 Storage 용량 Quota가 지정되지 않고 Snapshot 기능을 지원하지 않는 것 입니다. 단순한 구성으로 (DAS) 장애 처리가 용이하고 성능이 뛰어나(NVMMe Disk를 사용하면 ..

10. Kube 교육 - Kube Storage(PV PVC SC)

실습 PVC 생성 후 Deployment POD Volume 연결 Statefulset POD Volume 연결 Why PV PVC? Kube 환경은 VM과 다르게 default로 data가 pod에 저장되지 않고 pod 재기동(restart가 아니고 terminate되고 신규 pod가 재생성되죠)되면 data가 사라집니다. 단어가 어려워 쉽게 와닿지 않는 ephemeral storage(임시 저장소)라고 합니다. [spkr@erdia22 junghoon2.github.io (spkn02:nginx)]$ k exec -it busybox-6d8496d56f-z4mf2 -- sh / # touch aaa bbb ccc / # ls aaa bbb bin ccc dev etc home proc root sys..

09. Kube 교육 - MetalLB

실습 MetalLB 설치 및 부하 분산 확인 MetalLB HA 및 부하 테스트 Why MetalLB 예산 및 부하 등을 고려하여 특정 서비스는 외부 서비스 오픈 시 LoadBalancing을 위한 물리 L4 스위치를 사용하지 못할 수 있습니다. 또한 NGINX 등의 Web 서버는 고객 대상 80, 443 well-known port를 사용해야 하므로 NodePort type Service를 사용하지 못하는 경우가 많습니다. 이경우 open source로 사용 가능한 LoadBalancer, MetalLB를 사용 가능합니다. MetalLB 설치 설치는 다른 Kube Application과 마찬가지로 아주 간단합니다. 설치 관련 공식 홈페이지 https://metallb.universe.tf/install..