Distribuisci Oracle SOA Suite su Oracle Kubernetes Engine

In questo passo verrà eseguito il provisioning di un cluster Kubernetes su Oracle Kubernetes Engine, con un database per gli schemi di SOA Suite e un percorso di accesso allo storage dei file per memorizzare i file di dominio di SOA Suite e Oracle SOA Suite in Kubernetes.

Le procedure indicate di seguito presuppongono di aver installato i componenti elencati di seguito.
  • Git
  • Interfaccia della riga di comando OCI (CLI)
  • Terraform
  • Helm 3.x

Accetta le condizioni d'uso per le immagini Docker

Il grafico è necessario per utilizzare l'immagine Docker di Oracle SOA Suite da Oracle Container Registry. È pertanto necessario accettare i termini e le condizioni dell'immagine Docker di Oracle SOA Suite oppure non estrarre l'immagine dal registro.

Per accettare i termini, effettuare le operazioni riportate di seguito.

  1. Andare a Oracle Container Registry e cercare SOA.
  2. Fare clic su soasuite.
  3. Fare clic per accettare i termini e le condizioni della licenza a destra.
  4. Inserisci le tue informazioni (se non lo hai già fatto).
  5. Accettare la licenza.
  6. Se si desidera distribuire il database come container all'interno del cluster kubernetes (facoltativo, non per la produzione), è necessario accettare i termini e le condizioni dell'immagine Docker di Oracle Database. Lo script Terraform distribuisce un database Oracle da Oracle Cloud Database Cloud Service, pertanto questo passo è necessario solo se si desidera distribuire il database come contenitore nel cluster Kubernetes.
    1. Cerca database.
    2. Fare clic su Enterprise.
    3. Fare clic per accettare i termini e le condizioni della licenza a destra.
    4. Inserisci le tue informazioni (se non lo hai già fatto).
    5. Accettare la licenza.

Ottieni il codice Terraform

Il codice Terraform ti consente di distribuire l'infrastruttura necessaria (cluster Kubernetes, storage di file) e il grafico Helm SOA e i relativi prerequisiti.

Per ottenere il codice Terraform:

  1. Fare clic su Repository Github nella barra di navigazione a sinistra di questo playbook (https://github.com/oracle-quickstart/oke-soa).
    Questa operazione aprirà Oracle SOA Suite sul repository Github Kubernetes.
  2. Fare clic su Codice e scaricarlo come file zip oppure utilizzare la riga di comando git per duplicare il repository in una cartella locale di propria scelta immettendo
    git clone https://github.com/oracle-quickstart/oke-soa
  3. Per accedere alla cartella codici, immettere:
    cd oke-soa

Raccogliere le informazioni necessarie

Ora, individua e copia gli OCID della tenancy e del compartimento appropriati.

  1. Ottenere l'OCID tenancy dalla console di Oracle Cloud facendo clic sull'icona Utente (in alto a destra), quindi su Tenancy. Copiare l'OCID della tenancy (campo tenancy) e incollarlo nel file dell'ambiente.
  2. Ottenere l'OCID del compartimento dalla console di Oracle Cloud facendo clic su Identità, quindi su Compartimenti. Andare al compartimento in cui si desidera distribuire l'infrastruttura e copiare l'OCID di tale compartimento.

Creazione di un file di configurazione terraform.tfvars

Per eseguire la distribuzione, è necessario creare un file denominato terraform.tfvars e definirne alcune impostazioni.

  1. Creare un file denominato terraform.tfvars dal modello immettendo:
    cp terraform.tfvars.template terraform.tfvars
  2. Modificare il file con l'editor desiderato e fornire i seguenti valori:

    Nota

    I passi da 3 a 9 descrivono le informazioni necessarie per questo file di configurazione. Assicurarsi di immettere i valori appropriati per le credenziali richieste.
    ## 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. Il dominio di disponibilità predefinito per il file system è impostato su AD-2 perché spesso è meno utilizzato di AD-1. Se ci si trova in una singola area AD, questo potrebbe non riuscire, quindi è necessario modificare l'indice del dominio di disponibilità modificando la variabile predefinita
    ad_number = 2
    a:
    ad_number = 1 
  4. Fornire credenziali valide in modo da poter accedere a Oracle Container Registry (indirizzo di posta elettronica e password dell'account) per estrarre le immagini.
  5. Fornire un nome utente e una password conformi ai requisiti di password per il dominio WebLogic, ovvero deve includere una lettera maiuscola, un numero e avere una lunghezza di almeno otto caratteri:
    soa_domain_admin_username = "" 
    soa_domain_admin_password = ""
  6. Fornire le credenziali per l'utente SYS del database e la password dello schema RCU. Entrambi devono contenere da 16 a 30 caratteri, inclusi uno maiuscolo, un numero e due caratteri speciali (ad esempio, #!%).
    db_sys_password = "" 
    rcu_password = ""
  7. Aggiungere un rcu_prefix. Questo valore deve essere univoco per ogni dominio (quando si distribuiscono più domini).
  8. Aggiungere un nome di dominio. Questo nome deve essere univoco (quando si distribuiscono più domini).
  9. Impostare ssh_authorized_key con la chiave pubblica ssh. È possibile ottenere l'output di una chiave pubblica creata in precedenza immettendo:
    cat ~/.ssh/id_rsa.pub
  10. Salvare il file terraform.tfvars.

Esecuzione della distribuzione

Dopo aver completato tutti i lavori preliminari, è ora possibile eseguire la distribuzione.

  1. Inizializzare il progetto:
    terraform init 
  2. Passare a 2. Facoltativamente, selezionare plan.To per determinare cosa accadrà. È possibile eseguire l'operazione del piano:
    terraform plan 
  3. Applicare il piano:
    terraform apply
    Verrà richiesto di immettere yes per applicare il piano:
     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 
    Il provisioning delle risorse richiederà alcuni minuti.
Questo esegue il provisioning del cluster Oracle Kubernetes Engine, con:
  • Pool di nodi di 3 nodi.
  • Database in cui memorizzare gli schemi di Oracle SOA Suite.
  • File system di storage dei file e destinazione di accesso per memorizzare i file di dominio di Oracle SOA Suite.
Inoltre, installa i prerequisiti di Kubernetes per l'installazione di Oracle SOA Suite:
  • Operatore Oracle WebLogic Kubernetes.
  • Il controller di ingresso Traefik.
Crea segreti per i vari componenti del dominio SOA che distribuisce Oracle SOA su Kubernetes.

Accedi alla distribuzione

Se Oracle SOA Suite on è stato distribuito correttamente su Oracle Kubernetes, ora è possibile accedervi.

  1. Recupera l'IP pubblico del load balancer creato dal controller di entrata
    kubectl get services -n traefik
    Questo dovrebbe produrre qualcosa del tipo:
    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
    Se è ancora in sospeso, attendere qualche minuto prima di controllare di nuovo.

    Recupera il valore EXTERNAL-IP per il load balancer.

  2. Assicurarsi che i server di dominio SOA siano in esecuzione: se non è stato modificato il nome dello spazio di nomi SOA, è possibile controllare i pod in esecuzione immettendo:
    kubectl get pods -n soans
    Dovresti vedere:
    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>
    Prima di controllare l'URL, assicurarsi che STATUS sia RUNNING e che READY sia 1/1 per i pod precedenti.
  3. Con l'IP pubblico raccolto in precedenza, passare a http://PUBLIC_IP:30305/console per accedere alla console WebLogic. Se viene visualizzato il messaggio Gateway errato, il server di amministrazione non è ancora in esecuzione.
  4. Eseguire il login alla console con i valori soa_domain_username e soa_domain_password specificati in terraform.tfvars file.
  5. Per controllare l'endpoint /ess, passare a http://PUBLIC_IP:30305/ess. Il nome utente e la password sono gli stessi utilizzati per la console.
  6. Controllare l'endpoint /em sfogliando http://PUBLIC_IP:30305/em.
  7. Controllare l'endpoint /soa/composer sfogliando http://PUBLIC_IP:30305/soa/composer.