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

RDS/S3/ECR/Redis/Secrets Manager/Service Account 설정


목차

  1. 사전 준비
  2. RDS 생성하기
  3. S3 Bucket 생성하기
  4. ECR Repository 생성하기
  5. Redis 생성하기
  6. Secrets Manager 생성하기
  7. Kubernetes Service Account 생성하기


자세한 단계

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


1. 사전 준비

설치를 위한 환경 설정이 완료 되어야 합니다. (1. 설치 환경 셋업하기 참고)



2. RDS 생성하기

{변수} 는 직접 입력하여 주세요

  • RDS Subnet Group 생성하기
    • AWS RDS Console에 접속 후 왼쪽 하단의 Subnet groups 를 클릭하세요
    • Step 1 : Create DB subnet group
    • Step 2 : Subnet group details
      • Name : sng-rds-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-mysql
      • Description : 필수 입력
      • VPC: {AWS_VPC_NAME} 선택
    • Step 3 : Add subnets
      • Availability Zones : {AWS_DEFAULT_REGION}a, {AWS_DEFAULT_REGION}c 선택
      • Subnets : Public subnet 만 Check 합니다.
    • Step 4 : Create

  • RDS Instance 생성하기
    • AWS RDS Console에 접속하세요
    • Create database 버튼을 눌러 RDS 생성을 시작합니다.
    • Step 1 : Choose a database creation method
      • Standard create
    • Step 2 : Engine options
      • Engine type: MySQL
      • Edition: MySQL Community
      • Engine Version: MySQL 8.0.33
    • Step 3 : Templates
      • Production
    • Step 4: Availability and durability
      • Multi-AZ DB instance → 이중화 필요 시 Multi AZ 선택
    • Step 5 : Settings
      • DB instance identifier: rds-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-mysql
      • Master username: admin
      • Master password : 2가지 옵션 중 선택
        • Self managed : 비밀번호 생성 (권장)
          • Auto generate password : RDS 에서 자동 생성되며, RDS 생성 후 1회 확인 가능
          • Master password : 사용자가 비밀번호 생성
        • Managed in AWS Secrets Manager : AWS에서 비밀번호 자동 생성
          • AWS Secret Manager Console 로 이동
          • rds-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-mysql 클릭
          • Secret value -> Retrieve secret value
    • Step 6 : Instance configuration
      • DB instance class: Standard classes
      • Instance type: db.m5.large
    • Step 7: Storage
      • Storage type: General Purpose SSD (gp2)
      • Allocated storage: 50GiB
      • Storage autoscaling: Uncheck Enable storage autoscaling
    • Step 8: Connectiviry
      • Compute resource: Don't connect to an EC2 compute resource
      • Network type: IPv4
      • VPC: {AWS_VPC_NAME} 선택
      • DB subnet group: sng-rds-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-mysql
      • Public access: Yes
      • VPC security group: Create new
      • New VPC security group name: scg-rds-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-mysql
      • Additional configuration -> Database port: 3310
    • Step 9: Database authentication
      • Database authentication options: Password authentication
    • Step 10: Monitoring
      • Performance Insights: Check Turn on Performance Insights
      • Retention period: 7 days
      • AWS KMS key: aws/rds
    • Step 11: Create database
    • Step 12: Security Group 추가 설정 (RDS 생성 완료 후 진행)
      • AWS EC2 Console 접속하고, 왼쪽 하단의 Security Groups 클릭
      • scg-rds-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-mysql 선택
      • Edit Inbound rules 클릭
      • Add rules 클릭
      • Port range: 3310
      • Source: eks의 sg 선택(예: eks-cluster-sg-{AWS_CLUSTER_NAME})
      • Save rules

  • RDS User 생성 및 권한 부여

    • 위 단계에서 생성된 RDS의 주소 및 admin 계정 정보를 확인하고, 변수에 저장합니다. (첫번째 페이지의 변수 목록에 업데이트)

      export DB_HOST=
      export DB_PORT=3310
      export DB_ADMIN_USERNAME=admin
      export DB_ADMIN_PASSWORD=
      export DB_APP_USERNAME=`echo ${INFRA_NAME}_APP | tr [:lower:] [:upper:]`
      export DB_APP_PASSWORD=
    • DB 접속

      mysql -h ${DB_HOST} -P ${DB_PORT} -u ${DB_ADMIN_USERNAME} -p
      # 입력 : ${DB_ADMIN_PASSWORD}
    • DB USER 생성 및 권한부여

      create user '${DB_APP_USERNAME}'@'%' identified by '${DB_APP_PASSWORD}';
      GRANT SELECT, PROCESS, SHOW DATABASES, SHOW VIEW ON *.* TO `${DB_APP_USERNAME}`@`%`;
      GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `cachedb`.* TO `${DB_APP_USERNAME}`@`%`;
      GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `kubeflow`.* TO `${DB_APP_USERNAME}`@`%`;
      GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `metadb`.* TO `${DB_APP_USERNAME}`@`%`;
      GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `mlpipeline`.* TO `${DB_APP_USERNAME}`@`%`;
      GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `ai_conductor`.* TO `${DB_APP_USERNAME}`@`%`;
      GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `edge_conductor`.* TO `${DB_APP_USERNAME}`@`%`;

  • RDS 접근을 위한 Security Group 추가 설정 (Options)
    • RDS를 외부에서 접근하기 위해서는 Inbound Rule 을 추가해야 합니다.
    • AWS RDS Console에 접속 후 왼쪽 하단의 Security Groups 를 클릭하세요
    • scg-rds-{AWS_DEFAULT_REGION_ALIAS}-{INFRA-NAME}-{DEPLOY_ENV}-mysql 검색하여 클릭
    • Inbound rules 탭에서 Edit inbound rules 클릭하여 Inbound Rule을 추가합니다.


3. S3 Bucket 생성하기

{변수} 는 직접 입력하여 주세요

  • 총 3개의 S3 Bucket 이 필요하고, 각각의 용도는 아래와 같습니다

    • s3-{AWS_DEFAULT_REGION_ALIAS}--{INFRA_NAME}-{DEPLOY_ENV}-aia : mellerikat 운영 버킷
    • s3-{AWS_DEFAULT_REGION_ALIAS}--{INFRA_NAME}-{DEPLOY_ENV}-kubeflow : Kubeflow 운영 버킷
    • NOTE : edge app을 on premise로 설치하는 경우 건너뜁니다.
      • s3-{AWS_DEFAULT_REGION_ALIAS}--{INFRA_NAME}-{DEPLOY_ENV}-edgeapp : Edge App 운영 버킷
  • S3 Bucket 생성

    • AWS S3 Console 로 이동합니다.
    • Create bucket 버튼을 눌러 S3 Bucket을 생성합니다.
    • Step1 : General configureation Bucket name: s3-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-aia
    • Step2 : Create bucket
    • 같은 방법으로 아래 Bucket들도 생성합니다.
      • s3-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-kubeflow
      • NOTE : edge app을 on premise로 설치하는 경우 건너뜁니다.
        • s3-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-edgeapp


4. ECR Repository 생성하기

  • Kubeflow 설치를 위한 이미지 저장소를 생성합니다.
    aws ecr get-login-password --region ${AWS_DEFAULT_REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com

    aws ecr create-repository --repository-name ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}/ml-pipeline/api-server
    aws ecr create-repository --repository-name ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}/oidc-authservice
    aws ecr create-repository --repository-name ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}/kubeflowkatib/katib-db-manager
    aws ecr create-repository --repository-name ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}/ml-pipeline/cache-server
  • AI Conductor 설치를 위한 이미지 저장소를 생성합니다.
    aws ecr get-login-password --region ${AWS_DEFAULT_REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com

    aws ecr create-repository --repository-name ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}/ai-advisor/ai-conductor/aic-webserver
    aws ecr create-repository --repository-name ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}/ai-advisor/ai-conductor/aic-frontend


5. Redis 생성하기

{변수} 는 직접 입력하여 주세요

  • mellerikat는 로그인 세션 정보를 저장하기 위해 Redis를 사용합니다.

  • Redis의 Security Groups 생성

    • AWS EC2 Console 로 이동합니다.
    • 왼쪽 메뉴의 Security Groups 를 클릭합니다.
    • Create security group 버튼을 클릭해서 Redis의 security group을 생성합니다.
    • Step 1: Basic details
      • Security group name: scg-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-redis
      • Description : 필수 입력
      • VPC: {AWS_VPC_NAME} 선택
    • Step 2: Inbound rules
      • Add rule 클릭
      • Port range: 6379
      • Source: eks의 sg 선택(예: eks-cluster-sg-eks-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-1-28-eks-master)
    • Step 3: Create security group
  • Redis 생성

    • AWS ElastiCache Console 로 이동합니다.
    • 왼쪽 메뉴의 Redis caches를 클릭합니다.
    • Create Redis Cache 버튼을 눌러 Redis 생성을 진행합니다.
    • Step 1: Configuration
      • Deployment option: Design your own cache
      • Creation method: Cluster cache
      • Cluster mode: Disabled
    • Step 2: Cluster info
      • Name: elasticache-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-redis
    • Step 3: Location
      • Location: AWS Cloud
      • Multi-AZ: Enabled
    • Step 4: Cluster settings
      • Engine Version: 7.1
      • Port: 6379
      • Parameter group: default.redis7
      • Node type:
      • Number of replicas: 1
    • Step 5: Connectivity
      • Network type: IPv4
      • Subnet groups: Create a new subnet group
      • Name: sng-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-redis-private
      • VPC ID : {AWS_VPC_NAME} 선택
      • Selected subnets : Manage
        • SubnetPrivate 만 체크
      • Next
    • Step 6: Security
      • Encryption at rest: Disabled
      • Encryption in transit: Disabled
    • Step 7: Selected security group
      • Manage: scg-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-redis
    • Step 8: Backup
      • Enable automatic backups : 체크
      • Backup retention period: 1
      • Backup window: Specify backup window
      • Backup start time: 02:30
      • Backup duration: 1
    • Step 9: Maintenance
      • Maintenance window: Specify maintenance window
      • Maintenance start day: Tuesday
      • Maintenance start time: 01:00
      • Maintenance duration: 1
      • Auto upgrade minor versions: Enabled
    • Next
    • Create
  • Redis 생성 후 추가 설정

    • AWS ElastiCache Console 로 이동합니다.
    • 왼쪽 메뉴의 Redis caches를 클릭합니다.
    • Redis caches 에서 elasticache-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-redis 를 클릭합니다.
    • Modify 를 클릭합니다.
    • Security 섹션에서 Encryption in transit의 Enable 를 체크합니다.
    • Preview changes 클릭합니다
    • Modify 클릭합니다.

  • Redis 변수 설정
    • AWS ElastiCache Console 로 이동합니다.

    • 왼쪽 메뉴의 Redis caches를 클릭합니다.

    • Redis caches 에서 elasticache-{AWS_DEFAULT_REGION_ALIAS}-{INFRA_NAME}-{DEPLOY_ENV}-redis 를 클릭합니다.

    • Cluster details 에서 Primary endpoint 는 {REDIS_HOST}:{REDIS_PORT} 입니다.

      export REDIS_HOST=
      export REDIS_PORT=6379


6. Secrets Manager 생성하기

  • mellerikat는 RDS 암호화 정보 및 S3에 접근할때 Secrets Manager에 등록된 정보를 활용합니다. 필요한 정보들을 저장하기 위해 Secrets Manager 설정을 아래와 같이 진행합니다.
    # SECRETS MANAGER 변수 설정 (Kubeflow 설치 시 필요)
    export AWS_SECRETS_MANAGER_S3=/parameter/${AWS_DEFAULT_REGION}/${INFRA_NAME}/${DEPLOY_ENV}/s3
    export AWS_SECRETS_MANAGER_RDS=/parameter/${AWS_DEFAULT_REGION}/${INFRA_NAME}/${DEPLOY_ENV}/rds

    # S3
    aws secretsmanager create-secret --name ${AWS_SECRETS_MANAGER_S3} \
    --secret-string '{"accesskey":"'${KUBEFLOW_USER_AWS_ACCESS_KEY_ID}'","secretkey":"'${KUBEFLOW_USER_AWS_SECRET_ACCESS_KEY}'"}' --region ${AWS_DEFAULT_REGION}

      # RDS
    aws secretsmanager create-secret --name ${AWS_SECRETS_MANAGER_RDS} \
    --secret-string '{"username":"'${DB_APP_USERNAME}'","password":"'${DB_APP_PASSWORD}'","database":"kubeflow","host":"'${DB_HOST}'","port":"'${DB_PORT}'"}' --region ${AWS_DEFAULT_REGION}
     ```


7. Kubernetes Service Account 생성하기

  • 이 단계에서는 S3, ECR 등 자원 접근에 대한 policy 들과 해당 정책을 부여받은 Service Account를 생성합니다.

    • Service Account 가 속할 Namespace가 없다면, Service Account 생성 시 자동으로 생성 됩니다.
      • kubeflow
      • ai-conductor
      • edge-conductor
      • edge-app
  • IAM policy 생성

    • mellerikat 용 Secret Manager Policy 생성을 정의한 policy-secret-manager-aia-r.yaml 을 생성합니다.
    [Expand policy-secret-manager-aia-r.yaml]
    cat <<EOT > policy-secret-manager-aia-r.yaml
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "AllowGetRdsSecretViaSsm",
    "Effect": "Allow",
    "Action": [
    "ssm:GetParameters",
    "ssm:GetParameter",
    "secretsmanager:GetSecretValue"
    ],
    "Resource": [
    "arn:aws:ssm:${AWS_DEFAULT_REGION}:${AWS_ACCOUNT_ID}:parameter/aws/reference/secretsmanager/*",
    "arn:aws:secretsmanager:${AWS_DEFAULT_REGION}:${AWS_ACCOUNT_ID}:secret:/parameter/${AWS_DEFAULT_REGION}/${INFRA_NAME}/${DEPLOY_ENV}/*"
    ]
    }
    ]
    }
    EOT
    aws iam create-policy --policy-name policy-secret-manager-aia-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} --policy-document file://policy-secret-manager-aia-r.yaml
    • mellerikat 용 S3 Policy 생성을 정의한 policy-s3-aia-rwd.yaml 을 생성합니다.
    [Expand policy-s3-aia-rwd.yaml]
    cat <<EOT > policy-s3-aia-rwd.yaml
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "S3BucekDeliverableRWD",
    "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}-aia",
    "arn:aws:s3:::s3-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}-aia/*"
    ]
    }
    ]
    }
    EOT
    aws iam create-policy --policy-name policy-s3-aia-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} --policy-document file://policy-s3-aia-rwd.yaml
    • Kubeflow 용 S3 Policy 생성을 정의한 policy-s3-kubeflow-rwd.yaml 을 생성합니다.
    [Expand policy-s3-kubeflow-rwd.yaml]
    cat <<EOT > policy-s3-kubeflow-rwd.yaml
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "S3BucekKubeflowRWD",
    "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/*"
    ]
    }
    ]
    }
    EOT
    aws iam create-policy --policy-name  policy-s3-kubeflow-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} --policy-document file://policy-s3-kubeflow-rwd.yaml
    • mellerikat 용 ECR Policy 생성을 정의한 policy-ecr-aia-rwd.yaml 을 생성합니다.
    [Expand policy-ecr-aia-rwd.yaml]
    cat <<EOT > policy-ecr-aia-rwd.yaml
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "ECRFullRWD",
    "Effect": "Allow",
    "Action": "ecr:*",
    "Resource": [
    "arn:aws:ecr:${AWS_DEFAULT_REGION}:${AWS_ACCOUNT_ID}:repository/ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}",
    "arn:aws:ecr:${AWS_DEFAULT_REGION}:${AWS_ACCOUNT_ID}:repository/ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}/*"
    ]
    }
    ]
    }
    EOT
    aws iam create-policy --policy-name policy-ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} --policy-document file://policy-ecr-aia-rwd.yaml
    • Edge App 용 S3 Policy 생성을 정의한 policy-s3-edge-app-rwd.yaml 을 생성합니다.
      • NOTE : edge app을 on premise로 설치하는 경우 건너뜁니다.
    [Expand policy-s3-edge-app-rwd.yaml]
    cat <<EOT > policy-s3-edge-app-rwd.yaml
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "S3BucekEdgeAppRWD",
    "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}-edgeapp",
    "arn:aws:s3:::s3-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}-edgeapp/*"
    ]
    }
    ]
    }
    EOT
    aws iam create-policy --policy-name policy-s3-edgeapp-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} --policy-document file://policy-s3-edge-app-rwd.yaml
    • Edge App 용 SQS Policy 생성을 정의한 policy-sqs-edge-app-rwd.yaml 을 생성합니다.
      • NOTE : edge app을 on premise로 설치하는 경우 건너뜁니다.
    [Expand policy-sqs-edge-app-rwd.yaml]
    cat <<EOT > policy-sqs-edge-app-rwd.yaml
      {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "SqsEdgeAppAllow",
    "Effect": "Allow",
    "Action": [
    "sqs:ReceiveMessage",
    "sqs:SendMessage",
    "sqs:ListQueues"
    ],
    "Resource": [
    "arn:aws:sqs:${AWS_DEFAULT_REGION}:${AWS_ACCOUNT_ID}:sqs-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV}-edgeapp"
    ]
    }
    ]
    }
    EOT
    aws iam create-policy --policy-name policy-sqs-edgeapp-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} --policy-document file://policy-sqs-edge-app-rwd.yaml
  • Service Accounts 생성

    • ai-conductor-sa

      eksctl create iamserviceaccount \
      --name ai-conductor-sa \
      --role-name role-${INFRA_NAME}-${DEPLOY_ENV}-ai-conductor-sa \
      --namespace ai-conductor \
      --cluster ${AWS_CLUSTER_NAME} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-secret-manager-aia-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-s3-aia-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
      --approve \
      --region ${AWS_DEFAULT_REGION}
    • edge-conductor-sa

      • NOTE : edge conductor를 on premise로 설치하는 경우 건너뜁니다.
      eksctl create iamserviceaccount \
      --name edge-conductor-sa \
      --role-name role-${INFRA_NAME}-${DEPLOY_ENV}-edge-conductor-sa \
      --namespace edge-conductor \
      --cluster ${AWS_CLUSTER_NAME} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-secret-manager-aia-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-s3-aia-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
      --approve \
      --region ${AWS_DEFAULT_REGION}
    • edge-app-sa

      • NOTE : edge app을 on premise로 설치하는 경우 건너뜁니다.
      eksctl create iamserviceaccount \
      --name edge-app-sa \
      --role-name role-${INFRA_NAME}-${DEPLOY_ENV}-edge-app-sa \
      --namespace edge-app \
      --cluster ${AWS_CLUSTER_NAME} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-s3-aia-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-s3-edgeapp-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-sqs-edgeapp-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
      --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/policy-ecr-repo-${AWS_DEFAULT_REGION_ALIAS}-${INFRA_NAME}-${DEPLOY_ENV} \
         --approve \
      --region ${AWS_DEFAULT_REGION}
      ```