쿠버네티스 교육

EKS OJT 교육 실습 목차

Jerry_이정훈 2022. 11. 8. 03:51
728x90
고맙게도 팀에 새로운 DevOps가 조인했다. 그 친구에게 업무 공유도 할 겸 DevOps로 해야 할 일을 실습으로 정리해 보았다. 아래 실습을 하면 우리 업무를 마스터 할 듯.
 
그리고 아마도 어느 정도는 우리 같은 40명 언더의 스타트업이고 DevOps 1~2명 조직에서도 비슷한 일을 할 것 같다. 그분들에게 도움이 될까 봐 공유한다.

 

기회가 된다면 이번에는 아래 목차로 동영상을 찍어볼까 한다. 온프레미스로 책을 썼으니 이번에는 EKS로 동영상을 만들어보면 어떨까 싶다. 머 책처럼 1년 걸리는 노가다이겠지만. 아니다 2번째니 6개월이면 되지 않을까?
 
기본적으로
  • 모든 업무는 자동화할 수 있도록 코드화(IaC) 한다.
  • 작업 속도를 높일 수 있도록 GUI 작업은 지양하고 스크립트화 한다. GUI는 확인 용도로만.
    (물론 나도 잘 못하지만)
  • 다른 사람이 유지 보수 할 수 있도록 업무 품질을 생각한다. 문서로 남기고.

현재 업무를 나열해보면(물론 계속 수정되어야겠지만)

  • EKS 접속 및 로컬 kubectl 환경 최적화
    aws configure 설정(aws 계정 별로 eks 접속 권한 분리)
    로컬 kubectl 설치, kubectl configure 파일 설정 및 kubectl alias 설정(e.g kgp for kubectl get pod -o wide)
    k ctx, k ns, k ps + k krew plugin 등 kubectl 환경 최적화
    VSCode 팁 공유(IDE는 각자 취향인가?) - 'compare selected', 단축키 등
    DevOps가 사용하는 깃헙 주소 공유 - 헬름, 테라폼, 파이썬 레포 등(PR까지는 안하는 걸로)
     
  • 테라폼 사용해서 eks 생성
    tag 할당(user: jerry, env: stage 등)
    vpc는 신규로 만들지 않고 기존 vpc 사용
    노드 그룹 설정
    : private vpc 대역 지정, Spot 인스턴스 사용, cpu/gpu 2개로 나누고
    eks default cluster ip 대역 이 외 새로운 cluster ip 대역 지정
    추가 IRSA 적용
    : vpc_cni_irsa, cluster_autoscaler_irsa_role, ebs_csi_irsa_role, efs_csi_irsa_role
     
  • 새로운 EKS 만들면 꼭 해야하는 것들이 있다.
    EBS/EFS CSI Driver 설치 후 StorageClass(ebs-sc/efs-sc) 생성
    ebs-sc default StorageClass 지정
    snapshot controller 생성
    k8s-dashboard, metrics-server, cluster autoscaler 등 설치
     
  • ECR 사용
    custom 도커 이미지 생성 후 ECR upload
    ECR AWS 다른 계정 연동할 수 있도록 보안 설정

  • 헬름 사용법
    pull 명령어로 로컬 다운하여 헬름 차트 버전 관리
    헬름 value 파일 관리 - 각 리전/환경(prod/stage) 별 고유 value.yaml 파일 사용
     
  • 헬름 for In-House 애플리케이션
    helm create
    configmap 별도 지정
    security context 추가 설정
    probe, graceful shutdown, checksum for argocd, tolerations/node-pod affinity, auto-scaling, ingress 등 설정
    필요 시 custom monitoring을 위한 service monitor manifest 추가
    PVC(SAN or NFS) 설정

  • nginx-ingress 설치
    NLB 타입 LB 자동 생성되도록
    certificate manager의 인증서 정보가 자동 추가되도록
    https only
    용도 별 ingress class 분리
    Route 53에서 도메인과 LB 연동
     
  • ArgoCD
    설치 시 깃헙 주소 등록
    sub-path(/argocd) 등록하여 ingress 설정
    app-of-apps Root application 설정
    : argocd applications CRD 한번에 설치할 수 있도록
     
  • Prometheus/Grafana
    prometheus stack 헬름 파일 이용 설치(prometheus, grafana 헬름 파일 분리할까 고민 중)
    로그 파일 30일 보관
    sub-path(/grafana) 등록하여 ingress 설정
    alertmanager는 설치 안하고
    로키 data source 추가(헬름 차트 포함)
    prometheus adapter + blackbox exporter 추가

  • Loki
    로그 파일 30일 보관

  • 대시보드 및 alarm
    default 대시보드 중 중요 대시보드 확인
    custom 대시보드 생성(e.g nginx connection 수 모니터링)
    슬랙 alarm 연동
    custom alarm 추가
    grafana default alarm 내역 확인 및 연동

  • Jenkins 파일 작성
    이미지 build 후 push까지 실습

  • 공통 Application 헬름 설치
    MySQL, PostgreSQL, Kafka, Redis, ES, Kibana, logstash, OAuth2 Proxy

  • 기타 도구 사용법
    Kafka-UI, Polaris, Tailscale, kubescape, kubecost, k8spacket
반응형