OCI Kubernetes 엔진 가상 노드를 사용하여 서버리스 Kubernetes 배치
두 작업 모드 모두 가장 미션 크리티컬한 기본 응용 프로그램을 지원할 수 있습니다. 가상 노드를 사용하면 Kubernetes 작업이 간소화되고 최고의 가격 성능을 제공합니다. 관리 노드와 가상 노드 간의 장단점은 관리 노드에 있습니다. 노드 기반구조를 보다 강력하게 제어할 수 있습니다. HostPort
및 HostNetwork
를 사용하도록 Kubernetes 리소스를 구성하거나 DaemonSets
및 애플리케이션 또는 도구에 필요한 기타 옵션을 실행할 수 있습니다. 대부분의 사용 사례에서는 이러한 옵션이 필요하지 않습니다.
가상 노드는 컨테이너 실행 및 관리에 대한 세부적인 제어 권한이 필요하지 않을 때 가장 적합합니다. 애플리케이션에서 가상 노드와 함께 사용할 수 없는 노드 기반구조를 구성해야 하는 경우 관리 노드를 사용합니다.
구조
OKE 클러스터를 OCI Vault와 통합하려면 외부 암호 연산자가 OKE 클러스터에 배치됩니다. 그러면 OCI Vault에 매핑되는 SecretStore 리소스를 정의하여 데이터베이스에 대한 비밀번호를 보유할 수 있습니다. SecretStore 리소스가 매핑되면 OKE 클러스터는 비밀번호에 Kubernetes 암호로 액세스할 수 있습니다. OCI Vault에서 읽을 수 있는 권한이 있는 OCI Identity and Access Management 역할은 Pod가 암호에 액세스할 수 있도록 허용합니다. 롤은 Pod의 정의에 사용된 Kubernetes 서비스 계정과 연관되어 OCI 저장소에서 읽을 수 있는 액세스 권한을 부여합니다.
다음 다이어그램은 이 참조 아키텍처를 보여 줍니다.

그림 k8n-virtual-nodes.png에 대한 설명
구조에는 다음과 같은 구성 요소가 있습니다.
- Tenancy
테넌시는 Oracle Cloud Infrastructure에 등록할 때 Oracle이 Oracle Cloud 내에서 설정하는 격리된 보안 분할영역입니다. 테넌시 내 Oracle Cloud에서 리소스를 생성, 구성 및 관리할 수 있습니다. 테넌시는 회사 또는 조직과 동의어입니다. 일반적으로 회사는 단일 테넌시를 가지며 해당 테넌시 내의 조직 구조를 반영합니다. 단일 테넌시는 대개 단일 구독과 연관되며, 단일 구독에는 일반적으로 하나의 테넌시만 포함됩니다.
- 지역
Oracle Cloud Infrastructure 리전은 가용성 도메인이라고 하는 데이터 센터가 하나 이상 포함된 지역화된 지리적 영역입니다. 지역은 다른 지역과 독립적이며, 먼 거리가 그들을 분리 할 수 있습니다 (국가 또는 대륙에 걸쳐).
- 구획
구획은 Oracle Cloud Infrastructure 테넌시 내의 영역 간 논리적 파티션입니다. 구획을 사용하여 Oracle Cloud에서 리소스를 구성하고, 리소스에 대한 액세스를 제어하고, 사용 할당량을 설정합니다. 지정된 컴파트먼트의 리소스에 대한 액세스를 제어하려면 리소스에 액세스할 수 있는 사용자 및 이들이 수행할 수 있는 작업을 지정하는 정책을 정의합니다.
- 가용성 도메인
가용성 도메인은 한 지역 내의 독립형 독립 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 결함 허용을 제공하는 다른 가용성 도메인의 리소스와 격리됩니다. 가용성 도메인은 전원, 냉각 또는 내부 가용성 도메인 네트워크와 같은 인프라를 공유하지 않습니다. 따라서 한 가용성 도메인의 장애가 해당 영역의 다른 가용성 도메인에 영향을 미치지 않아야 합니다.
- 결함 도메인
장애 도메인은 가용성 도메인 내의 하드웨어 및 인프라 그룹입니다. 가용성 도메인에는 독립적인 전원 및 하드웨어를 갖춘 3개의 장애 도메인이 있습니다. 여러 결함 도메인에 리소스를 분배할 때 응용 프로그램은 결함 도메인 내의 물리적 서버 오류, 시스템 유지 관리 및 전원 오류를 허용할 수 있습니다.
- VCN(가상 클라우드 네트워크) 및 서브넷
VCN은 Oracle Cloud Infrastructure 지역에서 설정한 맞춤형 소프트웨어 정의 네트워크입니다. 기존의 데이터 센터 네트워크와 마찬가지로 VCN을 통해 네트워크 환경을 제어할 수 있습니다. VCN에는 VCN 생성 후 변경할 수 있는 겹치지 않는 CIDR 블록이 여러 개 있을 수 있습니다. VCN을 서브넷으로 분할할 수 있습니다. 서브넷은 지역 또는 가용성 도메인으로 범위가 지정될 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속적인 주소 범위로 구성됩니다. 서브넷 생성 후 크기를 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.
- 로드 밸런서
Oracle Cloud Infrastructure Load Balancing 서비스는 단일 시작점에서 백엔드에 있는 여러 서버로 트래픽을 자동으로 배포합니다.
- 인터넷 게이트웨이
인터넷 게이트웨이는 VCN의 공용 서브넷과 공용 인터넷 간의 트래픽을 허용합니다.
- NAT(Network Address Translation) 게이트웨이
NAT 게이트웨이를 사용하면 VCN의 전용 리소스가 수신 인터넷 연결에 이러한 리소스를 노출시키지 않고 인터넷의 호스트에 액세스할 수 있습니다.
- 서비스 게이트웨이
서비스 게이트웨이는 VCN에서 Oracle Cloud Infrastructure Object Storage와 같은 다른 서비스로의 액세스를 제공합니다. VCN에서 Oracle 서비스로의 트래픽은 Oracle 네트워크 패브릭을 통해 이동하며 인터넷을 순회하지 않습니다.
- 저장소
Oracle Cloud Infrastructure Vault를 사용하면 데이터를 보호하는 암호화 키와 클라우드의 리소스에 대한 액세스를 보호하는 데 사용하는 보안 자격 증명을 중앙에서 관리할 수 있습니다. 저장소 서비스를 사용하여 저장소, 키 및 암호를 만들고 관리할 수 있습니다.
- 레지스트리
Oracle Cloud Infrastructure Registry는 개발-운영 워크플로우를 간소화할 수 있는 Oracle 관리 레지스트리입니다. 레지스트리를 사용하면 Docker 이미지와 같은 개발 아티팩트를 쉽게 저장, 공유 및 관리할 수 있습니다. Oracle Cloud Infrastructure의 가용성과 확장성이 뛰어난 아키텍처는 애플리케이션을 안정적으로 배포하고 관리할 수 있도록 보장합니다.
- 보안 목록
각 서브넷에 대해 서브넷에 들어오고 나가도록 허용해야 하는 트래픽의 소스, 대상 및 유형을 지정하는 보안 규칙을 생성할 수 있습니다.
- 경로 테이블
가상 라우팅 테이블에는 일반적으로 게이트웨이를 통해 서브넷에서 VCN 외부의 대상으로 트래픽을 라우팅하는 규칙이 포함되어 있습니다.
- OCI Kubernetes 엔진
Oracle Cloud Infrastructure Kubernetes Engine(Kubernetes Engine 또는 OKE)는 컨테이너화된 애플리케이션을 클라우드에 배포하는 데 사용할 수 있는 확장 가능한 고가용성 완전 관리형 서비스입니다. 애플리케이션에 필요한 컴퓨트 리소스를 지정하면 Kubernetes Engine이 기존 테넌시의 Oracle Cloud Infrastructure에서 프로비저닝합니다. OKE는 Kubernetes를 사용하여 호스트 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.
- Oracle MySQL Database Service
Oracle MySQL Database Service는 개발자가 안전한 클라우드 네이티브 애플리케이션을 신속하게 개발하고 배포할 수 있는 완전 관리형 Oracle Cloud Infrastructure(OCI) 데이터베이스 서비스입니다. OCI에 최적화되고 독점적으로 제공되는 Oracle MySQL Database Service는 OCI 및 MySQL 엔지니어링 팀이 100% 구축, 관리 및 지원합니다.
Oracle MySQL Database Service에는 운영 중인 MySQL 데이터베이스에 대해 정교한 실시간 분석을 직접 실행할 수 있는 통합 고성능 분석 엔진(HeatWave)이 있습니다.
- 수신 컨트롤러
수신 컨트롤러(ing)는 Kubernetes 클러스터에서 실행되고 수신 리소스를 관리하는 구성요소입니다. 외부 네트워크에서 트래픽을 수신하여 올바른 서비스로 라우팅하고 로드 밸런싱 및 SSL 종료를 수행합니다. 수신 컨트롤러는 일반적으로 클러스터에서 별도의 Pod로 실행되며 관리하는 서비스와 독립적으로 스케일을 조정할 수 있습니다.
- Kubernetes 암호
Kubernetes 암호에는 인증 토큰, 비밀번호 및 SSH 키와 같은 민감한 구성 데이터가 포함될 수 있습니다. 암호를 사용하면 민감한 데이터를 제어하고 허용되지 않은 사용자에게 데이터를 노출시킬 위험을 줄일 수 있습니다. Oracle Container Engine for Kubernetes는 유휴 상태의 Kubernetes 암호화를 지원합니다.
- 외부 암호 연산자
Kubernetes External Secrets Operator는 Oracle Container Engine for Kubernetes를 Oracle Cloud Infrastructure Vault와 통합했습니다. 운영자는 외부 API에서 정보를 읽고 Kubernetes 암호에 값을 자동으로 주입합니다.
- SecretStore
Kubernetes 클러스터 제어 플레인에는 중요한 구성 데이터(예: 인증 토큰, 인증서 및 인증서)가
etcd
에 Kubernetes 보안 객체로 저장됩니다.Etcd
는 Kubernetes가 클러스터 조정 및 상태 관리에 사용하는 오픈 소스 분산 키-값 저장소입니다. Container Engine for Kubernetes에서 생성된 Kubernetes 클러스터에서etcd
는 Oracle Cloud Infrastructure Block Volumes 서비스의 블록 스토리지 볼륨에 데이터를 쓰고 해당 볼륨에서 데이터를 읽습니다. 기본적으로 Oracle은etcd
및 Kubernetes 암호를 포함하여 유휴 블록 볼륨의 데이터를 암호화합니다. Oracle은 마스터 암호화 키를 사용하여 이 기본 암호화를 관리하며 별도의 조치를 취하지 않아도 됩니다. 마스터 암호화 키의 수명 주기 및 사용 방법을 추가로 제어하기 위해 Oracle에서 관리하지 않고 마스터 암호화 키를 직접 관리하도록 선택할 수 있습니다.새 클러스터를 생성할 때 Oracle Key Management Cloud Service를 사용하여
etcd
의 Kubernetes 암호를 암호화하도록 지정할 수 있습니다. - Pod
포드는 하나 이상의 컨테이너와 공유 스토리지의 그룹이며 이러한 컨테이너를 함께 실행하는 방법에 대한 특정 옵션입니다. 일반적으로 포드의 컨테이너는 동일한 네트워크 및 메모리 공간을 공유하며 스토리지를 위한 공유 볼륨에 액세스할 수 있습니다. 이러한 공유 리소스를 통해 포드의 컨테이너는 단일 논리 호스트에 설치된 것처럼 원활한 방식으로 내부적으로 통신할 수 있습니다.
- 가상 노드
가상 노드는 실제 노드의 소프트웨어 추상화입니다. 가상 노드는 OCI 테넌시에 배포되며 OCI에서 전적으로 모니터링 및 관리합니다.
권장사항
- VCN
VCN을 생성할 때 VCN의 서브넷에 연결하려는 리소스 수에 따라 필요한 CIDR 블록 수와 각 블록의 크기를 결정합니다. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.
프라이빗 접속을 설정하려는 다른 네트워크(Oracle Cloud Infrastructure, 온프레미스 데이터 센터 또는 다른 클라우드 제공자)와 겹치지 않는 CIDR 블록을 선택합니다.
VCN을 생성한 후 해당 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.
서브넷을 설계할 때는 트래픽 플로우 및 보안 요구사항을 고려하십시오. 특정 계층 또는 역할 내의 모든 리소스를 동일한 서브넷에 연결합니다. 이 서브넷은 보안 경계 역할을 할 수 있습니다.
지역 서브넷을 사용합니다.
- NSG(네트워크 보안 그룹)
NSG를 사용하여 특정 VNIC에 적용되는 수신 및 송신 규칙 세트를 정의할 수 있습니다. NSG를 사용하면 애플리케이션의 보안 요구사항과 VCN의 서브넷 아키텍처를 분리할 수 있으므로 보안 목록이 아닌 NSG를 사용하는 것이 좋습니다.
NSG를 사용하여 특정 VNIC에 적용되는 수신 및 송신 규칙 세트를 정의할 수 있습니다. NSG를 사용하면 애플리케이션의 보안 요구사항과 VCN의 서브넷 아키텍처를 분리할 수 있으므로 보안 목록이 아닌 NSG를 사용하는 것이 좋습니다.
- 로드 밸런서 대역폭
로드 밸런서를 생성하는 동안 고정 대역폭을 제공하는 미리 정의된 구성을 선택하거나, 대역폭 범위를 설정하고 서비스가 트래픽 패턴에 따라 대역폭을 자동으로 확장하도록 하는 사용자 정의(유연한) 구성을 지정할 수 있습니다. 두 접근 방법 중 하나를 사용하면 로드 밸런서를 생성한 후 언제든지 구성을 변경할 수 있습니다.
고려사항
가상 노드로 작업할 때는 다음을 고려하십시오.
가상 노드로 시작하려면 먼저 가상 노드 풀이 있는 OCI Kubernetes Engine 클러스터를 생성하거나, 가상 노드 풀을 기존 OKE(Kubernetes Engine) 클러스터에 추가해야 합니다.
- 가상 노드의 구성 및 배치를 선택합니다.
-
구성에 따라 각 포드에 할당할 수 있는 CPU 및 메모리 리소스 양과 함께 프로세서 유형이 결정됩니다. 각 포드는 선택한 구성의 메모리 및 CPU 제한까지 할당할 수 있습니다.
-
가상 노드는 Horizontal Pod Autoscaler (HPA)의 구성으로 POD를 확장합니다. 노드 자동 스케일러를 구성할 필요가 없습니다.
-
가상 노드를 HA(고가용성) 요구에 가장 적합한 특정 가용성 도메인 및 폴트 도메인에 배치할 수 있습니다. 최대 중복성 레벨에 대해 OKE 클러스터의 가용성 도메인 내 각 결함 도메인에 가상 노드를 배치합니다.
-
Kubernetes 노드 레이블을 사용하여 가상 노드에 포드의 배치를 지정합니다. 노드 간에 Pod를 균등하게 분산하려면
PodTopologySpread
제약 조건을 사용합니다.
-
-
가상 노드는 VCN 고유 Pod 네트워킹을 사용합니다. 클러스터에서 사용 가능한 POD 수는 서브넷에서 사용 가능한 IP 주소 수로 제한됩니다.
- 네이티브 포드 네트워킹은 모든 포드에 VCN 서브넷 고유의 IP 주소를 제공하므로 각 포드는 VCN 흐름 로그, 라우팅 정책, VTAP 및 보안 그룹과 같은 내장 OCI 네트워크 보안 기능을 활용할 수 있습니다.
- 사용할 Pod 및 노드 수를 허용하는 서브넷 범위를 사용하고 확장 공간을 제공하는 것이 좋습니다.
- POD에서 수신 및 송신할 수 있는 트래픽 유형을 제한하려면 NSG(네트워크 보안 그룹)를 정의합니다.
- VCN 플로우 로그를 사용하여 POD 간 모든 네트워크 트래픽을 검사하거나 VTAP를 사용하여 네트워크 트래픽을 캡처합니다.
- 가상 노드의 포드는 작업 로드 ID를 사용하여 다른 OCI 서비스에 액세스할 수 있습니다.
Pod가 OCI 내의 다른 서비스에 액세스해야 하는 경우가 있습니다.
- 작업 로드 ID를 사용하여 가상 노드의 Pod에 권한을 부여합니다. 작업 로드 ID는 OCI Identity and Access Management 역할을 Pod에 지정된 Kubernetes 서비스 계정과 연관시킵니다.
- 가상 노드는 Pod에 대한 하이퍼바이저 레벨 격리를 제공합니다.
보안 취약성은 잠재적으로 컨테이너 내부의 악성 프로세스가 노드의 커널에 영향을 미치도록 허용하여 잠재적으로 노드를 작동 중지시킬 수 있습니다. 악성 코드는 메모리 또는 저장 영역의 데이터에 액세스하여 데이터를 추출할 수도 있습니다. 유출된 데이터는 잠재적으로 다중 테넌트 환경의 다른 테넌트에 속할 수 있습니다.
- 가상 노드는 포드에 대한 하이퍼바이저 레벨 격리를 제공합니다. Pod는 클러스터의 다른 Pod와 컴퓨트, 메모리 및 네트워크를 공유하지 않으므로 악성 코드로 인해 발생한 다른 테넌트에 속하는 다운된 노드 또는 유출된 데이터의 가능성을 완화합니다.