Kubernetes 클러스터에 마이크로 서비스 배포

마이크로서비스 아키텍처에서 각 마이크로서비스는 간단한 작업을 수행하며 REST API 요청과 같은 경량 메커니즘을 사용하여 클라이언트 또는 기타 마이크로서비스와 통신합니다. 수행하는 작업에 가장 적합한 프로그래밍 언어를 사용하여 각 마이크로 서비스를 코딩할 수 있습니다. 마이크로서비스 기반 애플리케이션은 구축과 유지 관리가 더 쉽습니다.

구조

This reference architecture shows Python Flask and Redis microservices deployed as Docker containers in a Kubernetes cluster in Oracle Cloud Infrastructure. The containers pull Docker images from Oracle Cloud Infrastructure Registry.

다음 다이어그램은 이 참조 아키텍처를 보여줍니다.

마이크로서비스 설명-oci.png는 다음과 같습니다.
그림 마이크로서비스에 대한 설명-oci.png

microservices-oci-oracle.zip

구조에는 다음과 같은 구성 요소가 있습니다.

  • 지역

    An Oracle Cloud Infrastructure region is a localized geographic area that contains one or more data centers, called availability domains. 지역은 다른 지역에 독립적이며, 거리가 먼 나라 전체나 대륙을 구분할 수 있습니다.

  • 가용성 도메인

    가용성 도메인은 한 지역 내의 독립형 독립적인 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 내결함성을 제공하는 다른 가용성 도메인의 리소스와 격리됩니다. 가용성 도메인은 전원, 냉각, 내부 가용성 도메인 네트워크와 같은 인프라를 공유하지 않습니다. 따라서 한 가용성 도메인에서 장애가 발생해도 해당 지역의 다른 가용성 도메인에 영향을 주지 않습니다.

  • 결함 도메인

    장애 도메인은 한 가용성 도메인 내 하드웨어와 인프라의 그룹입니다. 각 가용성 도메인에는 독립적인 전원 및 하드웨어의 3개의 장애 도메인이 있습니다. 여러 장애 도메인에 걸쳐 리소스를 분배할 경우 응용 프로그램은 결함 도메인 내에서 물리적 서버 오류, 시스템 유지 관리 및 전원 오류를 허용할 수 있습니다.

  • VCN(가상 클라우드 네트워크) 및 서브넷

    VCN은 Oracle Cloud Infrastructure 지역에서 설정하는 사용자 정의 가능한 소프트웨어 정의 네트워크입니다. 기존의 데이터 센터 네트워크와 마찬가지로 VCN을 사용하면 네트워크 환경을 완벽하게 제어할 수 있습니다. VCN에는 VCN을 생성한 후 변경할 수 있는 겹치지 않는 CIDR 블록이 여러 개 있을 수 있습니다. VCN을 영역 또는 가용성 도메인으로 범위가 지정될 수 있는 서브넷으로 분할할 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속 주소 범위로 구성됩니다. 서브넷 생성 후 서브넷의 크기를 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.

  • Container Engine for Kubernetes

    Oracle Cloud Infrastructure Container Engine for Kubernetes is a fully managed, scalable, and highly available service that you can use to deploy your containerized applications to the cloud. You specify the compute resources that your applications require, and Container Engine for Kubernetes provisions them on Oracle Cloud Infrastructure in an existing tenancy. Container Engine for Kubernetes는 Kubernetes를 사용하여 호스트 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.

  • 레지스트리

    Oracle Cloud Infrastructure Registry is an Oracle-managed registry that enables you to simplify your development-to-production workflow. 레지스트리를 사용하면 Docker 이미지와 같은 개발 아티팩트를 쉽게 저장, 공유 및 관리할 수 있습니다. The highly available and scalable architecture of Oracle Cloud Infrastructure ensures that you can deploy and manage your applications reliably.

권장 사항

요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다. 다음 권장 사항을 시작점으로 사용합니다.

  • VCN

    VCN을 생성할 때 VCN의 서브넷에 연결하려는 리소스 수를 기반으로 필요한 CIDR 블록 수 및 각 블록의 크기를 확인하십시오. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.

    전용 접속을 설정할 다른 네트워크(Oracle Cloud Infrastructure, 온프레미스 데이터 센터 또는 다른 클라우드 제공자)와 겹치지 않는 CIDR 블록을 선택합니다.

    VCN을 생성한 후에는 해당 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.

    서브넷을 설계할 때는 트래픽 플로우와 보안 요구사항을 고려하십시오. 특정 계층 또는 역할 내의 모든 리소스를 동일한 서브넷에 연결하여 보안 경계 역할을 할 수 있습니다.

    지역별 서브넷 사용.

    이 아키텍처는 간편하게 Container Engine for Kubernetes를 호스트하기 위해 공용 서브넷을 사용합니다. 전용 서브넷을 사용할 수도 있습니다. 이 경우 NAT 게이트웨이를 사용하여 클러스터에서 공용 인터넷에 액세스할 수 있습니다.

  • Container Engine for Kubernetes

    이 아키텍처에서 작업자 노드는 VM.Standard2.1 구성을 사용하고 Oracle Linux에서 실행됩니다. 두 개의 작업자 노드가 두 개의 다른 마이크로서비스를 호스트하는 데 사용되지만 각 클러스터에서 최대 1,000개의 노드를 생성할 수 있습니다.

  • 레지스트리

    We use Oracle Cloud Infrastructure Registry as a private Docker registry for internal use, pushing Docker images to and pulling them from the Registry. 또한 공용 Docker 레지스트리로 사용하여 인터넷 액세스가 가능한 모든 사용자와 레지스트리 내 공용 저장소에서 이미지를 풀링할 수 있습니다.

고려 사항

  • 확장성

    로드에 따라 Kubernetes 클러스터에서 작업자 노드 수를 업데이트하여 애플리케이션을 확장할 수 있습니다. 마찬가지로 클러스터의 작업자 노드 수를 줄여 확장할 수 있습니다. Kubernetes 클러스터에서 서비스를 생성할 때 로드 밸런서를 생성하여 해당 서비스에 지정된 노드 간에 서비스 트래픽을 분산시킬 수 있습니다.

  • 애플리케이션 가용성

    장애 도메인은 단일 가용성 도메인 내에서 최적의 복원성을 제공합니다. 여러 가용성 도메인에서 동일한 작업을 수행하는 인스턴스 또는 노드를 배치할 수도 있습니다. 이 설계는 중복성을 도입하여 단일 오류 지점을 제거합니다.

  • 관리 효율성

    이 아키텍처는 두 개의 마이크로서비스를 사용합니다. 하나는 CRUD 작업을 수행하는 간단한 웹 애플리케이션인 Python Flask 마이크로 서비스입니다. 다른 마이크로서비스는 Redis 인 메모리 데이터베이스입니다. Python-Flask 마이크로서비스는 Redis 마이크로 서비스와 통신하여 데이터를 검색합니다.

  • 보안

    Use policies that restrict who can access which Oracle Cloud Infrastructure resources that your company has and how.

    Container Engine for Kubernetes is integrated with Oracle Cloud Infrastructure Identity and Access Management (IAM). IAM provides easy authentication with native Oracle Cloud Infrastructure identity functionality.

배치

OKE 클러스터를 배치하는 데 필요한 코드는 GitHub에서 사용할 수 있습니다. 이 코드는 마이크로서비스를 배포하지 않습니다.

한 번의 클릭으로 코드를 Oracle Cloud Infrastructure Resource Manager로 가져와서 스택을 생성하고 배포할 수 있습니다. 또는 GitHub에서 컴퓨터로 코드를 다운로드하고, 코드를 사용자 정의하고, Terraform CLI를 사용하여 아키텍처를 배포합니다.

  • Oracle Cloud Infrastructure Resource Manager를 사용하여 배치합니다.
    1. Oracle Cloud에 배포을 누릅니다.

      아직 사인인하지 않은 경우 테넌시 및 사용자 인증서를 입력합니다.

    2. 조항 및 조건을 검토하고 수락합니다.
    3. 스택을 배치할 영역을 선택합니다.
    4. 화면 프롬프트 및 지침에 따라 스택을 만듭니다.
    5. 스택을 생성한 후 Terraform 작업을 누르고 계획을 선택합니다.
    6. 작업이 완료될 때까지 기다린 다음 계획을 검토합니다.

      To make any changes, return to the Stack Details page, click Edit Stack, and make the required changes. Then, run the Plan action again.

    7. If no further changes are necessary, return to the Stack Details page, click Terraform Actions, and select Apply.
  • Terraform CLI를 사용하여 배포:
    1. GitHub로 이동합니다.
    2. 코드를 다운로드하거나 로컬 컴퓨터에 복제합니다.
    3. README.md의 지침을 따릅니다.

변경 로그

이 로그는 중요한 변경 사항을 나열합니다.