Implantar o Oracle SOA Suite no Oracle Kubernetes Engine

Nesta etapa, você provisionará um cluster do Kubernetes no Oracle Kubernetes Engine, com um banco de dados para os esquemas do SOA Suite e um caminho de montagem de armazenamento de arquivos para armazenar os arquivos de domínio do SOA Suite e o Oracle SOA Suite no Kubernetes.

Os procedimentos a seguir pressupõem que você tenha instalado o seguinte:
  • Git
  • CLI ( Interface de Linha de Comando ) do OCI
  • Terraform
  • Helm 3.x

Aceitar Termos de Uso das Imagens do Docker

O gráfico é necessário para usar a imagem do Oracle SOA Suite Docker do Oracle Container Registry; portanto, você precisa aceitar os termos e condições da imagem do Oracle SOA Suite Docker ou falhará ao extrair a imagem do registro.

Para aceitar os termos, faça o seguinte:

  1. Vá para o Oracle Container Registry e procure SOA.
  2. Clique em soasuite.
  3. Clique para aceitar os termos e condições da Licença à direita.
  4. Preencha suas informações (se você ainda não o fez).
  5. Aceite a Licença.
  6. Opcionalmente, se você pretende implantar o banco de dados como um contêiner no cluster do kubernetes (opcional; não para produção), aceite os Termos e Condições da imagem do Oracle Database Docker. O script do Terraform implanta um banco de dados Oracle do Oracle Cloud Database Cloud Service, portanto, essa etapa só será necessária se você quiser implantar o banco de dados como um contêiner no cluster do Kubernetes.
    1. Procurar Banco de Dados.
    2. Clique em Enterprise.
    3. Clique para aceitar os termos e condições da Licença à direita.
    4. Preencha suas informações (se você ainda não o fez).
    5. Aceite a Licença.

Obter o Código do Terraform

O código do Terraform permite implantar a infraestrutura necessária (cluster do Kubernetes, armazenamento de arquivos) e implantar o gráfico SOA Helm e seus pré-requisitos.

Para obter o código do Terraform:

  1. Clique em Repositório do Github na barra de navegação esquerda deste playbook (https://github.com/oracle-quickstart/oke-soa).
    Isso abrirá o repositório do Oracle SOA Suite no Kubernetes Github.
  2. Clique em Código e faça download dele como um arquivo zip ou use a linha de comando git para, em uma pasta local de sua escolha, clonar o repositório digitando
    git clone https://github.com/oracle-quickstart/oke-soa
  3. Entre na pasta de código digitando:
    cd oke-soa

Reunir Informações Necessárias

Agora, localize e copie os OCIDs apropriados da tenancy e do compartimento.

  1. Obtenha o OCID da tenancy na Console do Oracle Cloud clicando no ícone Usuário (canto superior direito) e, em seguida, em Tenancy. Copie o OCID da tenancy (campo Tenancy) e cole-o no seu arquivo de ambiente.
  2. Obtenha o OCID do compartimento na Console do Oracle Cloud clicando em Identidade e, em seguida, em Compartimentos. Navegue até o compartimento no qual você deseja implantar a infraestrutura e Copie o OCID desse compartimento.

Criar um Arquivo de Configuração terraform.tfvars

Para executar a implantação, você precisa criar um arquivo chamado terraform.tfvars e definir algumas definições nele.

  1. Crie um arquivo chamado terraform.tfvars com base no modelo informando:
    cp terraform.tfvars.template terraform.tfvars
  2. Edite o arquivo com o editor de sua escolha e forneça os seguintes valores:

    Observação:

    As etapas de 3 a 9 descrevem as informações necessárias para este arquivo de configuração. Certifique-se de informar os valores apropriados para as credenciais necessárias.
    ## 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. O Domínio de Disponibilidade padrão do Sistema de Arquivos é definido como AD-2 porque geralmente é menos usado que AD-1. Se você estiver em uma única região do AD, isso poderá falhar; portanto, você precisará alterar o índice do domínio de disponibilidade alterando a variável padrão
    ad_number = 2
    para:
    ad_number = 1 
  4. Forneça credenciais válidas para que você possa acessar o Oracle Container Registry (e-mail e senha da sua conta) para extrair as imagens.
  5. Forneça um nome de usuário e uma senha em conformidade com os requisitos de senha para o domínio WebLogic, ou seja, ele deve incluir uma letra maiúscula, um número e ter pelo menos oito caracteres:
    soa_domain_admin_username = "" 
    soa_domain_admin_password = ""
  6. Forneça credenciais para o usuário SYS do banco de dados e a senha do Esquema RCU. Ambos devem conter de 16 a 30 caracteres, incluindo uma letra maiúscula, um número e dois caracteres especiais (por exemplo, #!%).
    db_sys_password = "" 
    rcu_password = ""
  7. Adicione um rcu_prefix. Esse valor deve ser exclusivo por domínio (ao implantar vários domínios).
  8. Adicione um nome de domínio. Esse nome deve ser exclusivo (ao implantar vários domínios).
  9. Defina o ssh_authorized_key com sua chave pública ssh. Você pode obter a saída de uma chave pública criada anteriormente digitando:
    cat ~/.ssh/id_rsa.pub
  10. Salve o arquivo terraform.tfvars.

Executar a Implantação

Com todo o trabalho preliminar concluído, agora você executa a implantação.

  1. Inicialize o projeto:
    terraform init 
  2. 2. Opcionalmente, verifique o plan.To para determinar o que acontecerá. Você pode executar a operação do plano:
    terraform plan 
  3. Aplique o plano:
    terraform apply
    Você será solicitado a inserir yes para aplicar o plano:
     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 
    Levará alguns minutos para provisionar os recursos.
Isso provisiona o cluster do Oracle Kubernetes Engine, com:
  • Um pool de nós de 3 nós.
  • Um banco de dados para armazenar esquemas do Oracle SOA Suite.
  • Um sistema de arquivos de armazenamento de arquivos e ponto de acesso NFS para armazenar os arquivos de domínio do Oracle SOA Suite.
Ele também instala os pré-requisitos do Kubernetes para instalar o Oracle SOA Suite:
  • O Operador do Oracle WebLogic Kubernetes.
  • O controlador de entrada Traefik.
Ele cria segredos para os vários componentes do domínio SOA. Ele implanta o Oracle SOA no Kubernetes.

Acessar a Implantação

Se o Oracle SOA Suite foi implantado com sucesso no Oracle Kubernetes, agora você poderá acessá-lo.

  1. Obter o IP público do balanceador de carga criado pelo controlador de entrada
    kubectl get services -n traefik
    Isso deve gerar 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
    Se ainda estiver pendente, aguarde mais alguns minutos antes de verificar novamente.

    Obtenha o valor EXTERNAL-IP para o balanceador de carga.

  2. Certifique-se de que os servidores de domínio SOA estejam em execução: Se você não tiver alterado o nome do namespace SOA, poderá verificar os pods em execução informando:
    kubectl get pods -n soans
    Você deverá 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>
    Certifique-se de que STATUS seja RUNNING e que READY seja 1/1 para pods acima antes de verificar o URL.
  3. Com o IP público coletado anteriormente, navegue até http://PUBLIC_IP:30305/console para acessar a console WebLogic. Se você vir a mensagem Gateway Inválido, o servidor de administração ainda não está em execução.
  4. Faça log-in na console com o soa_domain_username e o soa_domain_password especificados no terraform.tfvars file.
  5. Verifique o ponto final /ess navegando até http://PUBLIC_IP:30305/ess. O nome de usuário e a senha são os mesmos que você usa para a console.
  6. Verifique o ponto final /em navegando até http://PUBLIC_IP:30305/em.
  7. Verifique o ponto final /soa/composer navegando até http://PUBLIC_IP:30305/soa/composer.