주:

OpenCost를 통해 OCI Kubernetes Engine에서 멀티 테넌트 SaaS 비용 관리

소개

Oracle Cloud Infrastructure(OCI)에서 멀티 테넌트 서비스형 소프트웨어(SaaS) 솔루션을 제공하는 ISV(Independent Software Vendor)는 각 테넌트에 대한 정확한 청구를 보장하면서 비용을 효율적으로 관리하는 데 어려움을 겪는 경우가 많습니다. SaaS 제공업체의 일반적인 접근 방식은 Kubernetes에서 테넌트의 워크로드를 실행하고, Kubernetes 네임스페이스를 활용하여 동일한 클러스터 내에서 논리적으로 분리하는 것입니다. OCI는 Oracle Cloud Infrastructure Kubernetes Engine(OCI Kubernetes Engine 또는 OKE)에 클러스터를 배포할 때 전체 클러스터에 대한 세부 비용 데이터를 제공합니다. 그러나 테넌트별 리소스 사용량을 추적하고 청구하는 데 중요한 네임스페이스와 같은 개별 Kubernetes 구성요소에 대해 세분화된 비용 인사이트를 제공할 수는 없습니다.

이 자습서에서는 OKE의 다중 테넌트 환경에서 비용을 추적하고 관리하는 데 도움이 되는 오픈 소스 비용 모니터링 툴인 OpenCost를 사용하여 배포하기 쉬운 솔루션을 안내합니다.

ISV는 여러 테넌트가 OKE 클러스터 내에서 인프라를 공유하는 경우 SaaS 애플리케이션을 실행할 수 있습니다. 문제는 각 테넌트의 리소스 소비와 관련된 비용을 파악하는 것입니다. 이러한 비용을 이해하는 것은 비용을 정확하게 할당하고 각 테넌트에 대해 공정한 청구를 보장하는 데 필수적입니다.

테넌트당 리소스 사용량을 볼 수 없는 경우 다음을 수행하기가 어렵습니다.

OpenCost은 Kubernetes 환경을 위해 특별히 설계된 오픈 소스 비용 모니터링 및 관리 툴입니다. OKE 클러스터의 리소스 사용량을 추적하고 CPU, 메모리, 스토리지 및 네트워킹 비용을 할당합니다. OpenCost를 사용하면 Kubernetes 네임스페이스를 기반으로 이러한 비용을 테넌트에 쉽게 매핑할 수 있으므로 다중 테넌트 SaaS 애플리케이션을 사용하는 ISV에 이상적인 솔루션입니다.

OpenCost를 사용하면 다음 작업을 수행할 수 있습니다.

목표

필요 조건

OKE 클러스터에 OpenCost 설치

  1. 설치에 사용할 OpenCost 네임스페이스를 생성합니다.

    kubectl create namespace opencost
    

    OpenCost는 node.spec.providerID에서 노드 정보를 읽어 OCI를 클라우드 서비스 제공자(CSP)로 자동으로 감지합니다. OCI가 CSP로 감지되면 OpenCost는 OCI Price List API에서 가격 데이터를 검색하려고 시도합니다. 공용 가격 데이터를 검색하는 데 필요한 API 키가 없습니다.

  2. OpenCost를 OpenCost 네임스페이스에 설치합니다.

    helm install opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost
    
  3. OpenCost를 업데이트합니다.

    helm upgrade opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost
    
  4. 외부 IP 주소가 OCI 로드 밸런서에 지정되도록 서비스를 업데이트합니다.

    kubectl patch svc opencost -n opencost -p '{"spec": {"type": "LoadBalancer"}}'
    

    OpenCost에 공개적으로 액세스하려면 NSG(네트워크 보안 그룹)를 생성하고, 필요한 포트를 열도록 수신 규칙을 구성하고, 이를 OCI 로드 밸런서와 연관시켜야 합니다.

  5. NSG(Network Security Group)를 생성합니다. YOUR_COMPARTMENT_ID을 실제 컴파트먼트 ID로 바꾸고 YOUR_VCN_ID을 VCN ID로 바꿔야 합니다. OCI 콘솔에서 이 정보를 검색할 수 있습니다.

    oci network nsg create --compartment-id [YOUR_COMPARTMENT_ID] --vcn-id [YOUR_VCN_ID] --display-name opencost_nsg
    
  6. 인터넷에서 9090 포트에 대한 TCP 트래픽을 허용하는 수신 규칙을 생성합니다. opencost-nsg-rule.json 파일은 opencost-nsg-rule.json에서 다운로드할 수 있습니다.

    oci network nsg rules add --nsg-id [YOUR_NSG_ID] --from-json file://opencost-nsg-rule.json
    
  7. 새로 생성된 NSG(네트워크 보안 그룹)를 OCI 로드 밸런서에 연결합니다. YOUR_LB_ID을 로드 밸런서 ID로 바꾸고 YOUR_NSG_ID을 네트워크 보안 그룹 ID로 바꿉니다.

    oci lb nsg update --load-balancer-id [YOUR_LB_ID] --nsg-ids '[ "[YOUR_NSG_ID]" ]'
    

    NSG를 로드 밸런서에 연결

  8. 외부 IP 주소를 검색하고 웹 브라우저를 사용하여 OpenCost에 액세스하는 데 사용합니다. kubectl get svc -n opencost 명령을 실행합니다.

    OpenCost가 브라우저에서 열림

    OpenCost UI에 익숙해지려면 비디오: OpenCost가 Kubernetes 비용 및 클라우드 청구를 추적하는 방법 보기를 참조하십시오.

    축하합니다! OKE 클러스터에 OpenCost를 성공적으로 설치 및 구성했습니다!

다음 단계

OpenCost를 OKE 클러스터와 통합하고 사용자 정의 가격을 구성하면 다중 테넌트 SaaS 비용을 정확하게 파악할 수 있습니다. 이제 ISV는 비용을 공정하고 정확하게 할당하여 각 테넌트의 리소스 사용량이 최종 청구서에 반영되도록 할 수 있습니다.

OpenCost의 사용자정의 가격책정 기능을 사용하면 비용 예측이 다중 테넌트 SaaS 환경에서 수익성을 유지하는 데 중요한 OCI의 가격책정과 일치하는지 확인할 수 있습니다.

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.