在本地 Red Hat OpenShift 上部署 Oracle Blockchain Platform Enterprise Edition

您可以在 Red Hat OpenShift Local 上安装 Oracle Blockchain Platform Enterprise Edition 以进行测试和内部开发。生产环境不支持此功能。

Red Hat OpenShift Local 设计为在本地计算机上运行,以简化设置和测试,并使用开发基于容器的应用程序所需的所有工具在本地模拟云开发环境。它以前称为 Red Hat CodeReady 容器。

有关 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 作为操作系统进行了测试。还可以使用 Linux 的其他发行版,例如 Oracle Linux 或 Red Hat Enterprise Linux。

注意:

Install Prerequisite Software 任务中安装 Istio 时,请安装版本 1.22.1,而不是最新版本。

安装 Red Hat OpenShift Local

完成以下步骤以下载并安装 Red Hat OpenShift Local。有关更多信息,请参见 Installing CodeReady Containers

  1. 导航到 Red Hat OpenShift Local ,然后单击 Install OpenShift on your laptop 。您将重定向到登录页面,您可以在该页面中输入 Red Hat 凭据或创建账户(如果尚没有)。
  2. 登录后,单击集群,然后单击本地选项卡。
  3. 在 "Local"(本地)页面上,依次单击 Download OpenShift LocalDownload pull secret
  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 Load 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 根分区空间小于 150 GB,请完成以下步骤。

  1. 确保引导磁盘、根文件系统或逻辑卷管理器 (logical volume manager,LVM) 具有至少 150 GB 的可用空间。
  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 本地参数

运行以下命令将 OpenShift Local 配置为使用 12 个 CPU 核心、30 GB 内存和 100 GB 磁盘空间。

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

下载并安装 OpenShift 客户机

运行以下命令下载并安装 oc(OpenShift 客户机软件)。

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 配置文件。在运行以下命令之前,您必须已完成安装 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.5 GB。
  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 是区块链平台管理器(控制平面)服务的 PVC 大小。
    • parentDomainName 是用于区块链平台管理器服务的域名。示例:example.com
    • imagePullTimeoutOracle Blockchain Platform Enterprise Edition 安装过程中的映像提取等待超时(秒)。默认值为 1800 秒。
  6. 打开一个新的终端窗口,然后转到分发包目录。按照脚本输出的提示执行这些步骤。
    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. 完成以下步骤以从客户端计算机访问区块链平台管理器。以下步骤使用 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。

您现在可以登录 Blockchain Platform Manager(控制层管理工具)来创建实例。

创建实例后,必须按预配后要求中所述配置 DNS 转发。