IBM Cloud의 Red Hat OpenShift Container Platform에 Mobile Foundation 배치

improve this page | report issue

전제조건

Mobile Foundation 인스턴스 설치 프로세스를 시작하기 전의 전제조건은 다음과 같습니다.

  • IBM Account를 사용하여 IBM Cloud에 OpenShift 클러스터를 작성하십시오.
  • IBM Cloud CLI(ibmcloud).
  • IBM Passport Advantage(PPA)에서 Openshift용 IBM Mobile Foundation 패키지를 다운로드하십시오.
  • Mobile Foundation에는 데이터베이스가 필요합니다. 지원되는 데이터베이스를 작성하고 추후 사용을 위한 데이터베이스 액세스 세부사항을 가까이 보관하십시오. 여기를 참조하십시오.
  • [선택사항] NFS 마운트 볼륨 또는 Mobile Foundation Analytics용 File Storage

IBM Cloud의 Red Hat OpenShift 클러스터에 Mobile Foundation을 배치하는 단계

이 절에서 설명하는 단계에 따라 Mobile Foundation OpenShift Container Platform(OCP) 패키지를 IBM Cloud의 Red Hat OpenShift 클러스터에 배치하십시오.

  1. 사설 레지스트리 안으로 이미지를 푸시하고 이미지를 풀링할 때 사용할 수 있는 시크릿을 작성하십시오.

    a. IBM Cloud에 로그인하십시오.

    ibmcloud login
    

    b. 다음 명령을 실행하여 OpenShift의 내부 Docker 레지스트리에 로그인하십시오.

    # Create a route from the terminal to the docker registry
    oc create route reencrypt --service=docker-registry -n default
    oc get route docker-registry -n default
    
    # login into the OpenShift internal container registry
    docker login -u $(oc whoami) -p $(oc whoami -t) <docker-registry-url>
    

    예를 들어, 다음과 같습니다.

    $ oc get route docker-registry -n default
    NAME              HOST/PORT                                              PATH      SERVICES          PORT       TERMINATION   WILDCARD
    docker-registry   docker-registry-default.-xxxx.appdomain.cloud    docker-registry                   5000-tcp   reencrypt     None
    
    $ docker login -u $(oc whoami) -p $(oc whoami -t) docker-registry-default.-xxxx.appdomain.cloud
    Login Succeeded
    

    c. PPA 아카이브를 작업 디렉토리로 압축을 풀고(mfoskpg 사용) IBM Mobile Foundation 이미지를 로컬로 사용하십시오.

    mkdir mfospkg
    tar xzvf IBM-MobileFoundation-Openshift-Pak-<version>.tar.gz -C mfospkg/
    
    cd mfospkg/images
    ls * | xargs -I{} docker load --input {}
    export MFOS_PROJECT=<my_namespace>
    export CONTAINER_REGISTRY_URL=<docker-registry-url>    # e.g. docker-registry-default.-xxxx.appdomain.cloud
    

    d. 로컬 머신에서 OpenShift 레지스트리로 이미지를 로드하고 푸시하십시오.

    cd <workdir>/images
    ls * | xargs -I{} docker load --input {}
    
    for file in * ; do
    docker tag ${file/.tar.gz/} $CONTAINER_REGISTRY_URL/$MFOS_PROJECT/${file/.tar.gz/}
    docker push $CONTAINER_REGISTRY_URL/$MFOS_PROJECT/${file/.tar.gz/}
    done
    

    중요 참고: 여기부터는 OpenShift의 내부 컨테이너 레지스트리에서 컨테이너에 액세스할 때 이미지 URL을 docker-registry.default.svc:5000/<project_name>/<image_name>:<image_tag>로 사용하십시오.

  2. OpenShift 프로젝트를 작성하십시오.

    a. IBM Cloud에서 OpenShift 클러스터 대시보드를 여십시오.

    b. 액세스 탭으로 이동하여 빠른 지시사항 세트에 따라 OpenShift 콘솔에 액세스하십시오.

    c. 클러스터 페이지의 OpenShift 웹 콘솔 단추를 클릭하여 OpenShift 콘솔을 여십시오.

    d. 웹 콘솔에서 OpenShift 프로젝트를 작성하십시오. 또는 oc CLI를 사용하여 프로젝트를 작성할 수 있습니다. 문서를 참조하십시오.

  3. Operator를 배치하십시오.

    a. 태그가 있는 MF Operator 이미지(mf-operator)가 deploy/operator.yaml에서 Operator에 대해 설정되어 있는지 확인하십시오. 플레이스홀더 REPO_URL을 OpenShift 컨테이너 내부 레지스트리 URL로 대체하십시오. 예: docker-registry.default.svc:5000/myprojectname/mf-operator:1.0.1

    b. OpenShift 프로젝트 이름이 deploy/cluster_role_binding.yaml의 클러스터 역할 바인딩 정의에 대해 설정되어 있는지 확인하십시오. 플레이스홀더 REPLACE_NAMESPACE를 대체하십시오.

    c. 아래 명령을 실행하여 Operator를 배치하고 Security Context Constraints(SCC)를 설치하십시오.

      oc create -f deploy/crds/charts_v1_mfoperator_crd.yaml
      oc create -f deploy/
    
      # Use your own <project_name> while running the command
      oc adm policy add-scc-to-group mf-operator system:serviceaccounts:<project_name>
    

    그러면 mf-operator 팟(Pod)이 작성되고 실행됩니다. 팟(Pod)을 나열하여 팟(Pod)이 작성되었는지 확인하십시오. 출력은 다음과 같이 표시됩니다.

     $ oc get pods
     NAME                           READY     STATUS    RESTARTS   AGE
     mf-operator-5db7bb7w5d-b29j7   1/1       Running   0          1m
    
  4. 데이터베이스에 액세스하려면 IBM Mobile Foundation 배치에 필요한 시크릿을 작성하십시오.

    여기의 문서를 참조하십시오.

  5. Analytics에 대한 지속적 볼륨 및 볼륨 청구를 작성하십시오.

    여기의 문서를 참조하십시오.

  6. IBM Mobile Foundation 컴포넌트를 배치하십시오.

    임의의 Mobile Foundation 컴포넌트를 배치하려면 deploy/crds/charts_v1_mfoperator_cr.yaml에서 적절한 사용자 정의 리소스 값을 수정하십시오.

    a. 플레이스홀더 REPO_URL을 대체하여 deploy/crds/charts_v1_mfoperator_cr.yaml에서 Docker 저장소 URL을 설정하십시오. 예: docker-registry.default.svc:5000/myprojectname/mfpf-server:2.0.1.

    b. [선택사항] 이미지 레지스트리가 OpenShift 클러스터 외부인 경우, pullSecretdeploy/crds/charts_v1_mfoperator_cr.yaml 파일에 추가하십시오. 시크릿 정의는 다음 샘플 스니펫과 유사합니다.

    image:
      pullPolicy: IfNotPresent
      pullSecret: pull-secret-name
    

    여기의 문서를 참조하여 나머지 구성(복제본, 스케일링, DB 특성 등)을 완료하십시오.

  7. 사용자 정의 리소스를 작성하거나 업데이트하십시오. 이 단계에서는 CR yaml에서 사용할 수 있는 모든 Mobile Foundation 컴포넌트를 위한 팟(Pod)을 작성하고 실행합니다.

     oc apply -f deploy/crds/charts_v1_mfoperator_cr.yaml
    

    다음 명령을 실행하여 팟(Pod)이 작성되어 실행 중인지 확인하십시오. Mobile Foundation Server 및 푸시를 각 세 개의 복제본(기본값)과 함께 사용할 수 있는 시나리오에서 출력은 아래와 유사합니다.

     $ oc get pods
     NAME                           READY     STATUS    RESTARTS   AGE
     mf-operator-5db7bb7w5d-b29j7   1/1       Running   0          1m
     mfpf-server-2327bbewss-3bw31   1/1       Running   0          1m 20s
     mfpf-server-29kw92mdlw-923ks   1/1       Running   0          1m 21s
     mfpf-server-5woxq30spw-3bw31   1/1       Running   0          1m 19s
     mfpf-push-2womwrjzmw-239ks     1/1       Running   0          59s
     mfpf-push-29kw92mdlw-882pa     1/1       Running   0          52s
     mfpf-push-1b2w2s973c-983lw     1/1       Running   0          52s
    

    참고: 실행 중인 팟(1/1) 상태는 서비스가 액세스에 대해 사용 가능함을 표시합니다.

  8. 다음 명령을 실행하여 Mobile Foundation 엔드포인트에 액세스하기 위한 라우트가 작성되었는지 확인하십시오.

     $ oc get routes
     NAME                                      HOST/PORT               PATH        SERVICES             PORT      TERMINATION   WILDCARD
     ibm-mf-cr-1fdub-mfp-ingress-57khp   myhost.mydomain.cloud   /imfpush          ibm-mf-cr--mfppush     9080                    None
     ibm-mf-cr-1fdub-mfp-ingress-8skfk   myhost.mydomain.cloud   /mfpconsole       ibm-mf-cr--mfpserver   9080                    None
     ibm-mf-cr-1fdub-mfp-ingress-dqjr7   myhost.mydomain.cloud   /doc              ibm-mf-cr--mfpserver   9080                    None
     ibm-mf-cr-1fdub-mfp-ingress-ncqdg   myhost.mydomain.cloud   /mfpadminconfig   ibm-mf-cr--mfpserver   9080                    None
     ibm-mf-cr-1fdub-mfp-ingress-x8t2p   myhost.mydomain.cloud   /mfpadmin         ibm-mf-cr--mfpserver   9080                    None
     ibm-mf-cr-1fdub-mfp-ingress-xt66r   myhost.mydomain.cloud   /mfp              ibm-mf-cr--mfpserver   9080                    None
    

IBM Mobile Foundation 컴포넌트의 콘솔에 액세스

Mobile Foundation 컴포넌트의 콘솔에 액세스하기 위한 엔드포인트는 다음과 같습니다.

  • Mobile Foundation Server 관리 콘솔 - http://<ingress_subdomain>/mfpconsole
  • Operational Analytics 콘솔 - http://<ingress_subdomain>/analytics/console
  • Application Center 콘솔 - http://<ingress_subdomain>/appcenterconsole

설치 제거

다음 단계는 배치를 정리할 때 사용할 수 있습니다.

  • 다음 단계를 사용하여 사용자 정의 자원(CR) 및 사용자 정의 자원 정의(CRD)를 삭제하십시오.

      oc delete -f deploy/crds/charts_v1_mfoperator_cr.yaml
      oc delete -f deploy/
      oc delete -f deploy/crds/charts_v1_mfoperator_crd.yaml
      oc patch crd/ibmmf.charts.helm.k8s.io -p '{"metadata":{"finalizers":[]}}' --type=merge
    

추가 정보

분석 데이터를 지속적 볼륨에 작성하는 것과 관련된 문제를 해결하려면 IBM Cloud에서 File Storage를 사용하는 Mobile Foundation Analytics의 경우, 다음 명령을 실행하십시오.

oc run perms-pod --overrides='
{
        "spec": {
            "containers": [
                {
                    "command": [
                        "/bin/sh",
                        "-c",
                        "mkdir -p /opt/ibm/wlp/usr/servers/mfpf-analytics/analyticsData && chown -R 1001:0 /opt/ibm/wlp/usr/servers/mfpf-analytics/analyticsData"
                    ],
                    "image": "alpine:3.2",
                    "name": "perms-pod",
                    "volumeMounts": [{
                        "mountPath": "/opt/ibm/wlp/usr/servers/mfpf-analytics/analyticsData",
                        "name": "pvc-data"
                    }]
                }
            ],        
            "volumes": [
                {
                    "name": "pvc-data",
                    "persistentVolumeClaim": {
                        "claimName": "<pvc-name>"
                    }
                }
            ]
        }
}
'  --image=notused --restart=Never
Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on June 29, 2020