AKS(Azure Kubernetes Service)의 애플리케이션에 대한 네트워킹 개념
애플리케이션 개발에 대한 컨테이너 기반 마이크로 서비스 접근 방식에서 애플리케이션 구성 요소는 함께 작동하여 해당 작업을 처리합니다. Kubernetes는 이 공동 작업을 사용 설정하는 다양한 리소스를 제공합니다.
- 애플리케이션을 내부 또는 외부에 연결하고 공개할 수 있습니다.
- 애플리케이션의 부하를 분산시켜 고가용성 애플리케이션을 빌드할 수 있습니다.
- Pod 및 노드에 대한 또는 서로 간에 네트워크 트래픽의 흐름을 제한하여 보안을 강화할 수 있습니다.
- 더 복잡한 애플리케이션의 경우 여러 구성 요소의 SSL/TLS 종료 또는 라우팅에 대한 수신 트래픽을 구성할 수 있습니다.
이 문서에서는 AKS에서 네트워킹을 애플리케이션에 제공하는 핵심 개념을 소개합니다.
Kubernetes 네트워킹 기본 사항
Kubernetes는 가상 네트워킹 계층을 사용하여 애플리케이션이나 해당 구성 요소 내부 및 간의 액세스를 관리합니다.
Kubernetes 노드 및 가상 네트워크: Kubernetes 노드는 가상 네트워크에 연결됩니다. 이 설정을 통해 Pod(Kubernetes의 기본 배포 단위)에 인바운드 및 아웃바운드 연결이 모두 있을 수 있습니다.
Kube-proxy 구성 요소: kube-proxy는 각 노드에서 실행되며 필요한 네트워크 기능을 제공하는 역할을 담당합니다.
특정 Kubernetes 기능 관련:
- 부하 분산 장치: 부하 분산 장치를 사용하여 네트워크 트래픽을 다양한 리소스에 균등하게 분산할 수 있습니다.
- 수신 컨트롤러: 이는 애플리케이션 트래픽을 전달하는 데 필수적인 계층 7 라우팅을 용이하게 합니다.
- 송신 트래픽 제어: Kubernetes를 사용하면 클러스터 노드에서 아웃바운드 트래픽을 관리하고 제어할 수 있습니다.
- 네트워크 정책: 이 정책은 Pod의 네트워크 트래픽에 대한 보안 측정값 및 필터링을 사용하도록 설정합니다.
Azure 플랫폼의 컨텍스트에서:
- Azure는 AKS(Azure Kubernetes Service) 클러스터에 대한 가상 네트워킹을 간소화합니다.
- Azure에서 Kubernetes 부하 분산 장치를 만들면 해당 Azure Load Balancer 리소스가 동시에 설정됩니다.
- Pod에 대한 네트워크 포트를 열면 Azure는 필요한 네트워크 보안 그룹 규칙을 자동으로 구성합니다.
- Azure는 새로운 수신 경로가 설정됨에 따라 HTTP 애플리케이션 라우팅을 위한 외부 DNS 구성도 관리할 수 있습니다.
Azure 가상 네트워크
AKS에서는 다음 네트워크 모델 중 하나를 사용하는 클러스터를 배포할 수 있습니다.
- 오버레이 네트워크 모델: 오버레이 네트워킹은 Kubernetes에서 사용되는 가장 일반적인 네트워킹 모델입니다. Pod에는 AKS 노드가 배포된 Azure 가상 네트워크 서브넷과 논리적으로 분리된 프라이빗 CIDR의 IP 주소가 제공됩니다. 이 모델을 사용하면 플랫 네트워크 모델과 비교할 때 더 간단하고 향상된 확장성을 구현할 수 있습니다.
- 플랫 네트워크 모델: AKS의 플랫 네트워크 모델은 AKS 노드와 동일한 Azure 가상 네트워크의 서브넷에서 Pod에 IP 주소를 할당합니다. 클러스터에서 나가는 트래픽이 SNAT되지 않으며 Pod IP 주소는 대상에 직접 노출됩니다. 이 모델은 Pod IP 주소를 외부 서비스에 노출하는 것과 같은 시나리오에 유용할 수 있습니다.
AKS의 네트워킹 모델에 대한 자세한 내용은 AKS의 CNI 네트워킹을 참조하세요.
아웃바운드(송신) 트래픽 제어
AKS 클러스터는 가상 네트워크에 배포되며 거의 전적으로 FQDN(정규화된 도메인 이름)으로 정의되는 해당 가상 네트워크 외부의 서비스에 대한 아웃바운드 종속성을 갖습니다. AKS는 이러한 외부 리소스에 액세스하는 방법을 사용자 지정할 수 있는 몇 가지 아웃바운드 구성 옵션을 제공합니다.
지원되는 AKS 클러스터 아웃바운드 구성 유형에 대한 자세한 내용은 AKS(Azure Kubernetes Service)에서 아웃바운드 형식으로 클러스터 송신 사용자 지정을 참조하세요.
기본적으로 AKS 클러스터에는 실행하는 노드 및 서비스가 필요에 따라 외부 리소스에 액세스할 수 있도록 하는 무제한 아웃바운드(송신) 인터넷 액세스가 있습니다. 원하는 경우 아웃바운드 트래픽을 제한할 수 있습니다.
클러스터에서 아웃바운드 트래픽을 제한하는 방법에 대한 자세한 내용은 AKS의 클러스터 노드에 대한 송신 트래픽 제어를 참조하세요.
네트워크 보안 그룹
네트워크 보안 그룹은 AKS 노드와 같은 VM의 트래픽을 필터링합니다. 부하 분산 장치와 같은 서비스를 만들 때 Azure 플랫폼은 필요한 모든 네트워크 보안 그룹 규칙을 자동으로 구성합니다.
AKS 클러스터의 Pod에 대한 트래픽을 필터링하는 네트워크 보안 그룹 규칙은 수동으로 구성할 필요가 없습니다. Kubernetes Service 매니페스트의 일부로 필요한 포트 및 전달을 정의하고 Azure 플랫폼에서 해당하는 규칙을 만들거나 업데이트하도록 할 수 있습니다.
또한 네트워크 정책을 사용하여 트래픽 필터 규칙을 Pod에 자동으로 적용할 수도 있습니다.
자세한 내용은 네트워크 보안 그룹이 네트워크 트래픽을 필터링하는 방법을 참조하세요.
네트워크 정책
기본적으로 AKS 클러스터의 모든 pod는 트래픽을 제한 없이 송수신할 수 있습니다. 보안 향상을 위해 다음과 같이 트래픽의 흐름을 제어하는 규칙을 정의할 수 있습니다.
- 백 엔드 애플리케이션은 필요한 프런트 엔드 서비스에만 노출됩니다.
- 데이터베이스 구성 요소에 연결하는 애플리케이션 계층에서만 해당 구성 요소에 액세스할 수 있습니다.
네트워크 정책은 AKS에서 사용 가능한 Kubernetes 기능으로서 사용자가 Pod 간의 트래픽 흐름을 제어하도록 돕습니다. 할당된 레이블, 네임스페이스 또는 트래픽 포트와 같은 설정에 따라 Pod에 대한 트래픽을 허용하거나 거부할 수 있습니다. 네트워크 보안 그룹은 AKS 노드에 더 적합하지만 네트워크 정책은 Pod에 대한 트래픽 흐름을 제어하는 데 더 적합한 클라우드 네이티브 방법입니다. Pod는 AKS 클러스터에서 동적으로 생성되므로 필요한 네트워크 정책을 자동으로 적용할 수 있습니다.
자세한 내용은 AKS(Azure Kubernetes Service)에서 네트워크 정책을 사용하여 pod 간 트래픽 보호를 참조하세요.
다음 단계
AKS 네트워킹을 시작하려면 Azure CNI 오버레이 또는 Azure CNI를 사용하여 고유한 IP 주소 범위로 AKS 클러스터를 만들고 구성합니다.
관련된 모범 사례에 대해서는 AKS의 네트워크 연결 및 보안에 대한 모범 사례를 참조하세요.
Kubernetes 및 AKS 핵심 개념에 대한 자세한 내용은 다음 문서를 참조하세요.
Azure Kubernetes Service