본문으로 건너뛰기
버전: docs v25.02

설치 환경 셋업 및 AWS 계정 생성


목차

  1. 설치 환경 셋업하기
  2. AWS 사용자 계정 등록 및 AWS CLI 설치하기
  3. AWS Infra 설정하기
  4. AWS Kubeflow 계정 생성하기


자세한 단계

{변수}의 자세한 설명은 Terminology 페이지를 참고하세요


1. 설치 환경 셋업하기

 

  • Docker 환경 설치하기
    • 설치 환경이 독립적으로 구성될 수 있도록 Docker Container(Ubuntu)를 이용하는 것을 권장합니다.

      export DOCKER_NAME=
      # docker 다운로드
      docker pull ubuntu:20.04

      # docker 실행
      docker container run -id -w /home/mellerikat --name ${DOCKER_NAME} ubuntu:20.04

      # bash 실행
      docker exec -it ${DOCKER_NAME} /bin/bash

      # 필요 tool 설치
      apt update
      apt install git curl unzip tar make sudo vim wget mysql-server jq -y

  • kubectl 설치하기
    • kubectl 은 Kubernetes 를 컨트롤하기 위해 필요한 명령어 입니다.
    • 버전은 클러스터의 Kubernetes 버전과 동일하거나 최대 하나 이전 또는 이후의 마이너 버전일 수 있습니다.
      • (클러스터 버전이 1.28인 경우 kubectl 버전 1.27, 1.28 또는 1.29)
    • kubectl 을 설치하거나 업그레이드하려면 kubectl 설치 또는 업데이트 부분을 참조하세요.
      • 설치환경에서 클러스터와 통신할 수 있도록 구성합니다.
        export INFRA_NAME=
        export DEPLOY_ENV=
        export AWS_CLUSTER_VERSION=
        export AWS_CLUSTER_VERSION_STR=`echo ${AWS_CLUSTER_VERSION} | tr '.' '-'`
        export AWS_DEFAULT_REGION_ALIAS=
        export AWS_CLUSTER_NAME=eks-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}-${AWS_CLUSTER_VERSION_STR}-eks-master

        aws eks update-kubeconfig --region ${AWS_DEFAULT_REGION} --name ${AWS_CLUSTER_NAME} --alias ${INFRA_NAME}

  • eksctl 설치하기
    • eksctl 은 EKS Cluster 를 컨트롤하기 위해 필요한 명령어 입니다.
    • Amazon EKS 클러스터를 create 및 describe 할 수 있는 권한이 있는 IAM 보안 주체가 있어야 합니다.
    • eksctl 을 설치하거나 업그레이드하려면 eksctl 설치 또는 업데이트 부분을 참조하세요.


2. AWS 사용자 계정 등록 및 AWS CLI 설치하기

  • 관리자 권한을 가진 AWS 계정이 있다면 이 단계를 건너뜁니다.
  • 계정이 없다면 AWS 가입 페이지의 지시에 따라 계정을 생성하세요.
  • AWS 계정 정보 확인하기
    • 계정 식별자 확인 페이지를 참고해서 계정 식별자(12자리 숫자)를 확인합니다.
      export AWS_ACCOUNT_ID=
    • AWS 계정의 ACCESS KEY와 SECRET ACCESS KEY를 발급받아야 합니다. 발급을 위한 절차는 IAM 사용자의 액세스 키 관리를 참조 바랍니다.
    • 발급한 ACCESS KEY와 SECRET ACCESS KEY, 계정의 region 정보를 변수로 등록합니다.
      export AWS_ACCESS_KEY_ID=
      export AWS_SECRET_ACCESS_KEY=
      export AWS_DEFAULT_REGION=
      export AWS_OUTPUT_FORMAT=json
  • AWS CLI 설치하기
    • 설치 환경에 AWS CLI를 구성합니다. 자세한 설치 과정은 AWS CLI 설치의 지시를 참고하세요


3. AWS Infra 설정하기

  • 설정된 이름은 인프라를 비롯한 모든 자원에 활용됩니다. 하나의 인프라에는 다수의 프로젝트가 포함될 수 있으며, 인프라 이름({INFRA_NAME})과 프로젝트 이름({PROJECT_NAME})은 중복되지 않는것을 권장합니다.
    export INFRA_NAME=
    # DEPLOY_ENV 는 dev 또는 prod 중 선택
    export DEPLOY_ENV=
  • 설정된 INFRA_NAME 으로 AWS PROFILE을 설정합니다.
    {
    echo "${AWS_ACCESS_KEY_ID}"
    echo "${AWS_SECRET_ACCESS_KEY}"
    echo "${AWS_DEFAULT_REGION}"
    echo "${AWS_OUTPUT_FORMAT}"
    } | aws configure --profile=${INFRA_NAME}
    export AWS_PROFILE=${INFRA_NAME}


4. AWS Kubeflow User 생성하기

  • kubeflow 설치 및 운영를 위한 Kubeflow IAM User 생성이 필요합니다.

  • IAM 정책 생성 

    • s3-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-kubeflow : Kubeflow 운영에 필요한 S3 버킷
    • s3-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-aia : mellerikat 운영에 필요한 S3 버킷
    [Expand s3-policy.json]
    cat <<EOT > s3-policy.json
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Action": [
    "s3:PutObject",
    "s3:GetObject",
    "s3:GetObjectAttributes",
    "s3:GetObjectTagging",
    "s3:DeleteObject",
    "s3:ListBucket"
    ],
    "Resource": [
    "arn:aws:s3:::s3-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}-kubeflow",
    "arn:aws:s3:::s3-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}-kubeflow/*",
    "arn:aws:s3:::s3-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}-aia",
    "arn:aws:s3:::s3-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}-aia/*"
    ]
    }
    ]
    }
    EOT
    export KUBEFLOW_USER_POLICY_NAME=policy-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}-s3-rwd
    aws iam create-policy \
    --policy-name ${KUBEFLOW_USER_POLICY_NAME} \
    --policy-document file://s3-policy.json
  • IAM USER 생성

    export KUBEFLOW_USER_NAME=user-kubeflow-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}
    aws iam create-user --user-name ${KUBEFLOW_USER_NAME}
  • USER에 정책 부여

    aws iam attach-user-policy \
    --user-name user-kubeflow-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
    --policy-arn "arn:aws:iam::${AWS_ACCOUNT_ID}:policy/${KUBEFLOW_USER_POLICY_NAME}"
  • USER의 ACCESS_KEY 및 SECRET_ACCESS_KEY 생성 및 저장

    access_key=$(aws iam create-access-key --user-name ${KUBEFLOW_USER_NAME} | jq -r '.AccessKey')
    export KUBEFLOW_USER_AWS_ACCESS_KEY_ID=`echo ${access_key} | jq -r '.AccessKeyId'`
    export KUBEFLOW_USER_AWS_SECRET_ACCESS_KEY=`echo ${access_key} | jq -r '.SecretAccessKey'`