IP 패브릭 포워딩 및 패브릭 소스 NAT 활성화
이 주제는 주니퍼 네트웍스의 클라우드 네이티브 Contrail® Networking™ 릴리스 22.1 이상을 사용하여 Kubernetes 오케스트레이션 환경에서 IP 패브릭 포워딩 및 패브릭 소스 NAT를 활성화하는 방법을 보여줍니다.
클라우드 네이티브 Contrail Networking은 IP 패브릭 포워딩 및 패브릭 소스 NAT를 지원합니다. IP 패브릭 포워딩은 오버레이 네트워크에서 실행되는 클러스터에 외부 가상 네트워크를 통해 언더레이 네트워크에 대한 경로를 제공합니다. 패브릭 소스 NAT를 사용하면 패브릭의 게이트웨이 디바이스가 패브릭에서 나가는 데이터 플레인 노드 트래픽의 소스 IP 주소를 공용 측 IP 주소로 변환할 수 있습니다.
클라우드 네트워킹 환경에서 IP 패브릭 포워딩 및 패브릭 소스 NAT를 사용하여 언더레이 네트워크에 대한 액세스를 제공할 수 있습니다. 이 네트워크 액세스는 복잡한 BGP 토폴로지 또는 방화벽 설정과 같은 다른 언더레이 네트워크 옵션처럼 심각한 네트워크 복잡성을 추가하지 않고도 제공됩니다.
IP 패브릭 전달 또는 패브릭 소스 NAT에서 제공하는 언더레이 네트워크 액세스를 통해 Pod 내의 리소스가 인터넷에 직접 액세스하거나 언더레이 네트워크에서 외부 아티팩트를 가져올 수 있습니다.
개요: IP 패브릭 포워딩
IP 패브릭 포워딩은 릴리스 22.1부터 클라우드 네이티브 Contrail을 사용하여 Kubernetes 환경에서 지원됩니다.
외부 네트워크에 액세스할 수 있는 가상 네트워크 내에서 IP 패브릭 전달을 사용하도록 설정합니다. 이러한 가상 네트워크는 언더레이 네트워크에 직접 액세스해야 합니다.
외부 네트워크에 액세스할 수 있는 가상 네트워크의 이름은 기본적으로 입니다 default-externalnetwork . 원하는 경우 사용자 지정된 사용자 정의 외부 네트워크 이름을 만들 수 있습니다. IP 패브릭 전달을 사용하도록 설정하면 이 외부 가상 네트워크를 통해 오버레이 네트워크에서 실행되는 클러스터에서 언더레이 네트워크에 대한 경로를 직접 사용할 수 있습니다. 오버레이 네트워크와 언더레이 네트워크 간의 이러한 직접 연결을 통해 오버레이 네트워크의 호스트는 언더레이 네트워크에 액세스할 수 있습니다. IP 패브릭 포워딩을 사용하면 가상 네트워크가 오버레이 네트워크와 언더레이 네트워크를 모두 포괄할 수 있으므로 두 네트워크를 통과하는 데이터 패킷은 캡슐화 및 캡슐화 해제되지 않습니다. 따라서 패킷 처리가 더 효율적입니다.
IP 패브릭 전달은 네트워크 트래픽의 로드 밸런싱에도 매우 유용합니다. LoadBalancer 서비스는 외부 네트워크 트래픽의 부하를 분산할 때 IP 패브릭 전달을 사용하도록 설정된 외부 가상 네트워크를 자동으로 감지합니다.
개요: 패브릭 소스 NAT
패브릭 소스 NAT는 릴리스 22.1부터 클라우드 네이티브 Contrail Networking을 사용하는 Kubernetes 환경에서 지원됩니다. 패브릭 소스 NAT는 Kubernetes 환경의 데이터 플레인 노드에서 트래픽이 별도의 NAT 방화벽을 통과하지 않고 인터넷에 직접 액세스할 수 있는 방법을 제공합니다. 소스 NAT를 사용하여 필요할 때 외부 아티팩트를 Pod로 가져올 수도 있습니다.
인터넷으로 향하는 데이터 플레인 노드의 트래픽은 게이트웨이 디바이스를 통과해야 합니다. 이 게이트웨이 디바이스는 공용 네트워크에 연결된 하나 이상의 인터페이스가 있는 패브릭의 멤버 디바이스입니다. 패브릭 소스 네트워크 주소 변환(NAT)이 활성화되면 게이트웨이 디바이스는 데이터 플레인 노드에서 발신 패킷의 소스 IP 주소를 자체 퍼블릭 측 IP 주소로 변환합니다. 이 주소 변환은 데이터 플레인 노드의 트래픽이 인터넷에 액세스할 수 있도록 허용합니다.
소스 NAT에 의해 수행되는 IP 주소 변환은 패킷의 소스 포트도 업데이트합니다. 여러 데이터 플레인 노드는 패브릭 소스 NAT를 사용하여 단일 게이트웨이 퍼블릭 IP 주소를 통해 퍼블릭 네트워크에 연결할 수 있습니다.
패브릭에서 나가는 트래픽의 IP 주소를 인터넷으로 변환하려면 패브릭 소스 NAT가 필요합니다. 이 기능을 사용하면 수신 트래픽을 변환하기 위해 NAT를 사용하지 않습니다.
예: 패브릭 소스 NAT 구성
패브릭 원본 NAT는 사용자가 만든 가상 네트워크에서 기본적으로 사용하지 않도록 설정됩니다.
개체의 변수를 true로 설정하여 개별 가상 네트워크에서 패브릭 소스 NAT를 fabricsource NAT: 수동으로 사용하도록 설정할 수 있습니다VirtualNetwork. 이 값을 false로 설정하여 패브릭 소스 NAT를 비활성화할 수 있습니다.
다음은 패브릭 소스 네트워크 주소 변환(NAT)을 활성화한 가상 네트워크 객체의 예입니다.
apiVersion: core.contrail.juniper.net/v1alpha1 kind: VirtualNetwork metadata: namespace: contrail name: virtualnetwork-sample annotations: core.juniper.net/display-name: Sample Virtual Network core.juniper.net/description: VirtualNetwork is a collection of end points (interface or ip(s) or MAC(s)) that can communicate with each other by default. It is a collection of subnets whose default gateways are connected by an implicit router spec: ... fabricsource NAT: true
가상 네트워크를 만들 때 사용자가 만든 가상 네트워크에서 패브릭 소스 NAT를 사용하도록 환경을 구성할 수도 있습니다. 생성 시 사용자가 생성한 가상 네트워크에서 패브릭 소스 NAT를 사용하도록 설정하려면 환경을 처음 배포할 때 리소스의 ApiServer 변수를 true로 설정합니다enablesource NAT.
초기 배포 중에 리소스에서 ApiServer 이 구성을 설정해야 합니다. 배포 YAML 파일을 적용한 후에는 사용자 환경에서 이 설정을 변경할 수 없습니다. 초기 배포 후 개별 가상 네트워크에 대한 패브릭 원본 NAT 설정을 변경하려면 해당 네트워크에 대한 구성을 수동으로 변경해야 합니다.
다음은 대표적인 YAML 파일 구성입니다.
apiVersion: configplane.juniper.net/v1alpha1 kind: ApiServer metadata: ... spec: enablesource NAT: true common: containers: ...
패브릭 원본 NAT는 변수가 true일 때 enablesource NAT 생성 시 사용자가 생성한 가상 네트워크에서 활성화됩니다. 변수를 false로 설정하여 사용자가 생성한 가상 네트워크를 만들 때 패브릭 소스 NAT를 enablesource NAT 사용하지 않도록 설정할 수 있습니다. 패브릭 소스 NAT는 기본적으로 비활성화되어 있습니다.
패브릭 소스 NAT는 변환할 IP 주소를 자동으로 선택합니다. 대부분의 클라우드 네이티브 Contrail Networking 사용 사례에서는 패브릭 소스 NAT에 대한 주소 풀을 구성할 필요가 없습니다. 그러나 주소 풀은 리소스 내의 계층을 portTranslationPools: 사용하여 구성할 수 있습니다 GlobalVrouterConfig .
예: IP 패브릭 포워딩을 사용하여 외부 네트워크 구성
IP 패브릭 포워딩은 기본적으로 비활성화되어 있습니다.
또는 계층의 fabricForwarding: 변수를 true로 설정하여 모든 가상 네트워크에서 IP 패브릭 전달을 v4SubnetReference: 사용하도록 설정할 수 있습니다.v6SubnetReference:
다음은 IPv4 게이트웨이를 통해 인터넷에 액세스하는 외부 가상 네트워크에서 IP 패브릭 전달을 사용하도록 설정하는 방법의 예입니다.
kind: VirtualNetwork metadata: namespace: contrail name: external-vn labels: service.contrail.juniper.net/externalNetworkSelector: default-external annotations: core.juniper.net/display-name: Sample Virtual Network core.juniper.net/description: VirtualNetwork is a collection of end points (interface or ip(s) or MAC(s)) that can communicate with each other by default. It is a collection of subnets whose default gateways are connected by an implicit router spec: v4SubnetReference: apiVersion: core.contrail.juniper.net/v1alpha1 kind: Subnet namespace: contrail name: external-subnet fabricForwarding: true
인터넷 경로가 있는 외부 가상 네트워크를 만드는 동안 IP 패브릭 전달을 사용하도록 설정할 수도 있습니다.
Contrail Networking을 사용하는 환경의 리소스를 통해 Kubemanager 외부 네트워크에 대한 가상 네트워크의 경로를 구성합니다.
가상 네트워크를 IPv4 또는 IPv6 게이트웨이 IP 서브넷 주소에 연결하여 가상 네트워크에 대한 외부 액세스를 사용하도록 설정합니다. 동일한 Kubemanager 리소스를 사용하여 가상 네트워크의 외부 트래픽에 대해 IP 패브릭 전달을 사용하도록 설정합니다.
초기 클라우드 네이티브 Contrail 구축 중에 외부 네트워크 서브넷과 이 IP 패브릭 전달 설정을 구성해야 합니다. 초기 배포 YAML을 적용한 후에는 이러한 매개 변수를 구성할 수 없습니다.
다음 예제에서는 외부 네트워크 액세스 권한이 있는 가상 네트워크를 만드는 리소스를 구성하는 Kubemanager 데 사용되는 대표적인 YAML 파일을 보여 줍니다. 이 예제의 가상 네트워크는 IP 패브릭 전달로 실행됩니다. 초기 배포 중에 이 YAML 파일을 커밋해야 합니다.
apiVersion: configplane.juniper.net/v1alpha1 kind: Kubemanager metadata: ... spec: externalNetworkV4Subnet: # Fill V4 Subnet of an external network if any externalNetworkV6Subnet: # Fill V6 Subnet of an external network if any ipFabricFowardingExtSvc: true common: containers: ...
이 YAML 파일에서 또는 변수를 사용하여 externalNetworkV4Subnet 외부 네트워크의 IPv4 서브넷 또는 externalNetworkV6Subnet: IPv6 서브넷을 지정합니다. 서브넷 주소는 게이트웨이 디바이스를 통해 인터넷에서 연결할 수 있는 공용 측 IP 주소입니다. 이 YAML 파일을 사용하여 Kubemanager 리소스를 구성하면 지정된 외부 네트워크에 대한 새 가상 네트워크가 생성됩니다. 이 가상 네트워크의 이름은 Contrail Networking의 기본 네임스페이스에서 지정됩니다 default-externalnetwork .
변수가 true인 경우 ipFabricFowardingExtSvc IP 패브릭 전달은 외부 네트워크 액세스를 통해 가상 네트워크에서 실행됩니다. 변수를 false로 설정하여 외부 서브넷에 대한 IP 패브릭 전달을 ipFabricFowardingExtSvc 사용하지 않도록 설정할 수 있습니다.