EKS 클러스터 내 다른 컨텍스트 접근해서 작업하는 방법

노하람·2021년 10월 28일
0
post-custom-banner

DSME, 경북대 연구원분들 참고해주시면 감사하겠습니다.

사용 환경

  • 가능하면 맥이나 윈도우 등 로컬 OS에서 진행해주시면 됩니다.
  • aws ec2로 진행해봤으나 대시보드 GUI 표시, Lens 사용 불가 등의 문제점이 존재합니다.
    - VNC로 GUI 표현할 수 있긴하나 비추천합니다.
    - 아래의 내용은 맥에서 진행됐음을 미리 알려드립니다.

AWS config

사용에 AWS 설정이 필요한지는 확인하지 못했지만 일단 적어두겠습니다.

  1. 사용에 앞서 kubectl, aws cli, kfctl, eksctl, kustomize 등이 필요할 수 있으니 다운받아 두시면 좋습니다.

  2. aws configure 명령어를 입력해 default aws configure를 설정합니다.

    • 관리팀에서 부여받은 root access_key 및 secret_access_key를 이용해주세요. 개인적으로 생성한 IAM을 생성하면 생성되어 있는 EKS에 접근할 수 없습니다.
      [default]
      aws_access_key_id =
      aws_secret_access_key =
  3. vim ~/.aws/config 를 수정합니다.

    [default]
    sts_regional_endpoints=regional
    region = ap-northeast-2
    output = yaml
    
    [profile environment-predict]
    role_arn = <비워두겠습니다. 혹시 설정해야 하는 상황이면 DM주세요>
    source_profile = default
    region = ap-northeast-2
    output = yaml

컨텍스트 받아오기

  1. 아마 이 부분부터 진행하시면 될 것 같습니다. profile은 동일한 environment-predict를 사용합니다.

    aws eks update-kubeconfig \
      --name automl-dsme-knu \
      --alias knu \
      --profile environment-predict
  2. 위 명령을 실행하면 automl-dsme-knu context를 받아오게 됩니다. 이후 해당 컨텍스트에서 작업을 진행하시면 됩니다.

  3. 작업을 시작하시기 전에 확인해야 할 것들이 있습니다.

    • export AWS_DEFAULT_PROFILE=environment-predict
      - 디폴트 프로필이 environment-predict로 되어있는지 확인합니다. 위 명령어는 아래 명령에 대한 결과가 달라지게 합니다.
    • aws sts get-caller-identity
      - 해당 명령으로 admin 프로필이 사용되고 있는지 확인합니다. 위와 아래 명령에 문제가 있을 경우 루트 권한을 위임받은 IAM을 aws configure에서 제대로 설정하지 않았기 때문입니다. 단순 컨텍스트를 받아와 쓰는 경우 꼭 루트 권한이 필요할지는 모르겠습니다.
    • kubectl config use-context knu
      - 위에서 설정한 context의 alias인 knu를 통해 사용할 컨텍스트를 변경해줍니다. 스위칭 되었다는 안내가 나옵니다.
    • kubectl config get-contexts
      - 컨텍스트가 제대로 설정되어 있는지 확인합니다.
    • 설정에서 default로 profile은 environment-predict, context는 knu로 변경해놨지만 혹시 모르니 아래와 같이 kubectl, aws cli 명령어를 쓸 땐 추가 정보를 붙여주세요.
      - kubectl 사용할 땐 명령어 뒤에 --context=knu 사용
      - aws 명령 사용할 땐 --profile=environment-predict 사용

쿠브플로우 대시보드 접근하기

  1. knu 컨텍스트에는 제가 쿠브플로우를 설치해 놓았습니다.
    • 다만 사양 제한(파드 최대 55개)이 있어, 임의로 일부 파드를 삭제하거나 버전을 변경해놓았습니다.
    • 모든 기능이 작동한다고 보장할 수 없으나, 대부분은 문제 없이 돌아갈 겁니다. 혹시 문제가 발생하면 사양을 업그레이드하고 쿠브플로우를 재설치하거나, 문제가 있는 namespace에 대해서만 추가 설치하셔도 되겠습니다.
    • 매니페스트는 여기 있으나 일반적으로 aws에서 사용하는 1.2버전과는 다른 버전입니다.
    • aws eks 내 쿠브플로우 설치에 관해서는 여기를 참고해주세요.
  2. istio-ingressgateway를 통해 쿠브플로 대시보드를 외부로 노출시킬 수 있습니다.
    • 포트포워딩을 이용합니다. 먼저 모든 pod가 정상적으로 동작하고 있는지 확인해보세요.
    • kubectl port-forward deployments/istio-ingressgateway 8080:8080 -n istio-system 명령을 실행합니다.
    • 아래와 같은 화면이 나오면 됩니다.
    • 이후 브라우저에서 localhost:8080을 통해 대시보드에 접근해서 작업하실 수 있습니다.
    • 또한 k8s 관련 작업은 Lens 프로그램을 깔아 사용하시면 용이합니다.
profile
MLOps, MLE 직무로 일하고 있습니다😍
post-custom-banner

0개의 댓글