Déployer Oracle SOA Suite sur Oracle Kubernetes Engine

Dans cette étape, vous provisionnerez une grappe Kubernetes sur Oracle Kubernetes Engine, avec une base de données pour les schémas SOA Suite et un chemin de montage du stockage de fichiers pour stocker les fichiers de domaine SOA Suite et Oracle SOA Suite dans Kubernetes.

Les procédures suivantes supposent que vous avez installé ce qui suit :
  • Git
  • Interface de ligne de commande (CLI) OCI
  • Terraform
  • Helm 3.x

Accepter les conditions d'utilisation des images Docker

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

Pour accepter les conditions, procédez comme suit :

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

Obtenir le code Terraform

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

Pour obtenir le code Terraform :

  1. Cliquez sur Référentiel Github dans la barre de navigation gauche de ce livre de jeu (https://github.com/oracle-quickstart/oke-soa).
    Le référentiel Github d'Oracle SOA Suite sur Kubernetes sera alors ouvert.
  2. Cliquez sur Code et téléchargez-le sous forme de fichier zip ou utilisez la ligne de commande git pour, dans le dossier local de votre choix, cloner le référentiel en entrant
    git clone https://github.com/oracle-quickstart/oke-soa
  3. Accédez au dossier de code en entrant :
    cd oke-soa

Collecter les informations requises

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

  1. Obtenez l'OCID de la location à partir de la console Oracle Cloud en cliquant sur votre icône Utilisateur (coin supérieur droit), puis sur Location. Copiez l'OCID de la location (champ Location) et collez-le dans votre fichier d'environnement.
  2. Obtenez l'OCID de votre compartiment à partir de la console Oracle Cloud en cliquant sur Identité, puis sur Compartiments. Naviguez jusqu'au compartiment dans lequel vous voulez déployer l'infrastructure et copiez l'OCID de ce compartiment.

Créer 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 entrant :
    cp terraform.tfvars.template terraform.tfvars
  2. Modifiez le fichier avec l'éditeur de votre choix et fournissez les valeurs suivantes :

    Note :

    Les étapes 3 à 9 décrivent les informations requises pour ce fichier de configuration. Assurez-vous d'entrer les valeurs appropriées pour les données 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 réglé à 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
    en :
    ad_number = 1 
  4. Fournissez des données d'identification valides afin que vous puissiez accéder au registre Oracle Container Registry (courriel et mot de passe de votre compte) pour extraire les images.
  5. Indiquez un nom d'utilisateur et un mot de passe conformes aux exigences de mot de passe pour le domaine WebLogic, c'est-à-dire qu'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 données 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 de 16 à 30 caractères, dont une majuscule, un chiffre et deux caractères spéciaux (par exemple, #!%).
    db_sys_password = "" 
    rcu_password = ""
  7. Ajoutez une valeur 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 entrant :
    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. Facultativement, vérifiez que plan.To détermine ce qui se passera. Vous pouvez exécuter l'opération de plan :
    terraform plan 
  3. Appliquer le plan :
    terraform apply
    Vous serez invité à entrer 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 s'applique à la grappe Kubernetes Engine d'Oracle, avec les éléments suivants :
  • Groupe de 3 noeuds.
  • Base de données stockant les schémas d'Oracle SOA Suite.
  • Système de fichiers de stockage de fichiers et cible de montage pour stocker les fichiers de domaine Oracle SOA Suite.
Il installe également les préalables Kubernetes pour l'installation d'Oracle SOA Suite :
  • Opérateur Kubernetes d'Oracle WebLogic.
  • Contrôleur de trafic entrant 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é avec succès sur Oracle Kubernetes, vous pouvez maintenant y accéder.

  1. Obtenir l'adresse IP publique de l'équilibreur de charge créé par le contrôleur de trafic entrant
    kubectl get services -n traefik
    Cela devrait produire quelque chose comme :
    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
    Si elle est toujours en attente, attendez encore quelques minutes avant de vérifier à nouveau.

    Obtenez la valeur EXTERNAL-IP pour 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 l'exécution des pods en entrant :
    kubectl get pods -n soans
    Voici ce que vous devriez voir :
    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, naviguez jusqu'à http://PUBLIC_IP:30305/console pour accéder à la console WebLogic. Si vous voyez le message Passerelle incorrecte, le serveur d'administration n'est pas encore en cours d'exécution.
  4. Connectez-vous à la console avec soa_domain_username et soa_domain_password que vous avez spécifiés dans terraform.tfvars file.
  5. Vérifiez le point d'extrémité /ess en accédant à http://PUBLIC_IP:30305/ess. Le nom d'utilisateur et le mot de passe sont les mêmes que ceux que vous utilisez pour la console.
  6. Vérifiez le point d'extrémité /em en accédant à http://PUBLIC_IP:30305/em.
  7. Vérifiez le point d'extrémité /soa/composer en accédant à http://PUBLIC_IP:30305/soa/composer.