APISIX Declarative CLI와 API7 Enterprise 통합하기
March 20, 2024
ADC란 무엇인가요?
ADC(APISIX Declarative CLI)는 API7.ai에서 소개된 선언적 구성 도구로, 비-Kubernetes 환경에서 사용자들이 GitOps 기능을 구현하는 데 도움을 주기 위해 설계되었습니다. 사용자는 이를 CI/CD 파이프라인에 원활하게 통합하여 API의 라이프사이클을 관리하고 업데이트 및 릴리스를 용이하게 할 수 있습니다.
현재 버전에서 ADC는 APISIX와 통합되어 APISIX 리소스의 내보내기 및 동기화를 지원합니다.
API7 Enterprise란 무엇인가요?
API7 Enterprise는 APISIX를 기반으로 구축되었으며, 게이트웨이 그룹화 및 서비스 버전 관리와 같은 향상된 API 관리 기능을 제공하여 기업을 위한 포괄적인 API 관리 솔루션을 제공합니다. GitOps 기반 API 관리와는 몇 가지 차이점이 있으며, 사용자는 Web UI 인터페이스를 통해 API7 Enterprise 기능을 쉽게 관리할 수 있습니다.
일부 사용자는 API7 Enterprise에서 GitOps 모드를 채택하여 API의 전체 라이프사이클을 더 잘 관리하고자 합니다. 이들은 모든 API 정의를 선언적 구성 파일로 저장하고, Pull Request에 대한 코드 리뷰 메커니즘을 통해 API 선언의 정확성을 보장하며, 저장소의 CI를 활용하여 개발 환경에서 API 배포를 미리 확인한 후 프로덕션 환경에 릴리스하고자 합니다.
ADC는 선언적 구성을 관리하기 위한 프레임워크를 구축하고 API 리소스에 대한 변경 감지 및 동기화 작업을 완료했습니다. 따라서 API7 Enterprise에서 ADC의 지원은 명백한 개발 방향이 될 것입니다.
ADC 0.7 버전의 새로운 기능
API7 Enterprise를 지원하기 위해 ADC에 몇 가지 주요 개선 사항이 도입되었으며, 이는 아래와 같습니다.
API7 Enterprise의 백엔드
API7 Enterprise 백엔드에서의 사용을 초기적으로 지원하는 새로운 버전의 ADC를 출시했습니다. dump
, diff
, sync
와 같은 핵심 기능이 이제 API7 Enterprise 백엔드에서 사용 가능합니다.
이 새로운 백엔드 지원을 통해 사용자는 APISIX에서 API 리소스를 직접 내보내고 API7 Enterprise와 동기화할 수 있어, APISIX의 기존 구성을 API7 Enterprise로 마이그레이션하여 제공되는 강력한 엔터프라이즈급 기능을 활용할 수 있습니다.
게이트웨이 그룹
API7 Enterprise는 여러 게이트웨이 인스턴스에 대한 고급 관리 기능을 제공합니다. 사용자는 게이트웨이 인스턴스를 다른 게이트웨이 그룹에 할당하여 다양한 환경에서의 구성 격리를 달성할 수 있습니다. 예를 들어, 개발 및 프로덕션 목적으로 다른 게이트웨이 클러스터를 생성하고, 서비스를 별도로 다른 게이트웨이 그룹에 게시하여 다양한 요구 사항을 충족할 수 있습니다. 서비스 외에도 글로벌 플러그인과 TLS 인증서도 게이트웨이 그룹을 통해 관리됩니다.
게이트웨이 그룹 관리는 API7 Enterprise의 주요 신규 기능이며, ADC는 이를 지원합니다. ADC 핵심 명령어를 사용할 때 사용자는 gateway-group
이라는 명령줄 플래그를 지정할 수 있으며, 이는 ADC가 해당 게이트웨이 그룹에서 사용자 지정 리소스를 검색하고 동기화하도록 지시합니다.
라벨 기반 리소스 필터링
이전 버전의 ADC에서는 API 구성이 Admin API에서 완전히 가져와 동기화되었습니다. 그러나 API 구성을 약간 수정하더라도 시스템은 변경되지 않은 구성 파일을 포함하여 모든 선언적 구성 파일을 제공하도록 요구했습니다. 변경되지 않은 구성 파일을 제공하지 않으면 시스템은 Admin API에 나열되었지만 명령줄에서 제공되지 않은 리소스를 삭제된 것으로 간주하여 프로덕션 환경에서 제거했습니다. 이는 예상된 구성 상태를 훼손하고 트래픽 처리에 영향을 미칠 수 있어 바람직하지 않습니다.
이 문제를 해결하기 위해 이제 라벨 기반 리소스 필터를 제공합니다. 이 필터를 통해 사용자는 label-selector
라는 명령줄 플래그를 통해 리소스가 충족해야 하는 하나 이상의 라벨 키-값 쌍을 지정할 수 있습니다. 이 라벨 필터의 요구 사항을 충족하지 않는 로컬 및 원격 리소스는 무시되어 게이트웨이 구성의 우발적인 중단을 효과적으로 방지합니다.
새로운 기능에 대한 전망
위에서 언급한 새로운 기능 외에도, ADC 기능을 강화하고 사용자에게 더 큰 가치를 제공하기 위해 새로운 영역을 탐구하고 있습니다. 몇 가지 예는 다음과 같습니다:
-
플러그인 메커니즘을 제공하여 사용자가 API 게이트웨이 백엔드를 사용자 정의할 수 있도록 합니다. 사용자는 모든 API 게이트웨이에서 ADC 선언적 구성을 내보내고 ADC를 통해 API 구성을 정의하여 모든 API 게이트웨이에 배포할 수 있습니다.
-
스크립트 가능한 프로그래밍 기능을 제공하여 사용자가 특정 단계에서 ADC 구성을 검사하고 수정할 수 있는 훅을 제공합니다. 이는 특정 API에 대한 보안 기준 검사를 구현하고 일반적인 보안 취약점 시나리오를 방지하는 데 도움이 될 것입니다.
-
OpenAPI 외에 API 정의 변환기를 제공하여 ADC가 활용할 수 있는 API 도구 생태계를 풍부하게 합니다.
ADC 0.7은 API7 Enterprise 내부에서만 사용 가능하며 공개적으로 출시되지 않았습니다. 이 기능은 올해 2분기에 오픈소스 커뮤니티인 Apache APISIX에 기여될 예정입니다.