Red Hat OpenShift 로컬에 Oracle Blockchain Platform Enterprise Edition 배포

테스트 및 내부 개발 목적으로 Red Hat OpenShift Local에 Oracle Blockchain Platform Enterprise Edition을 설치할 수 있습니다. 운용 환경에서는 지원되지 않습니다.

Red Hat OpenShift Local은 로컬 컴퓨터에서 실행되어 설정 및 테스트를 간소화하고 컨테이너 기반 애플리케이션을 개발하는 데 필요한 모든 도구를 사용하여 로컬에서 클라우드 개발 환경을 에뮬레이트하도록 설계되었습니다. 이전에는 Red Hat CodeReady Containers라고 불렸습니다.

Red Hat OpenShift Local에 대한 자세한 내용은 Red Hat OpenShift Local을 참조하십시오.

필요 조건:
  • CPU: 12개 이상
  • 메모리: 30GB 이상
  • 디스크 크기: 150GB 이상
  • RedHat OpenShift 로컬 - 임베디드 OpenShift 버전 4.15.3, CRC (코드 준비 컨테이너) 버전 2.34.1
  • 운영 체제: CentOS 8

이 절에서는 테스트된 버전의 필요 조건 설치에 대한 예제를 제공합니다. 설치 지침에 대한 추가 정보 및 필요한 수정 사항은 각 제품의 설명서를 참조하십시오. 다음 연습은 운영 체제로 CentOS 8을 사용하여 테스트되었습니다. Oracle Linux 또는 Red Hat Enterprise Linux와 같은 다른 Linux 배포판도 사용할 수 있습니다.

주:

Istio를 Install Prerequisite Software 작업의 일부로 설치할 경우 최신 버전이 아닌 버전 1.22.1을 설치합니다.

Red Hat OpenShift 로컬 설치

Red Hat OpenShift Local을 다운로드하고 설치하려면 다음 단계를 완료합니다. 자세한 내용은 Installing CodeReady Containers를 참조하십시오.

  1. Red Hat OpenShift Local로 이동하고 Install OpenShift on your laptop을 누릅니다. Red Hat 자격 증명을 입력하거나 아직 계정이 없는 경우 계정을 만들 수 있는 로그인 페이지로 리디렉션됩니다.
  2. 로그인한 후 Clusters(클러스터)를 누른 다음 Local(로컬) 탭을 누릅니다.
  3. 로컬 페이지에서 다운로드 OpenShift 로컬, 풀 암호 다운로드 순으로 누릅니다.
  4. 이전 단계에서 다운로드한 crc 패키지 및 풀 암호를 VM에 복사합니다. 예:
    scp -r -i ~/.ssh/id_rsa ~/Downloads/crc-linux-amd64.tar.xz <username>@<ip-address>:/tmp
    scp -r -i ~/.ssh/id_rsa ~/Downloads/pull-secret.txt <username>@<ip-address>:/tmp
    cd
  5. VM에서 crc이라는 디렉토리를 만들고 crc 패키지 및 풀 암호를 해당 디렉토리에 복사합니다.
  6. 다음 명령을 실행하여 OpenShift를 설치합니다.
    sudo dnf install NetworkManager
    Failed loading plugin "osmsplugin": No module named 'librepo'로 시작하는 오류가 표시되는 경우 다음 명령을 실행한 후 설치 명령을 다시 실행하십시오.
    sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
    sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
    
  7. 다음 명령을 실행하여 아카이브 파일을 추출합니다.
    cd ~/crc
    tar xvf crc-linux-amd64.tar.xz
  8. 다음 명령을 실행하여 이진 파일을 /bin 디렉토리로 이동하고 경로를 업데이트합니다.
    mkdir -p ~/bin
    cp ~/crc/crc-linux-*-amd64/crc ~/bin
    export PATH=$PATH:$HOME/bin
    echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc

루트 파티션의 디스크 공간 늘리기

VM 루트 분할 영역 공간이 150GB 미만인 경우 다음 단계를 완료하십시오.

  1. 부트 디스크, 루트 파일 시스템 또는 LVM(논리적 볼륨 관리자)에 사용 가능한 공간이 150GB 이상 있는지 확인합니다.
  2. fdisk를 사용하여 100GB 이상의 Linux 파일 시스템 분할 영역(이 예에서는 새 분할 영역 /dev/sda4)을 만듭니다.
    sudo fdisk /dev/sda
  3. 다음 명령을 사용하여 볼륨 그룹에 물리적 볼륨을 추가합니다.
    sudo vgextend centosvolume /dev/sda4
  4. 다음 명령을 사용하여 논리적 볼륨의 크기를 늘립니다.
    sudo lvextend -L+99G /dev/mapper/centosvolume-root
  5. 다음 명령을 사용하여 파일 시스템의 크기를 늘립니다.
    sudo xfs_growfs /dev/centosvolume/root
    Oracle Enterprise Linux의 동등한 명령은 oci_growfs입니다.

OpenShift 로컬 매개변수 구성

다음 명령을 실행하여 12개의 CPU 코어, 30GB 메모리 및 100GB 디스크 공간을 사용하도록 OpenShift Local을 구성합니다.

crc config set cpus 12 
crc config set memory 30720 
crc config set disk-size 100

OpenShift 클라이언트 다운로드 및 설치

다음 명령을 실행하여 OpenShift 클라이언트 소프트웨어인 oc를 다운로드하고 설치합니다.

wget -O ~/crc/openshift-client-linux.tar.gz https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/4.15.3/openshift-client-linux-4.15.3.tar.gz 
tar xvzf openshift-client-linux.tar.gz
sudo mv oc /usr/local/bin

클러스터 시작

다음 명령을 실행하여 클러스터 상태를 설정, 시작 및 확인합니다. Red Hat OpenShift Local을 다운로드할 때 다운로드한 풀 암호를 사용합니다.

crc setup 
crc start -p ~/crc/pull-secret.txt
crc status
설치가 완료되면 다음과 유사한 정보가 표시됩니다.
INFO Adding crc-admin and crc-developer contexts to kubeconfig... 
Started the OpenShift cluster.

The server is accessible via web console at:
  https://console-openshift-console.apps-crc.testing

Log in as administrator:
  Username: kubeadmin
  Password: password  (note this password)

Log in as user:
  Username: developer
  Password: developer

Use the 'oc' command line interface:
  $ eval $(crc oc-env)
  $ oc login -u developer https://api.crc.testing:6443

Oracle Blockchain Platform Enterprise Edition 설치

  1. Red Hat OpenShift Local이 작동되어 실행 중인지 확인하려면 다음 단계를 완료합니다.
    1. 콘솔에 로그인합니다.
      oc login -u kubeadmin -p <password> https://api.crc.testing:6443
    2. Red Hat OpenShift Local에 연결할 수 있는지 확인합니다.
      oc get nodes
  2. 다음 명령을 실행하여 Istio 프로파일을 설정합니다. 다음 명령을 실행하기 전에 Install Istio의 단계를 완료한 상태여야 합니다.
    istioctl install --set profile=openshift --set values.pilot.env.ENABLE_TLS_ON_SIDECAR_INGRESS=true --set components.cni.enabled=true --set values.cni.repair.deletePods="true"
  3. Oracle Blockchain Platform Enterprise Edition 페이지에서 다운로드를 누른 다음 단계에 따라 Oracle Blockchain Platform Enterprise Edition 패키지(약 6.5GB)를 다운로드합니다.
  4. 다운로드한 아카이브 파일의 압축을 풉니다.
    추출된 폴더 구조에는 OpenShift를 비롯한 다양한 플랫폼에 대한 runme 스크립트가 포함되어 있습니다.
  5. runme-input.yaml 파일을 필요한 값으로 업데이트합니다. 또한 runme-input.yamlrunme.sh 파일을 실행 가능한 상태로 만듭니다. runme-input.yaml 파일에 지정한 사용자 계정에서 레지스트리에 로그인할 수 있는지 확인합니다. 다음 예제 runme-input.yaml 파일을 참조로 사용할 수 있습니다.
    imageRegistryConfiguration:
      registry: <container_registry_name>
      imageTagPrefix: <container-image-repository-prefix>
      username: <container-registry-username>
     
    imageReleaseVersion: <obpee-release-version>
     
    # Set storageClassName to create a dynamic persistent volume. If empty, default storageClass is used.
     
    controlPlaneStorage:
      storageClassName: 
      # Example 500Mi, 5Gi
      size: 1Gi
    parentDomainName: example.com
    #imagePullTimeout: Use this field to customize the wait time (in seconds) for pulling the required container images from the repository. Default is 1800 seconds.
    imagePullTimeout: 1800
    예제의 변수는 다음 값을 가집니다.
    • imageRegistryConfiguration.registry는 사용할 컨테이너 레지스트리 서버입니다. 예: iad.ocir.io
    • imageRegistryConfiguration.imageTagPrefix는 레지스트리가 있는 컨테이너 기본 저장소 경로로, 이미지가 푸시되거나 풀링됩니다. 예: iad.ocir.io/obpee/bcs
    • imageRegistryConfiguration.username은 컨테이너 레지스트리 로그인 사용자 이름입니다.
    • imageReleaseVersionOracle Blockchain Platform Enterprise Edition 릴리스 버전입니다.
    • controlPlaneStorage.storageClassName는 PVC에 사용할 Kubernetes 스토리지 클래스입니다(PersistentVolumeClaim). 비어 있는 경우 기본 storageClass가 사용됩니다.
    • controlPlaneStorage.size는 Blockchain Platform Manager (제어 평면) 서비스를 위한 PVC 크기입니다.
    • parentDomainName은 Blockchain Platform Manager 서비스에 사용할 도메인 이름입니다. 예: example.com.
    • imagePullTimeoutOracle Blockchain Platform Enterprise Edition 설치 중 이미지 풀 대기 시간 초과(초)입니다. 기본값은 1800초입니다.
  6. 새 터미널 window를 열고 배포 패키지 디렉토리로 이동합니다. 스크립트 출력에 표시되는 단계를 따릅니다.
    1. 다음 명령을 실행하여 스크립트를 실행합니다.
      chmod +x runme_openshift.sh
    2. 다음 스크립트를 실행하여 아카이브 파일의 컨테이너를 지정된 저장소에 푸시한 다음 제품을 설치합니다.
      ./runme_openshift.sh --publish-images
      컨테이너 이미지가 저장소에 이미 업로드된 경우 다음 명령을 사용하여 저장소에서 가져와서 설치할 수 있습니다.
      ./runme_openshift.sh
    • 기본 LDAP 관리자 암호(암호는 표시되지 않음)를 입력합니다. 이 암호는 내장 LDAP 인증 서버에 대한 관리 사용자의 암호를 설정하는 데 사용됩니다.
    • 기본 제어 플레인 관리자 사용자 비밀번호(비밀번호는 표시되지 않음)를 입력합니다. 이 비밀번호는 Blockchain Platform Manager 관리자 사용자의 비밀번호를 설정하는 데 사용됩니다.
    • 레지스트리 <registry name> 비밀번호 입력: 이미지를 다운로드하기 위해 runme-input.yaml에 지정된 대로 컨테이너 이미지 레지스트리에 접속하는 데 사용됩니다.
    이 스크립트는 obp-cp 네임스페이스 아래에 다음 서비스를 설치합니다.
    • control-plane
    • openldap
    • obp-auth-server
    • obp-operator
    • hlf-operator
  7. crc VM의 /etc/hosts 파일에 다음 행을 추가합니다.
    <CRC_IP_address> controlplane.<parentDomainName> openldap.<parentDomainName> auth.<parentDomainName>
    예제에서 <CRC_IP_address>crc ip 명령의 출력입니다.
  8. Blockchain Platform Manager 콘솔에 연결하는 데 사용하는 컴퓨터의 /etc/hosts 파일에 다음 행을 추가합니다.
    <public_vm_ip> controlplane.<parentDomainName> openldap.<parentDomainName> auth.<parentDomainName>
    예제에서 <public_vm_ip>는 VM의 공용 IP 주소입니다.
  9. 클라이언트 컴퓨터에서 Blockchain Platform Manager에 액세스하려면 다음 단계를 완료하십시오. 다음 단계에서는 firewalld를 사용하여 서버에 대한 인바운드 트래픽을 허용하고 HAProxy는 트래픽을 OpenShift 로컬 인스턴스로 전달합니다.
    1. 다음 항목이 /etc/NetworkManager/conf.d/crc-nm-dnsmasq.conf 구성 파일에 있는지 확인합니다.
      [main]
              dns=dnsmasq
      dnsmasq 인스턴스 구성 파일 /etc/NetworkManager/dnsmasq.d/crc.conf은 다음과 유사할 수 있습니다.
      server=/crc.testing/198.x.x.x
      server=/apps-crc.testing/198.x.x.x
      198.x.x.xcrc ip 명령의 출력입니다. NetworkManagerdnsmasq 인스턴스는 crc.testingapps-crc.testing에 대한 요청을 198.x.x.x DNS 서버로 전달합니다.
    2. 다음 명령을 입력하여 필요한 종속성을 설치합니다.
      sudo dnf -y install haproxy policycoreutils-python-utils
    3. 다음 명령을 입력하여 방화벽을 구성합니다.
      sudo systemctl start firewalld
      sudo firewall-cmd --add-port=80/tcp --permanent
      sudo firewall-cmd --add-port=6443/tcp --permanent
      sudo firewall-cmd --add-port=443/tcp --permanent
      sudo systemctl restart firewalld
      sudo semanage port -a -t http_port_t -p tcp 6443
      sudo semanage port -a -t http_port_t -p tcp 6443
    4. HAProxy를 구성하려면 먼저 서버의 IP 주소와 Red Hat OpenShift 로컬 VM의 IP 주소를 알아야 합니다. 다음 명령을 실행합니다.
      export SERVER_IP=$(hostname --ip-address)
      export CRC_IP=$(crc ip)
      cd /etc/haproxy;sudo cp haproxy.cfg haproxy.cfg.orig
    5. haproxy.cfg 파일의 내용을 다음 텍스트로 바꿉시다.
      global
      debug
       
      defaults
      log global
      mode http
      timeout connect 0
      timeout client 0
      timeout server 0
       
      frontend apps
      bind SERVER_IP:80
      bind SERVER_IP:443
      option tcplog
      mode tcp
      default_backend apps
       
      backend apps
      mode tcp
      balance roundrobin
      option ssl-hello-chk
      server webserver1 CRC_IP:80 check
      server webserver2 CRC_IP:443 check
       
      frontend api
      bind SERVER_IP:6443
      option tcplog
      mode tcp
      default_backend api
       
      backend api
      mode tcp
      balance roundrobin
      option ssl-hello-chk
      server webserver1 CRC_IP:6443 check
      
    6. 다음 명령을 실행하여 HAproxy 구성의 IP 주소를 바꾸고 HAproxy를 시작합니다.
      export CRC_IP=$(crc ip)
      export SERVER_IP=$(hostname --ip-address)
      sudo sed -i "s/CRC_IP/$CRC_IP/g" haproxy.cfg
      sudo sed -i "s/SERVER_IP/$SERVER_IP/g" haproxy.cfg
      sudo systemctl start haproxy

블록체인 플랫폼 관리자 액세스

설치 후 생성된 Blockchain Platform Manager 호스트 이름에 대한 호스트 이름 확인을 구성합니다.
  1. 다음 명령을 실행하여 구성된 호스트 이름 목록을 가져옵니다.
    kubectl get virtualservice -n obp-cp -o json | jq -r .items[].spec.hosts[0]
  2. VM의 /etc/hosts 파일에 다음 항목을 추가하여 이러한 생성된 호스트 이름에 대한 호스트 이름 분석을 실행 중인 Red Hat OpenShift 클러스터의 IP 주소로 구성합니다.
    <IP_Address> controlplane.<parentDomainName> openldap.<parentDomainName> auth.<parentDomainName>
    예제에서 <IP_address>crc ip 명령의 출력입니다.
  3. crc VM 보안 목록에서 클라이언트 호스트 컴퓨터의 포트 443, 6443 및 80을 허용하는지 확인합니다.

이제 블록체인 플랫폼 관리자(제어 플레인 관리 도구)에 로그온하여 인스턴스를 생성할 수 있습니다.

인스턴스를 생성한 후에는 프로비저닝 후 필요 조건에 설명된 대로 DNS 전달을 구성해야 합니다.