Appendix E. Cloud 환경설정

내용 목차

E.1. 개요
E.2. Kubernetes
E.3. AWS
E.4. vCloud

본 부록에서는 JEUS를 클라우드 환경에서 이용하는 방법에 대해서 설명한다.

E.1. 개요

클라우드 서버가 정상동작하기 위해서는 다음의 설정들이 필요하다.

  • JEUS_HOME/client 경로에 있는 Cloud Service Provider(CSP) 파일 중 사용하는 클라우드 환경에 적합한 파일을 JEUS_HOME/lib/system 경로에 위치시킨다.

  • JEUS 클라우드 라이선스를 JEUS_HOME/license 경로에 위치시킨다.

  • 클라우드 서버들을 같은 SCF 그룹으로 묶기 위해서는 다음 중 하나를 설정해야 한다.

    • -Djeus.scf.group-id 프로퍼티를 같은 값으로 설정한다.

    • JEUS_HOME/domains/<DOMAIN_NAME>/config/domain.xml 파일의 <id> 값을 같은 값으로 설정한다.

그외 클라우드 환경마다 다른 설정들은 아래 내용을 참조한다.

E.2. Kubernetes

컨테이너 관리의 자동화 오픈소스 플랫폼인 Kunbernetes은 대부분의 PaaS 클라우드에서 제공하는 리소스 형태이다. 본 절에서는 Docker, Kubernetes 기반의 PaaS 클라우드를 제공하는 OpenShift를 예제로 설정 방법을 설명한다.

JEUS를 OpenShift에서 이용하기 위한 환경을 구축하기 전에 다음의 준비가 완료되어 있는지 확인한다.

다음은 OpenShift(Kubernetes)에서 JEUS 이용을 위한 설정 및 예제이다.

  1. 마스터/노드 서버를 실행한다.

  2. 마스터의 API 서버를 이용하기 위한 권한을 부여한다. (https://kubernetes.io/docs/reference/access-authn-authz/rbac/)

    컨테이너에 기동된 JEUS간 정보를 공유하기 위해 마스터의 API 서버를 이용한다. OpenShift(Kubernetes)의 계정은 기본적으로 API 서버에 접근이 매우 제약적이기 때문에 적절한 권한을 부여해야 한다.

    다음은 설정 파일의 예이다. 확장자는 .yaml으로 저장한다.

    <clusterRoleExample.yaml>

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: pod-reader
    rules:
    - apiGroups: [""] # "" indicates the core API group
      resources: ["*"]
      verbs: ["get", "watch", "list"]

    <clusterRoleBindingExample.yaml>

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: read-pods
    subjects:
    - kind: Group
      name: system:serviceaccounts
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: pod-reader
      apiGroup: rbac.authorization.k8s.io
  3. 마스터의 API 서버를 이용하기 위한 컨테이너 환경변수를 설정한다. (https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/)

    다음은 설정 파일의 예이다. 확장자는 .yaml으로 저장한다.

    <jeusContainerExample.yaml>

    ...
    spec:
      containers:
      - name: jeus-container
        env:
        - name: API_VERSION
          value: "v1"
        - name: KUBERNETES_NAMESPACE
          value: "default"
    ...

    JEUS는 다음의 컨테이너 환경변수를 사용한다. Pod 배포파일에 해당 환경변수들을 반드시 입력해주어야 한다.

    환경변수설명
    API_VERSION마스터 API 서버의 버전정보를 표시한다.
    KUBERNETES_NAMESPACEPod의 NAMESPACE를 표시한다. 같은 NAMESPACE를 갖는 pod들의 정보만 얻기 위해 사용할 수 있다.
  4. Pod 배포파일 생성(배포) 및 pod 상태를 체크한다.

E.3. AWS

AWS 클라우드는 PaaS, IaaS 클라우드를 모두 지원하고 있다. PaaS 클라우드에서 JEUS를 사용할 경우 Kubernetes 기반의 PaaS인 EKS(https://aws.amazon.com/EKS) 리소스로 환경을 구축하고 “E.2. Kubernetes”를 참조하여 JEUS를 기동하도록 한다.

본 절에서는 AWS IaaS 리소스인 EC2에서 JEUS 클라우드 서버 사용을 위한 설정 방법을 설명한다.

JEUS 클라우드 서버는 AWS API를 이용하여 얻어낸 EC2 정보를 기반으로 동작하며, 이를 위한 설정을 다음과 같이 해주어야 한다.

  1. IAM 리소스 사용자에게 EC2 리소스에 접근할 수 있는 적절한 권한을 부여한다.

    (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html)

  2. IAM 리소스 사용자의 Access Key, Secret Key를 발급 받는다.

    (https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_credentials_access-keys.html)

  3. EC2 인스턴스에 key가 'scfGroup'인 태그를 지정한다. 같은 SCF 그룹에 대해서는 태그에 대해 같은 value를 주어야 한다.

    (https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/Using_Tags.html)

  4. EC2 인스턴스에 다음의 환경변수를 설정한다.

    JEUS는 AWS API 서버를 이용하기 위해 다음의 인스턴스 환경변수를 사용한다.

    환경변수설명
    AWS_ACCESS_KEYIAM 리소스에서 부여받은 Access Key. AWS API 서버를 이용하기 위한 토큰 생성에 필요하다.
    AWS_SECRET_KEYIAM 리소스에서 부여받은 Secret Key. AWS API 서버를 이용하기 위한 토큰 생성에 필요하다.
    AWS_SCF_GROUPscfGroup 태그에 대한 value를 입력한다.

  5. EC2 리소스 시작 및 SCF 그룹핑을 확인한다.

E.4. vCloud

vCloud Suite는 VMWare에서 제공하는 기업용 프라이빗 클라우드 플랫폼으로 IaaS 클라우드를 지원한다. vCloud에서 JEUS를 사용할 경우 vCloud에 JEUS 이미지를 VM으로 기동하도록 한다. 본 절에서는 vCloud Suite의 JEUS가 설치된 VM의 설정 방법을 설명한다.

JEUS 클라우드 서버는 VMWare vRealize Suite의 API를 이용하여 얻어낸 VM 정보를 기반으로 동작하며, 이를 위한 설정을 다음과 같이 해주어야 한다.

  1. VM의 환경변수를 설정한다.

    환경변수설명
    VRA_IDvRealize Suite의 계정 ID를 설정한다. (예: admin@vsphere.local)
    VRA_PWvRealize Suite의 계정 PW를 설정한다.
    VRA_TENANTvRealize Suite의 Tenant 정보를 설정한다. (예: tenant1)
    VRA_URLvRealize Suite의 URL 정보를 설정한다. (예: vra0.test.tmax.local)
  2. Host resolve를 설정한다.

    환경변수 VRA_URL에 도메인을 입력하였다면 해당 도메인을 IP 주소로 resolve해줄 수 있도록 host에 등록해야 한다.

  3. 방화벽 정보를 설정한다.

    VM에 방화벽이 켜져있으면 통신이 되지 않는다. 따라서 각 VM에 방화벽을 off한다.

    systemctl stop firewalld
  4. Virtual multicast 및 SCF Group ID 설정한다.

    • JEUS의 설정파일(domain.xml)에서 virtual-multicast 설정을 true로 설정한다.

    • JEUS의 기동스크립트 startCloudServer에 -Djeus.scf.group-id 옵션을 주어 서로 같은 값일 때 묶이도록 설정한다.