Déployer Oracle SOA Suite sur Oracle Kubernetes Engine

Cette étape consiste à provisionner un cluster Kubernetes sur Oracle Kubernetes Engine, avec une base de données pour les schémas SOA Suite et un chemin de montage de stockage de fichiers pour stocker les fichiers de domaine SOA Suite et Oracle SOA Suite dans Kubernetes.

Les procédures suivantes partent du principe que vous avez installé les éléments suivants :
  • Git
  • Interface de ligne de commande OCI
  • Terraform
  • Helm 3.x

Accepter les conditions d'utilisation des images Docker

Le graphique est requis pour utiliser l'image Docker Oracle SOA Suite à partir d'Oracle Container Registry. Par conséquent, vous devez accepter les conditions générales de l'image Docker Oracle SOA Suite, sinon l'extraction de l'image à partir du registre échoue.

Pour accepter les conditions, procédez comme suit :

  1. Accédez à Oracle Container Registry et recherchez SOA.
  2. Cliquez sur soasuite.
  3. Cliquez pour accepter les termes et conditions de la licence à droite.
  4. Renseignez vos informations (si vous ne l'avez pas déjà fait).
  5. Acceptez-la.
  6. Si vous avez l'intention de déployer la base de données en tant que conteneur dans le cluster kubernetes (facultatif ; non pour la production), vous devez accepter les conditions générales de l'image Docker Oracle Database. Le script Terraform déploie une base de données Oracle à partir d'Oracle Cloud Database Cloud Service. Cette étape est donc requise uniquement si vous souhaitez déployer la base de données en tant que conteneur dans le cluster Kubernetes.
    1. Rechercher la base de données.
    2. Cliquez sur Enterprise.
    3. Cliquez pour accepter les termes et conditions de la licence à droite.
    4. Renseignez vos informations (si vous ne l'avez pas déjà fait).
    5. Acceptez-la.

Obtenir le code Terraform

Le code Terraform vous permet de déployer l'infrastructure nécessaire (cluster Kubernetes, stockage de fichiers) et de déployer le graphique Helm SOA et ses prérequis.

Pour obtenir le code Terraform, procédez comme suit :

  1. Cliquez sur Référentiel Github dans la barre de navigation de gauche de ce livre de jeux (https://github.com/oracle-quickstart/oke-soa).
    Cela ouvrira le référentiel Oracle SOA Suite sur Kubernetes Github.
  2. Cliquez sur Code et téléchargez-le sous forme de fichier ZIP, ou utilisez la ligne de commande git pour cloner le référentiel dans le dossier local de votre choix en saisissant la commande suivante :
    git clone https://github.com/oracle-quickstart/oke-soa
  3. Accédez au dossier de code en saisissant ce qui suit :
    cd oke-soa

Collecte des informations requises

Recherchez et copiez les OCID de location et de compartiment appropriés.

  1. Obtenez l'OCID de location à partir de la console Oracle Cloud en cliquant sur l'icône Utilisateur (en haut à droite), puis sur Location. Copiez l'OCID de la location (champ de location) et collez-le dans le fichier d'environnement.
  2. Obtenez l'OCID de compartiment à partir de la console Oracle Cloud en cliquant sur Identité, puis sur Compartiments. Accédez au compartiment dans lequel déployer l'infrastructure et copiez l'OCID de ce compartiment.

Création d'un fichier de configuration terraform.tfvars

Pour exécuter le déploiement, vous devez créer un fichier nommé terraform.tfvars et y définir quelques paramètres.

  1. Créez un fichier nommé terraform.tfvars à partir du modèle en saisissant ce qui suit :
    cp terraform.tfvars.template terraform.tfvars
  2. Modifiez le fichier avec l'éditeur de votre choix et fournissez les valeurs suivantes :

    Remarques :

    Les étapes 3 à 9 décrivent les informations requises pour ce fichier de configuration. Veillez à saisir les valeurs appropriées pour les informations d'identification requises.
    ## Copyright © 2021, Oracle and/or its affiliates. 
    ## All rights reserved. The Universal Permissive License (UPL), Version 1.0 as shown at http://oss.oracle.com/licenses/upl
    
    tenancy_ocid     = "ocid1.tenancy.oc1..."
    compartment_ocid = "ocid1.compartment.oc1..."
    region           = "us-ashburn-1"
    
    deployment_name = "SOA-k8s"
    soa_domain_name = "mysoa"
    
    # Domain Type must be one of soa, soaess, soaosb, soaessosb
    soa_domain_type = "soaessosb"
    
    ## Things to provision
    
    # VCN, OKE cluster, node_pool(s)
    # if false, the template assumes the cluster is provisioned and that kubectl has access to the cluster.
    provision_cluster = true
    
    # File Storage and mount point export 
    provision_filesystem = true
    provision_export = true
    
    # Database (DBaaS on OCI)
    # If false, a database jdbc_connection URL needs to be provided, and the database needs to be reachable from this VCN
    provision_database = true
    # WebLogic Operator
    provision_weblogic_operator = true
    # Ingress controller
    provision_traefik = true
    provision_secrets = true
    provision_soa = true
    
    ## File storage details
    # If the VCN is not provided by this template, the following variables must be provided
    fss_subnet_id = null
    # If the cluster and VCN are not provided by this template,
    fss_source_cidr = "0.0.0.0/0"
    # File Storage mount target Availability Domain index
    ad_number = 2
    
    ## Credentials
    # Input your Container registry login credentials
    container_registry_email    = ""
    container_registry_password = ""
    
    # Create SOA Suite domain Admin Console credentials
    soa_domain_admin_username = ""
    # Password must contain 1 Upper, 1 number and be at least 8 characters long
    soa_domain_admin_password = ""
    
    # Create Database credentials
    # Password must be 9 to 30 characters and contain at least 2 uppercase, 2 lowercase, 2 special, and 2 numeric characters. 
    # The special characters must be _, #, or -.
    db_sys_password = ""
    
    # Create RCU Schema credentials
    rcu_prefix = "SOA"
    rcu_username = "rcu"
    # Password must be 9 to 30 characters and contain at least 2 uppercase, 2 lowercase, 2 special, and 2 numeric characters. 
    # The special characters must be _, #, or -.
    rcu_password = ""
    
    # If connecting to an external DB, specify the jdbc_connection_url
    # !!! You will need to adjust the security list on your database VCN/subnet to authorize access from the OKE cluster nodes,
    # which may require VCN peering (not provided here)
    jdbc_connection_url = null
    
    # Database information
    database_name        = "SOA"
    database_unique_name = "SOA"
    
    # Kubernetes namespaces
    soa_kubernetes_namespace     = "soans"
    weblogic_operator_namespace  = "opns"
    ingress_controller_namespace = "traefik"
    
    # VCN config
    vcn_cidr = "10.0.0.0/16"
    
    # SSH key to access database and Kubernetes nodes
    ssh_authorized_key = ""
    
    # Cluster config
    oke_cluster = {
    name                                                    = "OKE_Cluster"
    k8s_version                                             = "v1.18.10"
    pods_cidr                                               = "10.1.0.0/16"
    services_cidr                                           = "10.2.0.0/16"
    cluster_options_add_ons_is_kubernetes_dashboard_enabled = true
    cluster_options_add_ons_is_tiller_enabled               = true
    }
    
    # defaults to 1 pool, feel free to add more if needed.
    node_pools = [
    {
        pool_name  = "pool1"
        node_shape = "VM.Standard2.4"
        node_count = 3
        node_labels = {
        "pool_name" = "pool1"
        }
    }
    ]
    
    # Optional parameter,
            requires a vault and key to be created in the account.secrets_encryption_key_ocid = null
  3. Le domaine de disponibilité par défaut du système de fichiers est défini sur AD-2, car il est souvent moins utilisé que AD-1. Si vous êtes dans une seule région AD, cela peut échouer. Vous devez donc modifier l'index du domaine de disponibilité en modifiant la variable par défaut
    ad_number = 2
    par :
    ad_number = 1 
  4. Indiquez des informations d'identification valides afin de pouvoir accéder à Oracle Container Registry (adresse électronique et mot de passe de votre compte) pour extraire les images.
  5. Fournissez un nom utilisateur et un mot de passe conformes aux exigences de mot de passe pour le domaine WebLogic. Autrement dit, il doit inclure une lettre majuscule, un chiffre et comporter au moins huit caractères :
    soa_domain_admin_username = "" 
    soa_domain_admin_password = ""
  6. Fournissez les informations d'identification de l'utilisateur SYS de la base de données et le mot de passe du schéma RCU. Les deux doivent contenir entre 16 et 30 caractères, dont une majuscule, un chiffre et deux caractères spéciaux (par exemple, # !%).
    db_sys_password = "" 
    rcu_password = ""
  7. Ajoutez un élément rcu_prefix. Cette valeur doit être unique par domaine (lors du déploiement de plusieurs domaines).
  8. Ajoutez un nom de domaine. Ce nom doit être unique (lors du déploiement de plusieurs domaines).
  9. Définissez ssh_authorized_key avec votre clé publique SSH. Vous pouvez obtenir la sortie d'une clé publique créée précédemment en saisissant la commande suivante :
    cat ~/.ssh/id_rsa.pub
  10. Enregistrez le fichier terraform.tfvars.

Exécuter le déploiement

Une fois tous les travaux préliminaires terminés, vous exécutez le déploiement.

  1. Initialisez le projet :
    terraform init 
  2. 2. Si vous le souhaitez, vérifiez la valeur plan.To pour déterminer ce qui va se passer. Vous pouvez exécuter l'opération de plan :
    terraform plan 
  3. Appliquez le plan :
    terraform apply
    Vous êtes invité à saisir yes pour appliquer le plan :
     Do you want to perform these actions? 
    Terraform will perform the actions described above. 
    Only 'yes' will be accepted to approve. 
    Enter a value: yes 
    Le provisionnement des ressources prend plusieurs minutes.
Cela provisionne le cluster Oracle Kubernetes Engine, avec :
  • Pool de noeuds de 3 noeuds.
  • Base de données dans laquelle stocker les schémas Oracle SOA Suite.
  • Système de fichiers de stockage et cible de montage pour stocker les fichiers de domaine Oracle SOA Suite.
Il installe également les prérequis Kubernetes pour l'installation d'Oracle SOA Suite :
  • Opérateur Oracle WebLogic Kubernetes.
  • Le contrôleur d'entrée Traefik.
Il crée des clés secrètes pour les différents composants du domaine SOA. Il déploie Oracle SOA sur Kubernetes.

Accéder au déploiement

Si Oracle SOA Suite on a été déployé sur Oracle Kubernetes, vous pouvez désormais y accéder.

  1. Obtenir l'adresse IP publique de l'équilibreur de charge créé par le contrôleur d'entrée
    kubectl get services -n traefik
    Le résultat doit se présenter comme suit :
    NAME      TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                                          AGE
    traefik   LoadBalancer   10.2.170.178   123.456.789.123  9000:31242/TCP,30305:30305/TCP,30443:30443/TCP   3m
    S'il est toujours en attente, attendez quelques minutes de plus avant de vérifier à nouveau.

    Obtenez la valeur EXTERNAL-IP de l'équilibreur de charge.

  2. Assurez-vous que les serveurs de domaine SOA sont en cours d'exécution : si vous n'avez pas modifié le nom de l'espace de noms SOA, vous pouvez vérifier les pods en cours d'exécution en saisissant la commande suivante :
    kubectl get pods -n soans
    Vous devez voir ce qui suit :
    NAME                READY   STATUS    RESTARTS   AGE    IP          NODE          NOMINATED NODE   READINESS GATES
    mysoa-adminserver   1/1     Running   0          179m   10.1.1.9    10.0.10.211   <none>           <none>
    mysoa-osb-server1   1/1     Running   0          172m   10.1.1.10   10.0.10.211   <none>           <none>
    mysoa-osb-server2   1/1     Running   0          172m   10.1.1.12   10.0.10.211   <none>           <none>
    mysoa-soa-server1   1/1     Running   0          172m   10.1.1.11   10.0.10.211   <none>           <none>
    mysoa-soa-server2   1/1     Running   0          172m   10.1.0.6    10.0.10.16    <none>           <none>
    Assurez-vous que STATUS est RUNNING et que READY est 1/1 pour les pods ci-dessus avant de vérifier l'URL.
  3. Avec l'adresse IP publique collectée précédemment, accédez à http://PUBLIC_IP:30305/console pour accéder à la console WebLogic. Si le message Bad Gateway s'affiche, le serveur d'administration n'est pas encore en cours d'exécution.
  4. Connectez-vous à la console avec les valeurs soa_domain_username et soa_domain_password indiquées dans terraform.tfvars file.
  5. Vérifiez l'adresse /ess en accédant à http://PUBLIC_IP:30305/ess. Le nom utilisateur et le mot de passe sont les mêmes que ceux utilisés pour la console.
  6. Vérifiez le point de terminaison /em en accédant à http://PUBLIC_IP:30305/em.
  7. Vérifiez l'adresse /soa/composer en accédant à http://PUBLIC_IP:30305/soa/composer.