AWS 기술 블로그

AWS ROSA에 IBM Cloud Pak for Data 설치하기

본 블로그는 AWS Architecture Blog에 게시된 ‘Deploying IBM Cloud Pak for Data on Red Hat OpenShift Service on AWS’를 한국어 번역 및 편집하였습니다.

AWS 클라우드에서 IBM Cloud Pak for Data(CP4D)를 배포하여 사용할 수 있는 보다 더 직관적인 방법을 찾고 있는 Amazon Web Services(AWS) 고객은 Red Hat OpenShift Service on AWS(ROSA) 사용을 고려해 보시기 바랍니다.

ROSA는 AWS와 Red Hat이 공동으로 지원하는 완전 관리형 서비스입니다. Red Hat Site Reliability Engineers가 관리하며 종량제 요금 모델과 AWS의 통합 결제가 적용됩니다.

ROSA를 이용하면 고객은 Red Hat OpenShift Container Platform 클러스터의 라이프사이클을 직접 관리할 필요가 없습니다. 그 대신 AWS에서 IBM의 통합 데이터 및 AI 플랫폼을 사용하여 새로운 솔루션을 개발하고 더 빠르게 혁신하는 데 집중하여 비즈니스를 차별화하고 끊임없이 변화하는 엔터프라이즈 요구 사항에 충실히 대응할 수 있습니다.

AWS Marketplace에서 직접 관리형 OpenShift 클러스터를 설치하고 그 위에 CP4D를 배포할 수도 있습니다 (참고: BYOL). 이 방식은 Red Hat OpenShift Data Foundation 소프트웨어 정의 스토리지를 사용해야 하는 경우나 OpenShift 클러스터 직접 관리를 원하는 경우에 적합합니다.

본 블로그에서는 ROSA 클러스터를 프로비저닝하고 CP4D를 빠르게 배포하는 방법에 대해 알아봅니다.

Cloud Pak for data 아키텍처

본 아키텍처는 가용 영역(AZ) 3개, 마스터 노드 3개, 인프라 노드 3개, 워커 노드 3개가 있는 고가용 ROSA 클러스터를 구현하였습니다. AWS 리전 및 가용 영역 설명서와 ROSA를 사용할 수 있는 리전을 검토하여 배포에 가장 적합한 리전을 선택하시기 바랍니다.

아래 그림 1 은 솔루션의 아키텍처입니다.

그림 1. IBM Cloud Pak for Data on ROSA

이 시나리오에서는 80 및 443 포트에 접근할 수 있는 인터넷 연결 Classic Load Balancer와 함께 퍼블릭 ROSA 클러스터를 구축하고 있습니다. AWS 계정에 CP4D를 배포할 때는 ROSA 프라이빗 클러스터 사용을 고려하시기 바랍니다.

우리는 클러스터의 영구 스토리지에 Amazon Elastic Block Store(Amazon EBS)Amazon Elastic File System(Amazon EFS)을 사용하고 있습니다. 지원되는 스토리지 옵션에 대한 정보는 IBM 문서를 참고하십시오.

또한 운영환경에 CP4D를 배포하기 전에 ROSA에 대한 AWS 사전요구사항을 검토하고 IAM 설명서의 보안관련 모범 사례에 따라 CP4D를 배포하기 전에 AWS 계정을 보호하시기 바랍니다.

비용

AWS 계정에 CP4D를 배포할 때 발생하는 AWS 서비스 비용은 사용자에게 부과됩니다. 예상 비용에 관해서는 각 AWS 서비스의 요금 페이지를 참조하십시오.

사전요구사항

시작하기에 앞서 아래와 같은 솔루션 사전 요구사항을 검토하십시오:

설치 단계

ROSA에 CP4D를 배포하려면 다음 단계를 완료하십시오:

  1. 시작하기를 클릭하여 AWS 계정에서 서비스를 활성화합니다 (그림 2)

    그림 2. Enable ROSA on your AWS account
  2. CP4D 설치를 실행할 AWS Cloud9 환경을 생성합니다. 본 블로그에서는 t3.medium 인스턴스를 사용했습니다.

    그림 3. Create an AWS Cloud9 environment
  3. AWS Cloud9 환경이 가동되면 시작 탭을 닫고 새 터미널 탭을 열고 필요한 패키지를 설치합니다.
    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    unzip awscliv2.zip
    sudo ./aws/install
    sudo yum -y install jq gettext
    sudo wget -c https://mirror.openshift.com/pub/openshift-v4/clients/rosa/latest/rosa-linux.tar.gz -O - | sudo tar -xz -C /usr/local/bin/
    sudo wget -c https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/openshift-client-linux.tar.gz -O - | sudo tar -xz -C /usr/local/bin/
  4. 아래와 같은 IAM 정책을 생성합니다. ( 참고 : IAM 서비스 > 정책 > 정책 생성 > JSON )
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "autoscaling:*",
                    "cloudformation:*",
                    "cloudwatch:*",
                    "ec2:*",
                    "elasticfilesystem:*",
                    "elasticloadbalancing:*",
                    "events:*",
                    "iam:*",
                    "kms:*",
                    "logs:*",
                    "route53:*",
                    "s3:*",
                    "servicequotas:GetRequestedServiceQuotaChange",
                    "servicequotas:GetServiceQuota",
                    "servicequotas:ListServices",
                    "servicequotas:ListServiceQuotas",
                    "servicequotas:RequestServiceQuotaIncrease",
                    "sts:*",
                    "support:*",
                    "tag:*"
                ],
                "Resource": "*"
            }
        ]
    }

    위의 JSON 을 아래 그림 4와 같이 저장합니다.

    그림 4. Edit an IAM Policy

    정책의 이름을 cp4d-installer-permission 으로 저장합니다.

    그림 5. Create an IAM Policy

  5. AWS 콘솔에서 IAM 역할을 생성합니다. ( 참고 : IAM 서비스 > 역할 > 역할 생성 )1. 아래 그림을 참고하여, 신뢰할 수 있는 엔터티 유형AWS 서비스 , 일반 사용 사례 중 EC2 선택한 후 다음을 클릭합니다.
    2. cp4d-installer-permissions 정책을 검색하고 선택합니다.
    3. 이름은 cp4d-installer로 지정하고 역할 생성을 클릭합니다.

    그림 6. Create an IAM Role
  6. 그림 7처럼, AWS Cloud9 IDE에서 오른쪽 상단의 원 모양 버튼을 클릭하고 Manage EC2 Instance를 선택하면, 그림 8과 같이 AWS EC2 인스턴스 콘솔로 연결됩니다.

    그림 7. Manage the AWS Clou9 EC2 Instance
  7. Amazon EC2 콘솔에서 AWS Cloud9 에 사용되는 인스턴스를 선택하고, 작업 > 보안 > IAM 역할 수정을 선택합니다.

    그림 8. Modify IAM Role
  8. 그림과 같이 IAM 역할 에서 cp4d-installer 를 선택하고, IAM 역할 업데이트를 클릭합니다.

    그림 9. Attache the IAM role to your workspace
  9. AWS Cloud9 워크스페이스를 위한 IAM 설정을 갱신합니다.
    aws cloud9 update-environment --environment-id $C9_PID --managed-credentials-action DISABLErm -vf ${HOME}/.aws/credentials
  10. Elastic Load Balancing service-linked role 이 AWS 계정안에 존재하는지 확인합니다.
    aws iam get-role --role-name "AWSServiceRoleForElasticLoadBalancing" || aws iam create-service-linked-role --aws-service-name "elasticloadbalancing.amazonaws.com"
  11. AWS 환경을 설정합니다.
    export ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account)
    export AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')
    aws configure set default.region ${AWS_REGION}
  12. Red Hat Hybrid Cloud Console로 이동해서 OpenShift Cluster Management API Token 을 복사해옵니다.

    그림 10. Copy API Token
  13. 위에서 복사한 Token을 사용해서 Red Hat 계정으로 로그인합니다.
    rosa login --token=<YOUR_ROSA_API_TOKEN>
  14. AWS 계정이 Cluster 를 만들수 있을 만큼 충분한 쿼터를 가지고 있는지 확인합니다.
    rosa verify quota
  15. ROSA 를 처음으로 배포하는 경우라면, ROSA account-roles 을 생성합니다.
    rosa create account-roles --mode auto –yes
  16. ROSA Cluster를 생성합니다. (아래 그림 11을 참조)
    export ROSA_CLUSTER_NAME=<YOUR_CLUSTER_NAME>
    
    rosa create cluster --cluster-name ${ROSA_CLUSTER_NAME} --sts \
      --multi-az \
      --region ${AWS_REGION} \
      --version 4.10.47 \
      --compute-machine-type m5.4xlarge \
      --compute-nodes 3 \
      --operator-roles-prefix ${ROSA_CLUSTER_NAME} \
      --mode auto --yes \
      --watch


    그림 11. ROSA Cluster 생성

  17. Cluster가 생성되면 cluster-admin 사용자를 만들고 cluster API URL, username 과 password 를 확인합니다.
    rosa create admin --cluster=${ROSA_CLUSTER_NAME}
  18. 앞 단계에서 생성된 로그인 정보를 이용하여 cluster 에 로그인합니다.
    oc login https://<YOUR_CLUSTER_API_ADDRESS>:6443 \
      --username cluster-admin \
      --password <YOUR_CLUSTER_ADMIN_PASSWORD>
  19. 워커 노드 보안 그룹안에 inbound rule을 생성하고, cluster의 VPC CIDER 에서 들어오는 NFS 트래픽을 허용합니다.
    WORKER_NODE=$(oc get nodes --selector=node-role.kubernetes.io/worker -o jsonpath='{.items[0].metadata.name}')
    VPC_ID=$(aws ec2 describe-instances --filters "Name=private-dns-name,Values=$WORKER_NODE" --query 'Reservations[*].Instances[*].{VpcId:VpcId}' | jq -r '.[0][0].VpcId')
    VPC_CIDR=$(aws ec2 describe-vpcs --filters "Name=vpc-id,Values=$VPC_ID" --query 'Vpcs[*].CidrBlock' | jq -r '.[0]')
    SG_ID=$(aws ec2 describe-instances --filters "Name=private-dns-name,Values=$WORKER_NODE" --query 'Reservations[*].Instances[*].{SecurityGroups:SecurityGroups}' | jq -r '.[0][0].SecurityGroups[0].GroupId')
    aws ec2 authorize-security-group-ingress \
      --group-id $SG_ID \
      --protocol tcp \
      --port 2049 \
      --cidr $VPC_CIDR | jq .
  20. Amazon EFS 파일 시스템을 생성합니다
    EFS_FS_ID=$(aws efs create-file-system --performance-mode generalPurpose --encrypted --region ${AWS_REGION} --tags Key=Name,Value=ibm_cp4d_fs | jq -r '.FileSystemId')
    SUBNETS=($(aws ec2 describe-subnets --filters "Name=vpc-id,Values=${VPC_ID}" "Name=tag:Name,Values=*${ROSA_CLUSTER_NAME}*private*" | jq --raw-output '.Subnets[].SubnetId'))
    for subnet in ${SUBNETS[@]}; do
      aws efs create-mount-target \
        --file-system-id $EFS_FS_ID \
        --subnet-id $subnet \
        --security-groups $SG_ID
    done
  21. Container software library on My IBM 에 로그인해서 API Key를 복사해옵니다.
  22. 본 블로그에서는 CP4D 를 설치하고 Watson Machine Learning과 IBM Watson Studio를 설치합니다.
  23. IBM 문서를 읽어보고 요구 사항에 맞게 어떤 CP4D 콤포넌트를 설치할지 결정하시기 바랍니다.
  24. CP4D 설치를 위한 환경변수를 설정합니다. COMPONENTS 환경변수에 어떤 서비스를 설치할지 지정합니다. (참고: 아래 사용자 지정 환경변수들을 저장하여 유지하는 것이 좋습니다.)
    export OCP_URL=<https://YOUR_CLUSTER_API_ADDRESS:6443>
    export OPENSHIFT_TYPE=rosa
    export IMAGE_ARCH=amd64
    export OCP_USERNAME=cluster-admin
    export OCP_PASSWORD=<YOUR_CLUSTER_ADMIN_PASSWORD>
    export PROJECT_CPFS_OPS=ibm-common-services
    export PROJECT_CATSRC=openshift-marketplace
    export PROJECT_CPD_INSTANCE=cpd-instance
    export STG_CLASS_BLOCK=gp3-csiexport STG_CLASS_FILE=efs-nfs-client
    export IBM_ENTITLEMENT_KEY=<YOUR_IBM_API_KEY>
    export VERSION=4.6.1
    export COMPONENTS=cpfs,scheduler,cpd_platform,ws,wml
    export EFS_LOCATION=${EFS_FS_ID}.efs.${AWS_REGION}.amazonaws.com
    export EFS_PATH=/
    export PROJECT_NFS_PROVISIONER=nfs-provisioner
    export EFS_STORAGE_CLASS=efs-nfs-client
    export NFS_IMAGE=k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
  25. CP4D CLI 를 설치합니다.
    curl -v https://icr.iomkdir ibm-cp4d && wget https://github.com/IBM/cpd-cli/releases/download/v12.0.1/cpd-cli-linux-SE-12.0.1.tgz -O - | tar -xz -C ~/environment/ibm-cp4d --strip-components=1
    export PATH=/home/ec2-user/environment/ibm-cp4d:$PATH
    cpd-cli manage restart-container
  26. 생성한 ROSA cluster 에 로그인합니다.
    cpd-cli manage login-to-ocp --username=${OCP_USERNAME} \
    --password=${OCP_PASSWORD} --server=${OCP_URL}
  27. cluster를 위한 영구 스토리지를 설정합니다.
    cpd-cli manage setup-nfs-provisioner \
    --nfs_server=${EFS_LOCATION} --nfs_path=${EFS_PATH} \
    --nfs_provisioner_ns=${PROJECT_NFS_PROVISIONER} \
    --nfs_storageclass_name=${EFS_STORAGE_CLASS} \
    --nfs_provisioner_image=${NFS_IMAGE}
  28. CP4D 소프트웨어를 배포하기 위한 프로젝트를 생성합니다.
    oc new-project ${PROJECT_CPFS_OPS}
    oc new-project ${PROJECT_CPD_INSTANCE}
  29. load balancer timeout 값을 변경하여 설치 과정이 종료되기전에 커넥션이 종료되는 것을 방지합니다.
    LOAD_BALANCER=`aws elb describe-load-balancers --output text | grep $VPC_ID | awk '{ print $5 }' | cut -d- -f1 | xargs`
    for lbs in ${LOAD_BALANCER[@]}; do
      aws elb modify-load-balancer-attributes \
        --load-balancer-name $lbs \
        --load-balancer-attributes "{\"ConnectionSettings\":{\"IdleTimeout\":600}}"
    done
  30. OpenShift 상의 CRI-O 컨테이너를 위한 pidl_limits 설정을 변경합니다.
    cpd-cli manage apply-crio --openshift-type=${OPENSHIFT_TYPE}
  31. IBM 컨테이너 레포지토리에서 이미지를 내려받기 위한 글로벌 이미지 pulll-secret 을 구성합니다.
    cpd-cli manage add-icr-cred-to-global-pull-secret ${IBM_ENTITLEMENT_KEY}
  32. CP4D 설치를 위해 operator 와 operator subscriptions 를 생성합니다.
    cpd-cli manage apply-olm \
    --release=${VERSION} \
    --components=${COMPONENTS}
  33. CP4D 플랫폼과 서비스를 설치합니다
    cpd-cli manage apply-cr \
    --components=${COMPONENTS} \
    --release=${VERSION} \
    --cpd_instance_ns=${PROJECT_CPD_INSTANCE} \
    --block_storage_class=${STG_CLASS_BLOCK} \
    --file_storage_class=${STG_CLASS_FILE} \
    --license_acceptance=true
  34. CP4D URL 과 admin 인증정보를 확인합니다.
    cpd-cli manage get-cpd-instance-details \
    --cpd_instance_ns=${PROJECT_CPD_INSTANCE} \
    --get_admin_initial_credentials=true
  35. 위의 명령어 수행 결과에서 CP4D URL, admin 사용자 , 패스워드를 확인할 수 있습니다. 그림 12를 참고하세요.

    그림 12. CP4D URL 확인
  36. CP4D URL 로 접근하여 콘솔로 로그인하고, 정상 배포 여부를 확인합니다.

    그림 13. IBM Cloud pak for Data Welcom page
  37. CP4D Welcome 페이지에서 좌상단 서비스 감지 클릭하여 서비스 카탈로그로 이동합니다.
  38. 서비스 카탈로그에서 CP4D에서 이용가능한 서비스를 확인합니다.
  39. 검색창에서 watson 을 검색하여 Watson Machine Learning 과 Watson Studio 를 찾습니다. 이미 설치된 Watson Machine Learning 과 Watson Studio 서비스는 하단에 사용 이라고 표시되어 있습니다.

    그림 14. Service Catalog in IBM Cloud pak for Data

설치 후

운영환경에 설치할 때는 다음 주제를 검토하십시오.

삭제 절차

AWS Cloud9 워크 스페이스에 연결하고 다음 단계를 실행하여 ROSA를 포함한 CP4D 설치를 삭제합니다. 삭제하면 그 이후로는 AWS 계정에서 비용이 발생하지 않습니다.

EFS_FS_ID=$(aws efs describe-file-systems \ --query 'FileSystems[?Name==`ibm_cp4d_fs`].FileSystemId' \ --output text) MOUNT_TARGETS=$(aws efs describe-mount-targets --file-system-id $EFS_FS_ID --query 'MountTargets[*].MountTargetId' --output text) for mt in ${MOUNT_TARGETS[@]}; do aws efs delete-mount-target --mount-target-id $mt done aws efs delete-file-system --file-system-id $EFS_FS_ID rosa delete cluster -c $ROSA_CLUSTER_NAME --yes --region $AWS_REGION

cluster 설제 제거 로그를 모니터링 하려면 다음 명령을 수행합니다 :

rosa logs uninstall -c $ROSA_CLUSTER_NAME --watch

클러스터가 제거되면 rosa delete 명령의 출력에 표시된 대로 operator-roles 및 oidc-provider를 제거합니다. 예를 들어:

rosa delete operator-roles -c <OPERATOR_ROLES_NAME> -m auto -y
rosa delete oidc-provider -c <OIDC_PROVIDER_NAME> -m auto -y

아래 그림과 같이 operator-role ,oidc-provider 삭제 명령이 출력되니 참고하여 위의 rosa delete 명령을 실행합니다.

그림 15. operator_roles_name 과 oidc_provider_name

결론

지금까지 우리는 고객이 AWS의 완전관리형 OpenShift 서비스인 ROSA 에 IBM CP4D를 배포할 수 있는 방법을 알아보았습니다. 이 방식으로 구현하면, 고객은 CP4D를 배포를 위한 OpenShift를 관리 작업을 할 필요가 없고, 대신 그들에게 중요한 워크로드 및 고객에 집중할 수 있습니다.

CP4D on AWS에 대해 자세히 더 알아보려면 IBM Cloud Pak for Data(CP4D) on AWS 현대화 워크샵을 살펴보십시오.

IBM Data & AI의 전체 오퍼링 목록을 보려면 AWS Marketplace를 방문하십시오.

더 읽어야 할 문서

추가 자료

SeongHee Kang

SeongHee Kang

강성희 Partner SA 는 데이터 베이스 제품 엔지니어와 대용량 정보계 시스템 / 빅데이터 플랫폼 솔루션 엔지니어로 다양한 인더스트리에서 구축과 프리세일즈를 모두 경험하였으며 현재는 AWS Partner Core 팀에서 파트너사 엔지니어들의 Analytic 서비스 역량 강화를 위해 일하고 있습니다.

Joonyong Park

Joonyong Park

박준용 파트너 솔루션스 아키텍트는 파트너 역량강화를 위하여 AWS Ambassador, BlackBelt, APN Immersion Day, JetPack 등의 프로그램을 수행하고 있으며 파트너사에 Data Analytics와 Machine Learning 분야 Enablement를 준비 및 제공하고 있습니다.