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クラスタの作成

Oracle Kubernetes Engineクラスタの推奨最小仕様:
  開発 高可用性を備えた本番
最低バージョン 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コンテナ・イメージおよびチェーンコード・ポッドの一時データを保持するには十分でない可能性があります。 100GB以上。デフォルトのブート・ボリューム50GBでは、エフェメラル・ストレージが制限されているため、Oracle Blockchain Platform Enterprise Editionコンテナ・イメージおよびチェーンコード・ポッドの一時データを保持するには十分でない可能性があります。
  • セキュリティを強化するために、Kubernetesワーカー・ノードにPrivate workersを使用することをお薦めします
  • ワーカー・ノードが、Oracle Blockchain Platformインスタンスへのチェーンコードのインストールに必要なインターネットにアクセスできることを確認します。

この項では、OCIでのOracle Kubernetes Engineの例の作成について説明します。その他のオプションおよび詳細は、コンソール・ワークフローを使用したKubernetesクラスタの作成を参照してください

  1. OCIテナンシにログインし、リージョンとコンパートメントを選択します。
  2. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナとアーティファクト」で、「Kubernetesクラスタ(OKE)」」をクリックします。
  3. クラスタ・リスト」ページで、「クラスタの作成」をクリックします。
  4. クラスタの作成」ダイアログで、「クイック作成」を選択して「送信」をクリックします。
  5. 「クラスタの作成」ページで、新しいクラスタのデフォルトの構成の詳細をそのまま使用するか、次のように他の方法を指定します:
    • 名前:新しいクラスタの名前。デフォルト名を受け入れるか、名前を入力します。
    • コンパートメント:新規クラスタおよび関連するネットワーク・リソースを作成するコンパートメント。
    • 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イメージおよび一時データを保持するには不十分である可能性があります。複数のチェーンコード(5を超える)をデプロイする場合は、ブート・ボリュームを約100 GBに増やすことをお薦めします。
  6. 選択したオプションを確認し、「クラスタの作成」をクリックします。
  7. ワーカー・ノードおよびノード・プールが実行されていることを確認します:
    • 「リソース」で、「ノード」を選択します。ワーカー・ノードごとに、ノードの準備ができ、アクティブであり、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

インストールイニシエータシステムの作成

クラスタのローカル・アクセスの設定

詳細は、クラスタへのローカル・アクセスの設定を参照してください。

  1. 前提条件をインストールしたOracle LinuxまたはmacOSマシンにRSAキーをコピーします。キーは、OCIコンソール(「アイデンティティ」「ドメイン」OracleIdentityCloudServiceドメイン「ユーザー」「ユーザー名」「APIキー」)にあります。キーの保護: chmod 400 your_rsa.key

    必要に応じて、新しいキーを作成できます。API署名キーの生成方法を参照してください

  2. OCIコンソールで、クラスタに移動し、「クラスタの詳細」ページを開きます。
  3. 「クラスタへのアクセス」「ローカル・アクセス」の順に選択します。
    1. kubeconfigファイルを含むディレクトリを作成します: mkdir -p $HOME/.kube
    2. VCNネイティブのパブリック・エンドポイントからクラスタのkubeconfigにアクセスするにはコマンドをコピーします。
    3. LinuxまたはmacOSマシンでコマンドを実行します。構成ファイルがまだ存在しないため、次の入力を求められます。
      • 新しい構成ファイルを作成しますか? [Y/n]: y
      • ブラウザからログインして構成ファイルを作成しますか? [Y/n]: n
      • 構成[/home/opc/.oci/config]の場所を入力します: 場所を選択します
      • ユーザーOCIDを入力します: OCIコンソールにあります
      • テナンシOCIDを入力します: OCIコンソールにあります
      • 索引または名前でリージョンを入力します: テナンシのリージョンに対応する番号を入力します(例: 12)
      • 新しいAPI署名RSAキー・ペアを生成しますか。拒否すると、既存のキーへのパスを指定するよう求められます。[Y/n]: n
      • API署名秘密キー・ファイルの場所を入力します: 上で作成されたRSAキー・ファイルの場所
      これにより、Kubernetesコントロール・プレーンVMにOCIでホストされているクラスタへのアクセス権を付与する構成ファイルが作成されます。
    4. OCI構成ファイルを作成したら、コピーしたVCNネイティブ・パブリック・エンドポイントを介してクラスタのkubeconfigにアクセスするにはコマンドを再実行する必要があります。作成した構成ファイルが使用されます。
  4. Oracle Kubernetes Engineクラスタ(kubectl get nodes)にアクセスできることを確認します。設定が正しい場合、コマンドはクラスタ内のすべてのワーカー・ノードを出力します。
  5. 構成ファイルへのアクセスを制限します: chmod 600 $HOME/.kube/config
  6. 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のインストール

  1. Oracle Blockchain Platform Enterprise Editionのページで、「Download」をクリックし、ステップに従ってOracle Blockchain Platform Enterprise Editionパッケージをダウンロードします。パッケージを解凍し、ダウンロードしたアーカイブファイルからパッケージを抽出します。
    tar -xzf <distribution-package-file>
    # example tar -xzf obpee_package_24.1.3-20240723083137.tgz
  2. 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 (コントロール・プレーン)サービスのPVCサイズ
    • parentDomainName: Blockchain Platform Managerサービスに使用するドメイン名。例: example.com
    • imagePullTimeout: Oracle Blockchain Platform Enterprise Editionのインストール中のイメージ・プル待機タイムアウト(秒)。デフォルトは1800秒です。
  3. プロンプトに従ってrunme_oke.sh [--publish-images]を実行します。

    ノート:

    オプションの--publish-imagesコマンドは、runme-input.yamlで指定された詳細を使用して、コンテナをOracle Cloud Infrastructure Registryなどのコンテナ・イメージ・レジストリにアップロードします。
    • デフォルトのLDAP管理パスワード(パスワードは表示されません)を入力します。これは、組込みLDAP認証サーバーの管理ユーザーのパスワードを設定するために使用されます。
    • デフォルトのコントロール・プレーン管理ユーザー・パスワードを入力します(パスワードは表示されません): ブロックチェーン・プラットフォーム・マネージャ管理ユーザーのパスワードの設定に使用されます。
    • runme-input.yamlStorageClassが指定されていない場合、システムはデフォルトのストレージ・クラスが設定されているかどうかを確認し、使用するかどうかを尋ねます。
    • Istioイングレス・ゲートウェイ・サービス・タイプ: LoadBalancerがデフォルト、NodePortもサポートされていることを確認します。NodePortsにアクセスするには、Kubernetesクラスタがパブリック・ワーカー・ノードを使用して作成されている必要があります。Install Istioを参照してください。
    • Istioイングレス・ゲートウェイ・サービスのhttpsポートを確認します。LoadBalancerサービス・タイプのデフォルトは443です。
    • レジストリ<registry name>パスワードを入力します。これは、イメージをダウンロードするためのコンテナ・イメージ・レジストリ(runme-input.yamlで指定)への接続に使用されます。
  4. スクリプトの出力の一部として、Istio-ingressgateway URLがリストされます。指定されたIPアドレスを記録します。
  5. インストール・スクリプトでは、obp-cpネームスペースの下に次のサービスが引き続きインストールされます。
    • control-plane
    • openldap
    • obp-auth-server
    • obp-operator
    • hlf-operator

ブロックチェーン・プラットフォーム・マネージャへのアクセス

インストール後、生成されるBlockchain Platform Managerホスト名のホスト名解決を構成します。
  1. 次のコマンドを実行して、構成済ホスト名のリストを取得します:
    kubectl get virtualservice -n obp-cp -o json | jq -r .items[].spec.hosts[0]
  2. istio-ingressgatewayに対して選択したサービス・タイプに基づいて、生成されたこれらのホスト名は、次に従ってIPv4アドレスに解決する必要があります。
    • LoadBalancer: istio-ingressgatewayサービスに対して生成された外部IPアドレスに解決します。
    • NodePort: ワーカー・ノードのIPアドレスに解決します。