Despliegue de Oracle SOA Suite en Oracle Kubernetes Engine

En este paso, aprovisionará un cluster de Kubernetes en Oracle Kubernetes Engine, con una base de datos para los esquemas de SOA Suite y una ruta de montaje de almacenamiento de archivos para almacenar los archivos de dominio de SOA Suite y Oracle SOA Suite en Kubernetes.

Los siguientes procedimientos suponen que ha instalado lo siguiente:
  • Git
  • Interfaz de línea de comandos (CLI) de OCI
  • Terraform
  • Helm 3.x

Acepte los términos de uso de las imágenes de Docker

El gráfico es necesario para utilizar la imagen de Docker de Oracle SOA Suite desde Oracle Container Registry; por lo tanto, debe aceptar las condiciones de la imagen de Docker de Oracle SOA Suite o no podrá extraer la imagen del registro.

Para aceptar los términos, haga lo siguiente:

  1. Vaya a Oracle Container Registry y busque SOA.
  2. Haga clic en soasuite.
  3. Haga clic para aceptar los términos y condiciones de la licencia a la derecha.
  4. Rellena tu información (si aún no lo has hecho).
  5. Acepte la licencia.
  6. Opcionalmente, si desea desplegar la base de datos como un contenedor en el cluster de kubernetes (opcional; no para producción), debe aceptar las condiciones de la imagen de Docker de Oracle Database. El script de Terraform despliega una base de datos Oracle desde Oracle Cloud Database Cloud Service, por lo que este paso solo es necesario si desea desplegar la base de datos como un contenedor en el cluster de Kubernetes.
    1. Buscar Base de Datos.
    2. Haga clic en Enterprise.
    3. Haga clic para aceptar los términos y condiciones de la licencia a la derecha.
    4. Rellena tu información (si aún no lo has hecho).
    5. Acepte la licencia.

Obtener el código de Terraform

El código de Terraform permite desplegar la infraestructura necesaria (cluster de Kubernetes, almacenamiento de archivos) y desplegar el gráfico de Helm de SOA y sus requisitos.

Para obtener el código de Terraform:

  1. Haga clic en Repositorio de Github en la barra de navegación izquierda de este manual (https://github.com/oracle-quickstart/oke-soa).
    Se abrirá el repositorio Github de Oracle SOA Suite on Kubernetes.
  2. Haga clic en Código y descárguelo como archivo zip o utilice la línea de comandos de git para clonar el repositorio en una carpeta local de su elección introduciendo
    git clone https://github.com/oracle-quickstart/oke-soa
  3. Para acceder a la carpeta de código, introduzca:
    cd oke-soa

Recopilación de la información necesaria

Ahora, localice y copie los OCID de arrendamiento y compartimento adecuados.

  1. Obtenga el OCID de arrendamiento de la consola de Oracle Cloud haciendo clic en el icono Usuario (esquina superior derecha) y, a continuación, en Arrendamiento. Copie el OCID del arrendamiento (campo Arrendamiento) y péguelo en el archivo de entorno.
  2. Obtenga el OCID de compartimento de la consola de Oracle Cloud haciendo clic en Identidad y, a continuación, en Compartimentos. Vaya al compartimento en el que desea desplegar la infraestructura y copie el OCID de ese compartimento.

Crear un archivo de configuración terraform.tfvars

Para ejecutar el despliegue, debe crear un archivo denominado terraform.tfvars y definir algunos valores en él.

  1. Cree un archivo denominado terraform.tfvars a partir de la plantilla introduciendo:
    cp terraform.tfvars.template terraform.tfvars
  2. Edite el archivo con el editor que desee y proporcione los siguientes valores:

    Note:

    Los pasos del 3 al 9 describen la información necesaria para este archivo de configuración. Asegúrese de introducir los valores adecuados para las credenciales necesarias.
    ## 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. El dominio de disponibilidad por defecto para el sistema de archivos se define en AD-2 porque a menudo se utiliza menos que AD-1. Si se encuentra en una sola región de AD, puede que falle, por lo que debe cambiar el índice del dominio de disponibilidad cambiando la variable por defecto
    ad_number = 2
    a:
    ad_number = 1 
  4. Proporcione credenciales válidas para acceder a Oracle Container Registry (el correo electrónico y la contraseña de su cuenta) para extraer las imágenes.
  5. Proporcione un nombre de usuario y una contraseña que cumplan los requisitos de contraseña para el dominio WebLogic; es decir, debe incluir una letra mayúscula, un número y tener al menos ocho caracteres de longitud:
    soa_domain_admin_username = "" 
    soa_domain_admin_password = ""
  6. Proporcione credenciales para el usuario SYS de la base de datos y la contraseña del esquema RCU. Ambos deben contener de 16 a 30 caracteres, incluidos un carácter en mayúscula, un número y dos caracteres especiales (por ejemplo, #!%).
    db_sys_password = "" 
    rcu_password = ""
  7. Agregue rcu_prefix. Este valor debe ser único por dominio (al desplegar varios dominios).
  8. Agregue un nombre de dominio. Este nombre debe ser único (cuando se despliegan varios dominios).
  9. Defina ssh_authorized_key con la clave pública ssh. Para obtener la salida de una clave pública creada anteriormente, introduzca:
    cat ~/.ssh/id_rsa.pub
  10. Guarde el archivo terraform.tfvars.

Ejecutar el despliegue

Con todo el trabajo preliminar completado, ahora ejecuta el despliegue.

  1. Inicialice el proyecto:
    terraform init 
  2. 2. Si lo desea, compruebe plan.To para determinar qué ocurrirá. Puede ejecutar la operación del plan:
    terraform plan 
  3. Aplique el plan:
    terraform apply
    Se le pedirá que introduzca yes para aplicar el 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 
    El aprovisionamiento de los recursos tardará varios minutos.
Esto aprovisiona el cluster de Oracle Kubernetes Engine, con:
  • Un pool de nodos de 3 nodos.
  • Base de datos para almacenar esquemas de Oracle SOA Suite.
  • Sistema de archivos de almacenamiento de archivos y destino de montaje para almacenar los archivos de dominio de Oracle SOA Suite.
También instala los requisitos de Kubernetes para instalar Oracle SOA Suite:
  • El operador de Kubernetes de Oracle WebLogic.
  • El controlador de entrada Traefik.
Crea secretos para los distintos componentes del dominio de SOA. Despliega Oracle SOA en Kubernetes.

Acceso al despliegue

Si Oracle SOA Suite on se ha desplegado correctamente en Oracle Kubernetes, ahora puede acceder a él.

  1. Obtener la IP pública del equilibrador de carga creado por el controlador de entrada
    kubectl get services -n traefik
    Esto debería producir algo como:
    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 aún está pendiente, espere unos minutos más antes de volver a comprobarlo.

    Obtenga el valor EXTERNAL-IP para el equilibrador de carga.

  2. Asegúrese de que los servidores de dominio SOA se están ejecutando: Si no ha cambiado el nombre del espacio de nombres de SOA, puede comprobar los pods en ejecución introduciendo:
    kubectl get pods -n soans
    Debe ver:
    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>
    Asegúrese de que STATUS es RUNNING y de que READY es 1/1 para los pods anteriores antes de comprobar la URL.
  3. Con la IP pública recopilada anteriormente, vaya a http://PUBLIC_IP:30305/console para acceder a la consola WebLogic. Si ve el mensaje Bad Gateway, el servidor de administración aún no se está ejecutando.
  4. Conéctese a la consola con los valores soa_domain_username y soa_domain_password especificados en terraform.tfvars file.
  5. Compruebe el punto final /ess navegando a http://PUBLIC_IP:30305/ess. El nombre de usuario y la contraseña son los mismos que se utilizan para la consola.
  6. Compruebe el punto final /em navegando hasta http://PUBLIC_IP:30305/em.
  7. Compruebe el punto final /soa/composer navegando a http://PUBLIC_IP:30305/soa/composer.