마이크로소프트 애저 쿠버네티스 서비스(Azure Kubernetes Service, AKS)는 일상적인 쿠버네티스 관리 작업의 대부분을 처리해서 대규모 클라우드 네이티브 애플리케이션을 구축하고 실행하는 데 따르는 많은 복잡성을 간소화해준다. 애저가 대부분의 부담을 덜어주는 만큼 인력은 코드와 컨테이너를 구축하는 데 더 집중할 수 있다.
AKS는 쿠버네티스 운영의 기본적인 사항에 초점을 두지만 플랫폼이 성장하면서 애플리케이션에 대한 더 심층적인 인사이트, 그리고 훨씬 더 낮은 수준에서 더 고급 보안을 제공하기 위해 더 복잡한 서비스가 필요해졌다. 여기서 모듈형이라는 쿠버네티스의 특성이 빛을 발한다. 애플리케이션을 변경하지 않고도 플랫폼을 확장하고 필요한 기능을 추가할 수 있는 사이드카와 서비스 메시를 지원하기 때문이다.
ACNS 소개
고급 컨테이너 네트워킹 서비스(Advanced Container Networking Services, ACNS)는 AKS에 관찰가능성과 보안을 추가하는 툴을 번들로 묶는다. 마이크로소프트가 구성을 처리해주므로 기반 컨테이너 호스트 시스템과의 심층적인 통합을 위해 허블(Hubble) 및 eBPF를 사용하여 그라파나(Grafana), 프로메테우스(Prometheus)와 같은 툴을 실리움(Cilium) 지원 노드와 통합하는 프로세스가 간소화된다. 또는 마이크로소프트 자체의 레티나(Renita) 쿠버네티스 관찰가능성 툴을 중심으로 노드를 구축할 수도 있다. 현재 이 툴은 두 개의 연결된 서비스인 고급 네트워크 관찰가능성(Advanced Network Observability), 그리고 연결된 DNS 프록시가 있는 새로운 정규화된 도메인 이름(Fully Qualified Domain Name, FQDN) 필터링 서비스를 지원한다. 두 가지 모두 확장된 버클리 패킷 필터(Berkeley Packet Filter)에 대한 애저 지원을 활용하며, 윈도우와 리눅스 네트워킹에 대한 커널 수준 액세스를 제공한다.
관찰가능성 툴은 AKS 클러스터 내의 네트워크 성능에 대한 실시간 데이터를 제공해서 성능 문제를 조기에 찾는 데 도움을 주며, 시각화 툴은 상호 연결 및 서비스가 어떻게 상호작용하는지를 보여준다. DNS 툴은 애저 네트워킹과 함께 작동해서 서비스에 액세스할 수 있는 사람과 대상을 제어하는 네트워킹 정책을 배포하는 동시에 DNS 기반 가동 중단 위험을 줄이는 데 도움이 된다. 관찰가능성을 위해 레티나를 사용하는 경우 고급 컨테이너 네트워크 서비스의 네트워킹 툴을 사용하려면 실리움으로 전환해야 한다.
도메인 이름을 사용한 서비스 액세스 필터링은 쿠버네티스와 같은 오케스트레이터 기반 환경에서 작업할 때 적합하다. IP 주소를 사용해 필터링하는 경우 노드가 애플리케이션에 추가되거나 제거될 때 액세스 테이블을 지속적으로 업데이트해야 한다. 도메인 이름에 초점을 맞추면 AKS 내외부에서 어느 호스트가 어느 서비스에 대한 액세스 권한을 갖는지를 손쉽게 제어할 수 있다. 그 결과로 얻는 액세스 제어 테이블은 IP 주소 목록보다 읽기 쉬우므로 보안 운영 엔지니어가 신속하게 오류와 위험을 식별할 수 있다.
ACNS는 여전히 프리뷰 단계지만 AKS 인프라의 일부로 고려할 만한 가치 있는 새로운 기능을 추가해준다. 보안과 플랫폼 툴의 혼합으로 애저 클라우드 네이티브 환경의 필수적인 구성요소가 될 가능성이 높다.
ACNS 도메인 필터링 시작하기
설정을 위해서는 애저의 명령줄 중 하나가 필요하다. 클라우드 셸의 배시(Bash)를 사용하거나 데스크톱 터미널 세션에서 애저 CLI를 사용한다. CLI를 사용하는 경우 구성 중인 애저 환경에 로그인해야 한다. ACNS는 프리뷰 서비스이므로 ACNS 프리뷰를 사용하는 데 필요한 기능 플래그를 활성화하려면 애저 CLI 프리뷰 확장이 필요하다. AKS 클러스터를 위한 리소스 그룹을 만들었다면 클러스터를 설정하고 ACNS 서비스를 추가할 준비가 된다. 필요한 AKS 플래그의 일부로, 클러스터는 적절한 데이터 평면을 포함해야 한다(FQDN의 필터링을 사용하는 경우 실리움). aks create 명령에 --enable-acns 플래그를 추가하기만 하면 되며, 관찰가능성과 FQDN 필터링이 모두 지원된다.
FQDN 필터링 기능만 사용하려는 경우 --enable-acns를 --enable-fqdn-policy로 바꾼다. 같은 플래그를 aks update와 함께 사용하면 기존 AKS 클러스터에 ACNS 지원을 추가할 수 있다.
FQDN 정책은 노드에서 실행되는 실리움 에이전트에 의해 관리된다. 포드에서 이뤄진 DNS 요청은 실리움에 의해 ACNS DNS 프록시로 리디렉션된다. 요청이 허용되면 프록시는 DNS 요청을 하고, 결과를 받아서 포드에 유효한 응답을 전달한다. 에이전트가 요청을 차단하는 경우 쿼리가 실행되지 않고 응답도 전달되지 않는다.
ACNS가 실리움 기능을 기반으로 한다 해도 전체 기능을 지원하지는 않는다. 다른 네트워크 정책을 구성할 수 있지만 현재로서는 AKS에 의해 차단된다. 이는 앞으로 서비스가 확장될 가능성을 보여주지만 마이크로소프트는 AKS 쿠버네티스 구현과 함께 이러한 부가 기능을 평가 및 테스트하고, 이 ACNS 릴리스의 DNS 프록시와 같은 필요한 지원 기능도 개발해야 한다. 실리움은 확인된 IP 주소를 캐시해서 속도를 높이지만 캐시 크기가 비교적 작기 때문에 지속 시간이 짧은 연결이 많은 경우 오래된 주소가 빠르게 만료된다.
실리움의 도메인 이름 필터링은 레이어 7 기능으로, 외부 리소스에 대한 액세스를 제어한다. 다른 정책 대비 우선하므로 다른 정책에서 포드의 연결을 허용한다 해도 DNS 차단 기능이 엔드포인트에 대한 액세스를 차단한다. 실리움은 YAML 또는 JSON을 사용해 구성되는 다양한 DNS 필터링 옵션을 제공한다.
네트워크 관찰가능성에 ACNS 사용하기
ACNS의 관찰가능성 툴은 클라우드 네이티브 아키텍처를 최대한 활용하는 데 필요한 네트워크 정보를 얻는 데 도움이 되며, 실리움 또는 레티나를 사용해서 서비스 호스트의 지표를 추출해서 노드와 포드에 매핑한다. 데이터는 쿠버네티스의 프로메테우스 형식으로 저장되며 사전 구성된 그라파나 대시보드를 사용해 데이터를 시각화할 수 있다. 환경 내의 흐름을 추적하기 위해 허블을 지원하며 포드 간의 통신을 탐색하고 서비스 연결 그래프를 생성한다. 허블의 DNS 툴은 실리움에서 지원되지 않으므로 사용하려면 레티나와 함께 사용해야 한다.
ACNS에는 허블 시각화 툴이 포함되지 않으므로 사용하려면 온프레미스 또는 애저에서 자체 서버를 구현해야 한다. 애저 옵션을 선택하는 경우 ACNS 사용 요금 외에 애플리케이션과 관련된 비용이 추가된다.
고급 컨테이너 네트워킹 서비스는 AKS의 일부지만 부가적인 비용이 따른다. 가격은 노드별로 시간당 0.025달러로, 애플리케이션이 크고 복잡할수록 비용도 올라간다. 또한 AKS의 확장과 축소, 그리고 수요에 따른 노드의 추가 및 제거에 따라 비용이 변동된다.
마이크로소프트는 매니지 AKS 환경에 쿠버네티스 네트워킹 툴을 설치하는 과정을 간소화하기 위해 많은 노력을 기울였다. 하나의 명령으로 실리움을 설치하고 eBPF 프로브를 설정하고 허블 환경을 구성할 수 있다.
그러나 이는 전체의 일부에 불과하다. ACNS에는 구성에 대해서도 동일한 기능을 수행하면서 애플리케이션 보호와 최적화에 도움이 되는 설정으로 사용자를 안내하기 위한 또 다른 계층이 필요하다. 프리셋은 복잡할 필요가 없다. 승인된 도메인을 나열한 다음 실리움 구성을 생성하는 양식, 또는 애플리케이션 아키텍처를 기반으로 제안된 관찰가능성 구성 목록일 수 있다.
지금으로서는 작업을 하고, 또 다른 YAML 변형을 익히고, 적절한 프로브와 적절한 구성을 얻기까지 시간을 투자해야 한다. 개선된 보안과 필수적인 성능 데이터를 얻게 되므로 엄밀히 말해 시간 낭비라고 할 수는 없지만, 이 시간을 ACNS 결과를 분석하는 데 이 시간을 사용해서 사용자에게 더 나은 쿠버네티스 애플리케이션을 제공할 수 있다면 더 좋을 것이다.
editor@itworld.co.kr