Déployez Oracle Blockchain Platform Enterprise Edition sur Oracle Kubernetes Engine

Avant de déployer Oracle Blockchain Platform Enterprise Edition, vous devez disposer d'un cluster Kubernetes en cours d'exécution et installer plusieurs prérequis.

Pour plus d'informations sur Oracle Kubernetes Engine, reportez-vous à Oracle Cloud Infrastructure Container Engine for Kubernetes.

Création d'un cluster Oracle Kubernetes Engine sur OCI

Spécifications minimales recommandées pour votre cluster Oracle Kubernetes Engine :
  Développement Production avec haute disponibilité
Version minimale Version 1.29.1 Version 1.29.1
Type de noeud Géré Géré
Image du noeud Oracle Linux 8 : Oracle Linux 8 :
UC de noeud 2 OCPU ou plus 4 OCPU ou plus
Mémoire de noeud 24 Go ou plus 32 Go ou plus
Nombre de noeuds 1 ou version ultérieure 3 ou version ultérieure
Taille de volume d'initialisation 100 Go ou plus. Le volume d'initialisation par défaut de 50 Go peut ne pas être suffisant pour contenir les images de conteneur Oracle Blockchain Platform Enterprise Edition et les données temporaires pour les pods de code chaîne en raison du stockage éphémère limité. 100 Go ou plus. Le volume d'initialisation par défaut de 50 Go peut ne pas être suffisant pour contenir les images de conteneur Oracle Blockchain Platform Enterprise Edition et les données temporaires pour les pods de code chaîne en raison du stockage éphémère limité.
  • Pour plus de sécurité, sélectionnez Private workers pour les noeuds de processus actif Kubernetes.
  • Assurez-vous que les noeuds de processus actif ont accès à Internet, ce qui est requis pour installer des codes chaîne sur vos instances Oracle Blockchain Platform.

Cette section explique comment créer un exemple d'Oracle Kubernetes Engine sur OCI. Pour plus d'options et de détails, reportez-vous à Création de clusters Kubernetes à l'aide de workflows de console.

  1. Connectez-vous à votre location OCI, en sélectionnant votre région et votre compartiment.
  2. Ouvrez le menu de navigation et cliquez sur Services de développeur. Sous Conteneurs et artefacts, cliquez sur Clusters Kubernetes (OKE).
  3. Sur la page Liste de clusters, cliquez sur Créer un cluster.
  4. Dans la boîte de dialogue Créer un cluster, sélectionnez Création rapide et cliquez sur Soumettre.
  5. Sur la page de création d'un cluster, acceptez les détails de configuration par défaut pour le nouveau cluster ou indiquez d'autres options pour les paramètre suivants :
    • Nom : nom du nouveau cluster. Acceptez le nom par défaut ou entrez un nom de votre choix.
    • Compartiment : compartiment dans lequel créer le cluster et les ressources réseau associées.
    • Version Kubernetes : version de Kubernetes à exécuter sur les noeuds de plan de contrôle et les noeuds de processus actif du cluster. La version 1.29.1 a été testée avec Oracle Blockchain Platform Enterprise Edition.
    • Adresse d'API Kubernetes : type d'accès à l'adresse d'API Kubernetes du cluster. Sélectionnez Public (accessible directement à partir d'Internet). Un sous-réseau régional public est créé et l'adresse d'API Kubernetes est hébergée dans ce sous-réseau. Vous disposez d'une adresse IP publique ainsi que d'une adresse IP privée pour l'API Kubernetes.

    • Type de noeud : indiquez le type de noeud de processus actif dans le premier pool de noeuds du cluster. Sélectionnez Managed. Vous êtes responsable de la gestion des noeuds de processus actif dans le pool de noeuds. Les noeuds gérés sont exécutés sur des instances de calcul (bare Metal ou machine virtuelle) de votre location. En tant que responsable de la gestion des noeuds gérés, vous avez la possibilité de les configurer en fonction de vos besoins spécifiques. Vous êtes responsable de la mise à niveau de Kubernetes sur les noeuds gérés et de la gestion de la capacité du cluster.
    • Nombre de noeuds de processus actif Kubernetes : type d'accès aux noeuds de processus actif du cluster. Sélectionnez Privé (accessible via d'autres sous-réseaux VCN). Un sous-réseau régional privé est créé pour héberger les noeuds de processus actif. Une adresse IP privée leur est affectée.
    • Forme de noeud : forme à utiliser pour chaque noeud dans le pool de noeuds. La forme détermine le nombre d'UC et la quantité de mémoire alloués à chaque noeud. La liste affiche uniquement les formes disponibles dans votre location qui sont prises en charge par Container Engine for Kubernetes. Oracle Blockchain Platform Enterprise Edition a été testé avec VM.Standard.E3. Flex et VM.Standard.E4. Formes flexibles.
    • Image : image à utiliser sur les noeuds de processus actifs du pool de noeuds gérés. Une image est un modèle de disque dur virtuel qui détermine le système d'exploitation et les autres logiciels pour le pool de noeuds gérés. Oracle Blockchain Platform Enterprise Edition a été testé sur Oracle Linux 8.
    • Nombre de noeuds : nombre de noeuds de processus actifs à créer dans le pool de noeuds. Ces noeuds sont placés dans le sous-réseau régional créé pour le cluster. Sélectionnez trois ou plus.
    Sélectionnez les options avancées suivantes :
    • Volume d'initialisation : configurez les options de taille et de cryptage pour le volume d'initialisation du noeud de processus actif. Le volume d'initialisation par défaut de 50 Go peut ne pas être suffisant pour contenir les images Oracle Blockchain Platform Enterprise Edition et les données temporaires pour les pods de code chaîne en raison du stockage éphémère limité. Si vous prévoyez de déployer plusieurs codes chaîne (plus de cinq), augmentez le volume d'initialisation à environ 100 Go.
  6. Vérifiez les options sélectionnées, puis cliquez sur Créer un cluster.
  7. Assurez-vous que les noeuds de processus actif et les pools de noeuds sont en cours d'exécution :
    • Sous Ressources, sélectionnez Noeuds. Pour chaque noeud de processus actif, assurez-vous que le noeud est prêt, actif et qu'il correspond à la version du cluster Kubernetes.
    • Sous Ressources, sélectionnez Pools de noeuds. Pour votre pool de noeuds, assurez-vous que le pool est actif et correspond à la version du cluster Kubernetes.

Installation de l'interface de ligne de commande OCI

Cette section fournit un exemple de procédure pas à pas d'installation de l'interface de ligne de commande OCI. Oracle Blockchain Platform Enterprise Edition a été testé sur la version 3.42.0. Pour plus d'informations, reportez-vous à Interface de ligne de commande 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

Créer un système initiateur d'installation

Configurer l'accès local pour le cluster

Pour plus d'informations, reportez-vous aux sections suivantes : Configuration de l'accès local aux clusters.

  1. Copiez votre clé RSA sur le système Oracle Linux ou macOS sur lequel vous avez installé les prérequis. Les clés se trouvent dans la console OCI : Identité, puis Domaines, puis Domaine OracleIdentityCloudService, puis Utilisateurs, puis Nom utilisateur et Clés d'API. Sécurisez la clé : chmod 400 your_rsa.key

    Vous pouvez créer une clé si nécessaire. Reportez-vous à Procédure de génération d'une clé de signature d'API

  2. Dans la console OCI, accédez au cluster et ouvrez la page Détails du cluster.
  3. Sélectionnez Accès au cluster, puis Accès local.
    1. Créez un répertoire contenant le fichier kubeconfig : mkdir -p $HOME/.kube
    2. Copiez la commande Pour accéder à la kubeconfig de votre cluster via l'adresse publique native VCN.
    3. Exécutez la commande sur votre système Linux ou macOS. Comme le fichier de configuration n'existe pas encore, vous serez invité à saisir les informations suivantes :
      • Voulez-vous créer un fichier de configuration ? [Y/n] : y
      • Voulez-vous créer votre fichier de configuration en vous connectant via un navigateur ? [Y/n] : n
      • Entrez un emplacement pour la configuration [/home/opc/.oci/config] : sélectionnez un emplacement
      • Entrer un OCID utilisateur : disponible dans la console OCI
      • Entrez un OCID de location : disponible dans la console OCI
      • Entrez une région par index ou nom : entrez le numéro correspondant à la région de votre location, par exemple 12
      • Voulez-vous générer une nouvelle paire de clés RSA de signature d'API ? Si vous refusez, il vous sera demandé de fournir le chemin vers une clé existante. [Y/n] : n
      • Entrez l'emplacement de votre fichier de clés privées de signature d'API : emplacement du fichier de clés RSA créé ci-dessus
      Cela crée un fichier de configuration qui donne à la machine virtuelle de plan de contrôle Kubernetes l'accès au cluster hébergé sur OCI.
    4. Lorsque le fichier de configuration OCI est créé, vous devez réexécuter la commande Procédure d'accès à kubeconfig pour votre cluster via l'adresse publique VCN-Native copiée. Il utilisera le fichier de configuration que vous venez de créer.
  4. Vérifiez que vous pouvez atteindre le cluster Oracle Kubernetes Engine : kubectl get nodes. Si la configuration est correcte, la commande affiche tous les noeuds de processus actif de votre cluster.
  5. Limitez l'accès au fichier de configuration : chmod 600 $HOME/.kube/config
  6. Définissez la variable d'environnement KUBECONFIG sur le fichier de ce cluster : export KUBECONFIG=$HOME/.kube/config

Remarques :

Vérifiez si le fichier de configuration OCI comporte plusieurs profils similaires au texte suivant :
[OCI_PROFILE_A]
fingerprint = .............
key_file = .............
tenancy = .............
region = .............
user = .............

[OCI_PROFILE_B] 
fingerprint = ............. 
key_file = .............
tenancy = .............
region = .............
user = ............. 
Si tel est le cas, vous devrez personnaliser le fichier kubeconfig ou vous obtiendrez une erreur d'autorisation lorsque vous tenterez d'installer Oracle Blockchain Platform Enterprise Edition. Dans la section Utilisateurs du fichier kubeconfig, ajoutez une ligne pour indiquer l'utilisateur à utiliser dans le fichier de configuration OCI. Par exemple :
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> correspond à OCI_PROFILE_A

Terminer l'installation Istio

Oracle Blockchain Platform Enterprise Edition prend en charge les versions 1.20.2 et ultérieures. Vous devez avoir terminé les étapes de l'installation d'Istio avant d'exécuter les commandes suivantes.


# 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)

Configuration d'un jeton d'authentification pour votre utilisateur

Créez un jeton d'authentification pour l'administrateur afin de pouvoir extraire des images à partir du registre OCI : Génération d'un jeton d'authentification pour activer la connexion à Oracle Cloud Infrastructure Registry.

Installation d'Oracle Blockchain Platform Enterprise Edition

  1. Sur la page Oracle Blockchain Platform Enterprise Edition, cliquez sur Télécharger et suivez les étapes de téléchargement du package Oracle Blockchain Platform Enterprise Edition. Extrayez le package à partir du fichier .zip, puis extrayez le package à partir du fichier d'archive téléchargé.
    tar -xzf <distribution-package-file>
    # example tar -xzf obpee_package_24.1.3-20240723083137.tgz
  2. Mettez à jour le fichier runme-input.yaml avec les valeurs requises. L'exemple de fichier runme-input.yaml suivant peut être utilisé comme référence :
    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
    Dans l'exemple précédent, les variables sont définies comme indiqué dans la liste suivante :
    • imageRegistryConfiguration.registry : serveur de registre de conteneur à utiliser. Exemple : iad.ocir.io
    • imageRegistryConfiguration.imageTagPrefix : chemin du référentiel de base de conteneur avec le registre, à partir duquel les images seront propagées et extraites. Exemple : iad.ocir.io/obpee/bcs
    • imageRegistryConfiguration.username : nom utilisateur de connexion au registre de conteneur
    • imageReleaseVersion - Version d'Oracle Blockchain Platform Enterprise Edition
    • controlPlaneStorage.storageClassName : classe de stockage Kubernetes à utiliser pour la demande de volume persistant (PersistentVolumeClaim). Si vide, storageClass par défaut est utilisé
    • controlPlaneStorage.size : taille de PVC pour les services Blockchain Platform Manager (plan de contrôle)
    • parentDomainName : nom de domaine à utiliser pour les services Blockchain Platform Manager. Exemple : example.com
    • imagePullTimeout : délai d'attente d'extraction d'image en secondes lors de l'installation d'Oracle Blockchain Platform Enterprise Edition. La valeur par défaut est 1800 seconde.
  3. Exécutez le script runme_oke.sh [--publish-images] en suivant les invites.

    Remarques :

    La commande --publish-images facultative télécharge les conteneurs vers un registre d'images de conteneur tel qu'Oracle Cloud Infrastructure Registry à l'aide des détails indiqués dans le fichier runme-input.yaml.
    • Entrez le mot de passe administrateur LDAP par défaut (le mot de passe ne s'affichera pas) : définit le mot de passe de l'administrateur pour le serveur d'authentification LDAP intégré.
    • Entrez le mot de passe par défaut de l'administrateur du plan de contrôle (le mot de passe ne sera pas affiché) : définit le mot de passe de l'administrateur Blockchain Platform Manager.
    • Si StorageClass n'a pas été fourni dans le fichier runme-input.yaml, le système vérifie si la classe de stockage par défaut est définie et demande si vous voulez l'utiliser.
    • Vérifiez le type de service de passerelle entrante Istio : LoadBalancer est la valeur par défaut. NodePort est également pris en charge. L'accès à NodePorts nécessite que le cluster Kubernetes ait été créé avec des noeuds de processus actif publics. Reportez-vous à Install Istio.
    • Confirmez le port HTTPS du service de passerelle entrante Istio : la valeur par défaut est 443 pour le type de service LoadBalancer.
    • Entrez le mot de passe du registre <nom du registre> : ce mot de passe permet de se connecter au registre d'images de conteneur (tel qu'indiqué dans le fichier runme-input.yaml) pour télécharger des images.
  4. Le script répertorie l'URL Istio-ingressgateway dans la sortie. Enregistrez l'adresse IP indiquée.
  5. Le script installe les services suivants sous l'espace de noms obp-cp :
    • control-plane
    • openldap
    • obp-auth-server
    • obp-operator
    • hlf-operator

Accéder à Blockchain Platform Manager

Après l'installation, configurez la résolution des noms d'hôte pour les noms d'hôte Blockchain Platform Manager générés.
  1. Exécutez la commande suivante pour obtenir la liste des noms d'hôte configurés :
    kubectl get virtualservice -n obp-cp -o json | jq -r '.items[].spec.hosts[0]'
  2. En fonction du type de service choisi pour istio-ingressgateway, ces noms d'hôte générés doivent être résolus en une adresse IPv4 conformément aux exigences suivantes :
    • LoadBalancer : résolvez l'adresse IP externe générée pour le service istio-ingressgateway. Exécutez la commande suivante pour obtenir l'adresse IP .
      kubectl get svc/istio-ingressgateway -n istio-system
      Ajoutez la ligne suivante au fichier /etc/hosts (Linux, macOS) ou au fichier C:\Windows\system32\drivers\etc\hosts (Microsoft Windows) sur l'hôte utilisé pour la connexion à la console Blockchain Platform Manager.
      <public_svc_ip> controlplane.<parentDomainName> openldap.<parentDomainName> auth.<parentDomainName>
    • NodePort : résolution vers les adresses IP des noeuds de processus actif.