kube 교육 18

Kubernetes 실습 과제 리스트

외부 파트너 및 고객 엔지니어 대상으로 작성한 Kube 교육 용도 실습 과제 리스트를 정리하였습니다. 교육은 실습 위주입니다. 담당자가 자기 PC 화면을 공유하면서 실습 내역을 직접 시연하고 다른 분들이 Q&A하는 방식으로 진행합니다. 강사 혼자서 강의 & 실습하는 것은 한가지 경우만을 따라하기 혹은 외우려고 하여 효과가 크지 않아 변경하였습니다. 실제 자기가 발표 시연을 해야 하므로 싫어하는 분들이 많이 있어 진행하기가 쉽지 않을 것 같습니다. (지난 교육처럼 스타벅스 쿠폰을 남발하면서 최대한 참여를 이끌어 내려고 합니다.) 그리고 Kube 자체가 생소하고 경험이 없는 분들이 교육을 받는 거라 더 어려울 것 같구요. 하지만 문제를 해결하는 과정 자체가 의미 있다고 생각하여 과제 리스트만 나열 하였습니다..

25. Kube 교육 - 중간 점검

Q.1 원격 클러스터 관리 172.16.236.33 서버에 접속하셔서 Root 계정으로 변경 후 /root/.kube/config 파일을 자신의 $HOME/.kube/config 파일로 복사하여 테스트 환경의 API-Server와 통신을 가능하도록 합니다. (기존 k3s api-server와 통신을 하기 위해 신규 config 파일의 이름을 변경합니다.) Q2. Namespace 생성 테스트 환경의 K8s와 API-Server 통신이 완료되면 테스트 환경의 클러스터 자신의 이니셜로 네임스페이스를 생성합니다. Output 2. Q3. Deployment 배포 자신의 이니셜로 네임스페이스를 완성하셨으면 Create 명령어를 사용하셔서 자신의 이니셜 네임스페이스에 nginx 1.20 버전의 이미지를 사용한 n..

24. Kube 교육 - Traefik Ingress L7 스위치

실습 Traefik 설치 Traefik 공인 인증서 변경, 복수 Port 설정 등 기능 검증 Why traefik ingress? MetalLB LoadBalancer는 순수 L4 기능만 필요한 경우 사용하고 TLS 인증서, 도메인 또는 Path 기반의 추가 L7 부가 기능이 필요한 경우 Ingress Controller를 사용해야 합니다. Kubernetes Ingress Controller로는 잘 알려진 NGINX, HAPROXY 등이 있습니다. 그 중 저는 Traefik을 사용합니다. NGINX가 점유율은 가장 높고 저희도 일부 실 서비스에도 사용 중이지만 NGINX Ingress Controller는 경험 상 POD가 재시작되면 hang이 걸리는 등 사소한 문제가 있었습니다. F5가 NGINX 인..

23. Kube 교육 - Polaris(보안 취약점 확인)

실습 Polaris 설치 Polaris 통한 보안 취약점 확인 및 취약점 개선(Redis Helm Chart) Why Polaris 직접 작성한 Kube YAML 파일 또는 Helm Chart를 이용하여 현재 클러스터에 적용된 YAML 파일이 보안 또는 고가용성 측면에서 최적화된 구성이 맞는지 궁금합니다. 물론, 사람들이 많이 사용하는 공식 Helm Chart는 아무래도 더 믿음(?)이 가기도 합니다. Polaris는 보안 및 고가용성을 고려한 자체 체크 리스트 DB를 가지고 있어 현재 실행 중인 Kube Object를 Best-Practice 기준으로 검사합니다. 그리고 그 결과를 웹화면에서 대쉬보드 형태로 제공합니다. 운영자는 해당 권고 사항에 따라 적절히 수정하시면 됩니다. Polaris : Bes..

22. Kube 교육 - HA 및 부하 테스트

실습 Demo 사이트 POD, Node 다운 시 서비스 이상 여부 검증 K6, Vegeta Tool 이용한 부하 테스트 Why HA & 부하 테스트? 현재 저희 고객사 시스템은 서비스 오픈 전 1~2일 정도 개발자 포함 운영자 분들이 모여서 HA 및 부하 테스트를 진행 합니다. 물리 노드 네트워크 케이블도 뽑아 보고 디스크도 뽑아 보면서 운영 상황에 발생 할 수 있는 여러 장애 상황을 미리 검증을 합니다. 물론 결과는 예상과 다르게 다양한 장애 상황이 발생 합니다. 분명히 POD, Node 이중화 되도록 잘 설계하고 적용하였는데 특정 POD는 안 넘어가던지 넘어가는 시간이 예상 시간 보다 훨씬 더 소요되는지 등 다양한 상황이 발생 합니다. 노드의 Local Disk를 사용해서 수동으로 PVC를 삭제해야 ..

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..

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 ..

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를 사용하면 ..

08. Kube 교육 - NodePort, LoadBalancer

실습 Nodeport 사용하여 외부에서 POD 접속해 보세요 : nodeport 를 특정 Port로 지정해 보세요. MetalLB 설치 LoadBalancer 사용하여 POD 접속하기 LoadBalancer IP를 특정 IP로 할당하고 동일 IP로 2개의 Protocol(TCP, UDP)를 할당해 보세요 Why NodePort, LoadBalancer? NGINX 웹 서버를 설치하고 나면 당연히 내 PC에서 웹 서버로 정상적으로 접속이 되는지 검증하고 싶습니다. 하지만 Kube POD는 노드 안에서 실행되는 거라 노드 안에 있는 POD를 외부에서 바로 접속할 수 있는 방법이 없습니다. (D-NAT 등의 추가 네트워크 설정이 필요합니다.) 노드의 IP와 POD의 IP는 서로 다른 대역이라 다이렉트 통신이 ..