앱 노출 서비스 선택

IBM Cloud® Kubernetes Service에서 사용자는 앱을 공용 또는 개인용으로 액세스 가능하게 하여 클러스터 내부 및 외부 네트워킹을 관리할 수 있습니다.

앱 네트워킹을 빠르게 시작하려면 이 의사결정 트리를 따르고 옵션을 클릭하여 설정 문서를 확인하십시오.

앱 노출 서비스 선택하기
이 이미지는 애플리케이션에 가장 적합한 네트워킹 옵션을 선택하는 방법을 안내합니다

Kubernetes 서비스 검색을 통해 앱에 대한 로드 밸런싱 이해

Kubernetes 서비스 검색은 네트워크 서비스 및 로컬 Kubernetes 프록시를 사용하여 앱에 네트워크 연결을 제공합니다.

작업자 노드에 배치된 모든 팟(Pod)에는 172.30.0.0/16 범위의 사설 IP 주소가 지정되며 이는 작업자 노드 간에만 라우팅됩니다. 충돌을 피하려면 사용자의 작업자 노드와 통신하는 노드에서 이 IP 범위를 사용하지 마십시오. 작업자 노드와 팟(Pod)은 사설 IP 주소를 사용하여 사설 네트워크에서 안전하게 통신할 수 있습니다. 그러나 팟(Pod)에 장애가 발생하거나 작업자 노드의 재작성이 필요한 경우에는 새 사설 IP 주소가 지정됩니다.

고가용성이어야 하는 앱에 대한 사설 IP 주소 변경을 추적하는 대신, 기본 제공 Kubernetes 서비스 검색 기능을 사용하여 IP 서비스로서 앱을 노출할 수 있습니다. Kubernetes 서비스는 팟(Pod) 세트를 그룹화하며 이러한 팟(Pod)에 대한 네트워크 연결을 제공합니다. 서비스는 대상으로 지정된 팟(Pod)을 선택하고 레이블을 통해 트래픽을 라우팅합니다.

서비스는 각 팟(Pod)의 실제 사설 IP 주소를 노출하지 않고 클러스터의 앱 팟(Pod)과 기타 서비스 간의 연결을 제공합니다. 서비스에는 클러스터 내에서만 액세스가 가능한 클러스터 내 IP 주소 clusterIP가 지정됩니다. 이 IP 주소는 전체 수명 동안 서비스에 연결되고 서비스가 존재하는 동안 변경되지 않습니다. 서비스에는 172.21.0.0/16 범위의 65,000 IP중 하나에서 IP가 지정됩니다.

충돌을 피하려면 사용자의 작업자 노드와 통신하는 노드에서 이 IP 범위를 사용하지 마십시오. 또한 DNS 검색 항목이 서비스에 대해 작성되며 클러스터의 kube-dns 컴포넌트에 저장됩니다. DNS 항목에는 서비스의 이름, 서비스가 작성된 네임스페이스 및 지정된 클러스터 내 IP 주소에 대한 링크가 포함되어 있습니다.

IBM Cloud 또는 VPN 서비스를 통해 온프레미스 네트워크에 연결하려는 경우 팟(Pod)에 대한 기본 172.30.0.0/16 범위 및 서비스에 대한 172.21.0.0/16 범위와 서브넷 충돌이 있을 수 있습니다. 클러스터를 생성할 때, --pod-subnet 옵션에서 파드용 사용자 지정 서브넷 CIDR을, --service-subnet 옵션에서 서비스용 사용자 지정 서브넷 CIDR을 지정하면 서브넷 충돌을 방지할 수 있습니다.

서비스에 대한 모든 TCP 및 UDP 네트워크 트래픽의 기본 로드 밸런싱을 제공하기 위해 로컬 Kubernetes 네트워크 프록시(kube-proxy)는 kube-system 네임스페이스의 각 작업자 노드에서 디먼으로 실행됩니다. kube-proxy에서는 Linux 커널 기능인 Iptables 규칙을 사용하여 팟의 클러스터 내 IP 주소 및 배포된 작업자 노드와 관계없이 서비스 뒤의 팟으로 요청을 동일하게 보냅니다.

예를 들어, 클러스터 내부의 앱은 서비스의 클러스터 내 IP를 사용하거나 요청을 서비스의 이름으로 전송하여 클러스터 서비스 뒤의 팟(Pod)에 액세스할 수 있습니다. 서비스의 이름을 사용할 때 kube-proxy는 클러스터 DNS 제공자에서 이름을 검색하고 요청을 서비스의 클러스터 내 IP 주소로 라우팅합니다.

내부 클러스터 IP 주소와 외부 IP 주소를 모두 제공하는 서비스를 사용하는 경우, 클러스터 외부의 클라이언트는 서비스의 외부 공용 또는 사설 IP 주소로 요청을 보낼 수 있습니다. kube-proxy에서는 서비스의 클러스터 내 IP 주소로 요청을 전달하고 서비스 뒤의 앱 팟 간에 로드 밸런싱합니다.

Kubernetes 서비스 유형 이해

Kubernetes에서는 네 가지 기본 유형의 네트워크 서비스(ClusterIP, NodePort, LoadBalancerIngress)를 지원합니다. ClusterIP 서비스를 사용하면 내부적으로 앱에 액세스할 수 있으므로 클러스터의 팟 사이에서만 통신을 허용합니다. NodePort, LoadBalancerIngress 서비스를 사용하면 공용 인터넷 또는 사설 네트워크에서 외부적으로 앱을 액세스할 수 있습니다.

다음 표는 각 네트워크 서비스 유형의 기능을 비교합니다.

Kubernetes 네트워크 서비스 유형의 특성
특성 ClusterIP NodePort LoadBalancer(클래식 - NLB) LoadBalancer(VPC 로드 밸런서) Ingress
표준 클러스터
외부적으로 액세스 가능
외부 호스트 이름
고정 외부 IP
HTTP(S) 로드 밸런싱 예 * 예 *
TLS 종료
사용자 정의 라우팅 규칙
서비스당 여러 앱

* HTTPS 로드 밸런싱을 위한 SSL 인증서가 ibmcloud ks nlb-dns 명령으로 제공됩니다. 클래식 클러스터에서 이러한 명령은 공용 NLB에만 지원됩니다.

ClusterIP

사설 네트워크에서 ClusterIP 서비스 로만 앱을 노출할 수 있습니다. ClusterIP 서비스는 클러스터 내에서만 다른 팟(Pod)이 액세스할 수 있는 클러스터 내 IP 주소를 제공합니다. 외부 IP 주소는 앱에 대해 작성되지 않습니다. 클러스터 서비스 뒤의 팟(Pod)에 액세스하기 위해, 클러스터의 기타 앱은 서비스의 클러스터 내 IP 주소를 사용하거나 서비스의 이름을 사용하여 요청을 전송할 수 있습니다. 요청이 서비스에 도달하는 경우, 서비스는 팟(Pod)의 클러스터 내 IP 주소 및 이들이 배치된 작업자 노드와는 무관하게 요청을 팟(Pod)에 동일하게 전달합니다. 서비스의 YAML 구성 파일에서 type 을 지정하지 않으면, 기본적으로 ClusterIP 유형이 생성된다는 점에 유의하십시오.

NodePort

앱을 NodePort 서비스로 앱을 노출하면, 30000~32767 범위의 NodePort 와 내부 클러스터 IP 주소가 해당 서비스에 할당됩니다. 클러스터 외부에서 이 서비스에 액세스하려면, 임의의 워커 노드의 공용 또는 사설 IP 주소와 NodePort 을 사용하여 <IP_address>:<nodeport> 형식으로 접속하면 됩니다. 그러나 작업자 노드의 공인 및 사설 IP 주소는 영구적이지 않습니다. 작업자 노드가 제거되거나 다시 작성되면 새 공인 및 새 사설 IP 주소가 작업자 노드에 지정됩니다.

NodePort는 짧은 시간에만 공용 또는 개인용 액세스를 테스트하거나 액세스 권한을 제공하는 데 적합합니다. 참고: VPC 클러스터의 작업자 노드에 공용 IP 주소가 없으면 VPN 연결 등을 통해 사설 VPC 네트워크에 연결된 경우에만 NodePort를 통해 앱에 액세스할 수 있습니다.

Kubernetes NodePort
Kubernetes NodePort 서비스를 통해 트래픽을 전달하는 방법 NodePort 서비스 트래픽 서비스를 통해 공용 네트워크 트래픽을 전달하는 방법.

LoadBalancer

LoadBalancer 서비스 유형은 클러스터의 인프라 제공자에 따라 다르게 구현됩니다.

클래식 클러스터의 LoadBalancer 서비스

클래식 인프라

네트워크 로드 밸런서(NLB). 모든 표준 클러스터는 앱에 대한 계층 4 TCP/UDP 네트워크 로드 밸런서(NLB)를 작성하는 데 사용할 수 있는 네 개의 포터블 공인 IP 주소 및 네 개의 사설 IP 주소로 프로비저닝됩니다. 앱이 요구하는 포트를 노출하여 NLB를 사용자 정의할 수 있습니다. NLB에 지정된 포터블 공인 및 사설 IP 주소는 영구적이며, 클러스터에서 작업자 노드가 다시 작성될 때 변경되지 않습니다. 공용 NLB IP 주소를 DNS 항목에 등록하는 앱의 하위 도메인을 작성할 수 있습니다. 또한 각 하위 도메인에 대해 NLB IP에 대한 상태 검사 모니터를 사용으로 설정할 수도 있습니다.

Kubernetes LoadBalancer
LoadBalancer 클래식 클러스터의 서비스 트래픽 클래식 클러스터의 LoadBalancer 서비스 트래픽 이 서비스를 통해 네트워크 트래픽을 포워딩하는 방법.

VPC 클러스터의 LoadBalancer 서비스

가상 사설 클라우드

VPC용 로드 밸런서. 클러스터에서 앱에 대한 Kubernetes LoadBalancer 서비스를 작성하면 클러스터 외부의 VPC에 계층 7 VPC 로드 밸런서가 자동으로 작성됩니다. VPC 로드 밸런서는 다중 구역이며 작업자 노드에서 자동으로 열리는 사설 NodePort를 통해 앱에 대한 요청을 라우팅합니다. 기본적으로 로드 밸런서는 앱에 액세스하는 데 사용할 수 있는 호스트 이름으로도 작성됩니다.

Kubernetes LoadBalancer
LoadBalancer vPC 클러스터의 서비스 트래픽 VPC 클러스터의 LoadBalancer 서비스 트래픽 이 서비스를 통해 네트워크 트래픽을 포워딩하는 방법.

Ingress

Ingress 애플리케이션 로드 밸런서(ALB)를 사용하여 라우팅을 구성함으로써 클러스터 내의 여러 앱을 노출합니다. ALB는 안전하고 고유한 공용 또는 사설 시작점, Ingress 하위 도메인을 사용하여 수신 요청을 앱으로 라우팅합니다. 하나의 하위 도메인을 사용하여 서비스로서 클러스터의 여러 앱을 노출할 수 있습니다. Ingress는 다음 3개의 컴포넌트로 구성되어 있습니다.

  • Ingress 리소스는 앱에 대한 수신 요청을 라우팅하고 로드 밸런싱하는 방법에 대한 규칙을 정의합니다.
  • ALB는 수신 HTTP, HTTPS 또는 TCP 서비스 요청을 청취합니다. Ingress 리소스에 정의한 규칙을 기반으로 앱의 팟(Pod)에서 요청을 전달합니다.
  • 클래식 클러스터용 다중 구역 로드 밸런서(MZLB) 또는 VPC 클러스터용 VPC 로드 밸런서는 앱에 대한 모든 수신 요청을 처리하며 다양한 구역의 ALB 간에 요청을 로드 밸런싱합니다. 또한 공용 Ingress IP 주소에 대한 상태를 확인할 수 있습니다.

클래식 클러스터의 Ingress 서비스 트래픽.
클래식 클러스터의 Ingress 서비스 트래픽

VPC 클러스터의 Ingress 서비스 트래픽.
VPC 클러스터의 Ingress 서비스 트래픽

공용 외부 로드 밸런싱 계획

인터넷에 공용으로 클러스터의 앱을 노출하십시오.

클래식 클러스터에서는 작업자 노드를 공용 VLAN에 연결할 수 있습니다. 공용 VLAN은 각 작업자 노드에 지정된 공인 IP 주소를 판별하며, 이는 각 작업자 노드에 공용 네트워크 인터페이스를 제공합니다. 공용 네트워킹 서비스는 공인 IP 주소 및 공용 URL(선택사항)로 앱을 제공하여 이 공용 네트워크 인터페이스에 연결합니다.

VPC 클러스터에서 작업자 노드는 사설 VPC 서브넷에만 연결됩니다. 그러나 공용 네트워킹 서비스를 작성할 때 VPC 로드 밸런서가 자동으로 작성됩니다. VPC 로드 밸런서는 앱에 공용 URL을 제공하여 앱에 대한 공용 요청을 라우팅할 수 있습니다. 앱이 공용으로 노출되면, 공용 URL을 갖고 있는 사용자는 요청을 앱에 전송할 수 있습니다.

앱이 공용으로 노출되면 공용 서비스 IP 주소 또는 사용자 앱에 맞게 설정한 URL을 갖고 있는 사용자는 요청을 앱에 전송할 수 있습니다. 이러한 이유로 가능한면 적은 앱을 노출하십시오. 외부 웹 클라이언트 또는 사용자로의 트래픽을 허용할 준비가 되면 공용으로만 앱을 노출하십시오.

작업자 노드에 대한 공용 네트워크 인터페이스는 클러스터 작성 중에 모든 작업자 노드에서 구성된 사전 정의된 Calico 네트워크 정책 설정에 의해 보호됩니다. 기본적으로, 모든 아웃바운드 네트워크 트래픽이 모든 작업자 노드에 대해 허용됩니다. 인바운드 네트워크 트래픽은 일부 포트를 제외하면 차단됩니다. 이러한 포트는 IBM이 네트워크 트래픽을 모니터링하고 Kubernetes 마스터에 대한 보안 업데이트를 자동으로 설치할 수 있도록 열려 있으므로 NodePort, LoadBalancer및 Ingress 서비스에 연결을 설정할 수 있습니다. 수정 방법을 포함하여 이러한 정책에 대한 자세한 정보는 네트워크 정책을 참조하십시오.

클래식 클러스터의 배치 패턴 선택

클래식 클러스터에서 인터넷에 앱을 공용으로 사용할 수 있도록 하려면 공용 NodePort, LoadBalancer 또는 Ingress 서비스를 사용하는 로드 밸런싱 배치 패턴을 선택하십시오. 다음 표에서는 가능한 각 배치 패턴, 사용 이유 및 설정 방법에 대해 설명합니다. 이 배치 패턴이 사용하는 네트워킹 서비스에 대한 기본 정보는 Kubernetes 서비스 유형 이해를 참조하십시오.

NLB v1.0

  • 로드 밸런싱 방법: IP 주소 또는 하위 도메인을 사용하여 앱을 노출하는 기본 로드 밸런싱.
  • 유스 케이스: SSL 종료를 지원하는 IP 주소 또는 하위 도메인을 사용하여 하나의 앱을 공용으로 빠르게 노출하십시오.
  • 구현:
    1. 단일 또는 다중 존 클러스터에서 공용 네트워크 부하 분산 장치(NLB) 1.0 를 생성합니다.
    2. 선택적으로 하위 도메인 및 상태 검사를 등록하십시오.

NLB v2.0

  • 로드 밸런싱 방법: IP 주소 또는 하위 도메인을 사용하여 앱을 노출하는 DSR 로드 밸런싱

  • 유스 케이스: SSL 종료를 지원하는 IP 주소 또는 하위 도메인을 통해 공용으로 높은 레벨의 트래픽을 수신할 수 있는 앱을 노출합니다.

  • 구현:

    1. 전제조건을 완료하십시오.
    2. 단일 또는 다중 구역 클러스터에서 공용 NLB 2.0 을 작성하십시오.
    3. 선택적으로 하위 도메인 및 상태 검사를 등록하십시오.

Istio + NLB 하위 도메인

  • 로드 밸런싱 방법: 하위 도메인이 있는 앱을 노출하고 Istio 라우팅 규칙을 사용하는 기본 로드 밸런싱
  • 유스 케이스: 하나의 앱 마이크로서비스의 다른 버전에 대한 규칙과 같은 Istio 사후 라우팅 규칙을 구현하고 공용 하위 도메인을 사용하여 Istio 관리 애플리케이션을 노출합니다.
  • 구현:
    1. 관리 Istio 추가 기능을 설치하십시오.
    2. Istio 서비스 메시에 앱을 포함하십시오.
    3. 기본 Istio 로드 밸런서를 하위 도메인에 등록하십시오.

Ingress ALB

  • 로드 밸런싱 방법: 하위 도메인이 있는 앱을 노출하고 사용자 정의 라우팅 규칙을 사용하는 HTTPS 로드 밸런싱
  • 유스 케이스: 다중 앱에 맞는 사용자 정의 라우팅 규칙 및 SSL 종료를 구현합니다.
  • 구현:
    1. 공용 ALB에 대한 Ingress 서비스를 작성하십시오.
    2. 어노테이션이 포함된 ALB 라우팅 규칙을 사용자 정의하십시오.

VPC 클러스터의 배치 패턴 선택

VPC 클러스터의 앱을 인터넷에서 공용으로 사용할 수 있도록 하려면 공용 LoadBalancer 또는 Ingress 서비스를 사용하는 로드 밸런싱 배치 패턴을 선택하십시오. 다음 표에서는 가능한 각 배치 패턴, 사용 이유 및 설정 방법에 대해 설명합니다. 이 배치 패턴이 사용하는 네트워킹 서비스에 대한 기본 정보는 Kubernetes 서비스 유형 이해를 참조하십시오.

VPC 로드 밸런서

  • 로드 밸런싱 방법: 호스트 이름을 사용하여 앱을 노출하는 기본 로드 밸런싱
  • 유스 케이스: VPC 로드 밸런서 지정 호스트 이름을 사용하여 하나의 앱을 공용으로 신속하게 노출합니다.
  • 구현: 클러스터에 공용 LoadBalancer 서비스를 작성하십시오. VPC 로드 밸런서가 앱에 대한 LoadBalancer 서비스에 호스트 이름을 지정하는 VPC에서 자동으로 작성됩니다.

Istio

  • 로드 밸런싱 방법: 호스트 이름으로 앱을 노출하고 Istio 라우팅 규칙을 사용하는 기본 로드 밸런싱
  • 유스 케이스: 하나의 앱 마이크로서비스의 다른 버전에 대한 규칙과 같은 Istio 사후 라우팅 규칙을 구현하고 공용 호스트 이름을 사용하여 Istio 관리 애플리케이션을 노출합니다.
  • 구현: 1. 관리 Istio 추가 기능을 설치하십시오. 2. Istio 서비스 메시에 앱을 포함하십시오. 3. 기본 Istio 로드 밸런서를 호스트 이름에 등록하십시오.

Ingress ALB

  • 로드 밸런싱 방법: 하위 도메인이 있는 앱을 노출하고 사용자 정의 라우팅 규칙을 사용하는 HTTPS 로드 밸런싱
  • 유스 케이스: 다중 앱에 맞는 사용자 정의 라우팅 규칙 및 SSL 종료를 구현합니다.
  • 구현:
    1. 공용 ALB에 대한 Ingress 서비스를 작성하십시오.
    2. 어노테이션이 포함된 ALB 라우팅 규칙을 사용자 정의하십시오.

사설 외부 로드 밸런싱 계획

비공개로 사설 네트워크에만 클러스터의 앱을 노출하십시오.

IBM Cloud Kubernetes Service의 Kubernetes 클러스터에서 앱을 배치할 때 클러스터로서 동일한 사설 네트워크에 있는 사용자 및 서비스만 앱에 액세스할 수 있도록 설정할 수 있습니다. 사설 로드 밸런싱은 앱을 일반 사용자에게 노출하지 않고 클러스터 외부의 요청에서 앱을 사용할 수 있도록 하는 데 적합합니다. 나중에 공용 네트워크 서비스를 사용하여 앱을 공용으로 노출하기 전에 액세스, 요청 라우팅 및 기타 구성을 테스트하기 위해 사설 로드 밸런싱도 사용할 수 있습니다.

예를 들어, 앱에 대한 사설 로드 밸런서를 작성한다고 가정합니다. 이 사설 로드 밸런서는 다음에 의해 액세스될 수 있습니다.

  • 동일한 해당 클러스터의 임의의 팟(Pod)
  • 동일한 IBM Cloud 계정의 임의의 클러스터의 임의의 팟(Pod)
  • 사용자가 IBM Cloud 계정에는 없지만 여전히 회사 방화벽 뒤에 있는 경우, 로드 밸런서 IP가 작동되는 서브넷에 대한 VPN 연결을 통한 시스템
  • 사용자가 다른 IBM Cloud 계정에 있는 경우, 로드 밸런서 IP가 작동되는 서브넷에 대한 VPN 연결을 통한 시스템.
  • 클래식 클러스터에서 VRF 또는 VLAN Spanning이 사용으로 설정된 경우, 동일한 IBM Cloud 계정에서 사설 VLAN에 연결된 시스템
  • VPC 클러스터에서:
    • VPC 서브넷 간 트래픽을 허용하는 경우 동일한 VPC에 있는 모든 시스템입니다.
    • VPC 간 트래픽을 허용하는 경우 클러스터가 있는 VPC에 대한 액세스 권한이 있는 모든 시스템입니다.

클래식 클러스터의 배치 패턴 선택

클래식 클러스터에서만 사설 네트워크를 통해 앱을 사용할 수 있도록 하려면 클러스터의 VLAN 설정을 기반으로 한 로드 밸런싱 배치 패턴을 선택하십시오.

공용 및 사설 VLAN 설정에서 사설 로드 밸런싱 설정

작업자 노드가 공용 및 사설 VLAN 모두에 연결된 경우, 개인용 NodePort, LoadBalancer 또는 Ingress 서비스를 작성하여 사설 네트워크에서만 앱에 액세스할 수 있도록 설정할 수 있습니다. 그리고 서비스에 대한 공용 트래픽을 차단하는 Calico 정책을 작성할 수 있습니다.

사전 정의된 Calico 네트워크 정책 설정에서는 작업자 노드의 공용 네트워크 인터페이스를 보호하며 클러스터 작성 중 모든 작업자 노드에 구성됩니다. 기본적으로, 모든 아웃바운드 네트워크 트래픽이 모든 작업자 노드에 대해 허용됩니다. 인바운드 네트워크 트래픽은 일부 포트를 제외하면 차단됩니다. 이러한 포트를 사용하면 IBM에서 네트워크 트래픽을 모니터링하고 Kubernetes 마스터에 대한 보안 업데이트를 자동으로 설치할 수 있으므로 NodePort, LoadBalancer 및 Ingress 서비스에 연결을 설정할 수 있습니다.

기본 Calico 네트워크 정책은 이러한 서비스에 인바운드 공용 트래픽을 허용하므로 대신 Calico 정책을 작성하여 모든 공용 트래픽을 해당 서비스에 차단할 수 있습니다. 예를 들어, NodePort 서비스는 작업자 노드의 사설 및 공인 IP 주소 모두에서 작업자 노드의 포트를 엽니다. 포터블 사설 IP 주소를 가진 NLB 서비스는 모든 작업자 노드에서 공용 NodePort를 엽니다. 사용자는 공용 NodePort를 차단하는 Calico preDNAT 네트워크 정책을 작성해야 합니다.

사설 네트워킹에 대한 로드 밸런싱 배치 패턴을 검토하십시오.

NodePort
로드 밸런싱 방법: 작업자의 사설 IP 주소에 앱을 노출하는 작업자 노드의 포트입니다.
유스 케이스: 하나의 앱에 대한 개인용 액세스를 테스트하거나 짧은 시간 동안에만 액세스를 제공합니다.
구현: NodePort 서비스를 작성하십시오. NodePort 서비스는 작업자 노드의 사설 및 공인 IP 주소 모두에서 작업자 노드의 포트를 엽니다. 사용자는 Calico preDNAT 네트워크 정책을 사용하여 공용 NodePort에 대한 트래픽을 차단해야 합니다.
NLB v1.0
로드 밸런싱 방법: 사설 IP 주소를 사용하여 앱을 노출하는 기본 로드 밸런싱
유스 케이스: 사설 IP 주소를 사용하여 하나의 앱을 사설 네트워크에 신속하게 노출합니다.
구현: 1. 사설 NLB 서비스를 작성하십시오. 포터블 사설 IP 주소를 사용하는 NLB에는 여전히 모든 작업자 노드에서 열려 있는 공용 노드 포트가 있습니다. 2. Calico preDNAT 네트워크 정책을 작성하여 공용 NodePort에 대한 트래픽을 차단하십시오.
NLB v2.0
로드 밸런싱 방법: 사설 IP 주소를 사용하여 앱을 노출하는 DSR 로드 밸런싱
유스 케이스: IP 주소가 있는 사설 네트워크에 높은 레벨의 트래픽을 수신할 수 있는 앱을 노출합니다.
구현: 1. 전제조건을 완료하십시오. 2. 단일 또는 다중 구역 클러스터에서 개인용 NLB 2.0을 작성하십시오. 3. 포터블 사설 IP 주소를 사용하는 NLB에는 여전히 모든 작업자 노드에서 열려 있는 공용 노드 포트가 있습니다. Calico preDNAT 네트워크 정책을 작성하여 공용 NodePort에 대한 트래픽을 차단하십시오.
Ingress ALB
로드 밸런싱 방법: 하위 도메인이 있는 앱을 노출하고 사용자 정의 라우팅 규칙을 사용하는 HTTPS 로드 밸런싱
유스 케이스: 다중 앱에 맞는 사용자 정의 라우팅 규칙 및 SSL 종료를 구현합니다.
구현: 1. 공용 ALB를 사용 안함으로 설정하십시오. 2. 사설 ALB를 사용으로 설정하고 Ingress 리소스를 작성하십시오. 3. 어노테이션이 포함된 ALB 라우팅 규칙을 사용자 정의하십시오. 4. 포터블 사설 IP 주소를 사용하는 NLB에는 여전히 모든 작업자 노드에서 열려 있는 공용 노드 포트가 있습니다. Calico preDNAT 네트워크 정책을 작성하여 공용 NodePort에 대한 트래픽을 차단하십시오.

사설 VLAN 전용 설정을 위한 사설 로드 밸런싱 설정

작업자 노드가 사설 VLAN에만 연결된 경우, 개인용 NodePort, LoadBalancer 또는 Ingress 서비스를 작성하여 사설 네트워크에서만 앱에 외부로 액세스할 수 있도록 할 수 있습니다.

클러스터가 사설 VLAN에만 연결되어 있고 마스터 및 작업자 노드를 사용하여 개인 전용 서비스 엔드포인트를 통해 통신하는 경우, 앱을 사설 네트워크에 자동으로 노출할 수 없습니다. VRA(Vyatta) 와 같은 게이트웨이 장치를 설정하여 방화벽 역할을 수행하게 하고, 트래픽을 차단하거나 허용해야 합니다. 작업자 노드가 공용 VLAN에 연결되어 있지 않으므로 공용 트래픽은 NodePort, LoadBalancer 또는 Ingress 서비스로 라우팅되지 않습니다. 그러나 이러한 서비스에 대한 인바운드 트래픽을 허용하도록 게이트웨이 어플라이언스 방화벽의 필수 포트 및 IP 주소를 공개해야 합니다.

사설 네트워킹에 적합한 다음 로드 밸런싱 배치 패턴을 확인하십시오.

NodePort
로드 밸런싱 방법: 작업자의 사설 IP 주소에 앱을 노출하는 작업자 노드의 포트입니다.
유스 케이스: 하나의 앱에 대한 개인용 액세스를 테스트하거나 짧은 시간 동안에만 액세스를 제공합니다.
구현: 1. NodePort 서비스를 작성하십시오. 2. 개인용 방화벽에서 트래픽을 허용하기 위해 모든 작업자 노드의 사설 IP 주소에 서비스를 배치할 때 구성한 포트를 여십시오. 포트를 찾으려면 kubectl get svc를 실행하십시오. 포트는 30000-32767 범위에 있습니다.
NLB v1.0
로드 밸런싱 방법: 사설 IP 주소를 사용하여 앱을 노출하는 기본 로드 밸런싱
유스 케이스: 사설 IP 주소를 사용하여 하나의 앱을 사설 네트워크에 신속하게 노출합니다.
구현: 1. 사설 NLB 서비스를 작성하십시오. 2. 사설 방화벽에서 서비스를 NLB의 사설 IP 주소에 배치할 때 구성한 포트를 여십시오.
NLB v2.0
로드 밸런싱 방법: 사설 IP 주소를 사용하여 앱을 노출하는 DSR 로드 밸런싱
유스 케이스: IP 주소가 있는 사설 네트워크에 높은 레벨의 트래픽을 수신할 수 있는 앱을 노출합니다.
구현: 1. 사설 NLB 서비스를 작성하십시오. 2. 사설 방화벽에서 서비스를 NLB의 사설 IP 주소에 배치할 때 구성한 포트를 여십시오.
Ingress ALB
로드 밸런싱 방법: 하위 도메인이 있는 앱을 노출하고 사용자 정의 라우팅 규칙을 사용하는 HTTPS 로드 밸런싱
유스 케이스: 다중 앱에 맞는 사용자 정의 라우팅 규칙 및 SSL 종료를 구현합니다.
구현: 1. 사설 네트워크에서 사용할 수 있는 DNS 서비스를 구성합니다. 2. 사설 ALB를 사용으로 설정하고 Ingress 리소스를 작성하십시오. 3. 사설 방화벽에서 사설 ALB의 IP 주소에 대해 포트 80(HTTP의 경우) 또는 포트 443(HTTPS의 경우)을 여십시오. 4. 어노테이션이 포함된 ALB 라우팅 규칙을 사용자 정의하십시오.

VPC 클러스터의 배치 패턴 선택

사설 NodePort, LoadBalancer 또는 Ingress 서비스를 작성하여 사설 네트워크에서만 앱에 액세스하십시오.

VPC 클러스터에서 사설 앱 네트워킹에 적합한 다음 로드 밸런싱 배치 패턴을 확인하십시오.

NodePort
로드 밸런싱 방법: 작업자의 사설 IP 주소에 앱을 노출하는 작업자 노드의 포트.
유스 케이스: 하나의 앱에 대한 개인용 액세스를 테스트하거나 짧은 시간 동안에만 액세스를 제공합니다. 참고: 사설 VPC 네트워크에 연결된 경우에만 NodePort를 통해 앱에 액세스할 수 있습니다(예: VPN 연결을 통해).
구현: 사설 NodePort 서비스를 작성하십시오.
VPC 애플리케이션 로드 밸런서
로드 밸런싱 방법: 사설 IP 호스트 이름을 사용하여 앱을 노출하는 기본 로드 밸런싱
유스 케이스: VPC 애플리케이션 로드 밸런서 지정 사설 호스트 이름을 사용하여 하나의 앱을 사설 네트워크에 신속하게 노출합니다.
구현: 클러스터에 사설 LoadBalancer 서비스를 작성하십시오. 다중 구역 VPC 애플리케이션 로드 밸런서가 앱에 대한 LoadBalancer 서비스에 호스트 이름을 지정하는 VPC에서 자동으로 작성됩니다.
Ingress ALB
로드 밸런싱 방법: 호스트 이름을 사용하여 앱을 노출하고 사용자 정의 라우팅 규칙을 사용하는 HTTPS 로드 밸런싱
유스 케이스: 다중 앱에 맞는 사용자 정의 라우팅 규칙 및 SSL 종료를 구현합니다.
구현: 1. 사설 ALB를 사용으로 설정하고 하위 도메인을 작성하여 DNS 항목에 ALB를 등록하고 Ingress 리소스를 작성하십시오. 2. 어노테이션이 포함된 ALB 라우팅 규칙을 사용자 정의하십시오.