Oracle Kubernetes Engine에 Oracle SOA Suite 배포

이 단계에서는 Oracle Kubernetes Engine에 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 Container Registry로 이동하여 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. 다음을 입력하여 코드 폴더로 들어갑니다.
    cd oke-soa

필수 정보 수집

이제 적절한 테넌시 및 컴파트먼트 OCID를 찾아 복사합니다.

  1. 오른쪽 위 모서리에 있는 [사용자] 아이콘, 테넌시를 차례로 눌러 Oracle Cloud 콘솔에서 테넌시 OCID를 가져옵니다. 테넌시의 OCID(테넌시 필드)를 복사하고 환경 파일에 붙여 넣습니다.
  2. ID, 구획을 차례로 눌러 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 도메인에 대한 비밀번호 요구 사항을 준수하는 사용자 이름 및 비밀번호를 제공하십시오. 즉, 대문자, 숫자를 하나 이상 포함하고 8자 이상이어야 합니다.
    soa_domain_admin_username = "" 
    soa_domain_admin_password = ""
  6. 데이터베이스의 SYS 사용자에 대한 인증서와 RCU 스키마 비밀번호를 제공합니다. 둘 다 대문자 1개, 숫자 1개, 특수 문자 2개(예: #!%)를 포함하여 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 Engine 클러스터가 프로비저닝됩니다.
  • 3개 노드의 노드 풀입니다.
  • Oracle SOA Suite 스키마를 저장할 데이터베이스입니다.
  • Oracle SOA Suite 도메인 파일을 저장할 파일 스토리지 파일 시스템 및 마운트 대상입니다.
또한 Oracle SOA Suite를 설치하기 위한 Kubernetes 필요 조건도 설치합니다.
  • Oracle WebLogic Kubernetes Operator
  • Traefik 수신 컨트롤러
Oracle SOA를 Kubernetes에 배치하는 SOA 도메인의 다양한 구성요소에 대한 암호를 생성합니다.

배치 액세스

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 네임스페이스의 이름을 변경하지 않은 경우 다음을 입력하여 실행 중인 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이고 READY가 위의 Pod에 대해 1/1인지 확인하십시오.
  3. 앞에서 수집한 공용 IP를 사용하여 http://PUBLIC_IP:30305/console 으로 이동하여 WebLogic 콘솔로 이동합니다. 잘못된 게이트웨이 메시지가 표시되면 관리 서버가 아직 실행 중이 아닙니다.
  4. terraform.tfvars file에서 지정한 soa_domain_usernamesoa_domain_password를 사용하여 콘솔에 로그인합니다.
  5. http://PUBLIC_IP:30305/ess를 찾아 /ess 끝점을 확인합니다. 사용자 이름과 비밀번호는 콘솔에 사용하는 것과 동일합니다.
  6. http://PUBLIC_IP:30305/em를 찾아서 /em endpoint를 확인합니다.
  7. http://PUBLIC_IP:30305/soa/composer를 찾아서 /soa/composer 끝점을 확인합니다.