在 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 引擎集群
开发 | 具有高可用性的生产 | |
---|---|---|
最低版本 | 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 的临时数据,因为临时存储有限。 |
- 我们建议对 Kubernetes worker 节点使用
Private workers
以增加安全性 - 确保 worker 节点可以访问 Internet,这是在 Oracle Blockchain Platform 实例上安装链代码所必需的。
本部分将介绍如何在 OCI 上创建 Oracle Kubernetes 引擎示例。有关其他选项和详细信息,请参阅使用控制台工作流创建 Kubernetes 集群
- 登录到您的 OCI 租户,选择您的区域和区间。
- 打开导航菜单,然后单击开发人员服务。在 Containers & Artifacts 下,单击 Kubernetes Clusters (OKE) 。
- 在 Cluster List(集群列表)页面上,单击 Create cluster(创建集群)。
- 在 Create cluster(创建集群)对话框中,选择 Quick create(快速创建)并单击 Submit(提交)。
- 在创建集群页上,只需接受新集群的默认配置详细信息,或者按如下方式指定替代方案:
- 名称:新集群的名称。接受默认名称或输入您选择的名称。
- 区间:在其中创建新集群和关联网络资源的区间。
- Kubernetes 版本:要在集群的控制层节点和 worker 节点上运行的 Kubernetes 版本。使用 Oracle Blockchain Platform Enterprise Edition 测试了 v1.29.1。
-
Kubernetes API 端点:对集群的 Kubernetes API 端点的访问类型。选择公共(可直接从 Internet 访问)。创建公共区域子网,并且 Kubernetes API 端点托管在该子网中。Kubernetes API 端点分配有一个公共 IP 地址和一个专用 IP 地址。
- 节点类型:指定集群中第一个节点池中的 worker 节点类型。选择已管理。您负责管理节点池中的 worker 节点。托管节点在租户中的计算实例(裸金属或虚拟机)上运行。在您负责管理托管节点时,您可以灵活地进行配置以满足特定需求。您负责升级托管节点上的 Kubernetes 以及管理集群容量。
- Kubernetes worker 节点:对集群的 worker 节点的访问类型。选择专用(可通过其他 VCN 子网访问)。创建专用区域子网来托管 worker 节点。为 worker 节点分配一个专用 IP 地址。
- 节点配置:要用于节点池中每个节点的配置。配置确定分配给每个节点的 CPU 数量和内存量。该列表仅显示您的租户中 Kubernetes 容器引擎支持的配置。Oracle Blockchain Platform Enterprise Edition 已通过 VM.Standard.E3 进行测试。Flex 和 VM.Standard.E4。弹性配置。
- 映像:要在托管节点池中的 worker 节点上使用的映像。映像是虚拟硬盘驱动器模板,用于确定受管理节点池的操作系统和其他软件。Oracle Blockchain Platform Enterprise Edition 在 Oracle Linux 8 中进行了测试。
- 节点计数:要在节点池中创建的 worker 节点数,置于为集群创建的区域子网中。选择 3 或更多。
- 引导卷:为 worker 节点的引导卷配置大小和加密选项。默认的 50GB 引导卷可能不足以存储 Oracle Blockchain Platform Enterprise Edition 映像和链代码 pod 的临时数据,因为临时存储有限。如果您打算部署多个链代码(超过 5 个),我们建议将引导卷增加到大约 100 GB。
- 查看您选择的选项,然后单击创建集群。
- 确保您的 worker 节点和节点池正在运行:
- 在资源下,选择节点。对于每个 worker 节点,确保该节点已准备就绪、处于活动状态并且与 Kubernetes 集群版本匹配。
- 在资源下,选择节点池。对于节点池,请确保池处于活动状态并且与 Kubernetes 集群版本匹配。
安装 OCI Command Line Interface
本节提供了安装 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
创建安装启动器系统
为群集设置本地访问
有关其他信息,请参见以下内容: Setting Up Local Access to Clusters 。
- 将 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
。如果设置正确,该命令将输出集群中的所有 worker 节点。 - 限制对配置文件的访问:
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 版及更高版本。必须先完成 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
:包含注册表的容器基本资料档案库路径,其中映像应推送(拉入)到(从)。示例:iad.ocir.io/obpee/bcs
imageRegistryConfiguration.username
:容器注册表登录用户名imageReleaseVersion
— Oracle Blockchain Platform Enterprise Edition 发行版controlPlaneStorage.storageClassName
:要用于 PVC 的 Kubernetes 存储类 (PersistentVolumeClaim )。如果为空,则使用缺省storageClass
controlPlaneStorage.size
:Blockchain Platform Manager (control plane) 服务的 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 验证服务器设置管理员用户的口令。
- 输入默认控制层管理员用户密码(不会显示密码):这用于设置 Blockchain Platform Manager 管理员用户的密码。
- 如果
runme-input.yaml
中未提供StorageClass
,系统将检查是否设置了默认存储类,并询问您是否要使用它。 - 确认 Istio 入站网关服务类型:LoadBalancer 为默认值,还支持 NodePort。请注意,访问 NodePorts 需要使用公共 worker 节点创建 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:解析为 worker 节点的 IP 地址
- LoadBalancer:解析为