AKS(Azure Kubernetes Service) API 서버에 액세스
이 가이드에서는 AKS(Azure Kubernetes Service) 클러스터의 API 서버에 연결하는 옵션을 간략하게 설명합니다. 표준 AKS 클러스터에서 API 서버는 인터넷을 통해 노출됩니다. 프라이빗 AKS 클러스터에서 프라이빗 클러스터에 대한 네트워크 액세스 권한이 있는 디바이스에서만 연결할 수 있습니다.
API 서버 액세스 계획은 0일 활동이며 액세스 방법은 배포 시나리오에 따라 달라집니다.
AKS API 서버 액세스
AKS 클러스터를 관리하려면 해당 API 서버와 상호 작용합니다. API 서버 액세스를 필요한 사용자로만 제한해야 합니다. AKS 클러스터를 Microsoft Entra ID와 통합하여 세분화된 액세스를 제공할 수 있습니다. 관리자는 RBAC(역할 기반 액세스 제어)를 사용하여 액세스를 관리하고, 엔트라 그룹에 사용자 및 ID를 배치하고, 적절한 역할 및 권한을 할당할 수 있습니다. Microsoft Entra 인증은 OpenID Connect를 통해 AKS 클러스터에서 사용하도록 설정됩니다. 자세한 내용은 다음 리소스를 참조하세요.
- AKS 관리형 Microsoft Entra 통합
- 클러스터 대한 Microsoft Entra ID 통합
메모
권한 있는 IP 주소 범위만 API 서버에 액세스할 수 있도록 허용하여 AKS 클러스터 보안을 강화할 수 있습니다. 자세한 내용은 AKS(Azure Kubernetes Service) 권한이 부여된 IP 주소 범위를 사용하여 API 서버에 대한보안 액세스를 참조하세요.
애플리케이션 디자인 모범 사례와 결합된 Azure DDoS Protection DDoS 공격에 대한 향상된 완화 기능을 제공합니다. 경계 가상 네트워크에서 Azure DDOS Protection 사용하도록 설정해야 합니다.
인터넷을 통해 AKS 클러스터에 액세스
API 서버의 FQDN(정규화된 도메인 이름)으로 확인되는 자격 증명이 아닌 클러스터를 만들면 기본적으로 공용 IP 주소가 할당됩니다. Azure Portal 또는 Azure CLI, PowerShell 또는 명령 프롬프트와 같은 셸을 사용하여 클러스터에 연결할 수 있습니다.
Azure Cloud Shell
Cloud Shell은 Azure Portal에 기본 제공되는 셸입니다. PowerShell 또는 Azure CLI에서와 마찬가지로 Cloud Shell에서 Azure 리소스를 관리하고 연결할 수 있습니다. 자세한 내용은 Azure Cloud Shell 개요를 참조하세요.
AKS 프라이빗 클러스터 액세스
AKS 프라이빗 클러스터에 연결하는 방법에는 여러 가지가 있습니다. 액세스 계획은 시나리오의 요구 사항 및 제한 사항에 따라 하루 0일 활동입니다. 다음 구성 요소 및 서비스를 사용하여 프라이빗 클러스터에 연결할 수 있습니다.
- 작업 워크스테이션으로 서브넷에 배포된 점프 상자입니다. 가용성 집합독립 실행형 영구 VM(가상 머신) 수 있습니다. Azure Virtual Machine Scale Sets 사용할 수도 있습니다.
- Azure Bastion .
- VPN(가상 사설망) .
- Azure ExpressRoute .
- Azure CLI aks 명령은호출합니다.
- Cloud Shell 클러스터의 API 서버에 연결된 서브넷에 배포된 인스턴스입니다.
- Azure Virtual Desktop . 팀이 다양한 운영 체제에서 원격으로 연결하는 경우 이 서비스를 사용하여 점프 상자로 사용하는 Windows VM에 대한 액세스를 제공할 수 있습니다.
- Azure Container Instances 및 OpenSSH호환되는 SSH(Secure Shell) 클라이언트입니다.
메모
SSH, RDP(원격 데스크톱 프로토콜) 및 RDS(원격 데스크톱 서비스)는 점프 상자를 원격으로 제어하기 위한 대체 프로토콜입니다.
메모
API 서버에 대한 모든 트래픽은 HTTPS를 사용하여 TCP를 통해 포트 443으로 수행됩니다. 관련된 모든 NSG 또는 기타 네트워크 방화벽은 HTTPS 트래픽의 경우 포트 443에서 원본 지점에서 API 서버의 FQDN으로의 트래픽을 허용해야 합니다. 특정 허용량은 클러스터의 API에 대한 FQDN으로만 제한되어야 합니다.
Azure Bastion
Azure Bastion은 VM에서 공용 IP 주소를 요구하지 않고 가상 네트워크 내의 VM에 대한 보안 RDP 또는 SSH 연결을 가능하게 하는 PaaS 제품입니다. 프라이빗 AKS 클러스터에 연결할 때 AZURE Bastion을 사용하여 허브 가상 네트워크의 점프 상자에 액세스할 수 있으며 AKS 클러스터는 스포크 네트워크에 상주합니다. 가상 네트워크 피어링을 사용하여 허브 및 스포크 네트워크를 연결합니다. 점프 상자는 Azure 프라이빗 엔드포인트, 프라이빗 DNS 영역 및 DNS A 레코드를 사용하여 AKS API 서버의 FQDN을 확인할 수 있습니다. 이 설정을 통해 API 서버의 FQDN은 가상 네트워크 내에서만 확인할 수 있으며 프라이빗 AKS 클러스터에 대한 신뢰할 수 있는 연결을 제공합니다.
메모
점프 상자의 가용성 및 중복성은 프라이빗 AKS 클러스터에 지속적으로 액세스하는 데 중요합니다. 이를 위해 가용성 집합에 점프 상자를 배치하고 몇 개의 VM 인스턴스와 함께 Virtual Machine Scale Sets를 사용합니다. 자세한 내용은 다음 리소스를 참조하세요.
사용자에서 프라이빗 AKS 클러스터로의 트래픽 경로를 보여 주는
이 아키텍처의 Visio 파일 다운로드합니다.
데이터 흐름
- 사용자가 Azure Bastion 및 TLS 암호화가 있는 HTML5 브라우저를 사용하여 점프 박스에 연결하려고 합니다.
- 사용자는 포털에서 RDP 또는 SSH를 사용하여 점프 상자에 연결할지 여부를 선택합니다.
- 사용자가 Azure Bastion을 통해 점프 상자에 로그인합니다. AKS 프라이빗 클러스터에 연결하려는 시도는 이 점프 상자에서 수행됩니다. 허브 가상 네트워크에는 프라이빗 클러스터의 FQDN을 확인하기 위해 AKS 프라이빗 DNS 영역에 대한 가상 네트워크 링크가 있습니다.
- 허브 가상 네트워크와 스포크 가상 네트워크는 가상 네트워크 피어링을 사용하여 서로 통신합니다.
- 프라이빗 AKS 클러스터에 도달하기 위해 트래픽은 Azure 백본으로 들어갑니다. 프라이빗 엔드포인트는 프라이빗 AKS 클러스터에 대한 격리된 프라이빗 연결을 설정합니다.
- 트래픽이 프라이빗 AKS 클러스터의 API 서버에 도달합니다. 그러면 사용자는 Pod, 노드 및 애플리케이션을 관리할 수 있습니다.
메모
공용 FQDN을 명시적으로 사용하지 않도록 설정하지 않으면 프라이빗 클러스터의 FQDN을 가상 네트워크 외부에서 확인할 수 있습니다. AKS 프라이빗 클러스터의 공용 FQDN을 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 기존 클러스터 공용 FQDN 사용 안 함참조하세요.
연결 문제 해결
프라이빗 클러스터에 연결할 수 없는 경우:
가상 네트워크 피어링을 확인합니다. 이 메커니즘은 두 가상 네트워크 간의 네트워크 간 연결을 제공합니다. 이러한 두 네트워크 간에 트래픽이 흐르려면 두 네트워크 간에 가상 네트워크 피어링을 설정해야 합니다. 가상 네트워크 피어링을 설정하면 경로가 가상 네트워크의 시스템 경로 테이블에 배치됩니다. 해당 경로는 대상 주소 공간에 도달하기 위한 경로를 제공합니다. 가상 네트워크 피어링 문제 해결에 대한 자세한 내용은 가상 네트워크 피어링 만들기, 변경 또는 삭제참조하세요.
메모
점프 상자가 프라이빗 엔드포인트 및 AKS 프라이빗 클러스터와 동일한 가상 네트워크에 있는 경우 가상 네트워크 피어링이 필요하지 않습니다.
프라이빗 DNS 영역에 대한 가상 네트워크 링크를 확인합니다. 가상 네트워크 링크는 가상 네트워크 내에 있는 VM이 프라이빗 DNS 영역에 연결하고 영역 내의 DNS 레코드를 확인하는 방법을 제공합니다. 프라이빗 AKS 클러스터에 연결할 수 없거나 프라이빗 클러스터의 FQDN을 확인할 수 없는 경우 가상 네트워크에 프라이빗 DNS 영역에 대한 가상 네트워크 링크가 있는지 확인합니다. 프라이빗 DNS 영역의 이름은 다음과 같은 형식이어야 합니다.
privatelink.<region>.azmk8s.io
가상 네트워크 링크 문제 해결에 대한 자세한 내용은 다음 리소스를 참조하세요.
- 가상 네트워크 피어링
- 가상 네트워크 링크란?
메모
프라이빗 AKS 클러스터를 만들면 프라이빗 AKS 클러스터를 호스트하는 가상 네트워크에 대한 가상 네트워크 링크가 있는 프라이빗 DNS 영역이 만들어집니다.
보안 향상
AKS 워크로드 및 점프 상자를 더욱 안전하게 보호하기 위해 JIT(Just-In-Time) 액세스 및 PAW(권한 있는 액세스 워크스테이션)를 사용할 수 있습니다.
AKS 워크로드 및 점프 상자를 보호하려면 JIT(Just-In-Time) 액세스 및 PAW(권한 있는 액세스 워크스테이션)를 사용합니다. 클라우드용 Microsoft Defender의 일부인 JIT 액세스는 점프 상자로의 인바운드 트래픽을 차단하고 필요한 경우 지정된 시간 동안만 액세스를 허용하여 위협 환경을 줄입니다. 시간이 만료되면 액세스가 자동으로 해지됩니다. JIT 액세스에 대한 자세한 내용은 JIT(Just-In-Time) VM 액세스이해를 참조하세요.
PAW는 전자 메일 및 웹 검색과 같은 일반적인 공격 벡터를 차단하여 운영자에게 높은 보안을 제공하는 강화된 디바이스입니다. 전자 메일 및 웹 검색과 같은 많은 일반적인 공격 벡터를 차단하기 때문에 PAW를 손상하기 어렵습니다. PAW에 대한 자세한 내용은 권한 있는 액세스 스토리 일부로 디바이스 보안참조하세요.
VPN(가상 사설망)
VPN 연결은 온-프레미스 환경에서 Azure로 하이브리드 연결을 제공하여 프라이빗 AKS 클러스터에 액세스할 수 있도록 합니다. 프라이빗 클러스터의 API 서버는 가상 네트워크 외부에서 연결할 수 없습니다. VPN을 사용하면 암호화된 터널을 통해 Azure의 가상 네트워크에 연결한 다음 점프 상자에 액세스하고, 여기에서 프라이빗 클러스터의 API 서버에 연결할 수 있습니다.
사용자에서 프라이빗 AKS 클러스터로의 트래픽 흐름을 보여 주는
이 아키텍처의 Visio 파일 다운로드합니다.
데이터 흐름
- 사용자가 온-프레미스 워크스테이션에서 점프 상자로 RDP 또는 SSH 트래픽을 시작합니다.
- 점프 박스 트래픽은 고객 에지 라우터 및 VPN 어플라이언스로 남습니다. 트래픽은 암호화된 IPsec 터널을 사용하여 인터넷을 트래버스합니다.
- 점프 박스 트래픽은 Azure 가상 네트워크 인프라의 수신 및 송신 지점인 Azure의 가상 네트워크 게이트웨이에 도달합니다.
- 트래픽이 가상 네트워크 게이트웨이를 지나 이동하면 점프 상자에 도달합니다. AKS 프라이빗 클러스터에 연결하려는 시도는 점프 상자에서 이루어집니다. 허브 가상 네트워크에는 프라이빗 클러스터의 FQDN을 확인하기 위해 AKS 프라이빗 DNS 영역에 대한 가상 네트워크 링크가 있습니다.
- 허브 가상 네트워크와 스포크 가상 네트워크는 가상 네트워크 피어링을 사용하여 서로 통신합니다.
- 프라이빗 AKS 클러스터에 도달하기 위해 트래픽은 Azure 백본으로 들어갑니다. 프라이빗 엔드포인트는 프라이빗 AKS 클러스터에 대한 격리된 프라이빗 연결을 설정합니다.
- 트래픽이 프라이빗 AKS 클러스터의 API 서버에 도달합니다. 그러면 사용자는 Pod, 노드 및 애플리케이션을 관리할 수 있습니다.
ExpressRoute
ExpressRoute는 온-프레미스 환경에서 AKS 프라이빗 클러스터에 대한 연결을 제공합니다. ExpressRoute는 BGP(Border Gateway Protocol)를 사용하여 온-프레미스 네트워크와 Azure 간에 경로를 교환하여 IaaS 리소스와 온-프레미스 워크스테이션 간의 경로를 만듭니다. ExpressRoute는 일관된 대역폭 및 대기 시간으로 격리된 전용 연결을 제공하므로 엔터프라이즈 환경에 이상적입니다.
사용자에서 프라이빗 AKS 클러스터로의 트래픽 경로를 보여 주는
이 아키텍처의 Visio 파일 다운로드합니다.
데이터 흐름
- 사용자가 온-프레미스 워크스테이션에서 점프 상자로 RDP 또는 SSH 트래픽을 시작합니다.
- 점프 박스 트래픽은 고객 에지 라우터를 떠나 ExpressRoute 회로가 있는 meet-me 위치에 파이버 연결을 사용합니다. 트래픽이 MSEE(Microsoft Enterprise Edge) 디바이스에 도달합니다. 그런 다음, Azure 패브릭에 들어갑니다.
- 점프 박스 트래픽은 Azure 가상 네트워크 인프라의 수신 및 송신 지점인 ExpressRoute 게이트웨이에 도달합니다.
- 트래픽이 점프 상자에 도달합니다. AKS 프라이빗 클러스터에 연결하려는 시도는 점프 상자에서 이루어집니다. 허브 가상 네트워크에는 프라이빗 클러스터의 FQDN을 확인하기 위해 AKS 프라이빗 DNS 영역에 대한 가상 네트워크 링크가 있습니다.
- 허브 가상 네트워크와 스포크 가상 네트워크는 가상 네트워크 피어링을 사용하여 서로 통신합니다.
- 프라이빗 AKS 클러스터에 도달하기 위해 트래픽은 Azure 백본으로 들어갑니다. 프라이빗 엔드포인트는 프라이빗 AKS 클러스터에 대한 격리된 프라이빗 연결을 설정합니다.
- 트래픽이 프라이빗 AKS 클러스터의 API 서버에 도달합니다. 그러면 사용자는 Pod, 노드 및 애플리케이션을 관리할 수 있습니다.
메모
ExpressRoute를 사용하려면 타사 연결 공급자가 MSEE 라우터에 피어링 연결을 제공해야 합니다. ExpressRoute 트래픽은 암호화되지 않습니다. 자세한 내용은 Azure ExpressRoute란?.
aks 명령 호출 실행
AKS 프라이빗 클러스터를 사용하면 API 서버에 액세스할 수 있는 VM에서 연결할 수 있습니다. Azure CLI aks command invoke
사용하여 kubectl
같은 명령을 실행하거나 Azure API를 통해 원격으로 helm
수 있습니다. 이렇게 하면 클러스터에 임시 Pod가 만들어지며 이 Pod는 명령 중에만 지속됩니다. VPN, ExpressRoute 또는 피어된 가상 네트워크가 없는 경우 aks command invoke
대체 연결 방법으로 사용됩니다. 클러스터 및 노드 풀에 임시 Pod를 만들 수 있는 충분한 리소스가 있는지 확인합니다.
자세한 내용은 명령 호출을 사용하여 AKS(프라이빗 Azure Kubernetes Service) 클러스터액세스하는 방법을 참조하세요.
Cloud Shell을 서브넷에 연결
제어하는 가상 네트워크에 Cloud Shell을 배포할 때 해당 네트워크 내의 리소스와 상호 작용할 수 있습니다. 관리하는 서브넷에 Cloud Shell을 배포하면 AKS 프라이빗 클러스터의 API 서버에 연결할 수 있습니다. 이렇게 하면 프라이빗 클러스터에 연결할 수 있습니다. 자세한 내용은 Azure 가상 네트워크 Cloud Shell 배포참조하세요.
테스트에 SSH 및 Visual Studio Code 사용
SSH는 퍼블릭-프라이빗 키 쌍을 사용하여 원격 호스트의 파일을 안전하게 관리하고 액세스합니다. 로컬 컴퓨터에서 Visual Studio Code Remote - SSH 확장과 함께 SSH를 사용하여 가상 네트워크의 점프 상자에 연결할 수 있습니다. 암호화된 SSH 터널은 점프 상자의 공용 IP에서 종료되므로 Kubernetes 매니페스트 파일을 쉽게 수정할 수 있습니다.
SSH를 통해 점프 박스에 연결하는 방법을 알아보려면 SSH 통해원격 개발을 참조하세요.
SSH를 통해 VM에 연결하여 프라이빗 클러스터를 관리할 수 없는 경우:
- VM 서브넷에 대한 인바운드 네트워크 보안 그룹 규칙을 확인합니다. 기본 네트워크 보안 그룹 규칙은 Azure 외부의 모든 인바운드 트래픽을 차단하므로 로컬 컴퓨터의 공용 IP에서 SSH 트래픽을 허용하는 새 규칙을 만듭니다.
- 인증서 위치를 확인합니다. 인증서의 올바른 배치를 확인합니다. 프라이빗 키는 로컬 컴퓨터의
C:\Users\User\.ssh\id_rsa
디렉터리에 있어야 합니다. 공개 키는 Azure의 VM에 있는~/.ssh/id_rsa.pub
파일에 배치되어야 합니다.
메모
다음을 수행하는 것이 좋습니다.
공용 IP 주소를 사용하여 프로덕션 환경의 리소스에 연결하지 마세요. 공용 IP는 개발 또는 테스트에만 사용해야 합니다. 이러한 경우 로컬 컴퓨터의 공용 IP에서 트래픽을 허용하는 인바운드 네트워크 보안 그룹 규칙을 만듭니다. 네트워크 보안 그룹 규칙에 대한 자세한 내용은 네트워크 보안 그룹만들기, 변경 또는 삭제를 참조하세요.
SSH를 사용하여 AKS 노드 또는 컨테이너에 직접 연결하지 않습니다. 대신 전용 외부 관리 솔루션을 사용합니다. 이는 프록시된 액세스를 위해 클러스터 내에 임시 Pod를 만드는
aks command invoke
사용을 고려할 때 특히 중요합니다.
결론
- 공용 FQDN을 사용하는 경우 인터넷을 통해 AKS 클러스터의 API 서버에 액세스할 수 있습니다.
- Cloud Shell은 AKS 클러스터에 연결하는 데 사용할 수 있는 Azure Portal의 기본 제공 명령줄 셸입니다.
- 더 안전한 액세스를 위해 Azure Bastion 및 프라이빗 엔드포인트를 사용합니다.
- VPN 및 ExpressRoute는 프라이빗 AKS 클러스터에 하이브리드 연결을 제공합니다.
- 사용할 수 있는 외부 연결 솔루션이 없는 경우 원격으로
aks command invoke
사용할 수 있습니다. - 프라이빗 클러스터에 액세스하기 위해 관리하는 가상 네트워크에 Cloud Shell을 직접 배포할 수도 있습니다.
- 점프 상자에서 SSH와 함께 Visual Studio Code를 사용하면 연결이 암호화되고 매니페스트 파일 수정이 간소화되지만 사용자 환경에서 공용 IP 주소가 노출됩니다.
참여자
이 문서는 Microsoft에서 유지 관리합니다. 그것은 원래 다음 기여자에 의해 작성되었습니다.
주요 작성자:
- 아요바미 아요데지 | 프로그램 관리자 2
- 아리엘 라미레즈 | 선임 컨설턴트
- Bahram Rushenas | 인큐베이션 설계자
기타 기여자:
- Shubham Agnihotri | 컨설턴트
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.
다음 단계
관련 리소스
- AKS(Azure Kubernetes Service) 클러스터 대한 기준 아키텍처
- AKS(Advanced Azure Kubernetes Service) 마이크로 서비스 아키텍처
- AKS(Azure Kubernetes Service) 아키텍처 디자인