Oracle Kubernetes Engine에 Oracle Blockchain Platform Enterprise Edition 배포
Oracle Blockchain Platform Enterprise Edition을 배포하기 전에 Kubernetes 클러스터가 실행되어 여러 사전 요구사항이 설치되어 있어야 합니다.
Oracle Kubernetes Engine에 대한 자세한 내용은 Oracle Cloud Infrastructure Container Engine for Kubernetes를 참조하십시오.
OCI에서 Oracle Kubernetes Engine 클러스터 생성
개발 | 고가용성 운영 | |
---|---|---|
최소 버전 | v1.29.1 | v1.29.1 |
노드 유형 | 관리 | 관리 |
노드 이미지 | Oracle Linux 8 | Oracle Linux 8 |
노드 CPU | OCPU 2개 이상 | OCPU 4개 이상 |
노드 메모리 | 24GB 이상 | 32GB 이상 |
노드 수 | 1 이상으로 설정 | 3 이상으로 설정 |
부트 볼륨 크기 | 100GB 이상 50GB의 기본 부트 볼륨은 제한된 임시 스토리지로 인해 체인코드 Pod에 대한 Oracle Blockchain Platform Enterprise Edition 컨테이너 이미지 및 임시 데이터를 보유하기에 충분하지 않을 수 있습니다. | 100GB 이상 50GB의 기본 부트 볼륨은 제한된 임시 스토리지로 인해 체인코드 Pod에 대한 Oracle Blockchain Platform Enterprise Edition 컨테이너 이미지 및 임시 데이터를 보유하기에 충분하지 않을 수 있습니다. |
- 추가 보안을 위해 Kubernetes 작업자 노드에
Private workers
를 사용하는 것이 좋습니다. - 워커 노드가 Oracle Blockchain Platform 인스턴스에 체인코드를 설치하는 데 필요한 인터넷에 액세스할 수 있는지 확인합니다.
이 섹션에서는 OCI에서 Oracle Kubernetes Engine 예제를 생성하는 과정을 안내합니다. 추가 옵션 및 자세한 내용은 콘솔 워크플로우를 사용하여 Kubernetes 클러스터 생성을 참조하십시오.
- 지역 및 컴파트먼트를 선택하여 OCI 테넌시에 로그인합니다.
- 탐색 메뉴를 열고 개발자 서비스를 누릅니다. 컨테이너 및 아티팩트에서 Kubernetes 클러스터(OKE)를 누릅니다.
- 클러스터 목록 페이지에서 클러스터 생성을 누릅니다.
- 클러스터 생성 대화상자에서 빠른 생성을 선택하고 제출을 누릅니다.
- 클러스터 생성 페이지에서 새 클러스터에 대한 기본 구성 세부정보를 그대로 사용하거나 다음과 같이 대체 항목을 지정합니다.
- 이름: 새 클러스터 이름입니다. 기본 이름을 사용하거나 선택한 이름을 입력합니다.
- 구획: 새 클러스터 및 연관된 네트워크 리소스를 생성할 컴파트먼트입니다.
- Kubernetes 버전: 클러스터의 제어 플레인 노드 및 작업자 노드에서 실행할 Kubernetes의 버전입니다. v1.29.1은 Oracle Blockchain Platform Enterprise Edition으로 테스트되었습니다.
-
Kubernetes API 끝점: 클러스터의 Kubernetes API 끝점에 대한 액세스 유형입니다. Public(인터넷에서 직접 액세스 가능)을 선택합니다. 공용 지역별 서브넷이 생성되고 Kubernetes API 엔드포인트가 해당 서브넷에서 호스팅됩니다. Kubernetes API 끝점에는 퍼블릭 IP 주소와 프라이빗 IP 주소가 지정됩니다.
- 노드 유형: 클러스터의 첫번째 노드 풀에 있는 워커 노드의 유형을 지정합니다. Managed를 선택합니다. 노드 풀에서 작업자 노드를 관리할 책임이 있습니다. 관리 노드는 테넌시의 컴퓨트 인스턴스(베어메탈 또는 가상 머신)에서 실행됩니다. 관리형 노드를 관리할 책임이 있으므로 특정 요구 사항에 맞게 유연하게 구성할 수 있습니다. 사용자는 관리형 노드에서 Kubernetes를 업그레이드하고 클러스터 용량을 관리할 책임이 있습니다.
- Kubernetes 작업자 노드: 클러스터의 작업자 노드에 대한 액세스 유형입니다. 프라이빗(다른 VCN 서브넷을 통해 액세스 가능)을 선택합니다. 작업자 노드를 호스트하기 위한 전용 지역 서브넷이 생성됩니다. 작업자 노드에는 전용 IP 주소가 지정됩니다.
- 노드 구성: 노드 풀의 각 노드에 사용할 구성입니다. 구성에 따라 각 노드에 할당되는 CPU 수 및 메모리 양이 결정됩니다. 목록에는 Container Engine for Kubernetes가 지원하는 테넌시에서 사용 가능한 구성만 표시됩니다. Oracle Blockchain Platform Enterprise Edition은 VM.Standard.E3에서 테스트되었습니다. Flex 및 VM.Standard.E4가변 구성입니다.
- 이미지: 관리 대상 노드 풀의 워커 노드에서 사용할 이미지입니다. 이미지는 관리 대상 노드 풀에 대한 운영체제 및 기타 소프트웨어를 결정하는 가상 하드 드라이브의 템플리트입니다. Oracle Blockchain Platform Enterprise Edition은 Oracle Linux 8에서 테스트되었습니다.
- 노드 수: 클러스터에 대해 생성된 지역별 서브넷에 배치된 노드 풀에 생성할 워커 노드 수입니다. 3 이상을 선택합니다.
- 부트 볼륨: 워커 노드의 부트 볼륨에 대한 크기 및 암호화 옵션을 구성합니다. 50GB의 기본 부트 볼륨은 제한된 임시 스토리지로 인해 체인코드 Pod에 대한 Oracle Blockchain Platform Enterprise Edition 이미지 및 임시 데이터를 보유하기에 충분하지 않을 수 있습니다. 여러 체인코드(5개 이상)를 배포하려는 경우 부트 볼륨을 약 100GB로 늘리는 것이 좋습니다.
- 선택한 옵션을 검토하고 클러스터 생성을 누릅니다.
- 작업자 노드 및 노드 풀이 실행 중인지 확인합니다.
- 리소스에서 노드를 선택합니다. 각 워커 노드에 대해 노드가 준비되어 있고 활성 상태이며 Kubernetes 클러스터 버전과 일치하는지 확인합니다.
- 리소스에서 노드 풀을 선택합니다. 노드 풀의 경우 풀이 활성 상태이고 Kubernetes 클러스터 버전과 일치하는지 확인합니다.
OCI 명령행 인터페이스 설치
이 섹션에서는 OCI 명령행 인터페이스 설치에 대한 예제 연습을 제공합니다. Oracle Blockchain Platform Enterprise Edition은 v3.42.0에서 테스트되었습니다. 자세한 내용은 OCI Command Line Interface를 참조하십시오.
# Install:
sudo dnf -y install oraclelinux-developer-release-el8
sudo dnf -y install python36-oci-cli
# Verify:
$ oci --version
3.42.0
# Install:
brew update && brew install oci-cli
## If this fails with "Error: python@3.12: the bottle needs the Apple Command Line Tools to be installed.", run below command:
xcode-select --install
# Verify:
oci --version
3.43.1
설치 개시자 시스템 만들기
클러스터에 대한 로컬 액세스 설정
자세한 내용은 클러스터에 대한 로컬 액세스 설정을 참조하십시오.
- 필수 조건을 설치한 Oracle Linux 또는 macOS 시스템에 RSA 키를 복사합니다. 키는 OCI 콘솔에서 찾을 수 있습니다. 예:
chmod 400 your_rsa.key
필요한 경우 새 키를 생성할 수 있습니다. How to Generate an API Signing Key을 참조하십시오.
. 키 보안: - OCI 콘솔에서 클러스터로 이동하여 클러스터 세부정보 페이지를 엽니다.
- 클러스터 액세스, 로컬 액세스 순으로 선택합니다.
- kubeconfig 파일을 포함할 디렉토리를 생성합니다.
mkdir -p $HOME/.kube
- VCN-Native public endpoint 명령을 통해 클러스터에 대한 kubeconfig에 액세스하려면 다음과 같이 하십시오.
- Linux 또는 macOS 시스템에서 명령을 실행합니다. 구성 파일이 아직 없으므로 다음을 입력하라는 메시지가 표시됩니다.
- 새 구성 파일을 생성하시겠습니까? [Y/n]: y
- 브라우저를 통해 로그인하여 구성 파일을 생성하시겠습니까? [Y/n]: n
- 구성 위치 입력 [/home/opc/.oci/config]: 위치 선택
- 사용자 OCID 입력: OCI 콘솔에서 찾을 수 있음
- 테넌시 OCID 입력: OCI 콘솔에서 찾을 수 있음
- 인덱스 또는 이름으로 영역 입력: 테넌시 지역에 해당하는 번호(예: 12)를 입력합니다.
- 새 API 서명 RSA 키 쌍을 생성하겠습니까? 거부하면 기존 키에 대한 경로를 제공해야 합니다. [Y/n]: n
- API 서명 프라이빗 키 파일의 위치 입력: 위에서 생성된 RSA 키 파일의 위치
- OCI 구성 파일이 생성되면 복사된 VCN-Native 퍼블릭 끝점 명령을 통해 클러스터의 kubeconfig에 액세스하려면 복사된 kubeconfig를 재실행해야 합니다. 방금 만든 구성 파일이 사용됩니다.
- kubeconfig 파일을 포함할 디렉토리를 생성합니다.
- Oracle Kubernetes Engine 클러스터
kubectl get nodes
에 연결할 수 있는지 확인합니다. 설정이 올바르면 명령이 클러스터의 모든 워커 노드를 출력합니다. - 구성 파일에 대한 액세스 제한:
chmod 600 $HOME/.kube/config
- KUBECONFIG 환경 변수를 이 클러스터에 대한 파일로 설정합니다.
export KUBECONFIG=$HOME/.kube/config
주:
OCI 구성 파일에 다음과 유사한 프로파일이 여러 개 있는 경우:[OCI_PROFILE_A]
fingerprint = .............
key_file = .............
tenancy = .............
region = .............
user = .............
[OCI_PROFILE_B]
fingerprint = .............
key_file = .............
tenancy = .............
region = .............
user = .............
kubeconfig
파일을 사용자정의해야 합니다. 그렇지 않으면 Oracle Blockchain Platform Enterprise Edition을 설치하려고 하면 권한 부여 오류가 발생합니다. kubeconfig
파일의 users 섹션에서 행을 추가하여 OCI 구성 파일 내에서 사용할 유저를 지정합니다. 예를 들어, 다음과 같습니다.users:
- name: user-c3xxxxxq
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
args:
- ce
- cluster
- generate-token
- --cluster-id
- ocid1.cluster.oc1.eu-frankfurt-1.aaaaaaxxxxxxxxxyyyyyy
- --region
- eu-frankfurt-1
- --profile
- <OCI_PROFILE_NAME>
command: oci
env: []
interactiveMode: IfAvailable
provideClusterInfo: false
여기서 <OCI_PROFILE_NAME>
는 OCI_PROFILE_A
입니다.Istio 설치 완료
Oracle Blockchain Platform Enterprise Edition은 버전 1.20.2 이상을 지원합니다. 다음을 완료하기 전에 Install Istio의 단계를 완료해야 합니다.
# Install
istioctl install --set profile=default --set values.pilot.env.ENABLE_TLS_ON_SIDECAR_INGRESS=true --set components.cni.enabled=true --set values.cni.repair.deletePods="true"
## Enter "y" when prompted for "Proceed? (y/N)"
# Verify:
$ istioctl version
client version: 1.22.1
control plane version: 1.22.1
data plane version: 1.22.1 (1 proxies)
사용자에 대한 인증 토큰 설정
OCI 레지스트리에서 이미지를 풀링할 수 있도록 관리 사용자에 대한 인증 토큰(Oracle Cloud Infrastructure Registry에 로그인을 사용으로 설정하는 인증 토큰 생성)을 생성합니다.
Oracle Blockchain Platform Enterprise Edition 설치
- Oracle Blockchain Platform Enterprise Edition 페이지에서 다운로드를 누르고 단계에 따라 Oracle Blockchain Platform Enterprise Edition 패키지를 다운로드합니다. 패키지의 압축을 풀고 다운로드한 아카이브 파일에서 패키지의 압축을 풉니다.
tar -xzf <distribution-package-file> # example tar -xzf obpee_package_24.1.3-20240723083137.tgz
- 필요한 값으로
runme-input.yaml
를 업데이트합니다. 다음은 참조로 사용할 수 있는runme-input.yaml
의 예입니다.
설명:imageRegistryConfiguration: registry: <container_registry_name> imageTagPrefix: <container-image-repository-prefix> username: <container-registry-username> imageReleaseVersion: 24.1.3-20240723083137 # storageClassName should be set to create a dynamic persistent volume. If empty, default storageClass is used. controlPlaneStorage: storageClassName: # Example 500Mi, 5Gi size: 4Gi 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
: 레지스트리가 포함된 컨테이너 기본 저장소 경로로, 이미지를 (풀링)하여 (from)으로 푸시합니다. 예:iad.ocir.io/obpee/bcs
imageRegistryConfiguration.username
: 컨테이너 레지스트리 로그인 사용자 이름imageReleaseVersion
- Oracle Blockchain Platform Enterprise Edition 릴리스 버전controlPlaneStorage.storageClassName
: PVC에 사용할 Kubernetes 스토리지 클래스(PersistentVolumeClaim) 비어 있으면 기본storageClass
가 사용됩니다.controlPlaneStorage.size
: 블록체인 플랫폼 관리자(제어 플레인) 서비스를 위한 PVC 크기parentDomainName
: Blockchain Platform Manager 서비스에 사용할 도메인 이름입니다. 예:example.com
imagePullTimeout
: Oracle Blockchain Platform Enterprise Edition 설치 중 이미지 풀 대기 시간 초과(초)입니다. 기본값은 1800초입니다.
- 프롬프트에 따라
runme_oke.sh [--publish-images]
를 실행합니다.주:
선택적--publish-images
명령은runme-input.yaml
에 지정된 세부정보를 사용하여 컨테이너를 컨테이너 이미지 레지스트리(예: Oracle Cloud Infrastructure Registry)로 업로드합니다.- 기본 LDAP 관리자 비밀번호(비밀번호가 표시되지 않음): 내장 LDAP 인증 서버에 대한 관리자 사용자의 비밀번호를 설정하는 데 사용됩니다.
- 기본 제어 플레인 관리 사용자 비밀번호를 입력합니다(비밀번호가 표시되지 않음). 이 비밀번호는 Blockchain Platform Manager 관리 사용자의 비밀번호를 설정하는 데 사용됩니다.
StorageClass
가runme-input.yaml
에 제공되지 않은 경우 시스템에서 기본 스토리지 클래스가 설정되었는지 확인하고 사용할지 여부를 묻습니다.- Istio 수신 게이트웨이 서비스 유형 확인: LoadBalancer가 기본값이고 NodePort도 지원됩니다. NodePorts에 액세스하려면 Kubernetes 클러스터가 공용 작업자 노드로 생성되어야 합니다. Install Istio를 참조하십시오.
- Istio 수신 게이트웨이 서비스 https 포트를 확인합니다. 기본값은 LoadBalancer 서비스 유형에 대해 443입니다.
- 레지스트리 <registry name> 비밀번호 입력: 이미지 다운로드를 위해
runme-input.yaml
에 지정된 대로 컨테이너 이미지 레지스트리에 접속하는 데 사용됩니다.
- 스크립트 출력의 일부로
Istio-ingressgateway
URL이 나열됩니다. 나열된 IP 주소를 기록합니다. - 설치 스크립트는
obp-cp
이름 공간 아래에 다음 서비스를 계속 설치합니다.control-plane
openldap
obp-auth-server
obp-operator
hlf-operator
블록체인 플랫폼 관리자 액세스
- 다음 명령을 실행하여 구성된 호스트 이름 목록을 가져옵니다.
kubectl get virtualservice -n obp-cp -o json | jq -r .items[].spec.hosts[0]
istio-ingressgateway
에 대해 선택한 서비스 유형에 따라 다음과 같이 생성된 호스트 이름을 IPv4 주소로 분석해야 합니다.- LoadBalancer:
istio-ingressgateway
서비스에 대해 생성된 외부 IP 주소로 분석합니다. - NodePort: 워커 노드의 IP 주소로 분석
- LoadBalancer: