Prerequisites

This topic contains the hardware and software prerequisites for installing Oracle Blockchain Platform Enterprise Edition.

Kubernetes Platforms

The following platforms are supported:
  • Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) v1.29.1 or later
  • minikube v1.33.1 or later - test environment only, not for production

You must have a domain name that can be resolved by a DNS server.

Other Prerequisite Software

Additionally you'll need the following tools to assist with managing your Kubernetes platform and installing your Oracle Blockchain Platform container:
  • kubectl version 1.29.3 or later - Kubernetes' command line tool
  • Helm version 3.12.3 or later - a Kubernetes package manager
  • Tools to manage your containers and pods - choose one of the following:
    • Podman version 4.9.4-rhel or later
    • Docker version 24.0.6 or later
  • yq version 4.42.1 - a command line YAML processor
  • jq v1.7.1 or later - a command line JSON processor
  • Istio version 1.20.2 or later and istioctl - security and traffic management tool for deployments, and its command line tool

Web Browsers

All administrative tools that are included with Oracle Blockchain Platform can be accessed by using the following browsers:
  • Mozilla Firefox
  • Microsoft Edge
  • Google Chrome
  • Apple Safari

Install Prerequisite Software

This section provides an example walkthrough of installing the tested versions of the prerequisites. Refer to each product's documentation for additional information and any required modifications to the install instructions.

Install kubectl

The kubectl version should always be within one minor version difference of your cluster. For example if your Oracle Kubernetes Engine cluster version is v1.29.1, you can use kubectl v1.29.3. For additional information, see Kubernetes Install Tools.

# Download:
    curl -LO https://dl.k8s.io/release/v1.29.3/bin/linux/amd64/kubectl
 
# Setup:
    # Make binary file executable:
    chmod +x ./kubectl
    # Move the downloaded binary to /usr/local/bin or /usr/bin and make "root" as the owner of this binary
    sudo mv ./kubectl /usr/bin/kubectl
    sudo chown root: /usr/bin/kubectl
 
# Verify:
    $ kubectl version --client --output=yaml
    clientVersion:
        buildDate: "2024-03-15T00:08:19Z"
        compiler: gc
        gitCommit: 6813625b7cd706db5bc7388921be03071e1a492d
        gitTreeState: clean
        gitVersion: v1.29.3
        goVersion: go1.21.8
        major: "1"
        minor: "29"
        platform: linux/amd64
    kustomizeVersion: v5.0.4-0.20230601165947-6ce0bf390ce3

Install Helm

Oracle Blockchain Platform Enterprise Edition was tested with Helm v3.12.3. For additional information, see Installing Helm.

#Download install script:
    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
 
# Provide execute permission and execute:
    chmod +x get_helm.sh
    ./get_helm.sh
 
# Verify:"
    $ helm version
    version.BuildInfo{Version:"v3.12.3", GitCommit:"3a31588ad33fe3b89af5a2a54ee1d25bfe6eaa5e", GitTreeState:"clean", GoVersion:"go1.20.7"}

Install Podman

Oracle Blockchain Platform Enterprise Edition was tested with Podman v4.9.4-rhel. For additional information, see Podman Installation Instructions.

# Update the package list:
    sudo yum update
 
# Install podman:
    sudo yum install podman -y
 
# create docker alias to run podman commands
    sudo yum install -y podman-docker
 
#Verify:
    $ podman --version
        podman version 4.9.4-rhel
    $ docker --version
        podman version 4.9.4-rhel

Install yq

Oracle Blockchain Platform Enterprise Edition was tested with yq v4.42.1. For additional information, see yq README.

# Download:
    wget https://github.com/mikefarah/yq/releases/download/v4.42.1/yq_linux_amd64.tar.gz -O - | tar xz
 
# Setup:
    sudo mv yq_linux_amd64 /usr/bin/yq
    sudo chmod +x /usr/bin/yq
 
# Verify:
    yq --version

Install jq

Oracle Blockchain Platform Enterprise Edition was tested with jq v1.7.1. For additional information, see Download jq.

# Install:
    sudo dnf install jq

# Verify:
   jq --version
   jq-1.7.1

Install kubectl

The kubectl version should always be within one minor version difference of your cluster. For example if your Oracle Kubernetes Engine cluster version is v1.29.1, you can use kubectl v1.29.3. For additional information, see Kubernetes Install Tools.

curl -LO https://dl.k8s.io/release/v1.29.3/bin/darwin/amd64/kubectl

# Setup:
    # Make binary file executable:
    chmod +x ./kubectl
    # Move the downloaded binary to /usr/local/bin and make "root" as the owner of this binary
    sudo mv ./kubectl /usr/local/bin/kubectl
    sudo chown root: /usr/local/bin/kubectl
 
# Verify:
    $ kubectl version --client --output=yaml

    clientVersion:
        buildDate: "2024-03-15T00:08:19Z"
        compiler: gc
        gitCommit: 6813625b7cd706db5bc7388921be03071e1a492d
        gitTreeState: clean
        gitVersion: v1.29.3
        goVersion: go1.21.8
        major: "1"
        minor: "29"
        platform: darwin/amd64
    kustomizeVersion: v5.0.4-0.20230601165947-6ce0bf390ce3

Install Helm

Oracle Blockchain Platform Enterprise Edition was tested with Helm v3.12.3. For additional information, see Installing Helm.

#Download install script:
    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
 
# Provide execute permission and execute:
    chmod +x get_helm.sh
    ./get_helm.sh
 
# Verify:"
    $ helm version
    version.BuildInfo{Version:"v3.12.3", GitCommit:"3a31588ad33fe3b89af5a2a54ee1d25bfe6eaa5e", GitTreeState:"clean", GoVersion:"go1.20.7"}

Install Podman

Oracle Blockchain Platform Enterprise Edition was tested with Podman v4.9.4-rhel. For additional information, see Podman Installation Instructions.

# Install:
     brew install podman

# After installing, you need to create and start your first Podman machine:

     podman machine init
     podman machine start

# Verify:
     podman info
     host: arch: amd64 buildahVersion: 1.36.0 cgroupControllers: - cpu - io - memory - pids cgroupManager: systemd

# Make docker commands available via podman by creating a symlink:
     sudo ln -s /usr/local/bin/podman /usr/local/bin/docker 

Install yq

Oracle Blockchain Platform Enterprise Edition was tested with yq v4.44.1. For additional information, see yq README.

# Install:
    brew install yq

# Verify:
   yq--version
   yq (https://github.com/mikefarah/yq/) version v4.44.1

Install jq

Oracle Blockchain Platform Enterprise Edition was tested with jq v1.7.1. For additional information, see Download jq.

# Install:
    brew install jq

# Verify:
   jq --version
   jq-1.7.1

Install Istio

Istio extends Kubernetes to provide traffic management and security to complex deployments. Oracle Blockchain Platform Enterprise Edition uses Istio as the ingress gateway service to accept incoming traffic into various services.

We recommend installing Istio and istioctl (Istio configuration command line utility). Istio version 1.20.2 and later is supported.

To download Istio:

# Download istioctl tool
   curl -L https://istio.io/downloadIstio | sh -

# (optional) You can move the downloaded "istio-1.22.1" directory     
   mv ./istio-1.22.1 $HOME/istioctl

# Add the istioctl client to your path     
export PATH=$HOME/istioctl/bin:$PATH

Note:

Istio installation will be completed after your Kubernetes cluster has been created. It has a dependency on the .kube/config file.

Istio's ingressgateway service can be configured in Kubernetes to run with either LoadBalancer or NodePort service types. See the Istio documentation for details: Istio Ingress Gateways

Load Balancer

If your Kubernetes cluster supports an external load balancer, it's recommended to configure the Istio ingress gateway service as a load balancer using the Oracle Blockchain Platform Enterprise Edition runme script that you'll use during deployment. Oracle Blockchain Platform Enterprise Edition will use Istio ingress gateway's https port (443) as the public port to accept the incoming traffic. This port value can be optionally customized during installation of Oracle Blockchain Platform Enterprise Edition using the runme script.

Node Port

In cases where the load balancer service type cannot be used, the Istio ingress gateway service can be configured with node port service type. Oracle Blockchain Platform Enterprise Edition will use the nodePort value of the https port in the Istio ingress gateway to route external traffic to Oracle Blockchain Platform Enterprise Edition inside the Kubernetes cluster. The value of the nodePort for the https port can be optionally customized (based on the allowed nodePort range) during installation of Oracle Blockchain Platform Enterprise Edition using the runme script. By default, the allowed nodePort range in Kubernetes cluster is 30000-32767.

Note:

Do not update the value of the https port or nodePort after installation of Oracle Blockchain Platform Enterprise Edition as it will affect its function.

Hostname Resolution for Oracle Blockchain Platform Enterprise Edition Services

Oracle Blockchain Platform Enterprise Edition services use uniquely generated hostnames that are configured in the Istio gateways/virtualservices. To communicate with the Oracle Blockchain Platform Enterprise Edition services inside the Kubernetes cluster, you are required to use these unique hostnames from your browsers or applications. Based on the chosen service type for istio-ingressgateway, these hostnames are required to be resolved to an IPv4 address in the following way:
  • If LoadBalancer, they resolve to the external IP address generated for the istio-ingressgateway service
  • If NodePort, they resolve to the worker nodes' IP addresses