2023 3월 회고

회사: 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 실행시켜도 될듯하지만서도.. 테라폼 활용의 끝을 보고싶다
    • 운영 단계로 넘어갔을때, 테라폼(IaC) 유지할 수 있을것인지?
      • 제일 우려되는 부분
      • 일반적으로 구축하고 빠지는 타회사 사례처럼 생성하고 그위로는 콘솔로 관리해야하나
      • 그러면 뭐하러 고생해서 테라폼으로 구축했지? 이력관리는 어떻게하고?
      • 급한 이슈가 생기면 수동대응을 하고 가능한 코드에 반영하는식으로..
    • 이후 Application 배포 관리는 어떻게?
      • 일단은 ArgoCD + helm + Github(manifests) 생각 중
      • 그 뒤는 일단 운영해보면서 생각해봅시다

회사: Distributed Redash on k8s

  • 사내 내부 활용 툴부터 하나 둘씩 마이그레이션
  • 먼저 데이터 시각화 툴인 Redash 부터 테스트해보기
Redash Archiecture, O’REILLY
  • Redash 자체는 Python(Flask)프로그램. 다만 Airflow처럼 Celery 라는 분산 메세지 큐를 활용하여 작동함. 이를 위한 컴포넌트로 Redis와 PostgreSQL 사용.
  • Stateful한 Workload를 꼭 k8s 환경에 올려야할까?
    • redash서버나 adhoc/generic worker류는 큐에서 뽑아다 처리하니까 늘든 줄든 꺼지든 살아나는 상관없을것같음
    • 큐에 해당하는 구성요소는 별도로 분리해서, AWS의 신뢰성이 보장된 관리형 서비스에 연동시키는게 좋지않을까 (RDS/ElstiCache)
    • 분산-연동 구성에 대한 문의는 사용자 포럼에도 많이 있음. 답이 없어서 그렇지
  • 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으로 함

외부 활동

230315 AWSKRUG Beginner

메인 세션 : 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 기술을 사용 중!

Leave a Reply