Oracle SOA Suite auf Oracle-Kubernetes-Engine bereitstellen

In diesem Schritt stellen Sie ein Kubernetes-Cluster auf der Oracle Kubernetes Engine bereit, mit einer Datenbank für die SOA Suite-Schemas und einem Dateispeicher-Mountpath zum Speichern der SOA Suite-Domaindateien und Oracle SOA Suite in Kubernetes.

Bei den folgenden Verfahren wird davon ausgegangen, dass Sie Folgendes installiert haben:
  • Git
  • OCI-Befehlszeilenschnittstelle (CLI)
  • Terraform
  • Helm 3.x

Nutzungsbedingungen für die Docker-Images akzeptieren

Das Diagramm ist erforderlich, um das Oracle SOA Suite Docker-Image aus der Oracle Container Registry zu verwenden. Sie müssen daher die Oracle SOA Suite Docker-Imagebedingungen akzeptieren, oder das Image kann nicht aus der Registry abgerufen werden.

Gehen Sie folgendermaßen vor, um die Bedingungen zu akzeptieren:

  1. Gehen Sie zur Oracle Container Registry, und suchen Sie nach SOA.
  2. Klicken Sie auf soasuite.
  3. Klicken Sie hier, um die Lizenzbedingungen und Bedingungen rechts zu akzeptieren.
  4. Geben Sie Ihre Daten ein (falls noch nicht geschehen).
  5. Akzeptieren Sie die Lizenz.
  6. Wenn Sie die Datenbank optional als Container im kubernetes-Cluster bereitstellen möchten (optional; nicht für die Produktion), müssen Sie die Allgemeinen Geschäftsbedingungen des Oracle Database-Docker-Images akzeptieren. Das Terraform-Skript stellt eine Oracle-Datenbank aus Oracle Cloud Database Cloud Service bereit. Dieser Schritt ist daher nur erforderlich, wenn Sie die Datenbank als Container im Kubernetes-Cluster bereitstellen möchten.
    1. Nach Datenbank suchen.
    2. Klicken Sie auf "Enterprise".
    3. Klicken Sie hier, um die Lizenzbedingungen und Bedingungen rechts zu akzeptieren.
    4. Geben Sie Ihre Daten ein (falls noch nicht geschehen).
    5. Akzeptieren Sie die Lizenz.

Terraform-Code abrufen

Mit dem Terraform-Code können Sie die erforderliche Infrastruktur (Kubernetes-Cluster, Dateispeicher) bereitstellen und das SOA-Helm-Diagramm und die zugehörigen Voraussetzungen bereitstellen.

So rufen Sie den Terraform-Code ab:

  1. Klicken Sie in der linken Navigationsleiste dieser Arbeitsmappe auf Github-Repository (https://github.com/oracle-quickstart/oke-soa).
    Dadurch wird das Oracle SOA Suite on Kubernetes-Github-Repository geöffnet.
  2. Klicken Sie entweder auf Code, und laden Sie die Datei als ZIP-Datei herunter, oder verwenden Sie die Git-Befehlszeile, um das Repository in einem lokalen Ordner Ihrer Wahl zu klonen, indem Sie eingeben.
    git clone https://github.com/oracle-quickstart/oke-soa
  3. Gehen Sie in den Codeordner, indem Sie Folgendes eingeben:
    cd oke-soa

Erforderliche Informationen erfassen

Suchen und kopieren Sie jetzt die entsprechenden Mandanten- und Compartment-OCIDs.

  1. Rufen Sie die Mandanten-OCID aus der Oracle Cloud-Konsole ab, indem Sie auf das Benutzersymbol (oben rechts) und dann auf Mandant klicken. Kopieren Sie die OCID des Mandanten (Mandantenfeld), und fügen Sie sie in die Umgebungsdatei ein.
  2. Rufen Sie die Compartment-OCID aus der Oracle Cloud-Konsole ab, indem Sie auf Identität und dann auf Compartments klicken. Navigieren Sie zu dem Compartment, in dem Sie die Infrastruktur bereitstellen möchten, und kopieren Sie die OCID dieses Compartments.

Erstellen Sie eine terraform.tfvars-Konfigurationsdatei

Um das Deployment auszuführen, müssen Sie eine Datei mit dem Namen terraform.tfvars erstellen und einige Einstellungen darin definieren.

  1. Erstellen Sie eine Datei namens terraform.tfvars aus der Vorlage, indem Sie Folgendes eingeben:
    cp terraform.tfvars.template terraform.tfvars
  2. Bearbeiten Sie die Datei mit dem Editor Ihrer Wahl, und geben Sie die folgenden Werte an:

    Hinweis:

    Die Schritte 3 bis 9 beschreiben die erforderlichen Informationen für diese Konfigurationsdatei. Stellen Sie sicher, dass Sie die entsprechenden Werte für die erforderlichen Zugangsdaten eingeben.
    ## 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. Die Standard-Availability-Domain für das Dateisystem ist auf AD-2 gesetzt, da sie häufig weniger verwendet wird als AD-1. Wenn Sie sich in einer einzelnen AD-Region befinden, verläuft dies möglicherweise nicht erfolgreich. Sie müssen daher den Availability-Domainindex ändern, indem Sie die Standardvariable ändern.
    ad_number = 2
    zu:
    ad_number = 1 
  4. Geben Sie gültige Zugangsdaten an, damit Sie auf die Oracle Container Registry (E-Mail-Adresse und Kennwort Ihres Accounts) zugreifen können, um die Images abzurufen.
  5. Geben Sie einen Benutzernamen und ein Kennwort an, die mit den Kennwortanforderungen für die Domain WebLogic konform sind. Sie müssen also einen Großbuchstaben, eine Zahl und mindestens acht Zeichen enthalten:
    soa_domain_admin_username = "" 
    soa_domain_admin_password = ""
  6. Geben Sie Zugangsdaten für den SYS-Benutzer der Datenbank und das RCU-Schemakennwort an. Beide müssen zwischen 16 und 30 Zeichen enthalten, darunter einen Großbuchstaben, eine Zahl und zwei Sonderzeichen (z.B. #!%).
    db_sys_password = "" 
    rcu_password = ""
  7. Fügen Sie eine rcu_prefix hinzu. Dieser Wert muss pro Domain eindeutig sein (wenn mehrere Domains bereitgestellt werden).
  8. Fügen Sie einen Domainnamen hinzu. Dieser Name muss eindeutig sein (wenn mehrere Domains bereitgestellt werden).
  9. Legen Sie ssh_authorized_key mit Ihrem SSH-Public Key fest. Sie können die Ausgabe eines zuvor erstellten Public Keys abrufen, indem Sie Folgendes eingeben:
    cat ~/.ssh/id_rsa.pub
  10. Speichern Sie die Datei terraform.tfvars.

Deployment ausführen

Wenn alle Vorarbeiten abgeschlossen sind, führen Sie jetzt das Deployment aus.

  1. Initialisieren Sie das Projekt:
    terraform init 
  2. 2. Prüfen Sie optional, ob plan.To bestimmt, was geschieht. Sie können den Planvorgang ausführen:
    terraform plan 
  3. Plan anwenden:
    terraform apply
    Sie werden aufgefordert, yes einzugeben, um den Plan anzuwenden:
     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 
    Das Provisioning der Ressourcen dauert einige Minuten.
Dadurch wird das Oracle Kubernetes Engine-Cluster mit folgenden Komponenten bereitgestellt:
  • Ein Knotenpool mit 3 Knoten.
  • Eine Datenbank zum Speichern von Oracle SOA Suite-Schemas.
  • Ein Dateispeicherdateisystem und ein Mountziel zum Speichern der Oracle SOA Suite-Domaindateien.
Außerdem werden die Kubernetes-Voraussetzungen für die Installation von Oracle SOA Suite installiert:
  • Der Oracle WebLogic Kubernetes-Operator.
  • Der Traefik-Ingress-Controller.
Es erstellt Secrets für die verschiedenen Komponenten der SOA-Domain. Dabei wird Oracle SOA auf Kubernetes bereitgestellt.

Deployment aufrufen

Wenn Oracle SOA Suite on erfolgreich auf Oracle Kubernetes bereitgestellt wurde, können Sie jetzt darauf zugreifen.

  1. Öffentliche IP des vom Ingress-Controller erstellten Load Balancers abrufen
    kubectl get services -n traefik
    Die Ausgabe sollte ungefähr wie folgt lauten:
    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
    Wenn die Prüfung noch aussteht, warten Sie einige Minuten, bevor Sie sie erneut prüfen.

    Rufen Sie den Wert EXTERNAL-IP für den Load Balancer ab.

  2. Stellen Sie sicher, dass die SOA-Domainserver ausgeführt werden: Wenn Sie den Namen des SOA-Namespace nicht geändert haben, können Sie die ausgeführten Pods prüfen, indem Sie Folgendes eingeben:
    kubectl get pods -n soans
    Folgendes sollte angezeigt werden:
    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>
    Stellen Sie sicher, dass STATUS RUNNING und READY für Pods oben 1/1 ist, bevor Sie die URL prüfen.
  3. Wenn die öffentliche IP früher erfasst wurde, navigieren Sie zu http://PUBLIC_IP:30305/console , um zur WebLogic-Konsole zu gelangen. Wenn die Meldung "Bad Gateway" angezeigt wird, wird der Admin-Server noch nicht ausgeführt.
  4. Melden Sie sich bei der Konsole mit den soa_domain_username und soa_domain_password an, die Sie in terraform.tfvars file angegeben haben.
  5. Prüfen Sie den /ess-Endpunkt, indem Sie zu http://PUBLIC_IP:30305/ess navigieren. Benutzername und Kennwort sind dieselben, die Sie für die Konsole verwenden.
  6. Prüfen Sie den Endpunkt /em , indem Sie zu http://PUBLIC_IP:30305/em navigieren.
  7. Prüfen Sie den Endpunkt /soa/composer, indem Sie zu http://PUBLIC_IP:30305/soa/composer navigieren.