Oracle KubernetesエンジンへのOracle SOA Suiteのデプロイ

このステップでは、Oracle Kubernetes EngineにKubernetesクラスタをプロビジョニングし、SOA Suiteスキーマ用のデータベースと、SOA Suiteドメイン・ファイルを格納するためのファイル・ストレージ・マウントパスと、Oracle SOA SuiteをKubernetesに格納します。

次の手順では、次をインストールしたと想定しています:
  • Git
  • OCIコマンドライン・インタフェース(CLI)
  • Terraform
  • Helm 3.x

Dockerイメージの使用条件への同意

このチャートは、Oracle Container RegistryからOracle SOA Suite Dockerイメージを使用するために必要であるため、Oracle SOA Suite Dockerイメージの条件に同意する必要があります。そうしないと、レジストリからのイメージのプルに失敗します。

条件に同意するには、次を実行します。

  1. Oracle Container Registryに移動し、SOAを検索します。
  2. 「soasuite」をクリックします。
  3. 右側のライセンス条件に同意する場合にクリックします。
  4. 情報を入力します(まだ入力していない場合)。
  5. ライセンスに同意します。
  6. オプションで、データベースをkubernetesクラスタ内のコンテナとしてデプロイする場合(本番ではなくオプション)、Oracle Database Dockerイメージの使用条件に同意する必要があります。Terraformスクリプトは、OracleデータベースをOracle Cloud Database Cloud Serviceからデプロイするため、このステップは、データベースを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. 次のように入力してコード・フォルダに入ります。
    cd oke-soa

必要な情報の収集

次に、適切なテナンシおよびコンパートメントOCIDsを見つけてコピーします。

  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-1よりも使用頻度が低いため、AD-2に設定されます。単一のADリージョンにいる場合、これは失敗する可能性があるため、デフォルトの変数を変更して可用性ドメイン索引を変更する必要があります
    ad_number = 2
    変更後:
    ad_number = 1 
  4. Oracle Container Registry (アカウントの電子メールおよびパスワード)にアクセスしてイメージをプルできるように、有効な資格証明を指定します。
  5. WebLogicドメインのパスワード要件に準拠したユーザー名とパスワードを指定します。つまり、1つの大文字、1つの数字および8文字以上の長さを含める必要があります。
    soa_domain_admin_username = "" 
    soa_domain_admin_password = ""
  6. データベースのSYSユーザーの資格証明とRCUスキーマ・パスワードを指定します。どちらも16文字から30文字で、1つの大文字、1つの数字および2つの特殊文字(#!%など)を含める必要があります。
    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 Engineクラスタが次のようにプロビジョニングされます:
  • 3ノードのノード・プール。
  • Oracle SOA Suiteスキーマを格納するデータベース。
  • Oracle SOA Suiteドメイン・ファイルを格納するファイル・ストレージ・ファイル・システムおよびマウント・ターゲット。
また、Oracle SOA SuiteをインストールするためのKubernetesの前提条件もインストールされます。
  • Oracle WebLogic Kubernetes Operatorです。
  • Traefikイングレスコントローラ
SOAドメインの様々なコンポーネントのシークレットが作成されます。Oracle SOAをKubernetesにデプロイします。

デプロイメントへのアクセス

Oracle SOA Suite onがOracle Kubernetesに正常にデプロイされた場合は、これにアクセスできるようになりました。

  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ネームスペースの名前を変更していない場合は、次のように入力して実行中のポッドを確認できます:
    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で、前述のポッドのREADY1/1であることを確認します。
  3. 前に収集したパブリックIPで、http://PUBLIC_IP:30305/console を参照してWebLogicコンソールに移動します。不正なゲートウェイ・メッセージが表示された場合は、管理サーバーがまだ実行されていません。
  4. terraform.tfvars fileで指定したsoa_domain_usernameおよびsoa_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エンドポイントを確認します。