Kubernetes Korea Community Day 2024 후기
24년 9월 24일 서울 백범김구기념관에서 Kubernetes Korea Community Day 2024를 개최하여 다녀왔다.
각 세션 제목을 보고 너무 듣고 싶어서 기대가 많았고, 도전의 깊이를 넓혀 온 후기를 써본다.
어떻게 알게되었나?
직장동료가 페이스북 kubernetes korea group 에 수시로 들어가며 확인하던 중 발견하여 Join.
참가방법?
9월6일에 입장료 80,000원을 결제했고, 9월23일(행사 1일전) QR 코드가 문자로 날아왔다.
오전 세션
행사는 09시20분부터 QR을 찍어 네임카드를 발급받고, 10시부터 시작되었다.
약 800명 정도가 참여하였고, 오전은 전체가 한 자리에서 Akamai, F5, CNAI 세션을 들었다.
Kubernetes 10년, 그 너머의 항해: 살아남은 자의 인사이트
2014년부터 시작되었던 Kubernetes 첫 Commit, Kubernetes의 공식적인 배포는 2015년
빈약했던 오픈소스가 거대한 프로젝트가 되었고, 각종 서드파티마저 엄청난 규모로 성장하게 된 오픈소스 생태계
엣지로 확장된 Kubernetes: 미래의 클라우드 인프라를 재정의하다
아카마이는 기존 Global CDN 서비스를 운용하는 회사라 글로벌 리전에 충분한 네트워크 기술력이 바탕이되었고, 이제 컴퓨팅리소스를 구축하여 빠른 속도의 글로벌서비스를 제공할 수 있다. 특히 Linode라는 회사를 인수하여 LKE(Linode Kubernetes Engine) 서비스를 제공한다.
F5 CIS 와 NGINX 의 환상적인 조합으로 멀티클러스터 네트워킹 단순화 및 자동화
주요 내용 : F5 -> K8S 접근을 하다.
CIS로 멀티 쿠버네티스 클러스터에 접근하여 Network Hop을 줄였다.
Cloud Native AI: CNAI - CNCF
점심시간이 되어 듣지 않고 나와버림..^^;;
세션 후기
2014년 kubernetes 가 첫 commit을 하였다고 한 해에 나는 대학교 1학년이였고,
2015년 공식배포가 이뤄진 해에 나는 군대에 입대했고,
2016년 kubernetes 로 떠들석할 때도 나는 군대에 있었고,
2019년 kubernetes 를 대학교 졸업작품에 처음 적용했었다.
2019년 하반기부터 회사에 취직하여 지금까지 프로젝트를 하며 다양한 환경(OCP, ARO, AKS, NKS, RKE)에서 많은 것을 배웠다. 하지만 여전히 들어보지 못한 다양한 이름의 리눅스도 있었고, 많은 회사의 고민인 Network latency로 인해 Network Hop을 줄이려는 다양한 노력들, 그저 L7, L4, L2 스위치를 두는 것이 당연하다는 틀에 박힌 마인드를 잠시 벗어나게 해준 시간이였다.
오후 세션
세션당 20~35분의 시간이 정해져있고, 동시에 3개의 홀에서 3개의 세션이 진행된다. 그래서 1개를 선택해서 홀을 옮겨가며 들어야했다. 내가 들은 세션은 아래와 같다.
- Kubernetes 접근 제어 proxy 서버 개발기
- Kubernetes 에서 Kafka 활용하기
- 자율주행을 위한 차량 데이터 분석 플랫폼을 Kubernetes 위에서 활용하기
- Lakehouse 구축을 위한 K8S 디자인패턴
- VDI 이제 그만! Kubevirt 로 가볍고 빠른 VM 사용하기
- 안전한 쿠버네티스 운영을 위한 보안 Best Practice 소개
- 쿠버네티스 정책 및 권한 관리를 위한 기술들
Kubernetes 접근 제어 proxy 서버 개발기
RBAC의 한계를 통해 새로운 Proxy 솔루션을 개발하신 이야기 - QueryPie
1. Kubeconfig를 자동으로 생성, 유지관리해주는 Agent.
2. 관리서버를 통해 Kubernetes 앞단에서 API를 분석하고, 사용자 권한에 따라 데이터를 조작,재조합한다.
Kubernetes API 를 크게 3가지로 정의
1. Rest API (create, get, delete) - API Verb 로 해석, 파싱의 어려움으로 오픈소스 Convert 패키지 활용
2. SPDY Protocal (exec, port-forward) - stdout stream을 사용하여 사용자+컨테이너의 전체 입출력 데이터 활용
3. Event Stream (watch) - Decode 후 접근에 대한 필터링
응답 결과 분석
1. decompress
2. decode
3. check policy
Kubernetes 에서 Kafka 활용하기
Strimzi 라는 오픈소스를 활용하여 Kafka Enterprise 제공 가능
현재 CNCF 인큐베이팅 성숙도로 올라가있는 프로젝트
- Operator 기반의 설치로 이점이 존재
- Kafka Connect 와 Calico의 유연한 연결
- ODD(Open Data Discovery)로 데이타 흐름을 시각화
- Kafka-UI 의 최신(kafbat)
- API Curio - 스키마 레지스트리
자율주행을 위한 차량 데이터 분석 플랫폼을 Kubernetes 위에서 활용하기
안정성 등의 유럽 규제 강화로 인한 AI가 필수로 잡혀가고 있는 제조업 분야
대용량 데이터 수집, 처리를 위한 쿠버네티스 도입이 필수적
- 1초에 3-4GB의 카메라, 라이다센서 등의 데이터를 신속하게 전달해야함(k3s)
- 데이터 전달의 레이턴시로 인한 Public Cloud 에 존재하게 된 Hub GKE (Kubernetes)
- 방대한 데이터 분석을 위한 내부 서버(GPU기반의 Kubernetes Cluster)
모니터링(mimir, prometheus)
Lakehouse 구축을 위한 K8S 디자인패턴
300TB 데이터에서 대용량 조회를 안정적으로 제공하기 위한 빅데이터플랫폼 구성 후기
Network 최적화 패턴
- eBPF 기반 CNI
- XDP 기반 로드밸런싱
- nodeLocalDNS, CoreDNS 활용 및 튜닝
- Kube-proxy 비활성화
- externalTrafficPolicy: Local 로 바라보게 설정
- DSR 적용
- LVS(Linux Virtual Server)를 써서 Peer To Peer 방식을 구성
VDI 이제 그만! Kubevirt 로 가볍고 빠른 VM 사용하기
Cloudflare, Linux Foundation, Cloud craft 에서 사용자에게 제공하여 사용중
on-prem 에서 한계. GPU 서버 이슈가 존재
vmware 구독제로 인한 가격상승으로 가능성이 있는 오픈 프로젝트이지 않을까? 라는 도전의식
안전한 쿠버네티스 운영을 위한 보안 Best Practice 소개
보안의 3요소(CIA)를 Kubernetes 에서 어떻게 녹여 낼 것인가?
1. 기밀성 : Secret, RBAC, Policy, Selector
2. 보안성 : Image 검증, Security Context, Application 자체 보안
3. 가용성 : Resource 제한, QoS, Auto-Healing, 중앙 집중식 로깅/모니터링
클러스터 보안
- Host OS(보안패치, 악성 Process)
- 클러스터 접근 제어
- 네트워크 CNI
- ETCD(스토리지 보안, 암호화)
- API 서버보안(인증,인가,감사로그)
- TLS/SSL 적용, OAUTH, OIDC
컨테이너 보안
- Container Runtime 보안
- 이미지보안(이미지 스캔, 서명 및 취약점 관리)
- Cgroup, 네임스페이스 격리
- 샌드박스에서의 컨테이너 격리 실행
- 권한 제한 : root(x), 권한 최소화
- 파드, 컨테이너 보안(Security Context)
네트워크/서비스 보안
- Network Traffic Controller : CNI Plugin
- Network 정책(Ingress, Egress)
- Ingress Controller 보안
- CoreDNS 보안, DNS 암호화
- TLS통신, 인증서 관리
- Service Mesh 보안(Istio, LInkerd, ...)
- Network 격리, 필터링(kube-proxy, iptables)
- Rate Limiting, WAF, DDoS
로그/모니터링
- Prometheus, Grafana
- Fluent, ELK
- APM
- 분산 트레이싱(MSA)
- Audit 로깅
쿠버 보안 관련 도구
- kube-bench
- gVisor
- sysdig
- Trivy
- AppArmor
쿠버네티스 정책 및 권한 관리를 위한 기술들
RBAC 한계를 통해 드러난 솔루션
- Validation Admission Policy
- Kyverno
- OPA Gatekeeper
우리가 쓰고 싶은 기능
1. ResourceName을 패턴으로 매칭시키고 싶음(fix or matcher)
2. Object 별로 정의하고 싶음(Label)
3. 임의의 패턴을 지정하고 싶음(특정 팀이름은 특정 리소스 접근가능하게)
4. 외부연동제어를 하고 싶음(퇴사자 발생 시 서서히 권한을 제한시키는 등)
정책 구현을 Code로 한다 == Policy as Code
세션 후기
정말 빠르게 지나갔고, 너무 유익한 시간이였다. 나는 개발을 하며 쿠버네티스에 파이프라인을 구축하는 역할을 주로 수행하였는데, 늘 부족했던 부분인 '보안' 파트를 상세하게 정리해주는 세션이 있었기 때문이다. 이번 계기를 통해 보안파트를 잘 정리하려고 하며, 보안 관련 도구는 꼭 적용해봐야겠다!!! 그리고 실제 빅데이터플랫폼의 사례를 통해 수년의 고민들을 들을 수 있어 너무 좋았다.
올해 1월부터 RKE1, RKE2 기반의 on-prem Kubernetes 프로젝트를 진행하며 VM의 설정도 나름 만져왔는데 전혀 고민해보지 않았던 영역이 있어 부끄러운 마음도 들었다. 그리고 OPA Gatekeeper 는 CNCF 랜드스케이프에서 아이콘만 구경했지 별생각은 안들었는데 꼭 해봐야겠다는 생각이 들었다.