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クラスタの作成
開発 | 高可用性を備えた本番 | |
---|---|---|
最低バージョン | 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クラスタの作成を参照してください
- 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イメージおよび一時データを保持するには不十分である可能性があります。複数のチェーンコード(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
インストールイニシエータシステムの作成
クラスタのローカル・アクセスの設定
詳細は、クラスタへのローカル・アクセスの設定を参照してください。
- 前提条件をインストールしたOracle LinuxまたはmacOSマシンにRSAキーをコピーします。キーは、OCIコンソール(
chmod 400 your_rsa.key
必要に応じて、新しいキーを作成できます。API署名キーの生成方法を参照してください
)にあります。キーの保護: - 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 Engineクラスタ(
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以降がサポートされています。次を実行する前に、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のページで、「Download」をクリックし、ステップに従って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 (コントロール・プレーン)サービスのPVCサイズparentDomainName
: Blockchain Platform Managerサービスに使用するドメイン名。例: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にアクセスするには、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: ワーカー・ノードのIPアドレスに解決します。
- LoadBalancer: