회사: EKS 클러스터 구축
- 진짜 시작한다! 쿠버네티스! 두근두근
- 구축 방법 및 운영관리 방식에 대한 고민
- 웹콘솔로 생성? eksctl? terraform?
- 각 방식 별로 차이는 뭐지? 보안그룹같은 디폴트 설정간 차이는 무엇?-왜 발생? 구축 도구별 제어 범위?
- 일단은 terraform이 도구 숙련도,확장성 등에서 좋아서 채택.
- terraform으로 어디까지 IaC할것인지?
- 모듈을 사용하면 클러스터 자체는 그냥 뚝딱 만들어짐
- 모듈을 그대로 사용할지, 풀어헤치고 재구성하여 사용할지
- 리소스에 변경을 주고자 할때, 빠르게 잘 대처할 수 있을지
- 가령 보안그룹에 변경을 준다거나, 워커노드에 userdata를 추가한다던가, 추가볼륨 설정/크기변경, IAM에 Custom policy를 추가가 필요하다면?
- 필수 구성요소까지 테라폼을 사용해서 배포하고 싶다.
- eksctl과 TRF eks모듈과의 차이점
- AWS LB Cntlr, ExternalDNS, EBS-CSI Driver등등 배포 + 정책생성 + IRSA의 경우 eksctl은 몇줄의 cli로 해결 가능
- eks 모듈에서는 클러스터 상의 컴포넌트 제어 불가
- EKS Blueprint for Terraform
- 테라폼의 장점 > 여러 프로바이더를 활용할 수 있음
- k8s, helm provider를 사용하여 필수 구축 자동화
- 다만 블루프린트의 구조가 조금 복잡해서.. 커스텀하기 힘든게 있음. 미리 풀어헤쳐둬야하나..
- 굳이 이렇게해야하나? 배포후에 쉘스크립트식으로 eksctl 실행시켜도 될듯하지만서도.. 테라폼 활용의 끝을 보고싶다
- eksctl과 TRF eks모듈과의 차이점
- 운영 단계로 넘어갔을때, 테라폼(IaC) 유지할 수 있을것인지?
- 제일 우려되는 부분
- 일반적으로 구축하고 빠지는 타회사 사례처럼 생성하고 그위로는 콘솔로 관리해야하나
- 그러면 뭐하러 고생해서 테라폼으로 구축했지? 이력관리는 어떻게하고?
- 급한 이슈가 생기면 수동대응을 하고 가능한 코드에 반영하는식으로..
- 이후 Application 배포 관리는 어떻게?
- 일단은 ArgoCD + helm + Github(manifests) 생각 중
- 그 뒤는 일단 운영해보면서 생각해봅시다
- 웹콘솔로 생성? eksctl? terraform?
회사: Distributed Redash on k8s
- 사내 내부 활용 툴부터 하나 둘씩 마이그레이션
- 먼저 데이터 시각화 툴인 Redash 부터 테스트해보기
- Redash 자체는 Python(Flask)프로그램. 다만 Airflow처럼 Celery 라는 분산 메세지 큐를 활용하여 작동함. 이를 위한 컴포넌트로 Redis와 PostgreSQL 사용.
- Stateful한 Workload를 꼭 k8s 환경에 올려야할까?
- Helm / Kompose ?
- 외부 연동을 포함한, 구성요소 manifest는 어떻게 만들어서 올릴지에 대한 고민
- Redash의 설치 가이드에서는 Docker compose까지만 있고 k8s는 없음
- 1. Docker image만 가지고 수제 manifest 제작?
- docker env와 deploy/svc/ing/cm/secret등을 일일히 다 작성하기?
- 회사 어플리케이션 올리기 이전 개인 공부 + 리소스에 대한 완벽한 컨트롤을 원한다면 할만하겠지만..
- 너무 힘든 길
- 2. Docker compose > Kompose 전환
- k8s docs 중 Translate a Docker Compose File to Kubernetes Resources
- 기존에도 docker compose로 구축되어있으니 간단히 전환
- 하지만 쿠버로 넘어가면서 무엇이 추가되어야할지 파악+반영 두려움
- 뭐 Ingress+externalDNS를 위한 Annotation이라던가.. RDS/ElastiCache 연동을 위한 인증정보라던가..
- 3. Helm chart
- 돌고돌아서 Helm chart로
- 최종 업데이트가 1년전이고.. Helm value로 전달할 수 있는 값외의 변동이 필요하다면 어떻게 할지 고민이 되긴하지만 일단 helm으로 함
외부 활동
메인 세션 : Amazon EKS 기초와 fargate 후일담 (with. Hands-On)
- 나도 모임나가서 다른사람들이랑 인사하고 인맥쌓고 네트워킹하고싶다..
- 모임은 자주 나가보는데, 다른분들과 어떻게 친해지는지 모르겠다! 악!
- 다른사람들은 다들 서로서로 어케 아시는건지 궁금하다! 악!
- 그외에도, 사실 k8s의 권한관리는 볼때마다 헷깔리고 잘 숙지가 안되고 있음
- 개념과, 그 구현체? 간의 연결이 불안정함
- 개념: RBAC(Role Based Access Control), 인증(Authentication), 인가(Authorization), Admission Cntlr, 등등..
- 구현체?: OIDC(OpenID Connect), OAuth, IRSA(IAM Role for ServiceAccount) sts, assume role, 등등..
- 그래서 사용자/워커노드/파드가 k get pod를 했다고 치자, 결과값을 받아온다
- > 어떤 인증요소를, 어디로 들고가서, 어떤값이 반환되었고, 그거를 다시 어디로 들고가서, 누가 결과를 돌려주는건지?
- 최소한 인증은 OIDC, 인가는 OAuth, IRSA는 인증+인가라고 알게되었음
- + Fargate는 잘 안써서 자세히 뜯어보진 않았지만.. Fargate(+Lambda)같은 서버리스 구현을 위해서 AWS는 Firecracker 기술을 사용 중!
- 개념과, 그 구현체? 간의 연결이 불안정함