Distribuisci Oracle Blockchain Platform Enterprise Edition su Oracle Kubernetes Engine

Prima di distribuire Oracle Blockchain Platform Enterprise Edition, è necessario disporre di un cluster Kubernetes in esecuzione e installare diversi prerequisiti.

Per informazioni dettagliate su Oracle Kubernetes Engine, consulta Oracle Cloud Infrastructure Container Engine for Kubernetes

Crea un cluster di motori Oracle Kubernetes su OCI

Specifiche minime consigliate per il tuo cluster di motori Oracle Kubernetes:
  Sviluppo Produzione con alta disponibilità
Versione minima Versione 1.29.1 Versione 1.29.1
Tipo nodo Gestita Gestita
Immagine nodo Oracle Linux 8 Oracle Linux 8
CPU nodo 2 OCPU o versioni successive 4 OCPU o versioni successive
Memoria nodo 24 GB o superiore 32 GB o superiore
Conteggio nodi 1 o successiva 3 o successiva
Dimensione del volume di avvio 100 GB o versione successiva. Il volume di avvio predefinito di 50 GB potrebbe non essere sufficiente per contenere le immagini dei container Oracle Blockchain Platform Enterprise Edition e i dati temporanei per i pod del codice concatenato a causa di uno storage effimero limitato. 100 GB o versione successiva. Il volume di avvio predefinito di 50 GB potrebbe non essere sufficiente per contenere le immagini dei container Oracle Blockchain Platform Enterprise Edition e i dati temporanei per i pod del codice concatenato a causa di uno storage effimero limitato.
  • Per una maggiore sicurezza, selezionare Private workers per i nodi di lavoro Kubernetes.
  • Assicurarsi che i nodi di lavoro dispongano dell'accesso a Internet, necessario per installare i codici concatenati nelle istanze di Oracle Blockchain Platform.

In questa sezione viene illustrato come creare un motore Oracle Kubernetes di esempio su OCI. Per ulteriori opzioni e dettagli, vedere Creazione di cluster Kubernetes mediante i workflow della console

  1. Eseguire il login alla tenancy OCI selezionando l'area e il compartimento.
  2. Aprire il menu di navigazione e fare clic su Servizi per sviluppatori. In Container e artifact, fare clic su Cluster Kubernetes (OKE).
  3. Nella pagina Elenco cluster fare clic su Crea cluster.
  4. Nella finestra di dialogo Crea cluster, selezionare Creazione rapida e fare clic su Sottometti.
  5. Nella pagina Crea cluster, accettare i dettagli di configurazione predefiniti per il nuovo cluster oppure specificare alternative come indicato di seguito.
    • Nome: il nome del nuovo cluster. Accettare o immettere il nome predefinito desiderato.
    • Compartimento: compartimento in cui creare il nuovo cluster e le risorse di rete associate.
    • Versione Kubernetes: la versione di Kubernetes da eseguire sui nodi del piano di controllo e sui nodi di lavoro del cluster. La versione v1.29.1 è stata testata con Oracle Blockchain Platform Enterprise Edition.
    • Endpoint API Kubernetes: tipo di accesso all'endpoint API Kubernetes del cluster. Selezionare Pubblico (accessibile direttamente da Internet). Viene creata una subnet regionale pubblica e l'endpoint API Kubernetes viene ospitato in tale subnet. All'endpoint API Kubernetes viene assegnato un indirizzo IP pubblico e un indirizzo IP privato.

    • Tipo di nodo: specificare il tipo di nodi di lavoro nel primo pool di nodi del cluster. Selezionare Gestito. Si dispone della responsabilità di gestire i nodi di lavoro nel pool di nodi. I nodi gestiti vengono eseguiti sulle istanze di computazione (bare metal o virtual machine) nella tenancy. Poiché sei responsabile della gestione dei nodi gestiti, hai la flessibilità di configurarli per soddisfare i tuoi requisiti specifici. Sei responsabile dell'upgrade di Kubernetes sui nodi gestiti e della gestione della capacità del cluster.
    • Kubernetes: il tipo di accesso ai nodi di lavoro del cluster. Selezionare Privato (accessibile tramite altre subnet VCN). Viene creata una subnet regionale privata per ospitare i nodi di lavoro. Ai nodi di lavoro viene assegnato un indirizzo IP privato.
    • Forma del nodo: la forma da utilizzare per ogni nodo nel pool di nodi. La forma determina il numero di CPU e la quantità di memoria allocata a ciascun nodo. La lista mostra solo le forme disponibili nella tenancy supportate da Container Engine for Kubernetes. Oracle Blockchain Platform Enterprise Edition è stato testato con VM.Standard.E3. Flex e VM.Standard.E4. Forme flessibili.
    • Immagine: l'immagine da utilizzare sui nodi di lavoro nel pool di nodi gestiti. Un'immagine è un modello di unità fissa virtuale che determina il sistema operativo e un altro software per il pool di nodi gestiti. Oracle Blockchain Platform Enterprise Edition è stato testato con Oracle Linux 8.
    • Conteggio nodi: il numero di nodi di lavoro da creare nel pool di nodi, posizionati nella subnet regionale creata per il cluster. Selezionare almeno tre opzioni.
    Selezionare le seguenti opzioni avanzate:
    • Volume di avvio: configurare le opzioni di dimensione e cifratura per il volume di avvio del nodo di lavoro. Il volume di avvio predefinito di 50 GB potrebbe non essere sufficiente per contenere le immagini Oracle Blockchain Platform Enterprise Edition e i dati temporanei per i pod del codice concatenato a causa di una memoria effimera limitata. Se si prevede di distribuire più codici concatenati (più di cinque), aumentare il volume di avvio a circa 100 GB.
  6. Rivedere le opzioni selezionate e fare clic su Crea cluster.
  7. Assicurarsi che i nodi di lavoro e i pool di nodi siano in esecuzione:
    • In Risorse, selezionare Nodi. Per ogni nodo di lavoro, assicurarsi che il nodo sia pronto, attivo e corrisponda alla versione del cluster Kubernetes.
    • In Risorse selezionare Pool di nodi. Per il pool di nodi, assicurarsi che il pool sia attivo e corrisponda alla versione del cluster Kubernetes.

Installare l'interfaccia della riga di comando OCI

In questa sezione viene fornita una panoramica di esempio sull'installazione dell'interfaccia della riga di comando OCI. Oracle Blockchain Platform Enterprise Edition è stato testato con la versione 3.42.0. Per ulteriori informazioni, consultare OCI Command Line Interface.

# 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

Crea sistema responsabile avvio installazione

Impostare l'accesso locale per il cluster

Per ulteriori informazioni, vedere: Impostazione dell'accesso locale ai cluster.

  1. Copiare la chiave RSA nel sistema Oracle Linux o macOS su cui sono stati installati i prerequisiti. Le chiavi sono disponibili nella console OCI: Identità, quindi Domini, quindi OracleIdentityCloudService dominio, quindi Utenti, Nome utente e quindi chiavi API. Proteggere la chiave: chmod 400 your_rsa.key

    Se necessario, è possibile creare una chiave. Fare riferimento alla sezione Come generare una Chiave di Firma API

  2. Nella console OCI, andare al cluster e aprire la pagina Dettagli cluster.
  3. Selezionare Cluster di accesso, quindi Accesso locale.
    1. Creare una directory in cui collocare il file kubeconfig: mkdir -p $HOME/.kube
    2. Copiare il comando Per accedere alla kubeconfig per il cluster in uso tramite l'endpoint pubblico nativo VCN.
    3. Eseguire il comando sul sistema Linux o macOS. Poiché il file di configurazione non esiste ancora, verrà richiesto quanto segue:
      • Creare un nuovo file di configurazione? [Y/n]: y
      • Creare il file di configurazione eseguendo il login tramite un browser? [Y/n]: n
      • Immettere una posizione per la configurazione [/home/opc/.oci/config]: selezionare una posizione
      • Immettere un OCID utente: è possibile trovare in OCI Console
      • Immettere un OCID tenancy: è possibile trovare in OCI Console
      • Immettere un'area in base all'indice o al nome: immettere il numero corrispondente all'area della tenancy, ad esempio 12
      • Generare una nuova coppia di chiavi RSA per la firma API? Se rifiuti, ti verrà chiesto di fornire il percorso di una chiave esistente. [Y/n]: n
      • Immettere la posizione del file di chiavi private di firma API: posizione del file di chiavi RSA creato in precedenza
      In questo modo viene creato un file di configurazione che consente alla VM del piano di controllo Kubernetes di accedere al cluster ospitato su OCI.
    4. Quando viene creato il file di configurazione OCI, è necessario rieseguire il comando copiato Per accedere alla kubeconfig per il cluster tramite il comando endpoint pubblico VCN nativo. Utilizzerà il file di configurazione appena creato.
  4. Verificare di poter raggiungere il cluster di Oracle Kubernetes Engine: kubectl get nodes. Se l'impostazione è corretta, il comando mostrerà tutti i nodi di lavoro nel cluster.
  5. Limitare l'accesso al file di configurazione: chmod 600 $HOME/.kube/config
  6. Impostare la variabile di ambiente KUBECONFIG sul file per questo cluster: export KUBECONFIG=$HOME/.kube/config

Nota

Verificare se il file di configurazione OCI dispone di più profili simili al testo seguente:
[OCI_PROFILE_A]
fingerprint = .............
key_file = .............
tenancy = .............
region = .............
user = .............

[OCI_PROFILE_B] 
fingerprint = ............. 
key_file = .............
tenancy = .............
region = .............
user = ............. 
In tal caso, sarà necessario personalizzare il file kubeconfig oppure si verificherà un errore di autorizzazione quando si tenta di installare Oracle Blockchain Platform Enterprise Edition. Nella sezione Utenti del file kubeconfig, aggiungere una riga per specificare l'utente da utilizzare nel file di configurazione OCI. Ad esempio:
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
dove <OCI_PROFILE_NAME> sarebbe OCI_PROFILE_A

Completare l'installazione Istio

Oracle Blockchain Platform Enterprise Edition supporta la versione 1.20.2 e successive. Prima di eseguire i seguenti comandi, è necessario aver completato la procedura descritta in Installa 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)

Impostare un token di autenticazione per l'utente

Creare un token di autenticazione per l'utente amministrativo in modo da poter estrarre le immagini dal registro OCI: Generazione di un token di autenticazione per abilitare il login a Oracle Cloud Infrastructure Registry.

Installare Oracle Blockchain Platform Enterprise Edition

  1. Nella pagina Oracle Blockchain Platform Enterprise Edition fare clic su Scarica e seguire la procedura per scaricare il package Oracle Blockchain Platform Enterprise Edition. Estrarre il pacchetto dal file .zip, quindi estrarre il pacchetto dal file di archivio scaricato.
    tar -xzf <distribution-package-file>
    # example tar -xzf obpee_package_24.1.3-20240723083137.tgz
  2. Aggiornare il file runme-input.yaml con i valori richiesti. Il seguente esempio di file runme-input.yaml può essere utilizzato come riferimento:
    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
    Nell'esempio precedente, le variabili sono definite come illustrato nell'elenco seguente:
    • imageRegistryConfiguration.registry: server del registro contenitore da utilizzare. Esempio: iad.ocir.io
    • imageRegistryConfiguration.imageTagPrefix: percorso del repository di base del contenitore con il registro, in cui verrà eseguito il push e il pull delle immagini. Esempio: iad.ocir.io/obpee/bcs
    • imageRegistryConfiguration.username: nome utente di login al registro contenitore
    • imageReleaseVersion - Versione della release Oracle Blockchain Platform Enterprise Edition
    • controlPlaneStorage.storageClassName: classe di storage Kubernetes da utilizzare per il PVC (PersistentVolumeClaim). Se vuoto, viene utilizzato il valore predefinito storageClass
    • controlPlaneStorage.size: dimensioni del PVC per i servizi Blockchain Platform Manager (piano di controllo)
    • parentDomainName: nome di dominio da utilizzare per i servizi Blockchain Platform Manager. Esempio: example.com
    • imagePullTimeout: timeout di attesa pull delle immagini in secondi durante l'installazione di Oracle Blockchain Platform Enterprise Edition. L'impostazione predefinita è 1800 secondi.
  3. Eseguire lo script runme_oke.sh [--publish-images] seguendo i prompt.

    Nota

    Il comando --publish-images facoltativo carica i contenitori in un registro delle immagini del contenitore, ad esempio Oracle Cloud Infrastructure Registry, utilizzando i dettagli specificati nel file runme-input.yaml.
    • Immettere la password predefinita dell'amministratore LDAP (la password non verrà visualizzata): imposta la password dell'amministratore per il server di autenticazione LDAP incorporato.
    • Immettere la password utente amministratore del piano di controllo predefinito (la password non verrà visualizzata): imposta la password dell'amministratore di Blockchain Platform Manager.
    • Se StorageClass non è stato fornito nel file runme-input.yaml, il sistema controlla se la classe di memorizzazione predefinita è impostata e chiede se si desidera utilizzarla.
    • Confermare il tipo di servizio gateway in entrata Istio: LoadBalancer è l'impostazione predefinita. È supportato anche NodePort. Tenere presente che l'accesso a NodePorts richiede che il cluster Kubernetes sia stato creato con nodi di lavoro pubblici. Vedere Install Istio.
    • Confermare la porta https del servizio gateway in entrata Istio: il valore predefinito è 443 per il tipo di servizio LoadBalancer.
    • Immettere la password del registro <nome registro>: questa password viene utilizzata per connettersi al registro delle immagini del contenitore (come specificato nel file runme-input.yaml) per scaricare le immagini.
  4. Lo script elenca l'URL Istio-ingressgateway come parte dell'output. Registrare l'indirizzo IP indicato.
  5. Lo script installa i seguenti servizi nello spazio di nomi obp-cp:
    • control-plane
    • openldap
    • obp-auth-server
    • obp-operator
    • hlf-operator

Accedi a Blockchain Platform Manager

Dopo l'installazione, configurare la risoluzione dei nomi host per i nomi host Blockchain Platform Manager generati.
  1. Eseguire il comando seguente per ottenere l'elenco dei nomi host configurati:
    kubectl get virtualservice -n obp-cp -o json | jq -r '.items[].spec.hosts[0]'
  2. In base al tipo di servizio scelto per istio-ingressgateway, questi nomi host generati devono essere risolti in un indirizzo IPv4 in base ai seguenti requisiti:
    • LoadBalancer: consente di risolvere l'indirizzo IP esterno generato per il servizio istio-ingressgateway. Eseguire il comando seguente per ottenere l'indirizzo IP.
      kubectl get svc/istio-ingressgateway -n istio-system
      Aggiungere la riga seguente al file /etc/hosts (Linux, macOS) o al file C:\Windows\system32\drivers\etc\hosts (Microsoft Windows) sull'host utilizzato per connettersi alla console Blockchain Platform Manager.
      <public_svc_ip> controlplane.<parentDomainName> openldap.<parentDomainName> auth.<parentDomainName>
    • NodePort: consente di risolvere gli indirizzi IP dei nodi di lavoro.