2-4. IBP 2.0 기타 설정

  1. 시스템 요구 사항
  2. IBM Blockchain Platform 구성에 필요한 각 콤포넌트들의 최소 시스템 요구사항은 아래와 같습니다.
    아래 요구사항은 콤포넌트 구동에 필요한 최소 권장사양이며 유스 케이스 및 시스템 환경에 따라 달라질 수 있습니다.

  3. 스토리지 설정
  4. IBM Blockchain Helm 차트는 동적 프로비저닝을 사용하여 작성하는 블록체인 컴포넌트 및 콘솔에서 사용할 스토리지를 프로비저닝합니다.
    콘솔을 배치하기 전에 콘솔 및 컴포넌트에 대한 충분한 양의 백업 스토리지가 있는 storageClass를 작성해야 합니다.
    구성 중에 작성한 storageClass의 이름을 제공해야 합니다.

  5. PersistentVolume 을 이용한 storageClass 생성 방법
  6. 1) 왼쪽 탭을 열고 ‘플랫폼’의 ‘스토리지’를 클릭한다.

    2) 오른쪽 상단의 ‘PersistentVolume작성’ 버튼을 클릭한다.

    3) 일반 탭에 입력값들을 작성한다. (스토리지 클래스이름은 추후 Blockchain console 생성시 필요한 값입니다.)

    4) 스토리지 유형을 선택합니다. 만약 nfs를 선택했다면 서버에 nfs를 설치하고 가동합니다.

    5) 레이블 탭 은 건너뛰고 매개변수 탭으로 이동합니다.

    6) nfs 설정시 ‘server’와 ‘path’ 값을 설정해야합니다.
    server는 내부IP주소 값을, path는 데이터를 저장할 실제 존재하는 path값을 설정합니다. 해당 폴더의 권한을 모두 허용으로 설정합니다.

  7. 네임 스페이스 확인
  8. IBM Blockchain Platform 배치용 사용자 정의 네임스페이스를 새로 작성해야 합니다. 네임스페이스는 필요한 PodSecurityPolicy를 사용해야 합니다. 예를 들어 개발, 스테이징 및 프로덕션 목적의 여러 환경을 작성하기 위해 블록체인 네트워크를 여러 개 작성하려는 경우 고유한 네임스페이스를 환경별로 작성해야 합니다. 네임스페이스당 하나의 Helm 차트만 배치할 수 있으므로 콘솔의 다중 인스턴스가 동일한 클러스터에서 실행되도록 하려면 별도의 네임스페이스를 사용해야 합니다.

  9. Proxy IP 주소 확인
  10. IBM Cloud Private 콘솔에서 CA의 클러스터 프록시 IP 주소 값을 검색하십시오. 참고: 프록시 IP에 액세스하려면 클러스터 관리자여야 합니다. IBM Cloud Private 클러스터에 로그인하십시오. 왼쪽 탐색 패널에서 플랫폼, 노드를 차례로 클릭하여 클러스터에 정의되어 있는 노드를 표시하십시오. 역할이 proxy인 노드를 클릭한 후 테이블에서 Host IP의 값을 복사하십시오. 중요: 이 값을 저장하십시오. 이 값은 Helm 차트의 Proxy IP 필드를 구성할 때 사용하게 됩니다.

  11. 이미지 보안 정책 작성
  12. 배치 시 클러스터 Docker 레지스트리에서 필수 이미지를 다운로드하도록 해주는 이미지 보안 정책을 작성하십시오.
    (ICP 3.2+에서 기본적으로 사용으로 설정되어 있으며 기본 설정값이 존재합니다.)

  13. 시크릿 생성
  14. 콘솔에 처음 로그인할 때 사용할 비밀번호를 작성한 후 IBM Cloud Private의 시크릿 오브젝트에 저장하십시오.

    1) 비밀번호를 작성하고 base64 형식으로 인코딩하십시오. 터미널에서 다음 명령을 실행하고 password 값을 사용하려는 값으로 대체하십시오. 이 명령의 출력을 저장하십시오.
    echo -n '' | base64

    예시)

    2) IBM Cloud Private 콘솔에 로그인하십시오. 왼쪽 탐색 패널에서 구성, 시크릿을 차례로 클릭하십시오. 시크릿 작성 단추를 클릭하여 새 시크릿 오브젝트를 작성할 수 있는 팝업 패널을 여십시오.

    3) 일반 탭에서 다음 필드를 완료하십시오.

    – 이름: 클러스터 내에서 시크릿에 고유한 이름을 지정하십시오. 이 이름은 콘솔을 배치할 때 사용됩니다. 이름은 모두 소문자여야 합니다.
    – 네임스페이스: 시크릿을 추가할 네임스페이스입니다. 콘솔을 배치할 namespace를 선택하십시오.
    – 유형: generic 값을 입력하십시오.

    4) 어노테이션 탭은 비워 두십시오.

    5) 데이터 탭에서 사용자 이름 및 비밀번호를 키 값 쌍으로 추가하십시오.


    – 첫 번째 이름 필드에 password를 입력하십시오.(사용자가 정의한 비밀번호가 아닌 반드시 ‘password’ 단어를 입력)
    – 첫 번째 값 필드에 1단계에서 생성된 echo -n ‘password’ | base64의 결과를 입력하십시오.(예시 : YWRtaW4=)
    – 작성을 클릭하여 새 시크릿 오브젝트를 작성하십시오.

  15. TLS 시크릿 작성(선택사항)
  16. – 본 장에서는 생략합니다.

  17. 구성 (IBM Blockchain console 생성)
  18. 1) IBM Cloud Private 콘솔에 로그인한 후 오른쪽 상단에서 카탈로그를 클릭하십시오.

    2) 왼쪽 탐색 패널에서 Blockchain을 클릭하여 레이블이 ibm-blockchain-platform-prod인 타일을 찾으십시오. 타일을 클릭하여 여십시오. Helm 차트 설치 및 구성에 대한 정보가 포함된 Readme 파일이 표시되어야 합니다.

    3) 오른쪽 하단에 있는 구성 단추를 클릭하십시오

    4) 구성 및 팟(Pod) 보안 매개변수의 값을 지정하고 라이센스 계약에 동의하십시오.

    5) 매개변수 섹션으로 이동하십시오.

    – Console administrator password secret name 항목에는
    사전에 만들었던 시크릿의 이름 값을 입력합니다.

    6) 콘솔은 빠른 시작 매개변수를 사용해서만 배치할 수 있습니다. 실험하거나 시작하는 경우 이 옵션을 사용하십시오.

    7) 모든 매개변수 섹션을 사용하여 콘솔에 사용되는 네트워크 액세스, 리소스 및 스토리지를 사용자 정의할 수 있습니다. 모든 매개변수 섹션은 보다 숙련된 Kubernetes 사용자에게만 권장됩니다.

    8) 설치버튼을 클릭합니다.

    9) 설치를 확인합니다
    왼쪽 메뉴 탭 > 워크로드 > 배치 탭으로 이동하여 준비, 사용가능이 모두 1로 올바르게 실행되었는지 확인합니다.

    10) IBP Console 접속 정보 확인합니다
    왼쪽 메뉴 탭 > 워크로드 > Helm 릴리즈 > 오른쪽 하단에서 IBP Console 접속 정보 확인

    11) IBP Console 접속 해보기
    IBP Console이 나오면 ID/Password를 입력하게 되어 있습니다.
    위에서 생성한 ID/Password(예시)admin/admin)을 입력하면 아래와 같이 데시보드 형태로 표현된 IBP 2.0 메인 화면이 나타납니다.

2-5. IBP 2.0 Component 전용 PV/PVC 생성

스토리지 종류에 따라 동적으로 프로비저닝이 가능한(gluster fs 등) 경우 IBP 대시보드에서 콤포넌트들을 만들 때(pod deployment) StorageClass가 자동으로 만들어질 수 있습니다.

이는 IBP 1.x 버전과 2.0의 차이점 이기도 합니다.

본 가이드에서는 사용자 지정의 PV/PVC를 별도로 생성하여 IBP 콤포넌트들과 바인딩하는 방법에 대해 소개합니다.

CA(인증기관), Orderer(순서 지정자), Peer(피어) 등의 노드 컴포넌트를 생성하기 위해서 콤포넌트들을 저장하기 위한 Volume이(Storage Class) 필요합니다.

* Volume 생성을 위한 순서는 아래와 같습니다
1. PV 생성 (storageClass name 기억)
2. NFS 설정
3. PVC 생성 (앞서 만든 PV의 storageClass를 사용)
4. PVC 기타 생성(나머지 콤포넌트들 PVC 생성)

  1. PV 생성
  2. – ICP 대시보드 > 왼쪽 탭 메뉴 클릭 > 플랫폼 > 스토리지 > PersistentVolumn
    – PersistentVolume 작성 클릭
    – 일반 탭 작성


    : 스토리지 클래스 이름을 기억해둡니다.
    : 스토리지 용량은 정책에 맞게 설정합니다(여기서는 기본값 20G로 설정)
    : 액세스 모드 : 여러번 읽기 쓰기
    : 재확보 정책 : 보유
    : 스토리지 유형 : nfs

    – 매개변수 탭 작성


    NFS 유형의 경우 ‘server’와 ‘path’키 추가

    : ‘server’ : 내부 IP 값 입력
    : ‘path’ : 데이터를 저장할 서버의 디렉토리 값 입력
    (디렉토리의 권한 또한 모두 사용으로 설정해줍니다(chmod 777))

  3. NFS 설정
  4. NFS설정시 등록한 디렉토리를 exports파일에 등록 시킵니다.
    PV로 사용하는 디렉토리를 모두 등록하거나 상위 디렉토리를 아래와 같이 설정 합니다.

    vi /etc/exports


    : vi 편집을 이용하여 “<디렉토리 명> *(rw,no_root_squash,async)” 텍스트를 입력 후 저장합니다.
    – 다음 명령어를 입력하여 nfs 서버를 restart 합니다.


    /etc/init.d/nfs-kernel-server restart

    – 만약 위의 명령어가 실행되지 않는다면 아래 명령을 먼저 실행 후 다시 시도합니다.


    service rpcbind start

  5. PVC 설정(중요)
  6. – ICP 대시보드 > 왼쪽 탭 메뉴 클릭 > 플랫폼 > 스토리지 > PersistentVolumnClaim
    동적 프로비저닝이 아닌 경우 PVC와 블록체인 콤포넌트들간 바인딩이 되어야 합니다.

    특히 pvc를 만들 때 [블록체인 콤포넌트 이름-pvc] 형태로 만들게 되면 IBP 콘솔에서 만든 콤포넌트 이름과 일치하는 PVC가 자동으로 바인딩 됩니다.

    예를 들어 인증을 담당하는 CA의 이름을 ca0이라고 만들 거시라면 pvc의 이름은 아래와 같이 ca0-pvc로 지을 수 있습니다. 이는 하나의 옵션으로 k8s 오퍼레이션 등을 통해 다른 방법으로 바인딩 할 수 있습니다.

    – PVC의 이름 규칙은 반드시 ‘<이름>-pvc’ 형태를 따르고 <이름>에 해당하는 부분만 자유롭게 설정해줍니다. ex) ca0-pvc
    – 앞서 만든 PV의 스토리지 클래스 이름을 동일하게 설정해줍니다.
    – 액세스 모드는 앞선 PV와 맞춰줍니다.
    – PVC가 생성되면 아래 사진과 같이 앞서 만든 PV와 Bound상태가 되어야 올바르게 작성된 것입니다.(Bound가 안되고 Pending 상태가 지속시 삭제 후 다시 작성을 시도해 봅니다.)

  7. PVC 기타 생성
  8. 5번 챕터에서 설명하겠지만 만약 아래와 같이 블록체인 콤포넌트들을 배치한다고 가정해봅시다
    – CA : 2개(peerOrg1 / ordererOrg)
    – Peer : 1개
    – Orderer : 1개

    그렇다면 아래와 같은 모습으로 PVC가 생성되어야 합니다.

    만약 미리 생성된 pvc와 블록체인 콤포넌트들을 바인딩 한다면 peer/orderer의 경우 아래 내용에 대해 주의해서 pvc를 생성해야 합니다(위 사진을 참조해주세요)
    1. Peer의 PVC는 반드시 2개를 생성해야합니다.
    – <이름>-pvc
    – <이름>-couchdb-pvc
    2. Orderer의 PVC는 숫자를 붙여 생성합니다.
    – 실제 컴포넌트에서 만드는 순서 지정자 서비스의 이름이 ‘orderer’라면 사전에 생성하는 pvc의 이름은 ‘orderer1’처럼 개수에 맞게 숫자를 붙여 생성해야합니다.

다음 포스팅에서 IBP 2.0 블록체인 네트워크 구축에 대한 내용을 진행하겠습니다.