在 Oracle Kubernetes Engine 上部署 Oracle Blockchain Platform Enterprise Edition
部署 Oracle Blockchain Platform Enterprise Edition 之前,您必須先執行 Kubernetes 叢集並安裝數個先決條件。
如需 Oracle Kubernetes 引擎的詳細資訊,請參閱 Oracle Cloud Infrastructure Container Engine for Kubernetes
在 OCI 上建立 Oracle Kubernetes 引擎叢集
開發 | 高可用性生產 | |
---|---|---|
最低版本 | v1.29.1 | v1.29.1 |
節點類型 | 受管理 | 受管理 |
節點影像 | Oracle Linux 8 | Oracle Linux 8 |
節點 CPU | 2 個或更高 OCPU | 4 個或更高 OCPU |
節點記憶體 | 24 GB 或更高版本 | 32 GB 或更高版本 |
節點數目 | 1 或更高的版本 | 3 或更高的版本 |
開機磁碟區大小 | 100GB 以上。50GB 的預設開機磁碟區可能不足以保存 Oracle Blockchain Platform Enterprise Edition 容器映像檔和鏈碼 Pod 的暫時資料,因為臨時儲存有限。 | 100GB 以上。50GB 的預設開機磁碟區可能不足以保存 Oracle Blockchain Platform Enterprise Edition 容器映像檔和鏈碼 Pod 的暫時資料,因為臨時儲存有限。 |
- 我們建議將
Private workers
用於 Kubernetes 工作節點,以提高安全性 - 確定工作者節點可以存取網際網路,這是在 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 端點的存取類型。選取公用 (可直接從網際網路存取)。系統會建立公用區域子網路,並且會在該子網路中代管 Kubernetes API 端點。Kubernetes API 端點會被指定一個公用 IP 位址以及一個專用 IP 位址。
- 節點類型:指定叢集中第一個節點集區中的工作節點類型。選取受管理。您必須負責管理節點集區中的工作節點。受管理節點會在您租用戶的運算執行處理 (裸機或虛擬機器) 上執行。由於您負責管理受管理節點,因此可以靈活地進行設定,以符合特定需求。您必須負責升級受管理節點上的 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 的預設開機磁碟區可能不足以保存 Oracle Blockchain Platform Enterprise Edition 映像檔和鏈碼 Pod 的暫時資料,因為臨時儲存有限。如果您打算部署數個鏈碼 (超過 5 個),建議您將開機磁碟區增加到大約 100 GB。
- 複查您選取的選項,然後按一下建立叢集。
- 確定您的工作節點和節點集區都在執行中:
- 在資源下,選取節點。對於每個工作節點,請確定節點已就緒、作用中,並且與 Kubernetes 叢集版本相符。
- 在資源下,選取節點集區。若為您的節點集區,請確定集區為作用中狀態,而且與 Kubernetes 叢集版本相同。
安裝 OCI 命令行介面
本節提供安裝 OCI 命令行介面的逐步解說範例。Oracle Blockchain Platform Enterprise Edition 使用 v3.42.0 進行測試。如需其他資訊,請參閱 OCI 命令行介面。
# 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
建立安裝啟動器系統
設定叢集的本機存取
請參閱下列章節以瞭解其他資訊:設定叢集的本機存取。
- 將您的 RSA 金鑰複製到安裝先決條件的 Oracle Linux 或 macOS 機器。您可以在 OCI 主控台中找到您的金鑰:
chmod 400 your_rsa.key
您可以視需要建立新的金鑰。請參閱 How to Generate an API Signing Key
。保護金鑰: - 在 OCI 主控台中,前往您的叢集並開啟叢集詳細資訊頁面。
- 選取存取叢集,然後選取本機存取。
- 建立包含 kubeconfig 檔案的目錄:
mkdir -p $HOME/.kube
- 複製透過 VCN 原生公用端點存取您叢集的 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 原生公用端點命令存取叢集的 kubeconfig。它將使用您剛建立的組態檔。
- 建立包含 kubeconfig 檔案的目錄:
- 確定您可以連線 Oracle Kubernetes 引擎叢集:
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
檔案的使用者區段中,新增一行來指定要在 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 和更新版本。您必須先完成安裝 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
:含有登錄的容器基本儲存區域路徑,其中會將影像推送 (推送) 至 (從)。範例:iad.ocir.io/obpee/bcs
imageRegistryConfiguration.username
:容器登錄登入使用者名稱imageReleaseVersion
- Oracle Blockchain Platform Enterprise Edition 發行版本controlPlaneStorage.storageClassName
:用於 PVC 的 Kubernetes 儲存類別 (PersistentVolumeClaim)。如果空白,則使用預設storageClass
controlPlaneStorage.size
:區塊鏈平台管理程式 (控制層) 服務的 PVC 大小parentDomainName
:用於區塊鏈平台管理程式服務的網域名稱。範例: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 認證伺服器的管理員使用者密碼。
- 輸入預設控制層管理員使用者密碼 (不會顯示密碼):這是用來設定區塊鏈平台管理程式管理員使用者的密碼。
- 如果
runme-input.yaml
中未提供StorageClass
,系統將會檢查是否已設定預設儲存類別,並詢問您是否要使用它。 - 確認 Istio 傳入閘道服務類型:預設為 LoadBalancer,也支援 NodePort。請注意,存取 NodePorts 時,必須使用 public worker 節點建立 Kubernetes 叢集。請參閱安裝 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:解析為針對