在 Oracle Kubernetes 引擎上部署 Oracle SOA Suite

在此步骤中,您将在 Oracle Kubernetes 引擎上预配一个 Kubernetes 集群,其中包含用于 SOA Suite 方案的数据库以及用于存储 SOA Suite 域文件的文件存储挂载路径,以及 Kubernetes 中的 Oracle SOA Suite。

以下过程假定您已安装了以下内容:
  • Git
  • OCI 命令行界面 (CLI)
  • Terraform
  • Helm 3.x

接受 Docker 映像的使用条款

该图表需要使用 Oracle Container Registry 中的 Oracle SOA Suite Docker 映像;因此,您需要接受 Oracle SOA Suite Docker 映像条款和条件,否则无法从注册表中提取映像。

要接受条款,请执行以下操作:

  1. 转到 Oracle 容器注册表并搜索 SOA。
  2. 单击 soasuite
  3. 单击以接受右侧的许可证条款和条件。
  4. 填写您的信息(如果您尚未填写)。
  5. 接受该许可证。
  6. (可选)如果您打算将数据库部署为 kubernetes 集群中的容器(可选;不适用于生产环境),则需要接受 Oracle Database Docker 映像条款和条件。Terraform 脚本从 Oracle Cloud Database Cloud Service 部署 Oracle 数据库,因此仅当您希望将数据库部署为 Kubernetes 集群中的容器时,才需要执行此步骤。
    1. 搜索数据库。
    2. 单击“Enterprise(企业)”。
    3. 单击以接受右侧的许可证条款和条件。
    4. 填写您的信息(如果您尚未填写)。
    5. 接受该许可证。

获取 Terraform 代码

通过 Terraform 代码,您可以部署必要的基础设施(Kubernetes 集群、文件存储)并部署 SOA Helm 图表及其先决条件。

要获取 Terraform 代码,请执行以下操作:

  1. 单击此剧本 (https://github.com/oracle-quickstart/oke-soa) 左侧导航栏中的 Github 资料档案库
    这将打开 Kubernetes Github 资料档案库上的 Oracle SOA Suite。
  2. 单击代码并将其下载为 zip 文件,或者使用 git 命令行在您选择的本地文件夹中通过输入 克隆资料档案库
    git clone https://github.com/oracle-quickstart/oke-soa
  3. 通过输入以下内容进入 code 文件夹:
    cd oke-soa

收集所需的信息

现在,找到并复制相应的租户和区间 OCID。

  1. 通过依次单击“用户”图标(右上角)和租户,从 Oracle Cloud 控制台获取租户 OCID。复制租户的 OCID(“租户”字段),并将其粘贴到您的环境文件中。
  2. 通过依次单击身份区间,从 Oracle Cloud 控制台获取区间 OCID。导航到要部署基础结构的区间,然后复制该区间的 OCID。

创建 terraform.tfvars 配置文件

要运行部署,您需要创建一个名为 terraform.tfvars 的文件并在其中定义一些设置。

  1. 通过输入以下内容,从模板创建一个名为 terraform.tfvars 的文件:
    cp terraform.tfvars.template terraform.tfvars
  2. 使用您选择的编辑器编辑文件并提供以下值:

    注意:

    步骤 3 到步骤 9 描述此配置文件的必需信息。确保为所需的身份证明输入适当的值。
    ## 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. 文件系统的默认可用性域设置为 AD-2,因为其使用量通常小于 AD-1。如果您位于单个 AD 区域,这可能会失败,因此您需要通过更改默认变量 来更改可用性域索引
    ad_number = 2
    到:
    ad_number = 1 
  4. 提供有效的身份证明,以便您可以访问 Oracle 容器注册表(您的账户电子邮件和密码)来提取映像。
  5. 提供符合 WebLogic 域密码要求的用户名和密码;也就是说,它必须包含一个大写字母和一个数字,并且长度至少为八个字符:
    soa_domain_admin_username = "" 
    soa_domain_admin_password = ""
  6. 为数据库的 SYS 用户提供身份证明以及 RCU 方案口令。两者都必须包含 16 到 30 个字符,包括一个大写字母、一个数字和两个特殊字符(例如,#!%)。
    db_sys_password = "" 
    rcu_password = ""
  7. 添加 rcu_prefix。此值对于每个域必须唯一(在部署多个域时)。
  8. 添加域名。此名称必须唯一(在部署多个域时)。
  9. 使用 SSH 公共密钥设置 ssh_authorized_key。可以通过输入以下内容来获取以前创建的公共密钥的输出:
    cat ~/.ssh/id_rsa.pub
  10. 保存 terraform.tfvars 文件。

运行部署

完成所有初步工作后,您现在就可以运行部署。

  1. 初始化项目:
    terraform init 
  2. 2.(可选)检查 plan.To 确定将发生什么情况,您可以运行计划操作:
    terraform plan 
  3. 应用计划:
    terraform apply
    系统将提示您输入 yes 以应用该计划:
     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 
    预配资源将需要几分钟时间。
这预配了 Oracle Kubernetes 引擎集群,并具有:
  • 由 3 个节点组成的节点池。
  • 用于存储 Oracle SOA Suite 方案的数据库。
  • 用于存储 Oracle SOA Suite 域文件的文件存储文件系统和装载目标。
它还安装 Oracle SOA Suite 的 Kubernetes 先决条件:
  • Oracle WebLogic Kubernetes 操作员。
  • Traefik 入站控制器。
它为在 Kubernetes 上部署 Oracle SOA 的 SOA 域的各种组件创建密钥。

访问部署

如果 Oracle Kubernetes 上成功部署了 Oracle SOA Suite,您现在可以访问它。

  1. 获取入站控制器创建的负载平衡器的公共 IP
    kubectl get services -n traefik
    这应该输出如下内容:
    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
    如果它仍处于暂挂状态,请再等待几分钟,然后再重新检查。

    获取负载平衡器的 EXTERNAL-IP 值。

  2. 确保 SOA 域服务器正在运行:如果尚未更改 SOA 名称空间的名称,可以通过输入以下内容来检查正在运行的 pod:
    kubectl get pods -n soans
    您可以看到:
    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>
    在检查 URL 之前,请确保 STATUSRUNNING 且上面的 pod 的 READY1/1
  3. 如果之前收集了公共 IP,请浏览到 http://PUBLIC_IP:30305/console 以转到 WebLogic 控制台。如果看到 "Bad Gateway"(坏网关)消息,则管理服务器尚未运行。
  4. 使用您在 terraform.tfvars file 中指定的 soa_domain_usernamesoa_domain_password 登录控制台。
  5. 通过浏览到 http://PUBLIC_IP:30305/ess 检查 /ess 端点。用户名和密码与用于控制台的用户名和密码相同。
  6. 通过浏览到 http://PUBLIC_IP:30305/em 检查 /em 端点。
  7. 通过浏览到 http://PUBLIC_IP:30305/soa/composer 检查 /soa/composer 端点。