관리 API 활성화

관리 API 활성화 (Administrative API Enablement)

Cilium 에이전트가 노출하는 API 엔드포인트를 선택적으로 켜고 끄는 플래그를 설명할게요. 관리적으로 비활성화된 API에 요청하면 서버가 HTTP 403 Forbidden 오류로 응답해요.

출처: Administrative API Enablement

본문

Cilium 1.14에서 클라이언트에게 어떤 API 엔드포인트를 노출할지 선택적으로 활성화할 수 있는 새 플래그 집합이 도입됐어요. API 클라이언트가 관리적으로 비활성화된 API 엔드포인트에 요청하면 서버는 HTTP 403 Forbidden 오류로 응답해요.

옵션은 다음 섹션에서 설명하는 엔드포인트 목록으로 구성하거나, * 접미사가 붙은 옵션을 지정해 구성할 수 있어요. *가 플래그 값으로 직접 제공되면 모든 API가 활성화돼요. * 앞에 텍스트가 있으면, 해당 플래그가 옵션을 활성화하려면 API 플래그가 그 접두사로 시작해야 해요. 예를 들어 Get*는 쓰기 API를 활성화하지 않고 모든 읽기 전용 "GET" API를 활성화해요.

cilium-agent는 기본 업무에 이 API 중 여러 개를 사용해요. 특히 다음 API를 비활성화하면 에이전트 운영에 심각한 장애가 생길 가능성이 높아요.

  • GetConfig

  • GetHealthz

  • PutEndpointID

  • DeleteEndpointID

  • PostIPAM

  • DeleteIPAMIP

다음 섹션들은 각각 다른 Cilium 바이너리의 플래그와, 그 플래그로 구성할 수 있는 API 엔드포인트를 설명해요.

Cilium Agent API

다음 API 플래그는 cilium-agent 플래그 enable-cilium-api-server-access와 호환돼요.

Flag Name Description
DeleteEndpoint 제공된 속성과 일치하는 엔드포인트가 있는 목록을 삭제해요.
DeleteEndpointID ID로 지정된 엔드포인트를 삭제해요. 삭제는 즉각적이고 원자적으로 이루어지며, 삭제 요청이 유효하고 엔드포인트가 존재하면 처리 과정에서 오류가 발생해도 삭제돼요. 오류가 발생하면 코드 202가 반환되고, 성공하면 200이 반환돼요. 엔드포인트와 연관된 모든 리소스는 해제되고, 엔드포인트가 나타내는 워크로드는 연결이 끊어져 어떤 종류의 통신도 시작하거나 받을 수 없게 돼요.
DeleteFqdnCache 캐시에서 일치하는 DNS 조회를 삭제해요. 선택적으로 DNS 이름으로 제한할 수 있어요. 제거된 IP 데이터는 더 이상 생성된 정책에 사용되지 않아요.
DeleteIPAMIP
DeletePrefilter
GetBGPPeers Cilium BGP 가상 라우터가 만든 BGP 피어의 현재 운영 상태를 검색해요. 세션 상태, 업타임, 주소 패밀리별 정보 등을 포함해요. Deprecated: 향후 제거될 예정이에요.
GetBGPRoutePolicies BGP Control Plane에서 라우트 정책을 검색해요. Deprecated: 향후 제거될 예정이에요.
GetBGPRoutes BGP Control Plane RIB에서 지정한 파라미터로 필터링된 라우트를 검색해요. Deprecated: 향후 제거될 예정이에요.
GetCgroupDumpMetadata
GetClusterNodes
GetConfig Cilium 데몬의 구성을 반환해요.
GetDebuginfo
GetEndpoint 제공된 파라미터와 일치하는 메타데이터를 가진 엔드포인트 목록을 검색하거나, 파라미터가 없으면 모든 엔드포인트를 검색해요.
GetEndpointID 엔드포인트 정보를 반환해요.
GetEndpointIDConfig 지정된 엔드포인트의 구성을 검색해요.
GetEndpointIDHealthz
GetEndpointIDLabels
GetEndpointIDLog
GetFqdnCache 엔드포인트에서 가로챈 DNS 조회 목록을 검색해요. 선택적으로 DNS 이름, CIDR IP 범위 또는 소스로 필터링할 수 있어요.
GetFqdnCacheID 특정 엔드포인트에서 가로챈 DNS 조회 목록을 검색해요. 선택적으로 엔드포인트 ID, DNS 이름, CIDR IP 범위 또는 소스로 필터링할 수 있어요.
GetFqdnNames DNS 관련 필드(poll할 이름, 셀렉터 및 대응하는 정규식) 목록을 검색해요.
GetHealthz Cilium 데몬과 연결된 데이터스토어, Kubernetes 통합, Hubble 같은 관련 컴포넌트의 상태·정보를 반환해요.
GetIP 신원(identity), 호스트 주소, Kubernetes 파드 이름 등 알려진 연관 정보가 있는 IP 목록을 검색해요. 선택적으로 CIDR IP 범위로 필터링할 수 있어요.
GetIdentity 제공된 파라미터와 일치하는 메타데이터를 가진 신원 목록을 검색하거나, 파라미터가 없으면 모든 신원을 검색해요.
GetIdentityEndpoints
GetIdentityID
GetLRP
GetMap
GetMapName
GetMapNameEvents
GetNodeIds 에이전트가 할당한 노드 ID와 연관된 노드 IP 주소 목록을 검색해요.
GetPolicy 모든 하위 항목을 포함한 전체 정책 트리를 반환해요. Deprecated: v1.19에서 제거될 예정이에요.
GetPolicySelectors
GetPolicySubjectSelectors
GetPrefilter
GetService
PatchConfig 제공된 ConfigurationMap을 적용해 데몬 구성을 갱신하고, 필요한 모든 데이터패스 컴포넌트를 재생성·재컴파일해요.
PatchEndpointID 기존 엔드포인트에 엔드포인트 변경 요청을 적용해요.
PatchEndpointIDConfig 기존 엔드포인트의 구성을 갱신하고 대응하는 프로그램을 자동으로 재생성·재컴파일해요.
PatchEndpointIDLabels 엔드포인트에 연관된 라벨을 설정해요. 이 라벨은 사용자가 제공하거나 오케스트레이션 시스템에서 파생될 수 있어요.
PatchPrefilter
PostIPAM
PostIPAMIP
PutEndpointID 새 엔드포인트를 생성해요.

Cilium Agent Clusterwide Health API

다음 API 플래그는 cilium-agent 플래그 enable-cilium-health-api-server-access와 호환돼요.

Flag Name Description
GetHealthz 로드와 업타임을 포함한 로컬 노드의 상태 정보와, Cilium 데몬을 포함한 관련 컴포넌트의 상태를 반환해요.
GetStatus 간격 기반 프로빙을 사용해 다른 모든 cilium-health 인스턴스에 대한 연결 상태를 반환해요.
PutStatusProbe 다른 모든 cilium-health 인스턴스에 동기식 프로브를 실행하고 연결 상태를 반환해요.

Cilium Operator API

다음 API 플래그는 cilium-operator 플래그 enable-cilium-operator-server-access와 호환돼요.

Flag Name Description
GetCluster 원격 클러스터 목록과 그 상태를 반환해요.
GetHealthz cilium operator 인스턴스의 상태를 반환해요.
GetMetrics Cilium operator가 노출하는 메트릭을 반환해요.

더 알아보기 (Learn more)